Skip to content

Commit d2314a2

Browse files
authored
Merge pull request #709 from FtZPetruska/cmake-group-options
CMake: Group and update options
2 parents b3ad47a + e8cf527 commit d2314a2

File tree

4 files changed

+78
-78
lines changed

4 files changed

+78
-78
lines changed

prboom2/CMakeLists.txt

Lines changed: 8 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,9 @@
11
cmake_minimum_required(VERSION 3.9)
22

3-
option(WITH_XMP "Use libxmp if available" ON)
4-
if(WITH_XMP)
5-
list(APPEND VCPKG_MANIFEST_FEATURES "libxmp")
6-
endif()
7-
8-
option(WITH_FLUIDSYNTH "Use FluidSynth if available" ON)
9-
if(WITH_FLUIDSYNTH)
10-
list(APPEND VCPKG_MANIFEST_FEATURES "fluidsynth")
11-
endif()
3+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
124

13-
option(WITH_IMAGE "Use SDL2_image if available" ON)
14-
if(WITH_IMAGE)
15-
list(APPEND VCPKG_MANIFEST_FEATURES "sdl2-image")
16-
endif()
17-
18-
option(WITH_MAD "Use libmad if available" ON)
19-
if(WITH_MAD)
20-
list(APPEND VCPKG_MANIFEST_FEATURES "libmad")
21-
endif()
22-
23-
option(WITH_PORTMIDI "Use PortMidi if available" ON)
24-
if(WITH_PORTMIDI)
25-
list(APPEND VCPKG_MANIFEST_FEATURES "portmidi")
26-
endif()
27-
28-
option(WITH_VORBISFILE "Use vorbisfile if available" ON)
29-
if(WITH_VORBISFILE)
30-
list(APPEND VCPKG_MANIFEST_FEATURES "libvorbis")
31-
endif()
32-
33-
# Automatically install dependencies
34-
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
35-
set(X_VCPKG_APPLOCAL_DEPS_INSTALL TRUE)
5+
# Setup dependencies options before `project()` so vcpkg features can be used
6+
include(DsdaDepsSetup)
367

378
project("dsda-doom" VERSION 0.29.3)
389

@@ -47,18 +18,12 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
4718
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
4819
endif()
4920

50-
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
51-
52-
include(GNUInstallDirs)
53-
5421
if(POLICY CMP0099)
5522
cmake_policy(SET CMP0099 NEW)
5623
else()
5724
message(WARNING "Your version of CMake is very old. This may cause linking issues if your dependencies are not in your compiler's default search paths.")
5825
endif()
5926

60-
option(CMAKE_FIND_PACKAGE_PREFER_CONFIG "Search for package config before using Find modules" ON)
61-
6227
if(VCPKG_TOOLCHAIN)
6328
set(ENV{PKG_CONFIG_PATH} "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/pkgconfig")
6429
endif()
@@ -67,16 +32,11 @@ if(POLICY CMP0069)
6732
cmake_policy(SET CMP0069 NEW)
6833
endif()
6934

70-
include(CheckIPOSupported)
71-
check_ipo_supported(RESULT HAVE_LTO)
72-
73-
include(CMakeDependentOption)
74-
cmake_dependent_option(ENABLE_LTO "Use link-time optimisation" OFF "HAVE_LTO" OFF)
75-
7635
set(PROJECT_TARNAME "dsda-doom")
7736
set(WAD_DATA "dsda-doom.wad")
7837
set(PROJECT_STRING "${PROJECT_NAME} ${PROJECT_VERSION}")
7938

39+
include(DsdaOptions)
8040
include(DsdaTargetFeatures)
8141

8242
include(PkgConfigHelper)
@@ -149,26 +109,6 @@ if(WITH_PORTMIDI)
149109
endif()
150110
endif()
151111

152-
if(WIN32)
153-
set(DEFAULT_WAD_DIR ".")
154-
else()
155-
set(DEFAULT_WAD_DIR "share/games/doom")
156-
endif()
157-
158-
set(DSDAPWADDIR "${DEFAULT_WAD_DIR}" CACHE STRING "Path to install DSDA-Doom internal WAD, relative to CMAKE_INSTALL_PREFIX or absolute.")
159-
set(DOOMWADDIR "${CMAKE_INSTALL_PREFIX}/${DEFAULT_WAD_DIR}" CACHE PATH "Path to look for WAD files.")
160-
161-
if(IS_ABSOLUTE "${DSDAPWADDIR}")
162-
set(DSDA_ABSOLUTE_PWAD_PATH "${DSDAPWADDIR}")
163-
else()
164-
set(DSDA_ABSOLUTE_PWAD_PATH "${CMAKE_INSTALL_PREFIX}/${DSDAPWADDIR}")
165-
endif()
166-
167-
option(SIMPLECHECKS "Enable checks which only impose significant overhead if a posible error is detected" ON)
168-
169-
# Debug options, disabled by default
170-
option(RANGECHECK "Enable internal range checking" OFF)
171-
172112
include(DsdaConfigHeader)
173113

174114
set(DSDA_OUTPUT_PATH ${CMAKE_BINARY_DIR})
@@ -212,11 +152,10 @@ install(FILES
212152
DESTINATION "${DSDAPWADDIR}"
213153
)
214154

215-
if(WIN32)
216-
install(FILES COPYING DESTINATION . RENAME COPYING.txt)
217-
else()
218-
install(FILES COPYING DESTINATION "share/doc/${PROJECT_NAME}")
219-
endif()
155+
install(FILES
156+
"COPYING"
157+
DESTINATION "${DSDA_INSTALL_COPYRIGHT_DIR}"
158+
)
220159

221160
if(WIN32)
222161
set(CPACK_GENERATOR ZIP)

prboom2/cmake/DsdaDepsSetup.cmake

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
option(WITH_FLUIDSYNTH "Use FluidSynth if available" ON)
2+
if(WITH_FLUIDSYNTH)
3+
list(APPEND VCPKG_MANIFEST_FEATURES "fluidsynth")
4+
endif()
5+
6+
option(WITH_IMAGE "Use SDL2_image if available" ON)
7+
if(WITH_IMAGE)
8+
list(APPEND VCPKG_MANIFEST_FEATURES "sdl2-image")
9+
endif()
10+
11+
option(WITH_MAD "Use libmad if available" ON)
12+
if(WITH_MAD)
13+
list(APPEND VCPKG_MANIFEST_FEATURES "libmad")
14+
endif()
15+
16+
option(WITH_PORTMIDI "Use PortMidi if available" ON)
17+
if(WITH_PORTMIDI)
18+
list(APPEND VCPKG_MANIFEST_FEATURES "portmidi")
19+
endif()
20+
21+
option(WITH_VORBISFILE "Use vorbisfile if available" ON)
22+
if(WITH_VORBISFILE)
23+
list(APPEND VCPKG_MANIFEST_FEATURES "libvorbis")
24+
endif()
25+
26+
option(WITH_XMP "Use libxmp if available" ON)
27+
if(WITH_XMP)
28+
list(APPEND VCPKG_MANIFEST_FEATURES "libxmp")
29+
endif()
30+
31+
if(CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg.cmake$")
32+
option(VCPKG_APPLOCAL_DEPS "Copy dependencies in the output directory" ON)
33+
option(X_VCPKG_APPLOCAL_DEPS_INSTALL "Copy dependencies during installation" ON)
34+
endif()

prboom2/cmake/DsdaOptions.cmake

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
include_guard()
2+
3+
if(WIN32)
4+
set(default_bin_dir ".")
5+
set(default_wad_dir ".")
6+
set(default_copyright_dir ".")
7+
else()
8+
include(GNUInstallDirs)
9+
set(default_bin_dir "${CMAKE_INSTALL_BINDIR}")
10+
set(default_wad_dir "${CMAKE_INSTALL_DATAROOTDIR}/games/doom")
11+
set(default_copyright_dir "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
12+
endif()
13+
14+
set(DSDAPWADDIR "${default_wad_dir}" CACHE STRING "Path to install DSDA-Doom internal WAD")
15+
set(DOOMWADDIR "${CMAKE_INSTALL_PREFIX}/${default_wad_dir}" CACHE PATH "Path to look for WAD files.")
16+
set(DSDA_INSTALL_COPYRIGHT_DIR "${default_copyright_dir}" CACHE STRING "Destination of the copyright file")
17+
set(DSDA_INSTALL_BINDIR "${default_bin_dir}" CACHE STRING "Destination of the dsda-doom binary")
18+
19+
option(SIMPLECHECKS "Enable checks which only impose significant overhead if a posible error is detected" ON)
20+
option(RANGECHECK "Enable internal range checking" OFF)
21+
22+
option(CMAKE_FIND_PACKAGE_PREFER_CONFIG "Search for package config before using Find modules" ON)
23+
24+
if(IS_ABSOLUTE "${DSDAPWADDIR}")
25+
set(DSDA_ABSOLUTE_PWAD_PATH "${DSDAPWADDIR}")
26+
else()
27+
set(DSDA_ABSOLUTE_PWAD_PATH "${CMAKE_INSTALL_PREFIX}/${DSDAPWADDIR}")
28+
endif()
29+
30+
# Removed options
31+
32+
if(DEFINED CACHE{ENABLE_LTO})
33+
message(AUTHOR_WARNING "ENABLE_LTO has been removed, set CMAKE_INTERPROCEDURAL_OPTIMIZATION instead")
34+
endif()

prboom2/src/CMakeLists.txt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,6 @@ function(AddGameExecutable TARGET SOURCES)
559559

560560
set_target_properties(${TARGET} PROPERTIES
561561
RUNTIME_OUTPUT_DIRECTORY ${DSDA_OUTPUT_PATH}
562-
INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}
563562
C_STANDARD 99
564563
)
565564

@@ -603,12 +602,6 @@ function(AddGameExecutable TARGET SOURCES)
603602
)
604603
endif()
605604

606-
if(WIN32)
607-
set(DSDA_BINARY_INSTALL_DIR ".")
608-
else()
609-
set(DSDA_BINARY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
610-
endif()
611-
612605
if(CMAKE_VERSION VERSION_GREATER 3.20
613606
AND WIN32
614607
AND NOT VCPKG_TOOLCHAIN
@@ -619,10 +612,10 @@ function(AddGameExecutable TARGET SOURCES)
619612
PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-"
620613
POST_EXCLUDE_REGEXES ".*system32/.*\\.dll"
621614
DIRECTORIES $<TARGET_FILE_DIR:${TARGET}> $ENV{PATH}
622-
RUNTIME DESTINATION "${DSDA_BINARY_INSTALL_DIR}"
615+
RUNTIME DESTINATION "${DSDA_INSTALL_BINDIR}"
623616
)
624617
else()
625-
install(TARGETS ${TARGET} RUNTIME DESTINATION "${DSDA_BINARY_INSTALL_DIR}")
618+
install(TARGETS ${TARGET} RUNTIME DESTINATION "${DSDA_INSTALL_BINDIR}")
626619
endif()
627620

628621
target_link_libraries(${TARGET} PRIVATE

0 commit comments

Comments
 (0)