forked from JNechaevsky/international-doom
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
136 lines (108 loc) · 4.3 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
cmake_minimum_required(VERSION 3.9)
project("Inter" VERSION 7.5.0 LANGUAGES C)
# Autotools variables
set(top_srcdir ${CMAKE_CURRENT_SOURCE_DIR})
set(top_builddir ${CMAKE_CURRENT_BINARY_DIR})
# AC_INIT variables
set(PACKAGE_VERSION "7.5")
set(PACKAGE_NAME "${PROJECT_NAME}")
set(PACKAGE_FULLNAME "International Doom ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "inter-doom")
set(PACKAGE_STRING "${PROJECT_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_VERSION_HERETIC "7.0")
set(PACKAGE_FULLNAME_HERETIC "International Heretic ${PACKAGE_VERSION_HERETIC}")
set(PACKAGE_TARNAME_HERETIC "inter-heretic")
set(PACKAGE_STRING_HERETIC "${PROJECT_NAME} ${PACKAGE_VERSION_HERETIC}")
set(PACKAGE_VERSION_HEXEN "7.0")
set(PACKAGE_FULLNAME_HEXEN "International Hexen ${PACKAGE_VERSION_HEXEN}")
set(PACKAGE_TARNAME_HEXEN "inter-hexen")
set(PACKAGE_STRING_HEXEN "${PROJECT_NAME} ${PACKAGE_VERSION_HEXEN}")
set(PACKAGE_BUGREPORT "julia.nechaevskaya@live.com")
string(REGEX REPLACE " Doom$" "" PACKAGE_SHORTNAME "${PACKAGE_NAME}")
set(PACKAGE_COPYRIGHT "Copyright (C) 2016-2024 Julia Nechaevskaya")
set(PACKAGE_LICENSE "GNU GPL (version 2)")
# Any settings that should apply to all targets in this directory and all
# subdirectories should go here. Use judiciously.
if(MSVC)
add_definitions("/D_CRT_SECURE_NO_WARNINGS" "/D_CRT_SECURE_NO_DEPRECATE"
"/D_CRT_NONSTDC_NO_DEPRECATE")
else()
add_compile_options("-Wall"
"-Wdeclaration-after-statement"
"-Wredundant-decls"
# "-Wpedantic"
# "-Wextra"
# "-Wno-ignored-qualifiers"
)
endif()
# Enable LTO if available. Hovewer, CMake does not appear to support
# LTO properly for MinGW GCC which results in much longer linking time.
# Consider only enabling it when making a release.
if(POLICY CMP0069)
cmake_policy(SET CMP0069 NEW)
endif()
include(CheckIPOSupported)
check_ipo_supported(RESULT HAVE_LTO)
include(CMakeDependentOption) # Note: replace first ON to OFF to disable.
cmake_dependent_option(ENABLE_LTO "Use link-time optimization" ON "HAVE_LTO" OFF)
# Enable ASan (AddressSanitizer).
# Note: doesn't work with MinGW, use Clang64 if using MSYS enviroment.
option(ENABLE_ASAN "Enable ASan" OFF)
if(ENABLE_ASAN)
add_compile_options("-fsanitize=address")
add_link_options(-fsanitize=address)
endif()
option(CMAKE_FIND_PACKAGE_PREFER_CONFIG
"Lookup package config files before using find modules" On)
option(ENABLE_SDL2_NET "Enable SDL2_net" On)
option(ENABLE_SDL2_MIXER "Enable SDL2_mixer" On)
find_package(SDL2 2.0.18)
if(ENABLE_SDL2_MIXER)
find_package(SDL2_mixer 2.0.2)
else()
add_compile_definitions(DISABLE_SDL2MIXER=1)
endif()
if(ENABLE_SDL2_NET)
find_package(SDL2_net 2.0.0)
else()
add_compile_definitions(DISABLE_SDL2NET=1)
endif()
option(CRISPY_TRUECOLOR "True color rendering" ON)
# Check for libsamplerate.
find_package(SampleRate)
if(SampleRate_FOUND)
set(HAVE_LIBSAMPLERATE TRUE)
endif()
# Check for Miniz (replaces libpng).
find_package(miniz 2.0.0)
if(NOT miniz_FOUND)
message(STATUS "Using vendored miniz library")
add_subdirectory("miniz")
endif()
# Check for FluidSynth.
find_package(FluidSynth 2.2.0)
if(FluidSynth_FOUND)
set(HAVE_FLUIDSYNTH TRUE)
endif()
find_package(m)
include(CheckSymbolExists)
include(CheckIncludeFile)
check_symbol_exists(strcasecmp "strings.h" HAVE_DECL_STRCASECMP)
check_symbol_exists(strncasecmp "strings.h" HAVE_DECL_STRNCASECMP)
check_include_file("dirent.h" HAVE_DIRENT_H)
string(CONCAT WINDOWS_RC_VERSION "${PROJECT_VERSION_MAJOR}, "
"${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}, 0")
# Without a hyphen. This is used for the bash-completion scripts.
string(TOLOWER "${PACKAGE_SHORTNAME}" PROGRAM_SPREFIX)
# With a hyphen, used almost everywhere else.
set(PROGRAM_PREFIX "${PROGRAM_SPREFIX}-")
configure_file(cmake/config.h.cin config.h)
configure_file(src/doom-res.rc.in src/doom-res.rc)
configure_file(src/heretic-res.rc.in src/heretic-res.rc)
configure_file(src/hexen-res.rc.in src/hexen-res.rc)
configure_file(src/setup-res.rc.in src/setup-res.rc)
configure_file(src/setup/setup-manifest.xml.in src/setup/setup-manifest.xml)
foreach(SUBDIR textscreen opl pcsound src)
add_subdirectory("${SUBDIR}")
endforeach()