Skip to content

Commit cc6c8d9

Browse files
committed
Fixes and enhancements to CMake build system
Updated compatibility level to 3.19. Set C++17 globally for all platforms. Removed hardcoded compiler and optimisation flags. Adjusted dependencies and libraries linking. Reworked script building and hog creation.
1 parent 1a023c9 commit cc6c8d9

File tree

4 files changed

+35
-54
lines changed

4 files changed

+35
-54
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ jobs:
3434
sudo dpkg --add-architecture i386
3535
sudo apt update
3636
sudo apt install -y --no-install-recommends \
37-
make cmake g++ libsdl1.2-dev libsdl-image1.2-dev \
38-
libaudio-dev libaa1-dev libdirectfb-dev \
39-
libncurses-dev \
37+
make cmake g++ libsdl1.2-dev libsdl-image1.2-dev libncurses-dev \
4038
libxext6:i386 # for ./scripts/hogutils/hogUtils-i686 binary
4139
mkdir ~/Descent3
4240

CMakeLists.txt

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,35 @@
1-
# CMake compatibility issues: don't modify this, please!
2-
CMAKE_MINIMUM_REQUIRED( VERSION 2.4.6 )
1+
CMAKE_MINIMUM_REQUIRED(VERSION 3.19)
32

4-
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
53
# allow more human readable "if then else" constructs
64
SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
75

6+
PROJECT(Descent3 VERSION 1.5.500)
87

9-
PROJECT(Descent3)
8+
SET(CMAKE_CXX_STANDARD 17)
9+
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
10+
SET(CMAKE_CXX_EXTENSIONS OFF)
11+
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
1012

1113
IF (UNIX)
12-
SET (D3_GAMEDIR "~/Descent3/")
13-
14-
SET(CMAKE_CXX_STANDARD 17)
15-
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
16-
SET(CMAKE_CXX_EXTENSIONS OFF)
17-
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
18-
14+
SET (D3_GAMEDIR "~/Descent3/")
1915
IF (APPLE)
2016
SET(EXTRA_CXX_FLAGS "-Wno-address-of-temporary")
2117
ELSE()
2218
SET(EXTRA_CXX_FLAGS "-fpermissive")
2319
ENDIF()
2420

25-
SET(CMAKE_CXX_COMPILER "g++")
26-
SET(CMAKE_CXX_FLAGS "-O0 -g -Wno-write-strings -Wno-multichar ${BITS} ${EXTRA_CXX_FLAGS}")
27-
SET(CMAKE_C_FLAGS "-O0 -g ${BITS}")
28-
SET(CMAKE_C_COMPILER "gcc")
21+
SET(CMAKE_CXX_FLAGS "-Wno-write-strings -Wno-multichar ${BITS} ${EXTRA_CXX_FLAGS}")
22+
SET(CMAKE_C_FLAGS "${BITS}")
2923

30-
FIND_PACKAGE( SDL REQUIRED )
24+
FIND_PACKAGE(SDL REQUIRED)
3125
IF (APPLE)
3226
# Provide FIND_PACKAGE( SDL_image ) below with an include dir and library that work with brew-installed sdl2_image
3327
FIND_PATH(SDL_IMAGE_INCLUDE_DIR SDL_image.h PATH_SUFFIXES include/SDL2)
3428
FIND_LIBRARY(SDL_IMAGE_LIBRARY SDL2_image)
3529
ENDIF()
36-
FIND_PACKAGE( SDL_image REQUIRED )
30+
FIND_PACKAGE(SDL_image REQUIRED)
31+
FIND_PACKAGE(Curses REQUIRED)
32+
FIND_PACKAGE(OpenGL REQUIRED)
3733
MESSAGE( "SDL Include Dir is " ${SDL_INCLUDE_DIR} )
3834
ENDIF()
3935

@@ -78,11 +74,6 @@ include_directories("lib" "Descent3" ${PLATFORM_INCLUDES})
7874

7975
# file(GLOB_RECURSE INCS "*.h")
8076

81-
# project version
82-
SET( ${PROJECT_NAME}_MAJOR_VERSION 1 )
83-
SET( ${PROJECT_NAME}_MINOR_VERSION 5 )
84-
SET( ${PROJECT_NAME}_PATCH_LEVEL 500 )
85-
8677
ADD_SUBDIRECTORY (2dlib)
8778
ADD_SUBDIRECTORY (AudioEncode)
8879
ADD_SUBDIRECTORY (bitmap)
@@ -128,7 +119,7 @@ ADD_SUBDIRECTORY (vecmat)
128119
ADD_SUBDIRECTORY (libmve)
129120
ADD_SUBDIRECTORY (md5)
130121
ADD_SUBDIRECTORY (libacm)
131-
ADD_SUBDIRECTORY (Descent3 )
122+
ADD_SUBDIRECTORY (Descent3)
132123

133124
# For now we don't need to build the scripts under windows, so we'll only include
134125
# the directory when building for linux/osx. In the future we may want to to fix bugs, etc.

Descent3/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,19 +285,17 @@ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO /SUBSYSTEM:WIN
285285
ENDIF()
286286

287287
IF (UNIX AND NOT APPLE)
288-
SET (PLATFORM_LIBS linux dd_lnxsound ddvid_lnx lnxcontroller ddio_lnx ${SDL_LIBRARY} m dl GLU ncurses pulse-simple)
288+
SET (PLATFORM_LIBS linux dd_lnxsound ddvid_lnx lnxcontroller ddio_lnx SDL::SDL m ${CMAKE_DL_LIBS} OpenGL::GLU ${CURSES_LIBRARIES})
289289
SET (PLATFORM_CPPS loki_utils.c lnxmain.cpp)
290290
ENDIF()
291291

292292
IF (APPLE)
293-
SET (PLATFORM_LIBS linux dd_lnxsound ddvid_lnx lnxcontroller ddio_lnx ${SDL_LIBRARY} ncurses )
293+
SET (PLATFORM_LIBS linux dd_lnxsound ddvid_lnx lnxcontroller ddio_lnx SDL::SDL ${CURSES_LIBRARIES})
294294
SET (PLATFORM_CPPS loki_utils.c lnxmain.cpp SDLMain.m)
295295
SET(CMAKE_EXE_LINKER_FLAGS "-framework IOKit -framework Cocoa -framework OpenGL -framework Carbon")
296296
ENDIF()
297297

298298
file(GLOB_RECURSE INCS "../lib/*.h")
299-
300-
301299

302300
ADD_EXECUTABLE(Descent3 ${HEADERS} ${CPPS} ${PLATFORM_CPPS} ${INCS})
303301
target_link_libraries(Descent3

scripts/CMakeLists.txt

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,29 +65,23 @@ SET (SCRIPTS
6565
TrainingMission
6666
Y2K)
6767

68-
SET (SCRIPTTARGETS )
69-
70-
FOREACH( SCRIPT ${SCRIPTS})
68+
FOREACH(SCRIPT ${SCRIPTS})
7169

72-
ADD_LIBRARY(${SCRIPT} SHARED ${CPPS} "${SCRIPT}.cpp")
73-
set_target_properties(${SCRIPT} PROPERTIES PREFIX "")
74-
SET(SCRIPTTARGETS ${SCRIPTTARGETS} ${SCRIPT})
75-
IF(UNIX)
76-
GET_TARGET_PROPERTY(SCRIPT_LIB ${SCRIPT} LOCATION)
77-
ADD_CUSTOM_COMMAND(
78-
TARGET ${SCRIPT}
79-
POST_BUILD
80-
COMMAND ${CMAKE_COMMAND} -E copy ${SCRIPT_LIB} "${CMAKE_SOURCE_DIR}/scripts/data/linuxfullhog/"
81-
COMMENT "Copying file ${SCRIPT_LIB} to hogfile directory..."
82-
)
83-
ADD_CUSTOM_COMMAND(
84-
TARGET ${SCRIPT}
85-
POST_BUILD
86-
COMMAND ${CMAKE_COMMAND} -E copy ${SCRIPT_LIB} "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/"
87-
)
88-
89-
ENDIF()
90-
70+
ADD_LIBRARY(${SCRIPT} SHARED ${CPPS} "${SCRIPT}.cpp")
71+
set_target_properties(${SCRIPT} PROPERTIES PREFIX "")
72+
IF(UNIX)
73+
ADD_CUSTOM_COMMAND(
74+
TARGET ${SCRIPT}
75+
POST_BUILD
76+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${SCRIPT}> "${CMAKE_SOURCE_DIR}/scripts/data/linuxfullhog/"
77+
COMMENT "Copying file ${SCRIPT} to hogfile directory..."
78+
)
79+
ADD_CUSTOM_COMMAND(
80+
TARGET ${SCRIPT}
81+
POST_BUILD
82+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${SCRIPT}> "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/"
83+
)
84+
ENDIF()
9185
ENDFOREACH()
9286

9387
IF(UNIX AND NOT APPLE)
@@ -103,7 +97,7 @@ IF(UNIX AND NOT APPLE)
10397
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/scripts/data/linuxfullhog/d3-${HOGARCH}.hog" "${D3_GAMEDIR}"
10498
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_SOURCE_DIR}/scripts/data/linuxfullhog/new.hog"
10599
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/scripts/data/linuxfullhog/"
106-
DEPENDS ${SCRIPTTARGETS}
100+
DEPENDS ${SCRIPTS}
107101
COMMENT "Building platform specific hog."
108102
)
109103
ADD_CUSTOM_TARGET("DemoLinuxHog"
@@ -113,7 +107,7 @@ IF(UNIX AND NOT APPLE)
113107
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/new.hog" "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/d3-${HOGARCH}.hog"
114108
COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/new.hog"
115109
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/scripts/data/linuxdemohog/"
116-
DEPENDS ${SCRIPTTARGETS}
110+
DEPENDS ${SCRIPTS}
117111
COMMENT "Building platform specific hog."
118112
)
119113
ENDIF()

0 commit comments

Comments
 (0)