author | unC0Rr |
Mon, 16 Sep 2024 16:57:11 +0200 | |
branch | transitional_engine |
changeset 16063 | 09beeec033ba |
parent 16052 | 0fd23fc57947 |
child 16065 | 7b8d96fc8799 |
permissions | -rw-r--r-- |
9677 | 1 |
enable_language(Pascal) |
2 |
||
15577
107170c05bac
Add patch to correctly handle libsdl2 from system/cmake
LocutusOfBorg
parents:
15370
diff
changeset
|
3 |
find_package(SDL2 REQUIRED CONFIG) |
16050 | 4 |
find_package(SDL2_image REQUIRED) |
5 |
find_package(SDL2_net REQUIRED) |
|
6 |
find_package(SDL2_ttf REQUIRED) |
|
7 |
find_package(SDL2_mixer REQUIRED) |
|
2401 | 8 |
|
9894 | 9 |
include(CheckLibraryExists) |
10 |
include(${CMAKE_MODULE_PATH}/utils.cmake) |
|
9224 | 11 |
|
2672 | 12 |
|
8752
48cf2ccb83c6
with lot of hackery, use add_executable on pascal files, SUCCSS
koda
parents:
8702
diff
changeset
|
13 |
enable_language(Pascal) |
11646
42d7f5dbd8dc
Fixes crash Wuzzy and I were encountering in debian fpc 2.6.2 and 3.0.0 after the addition of the uPhysFSLayer dependency to uUtils in rcac74d9075be
nemo
parents:
11392
diff
changeset
|
14 |
add_flag_append(CMAKE_Pascal_FLAGS "-Cs2000000 -B") |
15872 | 15 |
#add_flag_append(CMAKE_Pascal_FLAGS_DEBUG "-gv") |
9886 | 16 |
add_flag_append(CMAKE_Pascal_FLAGS_RELEASE "-Xs") |
9921
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
17 |
if(UNIX) |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
18 |
include(TargetArch) |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
19 |
target_architecture(CMAKE_TARGET_ARCHITECTURES) |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
20 |
if(${CMAKE_Pascal_COMPILER_VERSION} VERSION_GREATER 2.7 OR ${CMAKE_TARGET_ARCHITECTURES} MATCHES "x86_64" OR ${CMAKE_TARGET_ARCHITECTURES} MATCHES "i386") |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
21 |
add_flag_append(CMAKE_Pascal_FLAGS "-fPIC") |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
22 |
endif() |
7227cc2acba1
Fixed fPIC link failure with arm and sparc architectures, fixing issue #757
Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
parents:
9894
diff
changeset
|
23 |
endif(UNIX) |
9883
d6d3be73d427
move CMAKE_Pascal_FLAGS_* flags after enabling the Pascal language or they get overwritten
koda
parents:
9743
diff
changeset
|
24 |
|
15979 | 25 |
# FPC 3.2.2 does not create s COFF file for the engine icon, but still includes it |
26 |
# in the list of files to be linked, leading to a linking failure |
|
27 |
if(${CMAKE_Pascal_COMPILER_VERSION} VERSION_GREATER_EQUAL 3.2) |
|
28 |
add_flag_append(CMAKE_Pascal_FLAGS "-dSKIP_RESOURCES") |
|
29 |
endif() |
|
30 |
||
9996 | 31 |
# convert list into pascal array |
10747
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
32 |
if(FONTS_DIRS) |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
33 |
list(LENGTH FONTS_DIRS ndirs) |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
34 |
set(FONTS_DIRS_ARRAY "array [0..${ndirs}] of PChar = (") |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
35 |
foreach(fontdir ${FONTS_DIRS}) |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
36 |
set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\n_P'${fontdir}',") |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
37 |
endforeach(fontdir) |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
38 |
set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\nnil);\n") |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
39 |
else(FONTS_DIRS) |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
40 |
set(FONTS_DIRS_ARRAY "array [0..1] of PChar = (nil, nil);") |
07ade56c3b4a
backporting some build system fixes and pas2c tweaks
sheepluva
parents:
10238
diff
changeset
|
41 |
endif(FONTS_DIRS) |
9224 | 42 |
|
8702
a28966180a29
have fpc work in the right directory instead of passing the full path of the main module (avoids having full paths in debug build backtraces for the first module only)
koda
parents:
8697
diff
changeset
|
43 |
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc) |
8846
c156ac6ddc2b
set directories to be included externally, in the project file
koda
parents:
8843
diff
changeset
|
44 |
include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
8661
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
45 |
|
2672 | 46 |
|
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
47 |
#set the sources with the correct order of dependencies so that cmake won't be confused |
2786 | 48 |
set(engine_sources |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
49 |
SDLh.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
50 |
uSinTable.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
51 |
uFloat.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
52 |
uConsts.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
53 |
LuaPas.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
54 |
uTypes.pas |
9300 | 55 |
uVariables.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
56 |
uUtils.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
57 |
uMisc.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
58 |
uConsole.pas |
9301
c5d1c8259ef4
break uDebug and uCommand depedency loop by putting stuff in uIO
koda
parents:
9300
diff
changeset
|
59 |
uCommands.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
60 |
uDebug.pas |
14865
9e8c201eae9d
Move Hedgewars key IDs to CSV file
Wuzzy <Wuzzy2@mail.ru>
parents:
13943
diff
changeset
|
61 |
uKeyNames.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
62 |
uInputHandler.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
63 |
uTextures.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
64 |
uRenderUtils.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
65 |
uRender.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
66 |
uCaptions.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
67 |
uIO.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
68 |
uChat.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
69 |
uPhysFSLayer.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
70 |
uSound.pas |
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
71 |
ArgParsers.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
72 |
uRandom.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
73 |
uLocale.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
74 |
uStats.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
75 |
uCursor.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
76 |
uVideoRec.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
77 |
uAILandMarks.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
78 |
adler32.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
79 |
uLandTemplates.pas |
9302 | 80 |
uLandTexture.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
81 |
uLandGraphics.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
82 |
uLandPainted.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
83 |
uLandOutline.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
84 |
uLandGenMaze.pas |
10181
4708343d5963
Perlin noise generator untweaked, temporarily replacing maze generator
unc0rr
parents:
10174
diff
changeset
|
85 |
uLandGenPerlin.pas |
10198 | 86 |
uLandGenTemplateBased.pas |
87 |
uLandUtils.pas |
|
9302 | 88 |
|
89 |
#this is where dependency tracking becomes hard |
|
90 |
uStore.pas |
|
91 |
uAmmos.pas |
|
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
92 |
uLandObjects.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
93 |
uLand.pas |
9302 | 94 |
uGearsList.pas |
95 |
uCollisions.pas |
|
8819 | 96 |
uAIMisc.pas |
97 |
uAIActions.pas |
|
9302 | 98 |
uAIAmmoTests.pas |
8819 | 99 |
uAI.pas |
100 |
uWorld.pas |
|
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
101 |
uVisualGearsList.pas |
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
102 |
uVisualGearsHandlers.pas |
8819 | 103 |
uVisualGears.pas |
8761
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
104 |
|
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
105 |
uGears.pas |
801cf78707f2
partial reodering of units so that dependency tracking is done with cmake
koda
parents:
8756
diff
changeset
|
106 |
uGame.pas |
4413 | 107 |
uCommandHandlers.pas |
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
108 |
uGearsRender.pas |
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
109 |
uGearsHedgehog.pas |
7370
d50b874e7ee8
Introduce uGearsHandlers.pas, for now only part of cake handlers is moved there
unc0rr
parents:
7233
diff
changeset
|
110 |
uGearsHandlers.pas |
7592 | 111 |
uGearsHandlersRope.pas |
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
112 |
uGearsHandlersMess.pas |
7592 | 113 |
uGearsUtils.pas |
9302 | 114 |
uTeams.pas |
9299
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
115 |
|
d64f80504749
if you don't add the new pas files here they won't potentially trigger a rebuild anyway
koda
parents:
9285
diff
changeset
|
116 |
#these interact with everything, so compile last |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
117 |
uScript.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
118 |
) |
220 | 119 |
|
7959 | 120 |
|
9963 | 121 |
if(${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.2 OR # older versions are just ancient |
122 |
(${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.6 AND APPLE)) # because of 64bit and opengl bindings |
|
8852 | 123 |
message(FATAL_ERROR "Your FreePascal installation is too old (fpc ${CMAKE_Pascal_COMPILER_VERSION})!") |
9965 | 124 |
elseif(${CMAKE_Pascal_COMPILER_VERSION} VERSION_GREATER 2.4) |
8802
ed984e06b435
enable fpc inlining only in release mode only if using fpc > 2.6
koda
parents:
8798
diff
changeset
|
125 |
#enable INLINE only with a recent version of fpc |
8821
e85ff6e298b5
adjust verbosity, move debug/release variables in the right section
koda
parents:
8819
diff
changeset
|
126 |
add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si) |
8164
b12634f2e1b2
Move noexecstack flags to Freepascal module and refactor.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8162
diff
changeset
|
127 |
endif() |
476
a4e975f70b60
check for noexecstack linker compatibility (MacOS linker)
displacer
parents:
433
diff
changeset
|
128 |
|
9942 | 129 |
#generic folder where our libraries reside |
130 |
add_flag_append(CMAKE_Pascal_FLAGS "-Fl${LIBRARY_OUTPUT_PATH}") |
|
476
a4e975f70b60
check for noexecstack linker compatibility (MacOS linker)
displacer
parents:
433
diff
changeset
|
131 |
|
8090
38d9cc60b14c
cleanup revision section, make hg launch tolerant to config errors, drop deprecated exec_prog for desktop configuration in favour of execute_process
koda
parents:
8087
diff
changeset
|
132 |
#DEPENDECIES AND EXECUTABLES SECTION |
9961 | 133 |
if(APPLE AND (NOT BUILD_ENGINE_LIBRARY)) |
10973
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
134 |
#OpenGL deps |
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
135 |
add_flag_append(CMAKE_Pascal_FLAGS "-k-framework -kCocoa") |
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
136 |
add_flag_append(CMAKE_Pascal_FLAGS "-k-framework -kOpenGL") |
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
137 |
|
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
138 |
#set the correct library or framework style depending on the main SDL |
15577
107170c05bac
Add patch to correctly handle libsdl2 from system/cmake
LocutusOfBorg
parents:
15370
diff
changeset
|
139 |
string(FIND "${SDL2_LIBRARIES}" "dylib" sdl_framework) |
10973
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
140 |
if(${sdl_framework} GREATER -1) |
11377 | 141 |
add_flag_append(CMAKE_Pascal_FLAGS "-k-lsdl2 -k-lsdl2_image -k-lsdl2_mixer -k-lsdl2_ttf -k-lsdl2_net") |
10973
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
142 |
else() |
11377 | 143 |
add_flag_append(CMAKE_Pascal_FLAGS "-k-framework -kSDL2 -k-framework -kSDL2_image -k-framework -kSDL2_mixer -k-framework -kSDL2_net -k-framework -kSDL2_net -k-framework -kSDL2_ttf") |
10973
36b84888934c
Move OSX SDL library configuration from SDLh to proper CMakeLists
koda
parents:
10803
diff
changeset
|
144 |
endif() |
9271 | 145 |
endif() |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
146 |
|
9959 | 147 |
if(LIBAV_FOUND) |
8811 | 148 |
add_subdirectory(avwrapper) |
8843 | 149 |
list(APPEND HW_LINK_LIBS avwrapper) |
8775
3cad01db0bae
apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents:
8770
diff
changeset
|
150 |
add_definitions(-dUSE_VIDEO_RECORDING) |
7538 | 151 |
endif() |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
152 |
|
15335 | 153 |
if(NOT WIN32) |
154 |
find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP") |
|
155 |
if(PNG_FOUND) |
|
156 |
list(INSERT engine_sources 0 PNGh.pas) |
|
157 |
list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path |
|
158 |
get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH) |
|
159 |
add_flag_append(CMAKE_Pascal_FLAGS "-k-L${PNG_LIBRARY_DIR} -Fl${PNG_LIBRARY_DIR}") |
|
160 |
add_definitions(-dPNG_SCREENSHOTS) |
|
161 |
endif() |
|
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
162 |
endif() |
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
163 |
|
10008 | 164 |
if(LUA_SYSTEM) |
9208
acb2492288e5
heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents:
9203
diff
changeset
|
165 |
get_filename_component(LUA_LIBRARY_DIR ${LUA_LIBRARY} PATH) |
acb2492288e5
heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents:
9203
diff
changeset
|
166 |
get_filename_component(LUA_LIBRARY_NAME ${LUA_LIBRARY} NAME) |
acb2492288e5
heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents:
9203
diff
changeset
|
167 |
#NAME_WE would strip the .1 (or .2) next to the ".so" |
acb2492288e5
heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents:
9203
diff
changeset
|
168 |
string(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_PREFIX}(.*)${CMAKE_SHARED_LIBRARY_SUFFIX}" "\\1" LUA_LIBRARY_NAME "${LUA_LIBRARY_NAME}") |
9230 | 169 |
add_flag_append(CMAKE_Pascal_FLAGS "-Fl${LUA_LIBRARY_DIR} -XLAlua=${LUA_LIBRARY_NAME}") |
9227 | 170 |
else() |
171 |
add_definitions(-dLUA_INTERNAL) |
|
172 |
list(APPEND HW_LINK_LIBS lua) |
|
173 |
add_flag_append(CMAKE_Pascal_FLAGS "-XLAlua=${lua_output_name}") |
|
9208
acb2492288e5
heavily rework lua discovery and linking, needs testing but it's more similar to what we do for other libraries now
koda
parents:
9203
diff
changeset
|
174 |
endif() |
7655 | 175 |
|
13904
99b265e0d1d0
Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents:
12383
diff
changeset
|
176 |
# PhysFS |
15977 | 177 |
if (DEFINED PHYSFS_LIBRARY_RELEASE) |
178 |
if(${USE_DEBUG_LIBRARIES}) |
|
179 |
get_filename_component(PHYSFS_LIBRARY_DIR ${PHYSFS_LIBRARY_DEBUG} PATH) |
|
180 |
add_flag_append(CMAKE_Pascal_FLAGS "-Fl${PHYSFS_LIBRARY_DEBUG}") |
|
181 |
else() |
|
182 |
get_filename_component(PHYSFS_LIBRARY_DIR ${PHYSFS_LIBRARY_RELEASE} PATH) |
|
183 |
add_flag_append(CMAKE_Pascal_FLAGS "-Fl${PHYSFS_LIBRARY_RELEASE}") |
|
184 |
endif() |
|
185 |
else() |
|
186 |
get_filename_component(PHYSFS_LIBRARY_DIR ${PHYSFS_LIBRARY} PATH) |
|
187 |
add_flag_append(CMAKE_Pascal_FLAGS "-Fl${PHYSFS_LIBRARY}") |
|
188 |
endif() |
|
13904
99b265e0d1d0
Drop internal PhysFS, bump PhysFS requirement to 3.0.0
Wuzzy <Wuzzy2@mail.ru>
parents:
12383
diff
changeset
|
189 |
|
8843 | 190 |
list(APPEND HW_LINK_LIBS physlayer) |
7655 | 191 |
|
10015 | 192 |
#opengl 2 |
193 |
IF(GL2) |
|
194 |
add_definitions(-dGL2) |
|
195 |
ENDIF(GL2) |
|
9650 | 196 |
|
9224 | 197 |
#needs to be last |
8775
3cad01db0bae
apply the new macro add_flag_* to set pascal flags, apply add_definitions where appropriate, small cleanup
koda
parents:
8770
diff
changeset
|
198 |
add_definitions(-dDEBUGFILE) |
9203
bcc25cb9b122
and now also avwrapper can be shared/static, add visibility to its exported functions, drop (needed only when static)
koda
parents:
9151
diff
changeset
|
199 |
|
9741
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
200 |
|
9894 | 201 |
# source files are with full path after this |
9743
6e505ea936ad
make all objects depend on .inc files (which are not correctly positioned in list, because cmake can't deal with that
sheepluva
parents:
9741
diff
changeset
|
202 |
set(sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/options.inc" "${CMAKE_CURRENT_BINARY_DIR}/config.inc") |
9741
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
203 |
foreach(loop_var ${engine_sources}) |
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
204 |
list(APPEND sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/${loop_var}") |
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
205 |
endforeach(loop_var) |
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
206 |
|
13943 | 207 |
if (WIN32 AND VCPKG_TOOLCHAIN) |
208 |
add_definitions(-dWIN32_VCPKG) |
|
15339 | 209 |
add_flag_append(CMAKE_Pascal_FLAGS_DEBUG "-dVCPKG_DEBUG") |
13943 | 210 |
endif() |
211 |
||
15370
96254b857257
update windows build to detect when a cross-compiler is necessary
alfadur
parents:
15358
diff
changeset
|
212 |
if (WIN32_WIN64_CROSS_COMPILE) |
96254b857257
update windows build to detect when a cross-compiler is necessary
alfadur
parents:
15358
diff
changeset
|
213 |
add_flag_append(CMAKE_Pascal_FLAGS "-Px86_64 -Twin64") |
96254b857257
update windows build to detect when a cross-compiler is necessary
alfadur
parents:
15358
diff
changeset
|
214 |
endif() |
9741
cf086f49516b
make source files objects depend on their predecessors in list
sheepluva
parents:
9668
diff
changeset
|
215 |
|
8823 | 216 |
#SOURCE AND PROGRAMS SECTION |
217 |
if(BUILD_ENGINE_LIBRARY) |
|
9339
14f5f3a1e2f7
some work on cmake_pascal files to better support flags we use, make engine compile as library again
koda
parents:
9302
diff
changeset
|
218 |
message("***Engine will be built as library (experimental)***") |
10160 | 219 |
if(APPLE) |
220 |
if (${current_macosx_version} VERSION_GREATER "10.5") |
|
221 |
# due to compiler/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail |
|
222 |
add_flag_prepend(CMAKE_Pascal_FLAGS "-k-no_order_inits") |
|
223 |
endif() |
|
8823 | 224 |
endif() |
7954 | 225 |
|
8823 | 226 |
#workaround for missing <TARGET> support during object generation |
227 |
set(engine_output_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
228 |
set(destination_dir ${target_library_install_dir}) |
|
8827 | 229 |
add_flag_prepend(CMAKE_Pascal_FLAGS "-o${LIBRARY_OUTPUT_PATH}/${engine_output_name}") |
8823 | 230 |
|
231 |
add_definitions(-dHWLIBRARY) |
|
10174 | 232 |
set_source_files_properties(hwLibrary.pas PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar};${CMAKE_CURRENT_SOURCE_DIR}/hwengine.pas") |
9894 | 233 |
add_library(hwengine SHARED hwLibrary.pas) |
8823 | 234 |
else() |
15358
06e5f9ec5f8d
Handle a possible linker error on macOS
raptor <buckyballreaction@gmail.com>
parents:
15339
diff
changeset
|
235 |
if(APPLE) |
06e5f9ec5f8d
Handle a possible linker error on macOS
raptor <buckyballreaction@gmail.com>
parents:
15339
diff
changeset
|
236 |
# Handle large linker install_names |
06e5f9ec5f8d
Handle a possible linker error on macOS
raptor <buckyballreaction@gmail.com>
parents:
15339
diff
changeset
|
237 |
add_flag_prepend(CMAKE_Pascal_FLAGS "-k-headerpad_max_install_names") |
06e5f9ec5f8d
Handle a possible linker error on macOS
raptor <buckyballreaction@gmail.com>
parents:
15339
diff
changeset
|
238 |
endif() |
06e5f9ec5f8d
Handle a possible linker error on macOS
raptor <buckyballreaction@gmail.com>
parents:
15339
diff
changeset
|
239 |
|
8823 | 240 |
# no need to change name here because target has same name |
241 |
set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}") |
|
242 |
set(destination_dir ${target_binary_install_dir}) |
|
9894 | 243 |
set_source_files_properties(hwengine.pas PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar}") |
244 |
add_executable(hwengine hwengine.pas) |
|
7538 | 245 |
endif() |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
246 |
|
8855
879270f627e0
restore the osx build disabling universal app support
koda
parents:
8852
diff
changeset
|
247 |
#even though not actually used, this will trigger relink if any lib changes |
16052
0fd23fc57947
Make pascal engine link to hwengine-future and use WFC generator
unC0Rr
parents:
16050
diff
changeset
|
248 |
target_link_libraries(hwengine ${HW_LINK_LIBS} hwengine_future) |
184 | 249 |
|
8316
89232b2fa1d6
cmake rework, cleanup a lot of redundant sections, separate library and binary install location, unify osx and win handling of the data directory (tested on win, lin and mac)
koda
parents:
8314
diff
changeset
|
250 |
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" DESTINATION ${destination_dir}) |