author | Periklis Ntanasis <pntanasis@gmail.com> |
Tue, 11 Jun 2013 00:05:07 +0300 | |
changeset 9180 | d19c09670ec8 |
parent 9151 | 1d2df388fcc6 |
child 9160 | fc46e75f6b72 |
child 9203 | bcc25cb9b122 |
permissions | -rw-r--r-- |
2420 | 1 |
find_package(SDL) |
2 |
find_package(SDL_image) |
|
3 |
find_package(SDL_net) |
|
4 |
find_package(SDL_ttf) |
|
2515
51d3f4b6293a
revert audio to use SDL_mixer -- also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset
|
5 |
find_package(SDL_mixer) |
2401 | 6 |
|
8661
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
7 |
include (CheckLibraryExists) |
8669
3f9853888d4f
user correct variable and slimmer test, version typos, .dll.a updated
koda
parents:
8666
diff
changeset
|
8 |
#Mix_Init/Mix_Quit from SDL_mixer 1.2.10 |
8664 | 9 |
check_library_exists(${SDLMIXER_LIBRARY} Mix_Init "" HAVE_MIXINIT) |
8661
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
10 |
if(HAVE_MIXINIT) |
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
11 |
list(APPEND pascal_flags "-dSDL_MIXER_NEWER") |
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
12 |
endif() |
8669
3f9853888d4f
user correct variable and slimmer test, version typos, .dll.a updated
koda
parents:
8666
diff
changeset
|
13 |
#IMG_Init/IMG_Quit from SDL_image 1.2.8 |
8664 | 14 |
check_library_exists(${SDLIMAGE_LIBRARY} IMG_Init "" HAVE_IMGINIT) |
8661
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
15 |
if(HAVE_IMGINIT) |
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
16 |
list(APPEND pascal_flags "-dSDL_IMAGE_NEWER") |
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
17 |
endif() |
ac8dba27a3f1
replace sdl mixer/image version checking with something more robust
koda
parents:
8611
diff
changeset
|
18 |
|
2672 | 19 |
|
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
|
20 |
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc) |
2406 | 21 |
|
3697 | 22 |
#SOURCE AND PROGRAMS SECTION |
8312
9e8781faabab
can compile engine as library on linux but not run the executable (automatically), most likely breaking other platforms (wrt engine-as-library)
koda
parents:
8311
diff
changeset
|
23 |
if(${BUILD_ENGINE_LIBRARY}) |
8314
7faceaca67d4
can change library name and compile it on windows again
koda
parents:
8312
diff
changeset
|
24 |
set(engine_output_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}") |
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
|
25 |
set(hwengine_project hwLibrary.pas) |
8312
9e8781faabab
can compile engine as library on linux but not run the executable (automatically), most likely breaking other platforms (wrt engine-as-library)
koda
parents:
8311
diff
changeset
|
26 |
else() |
9e8781faabab
can compile engine as library on linux but not run the executable (automatically), most likely breaking other platforms (wrt engine-as-library)
koda
parents:
8311
diff
changeset
|
27 |
set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}") |
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
|
28 |
set(hwengine_project hwengine.pas) |
8312
9e8781faabab
can compile engine as library on linux but not run the executable (automatically), most likely breaking other platforms (wrt engine-as-library)
koda
parents:
8311
diff
changeset
|
29 |
endif() |
8166
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
30 |
|
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
31 |
if (APPLE) |
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
32 |
set(required_fpc_version 2.6) |
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
33 |
else() |
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
34 |
set(required_fpc_version 2.2) |
5bc0fc0bab4d
Refactor Freepascal module.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8164
diff
changeset
|
35 |
endif() |
184 | 36 |
|
2786 | 37 |
set(engine_sources |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
38 |
${hwengine_project} |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
39 |
LuaPas.pas |
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
40 |
PNGh.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
41 |
SDLh.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
42 |
uAI.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
43 |
uAIActions.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
44 |
uAILandMarks.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
45 |
uAIAmmoTests.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
46 |
uAIMisc.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
47 |
uAmmos.pas |
4393 | 48 |
uCaptions.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
49 |
uChat.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
50 |
uCollisions.pas |
4373 | 51 |
uCommands.pas |
4413 | 52 |
uCommandHandlers.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
53 |
uConsole.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
54 |
uConsts.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
55 |
uCursor.pas |
4403 | 56 |
uDebug.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
57 |
uFloat.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
58 |
uGame.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
59 |
uGears.pas |
7370
d50b874e7ee8
Introduce uGearsHandlers.pas, for now only part of cake handlers is moved there
unc0rr
parents:
7233
diff
changeset
|
60 |
uGearsHandlers.pas |
7592 | 61 |
uGearsHandlersRope.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
62 |
uGearsHedgehog.pas |
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
63 |
uGearsList.pas |
4386 | 64 |
uGearsRender.pas |
7592 | 65 |
uGearsUtils.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
66 |
uIO.pas |
6954
a61458a81480
changed uKeys to uInputHandler to better reflect its function
Xeli
parents:
6920
diff
changeset
|
67 |
uInputHandler.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
68 |
uLand.pas |
6491 | 69 |
uLandGenMaze.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
70 |
uLandGraphics.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
71 |
uLandObjects.pas |
6491 | 72 |
uLandOutline.pas |
4457 | 73 |
uLandPainted.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
74 |
uLandTemplates.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
75 |
uLandTexture.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
76 |
uLocale.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
77 |
uMisc.pas |
7959 | 78 |
uPhysFSLayer.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
79 |
uRandom.pas |
4378 | 80 |
uRender.pas |
4380 | 81 |
uRenderUtils.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
82 |
uScript.pas |
4415 | 83 |
uSinTable.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
84 |
uSound.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
85 |
uStats.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
86 |
uStore.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
87 |
uTeams.pas |
4375 | 88 |
uTextures.pas |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7718
diff
changeset
|
89 |
uTouch.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
90 |
uTypes.pas |
4374 | 91 |
uUtils.pas |
5179
8d64dcb566ea
Fix "Mixing signed expressions and longwords gives a 64bit result" warnings
unc0rr
parents:
5169
diff
changeset
|
92 |
uVariables.pas |
7180 | 93 |
uVideoRec.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
94 |
uVisualGears.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
95 |
uWorld.pas |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
96 |
GSHandlers.inc |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
97 |
VGSHandlers.inc |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
98 |
ArgParsers.inc |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
99 |
options.inc |
4378 | 100 |
adler32.pas |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
101 |
${CMAKE_CURRENT_BINARY_DIR}/config.inc |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
102 |
) |
220 | 103 |
|
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
|
104 |
if(${BUILD_ENGINE_LIBRARY}) |
9151 | 105 |
message("*** Engine will be built as library (experimental) ***") |
8347 | 106 |
list(APPEND pascal_flags "-dHWLIBRARY") |
4928 | 107 |
|
108 |
# create position independent code, only required for x68_64 builds, similar to -fPIC |
|
109 |
if(CMAKE_SIZEOF_VOID_P MATCHES "8") |
|
8347 | 110 |
list(APPEND pascal_flags "-Cg") |
4928 | 111 |
endif(CMAKE_SIZEOF_VOID_P MATCHES "8") |
112 |
||
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
113 |
# due to compiler/linker issues on Max OS X 10.6 -k-no_order_inits is needed to avoid linking fail |
8311 | 114 |
if(APPLE AND current_macosx_version VERSION_GREATER "10.5") |
8347 | 115 |
list(APPEND pascal_flags "-k-no_order_inits") |
5188 | 116 |
endif() |
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
|
117 |
set(destination_dir ${target_library_install_dir}) |
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
|
118 |
else(${BUILD_ENGINE_LIBRARY}) |
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
|
119 |
set(destination_dir ${target_binary_install_dir}) |
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
|
120 |
endif(${BUILD_ENGINE_LIBRARY}) |
3495
a6b4f351d400
now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents:
3468
diff
changeset
|
121 |
|
7959 | 122 |
|
8686
d303da4568b7
introduce find_package_or_fail/disable to group together similar cmake code
koda
parents:
8669
diff
changeset
|
123 |
include(${CMAKE_MODULE_PATH}/utils.cmake) |
d303da4568b7
introduce find_package_or_fail/disable to group together similar cmake code
koda
parents:
8669
diff
changeset
|
124 |
|
d303da4568b7
introduce find_package_or_fail/disable to group together similar cmake code
koda
parents:
8669
diff
changeset
|
125 |
find_package_or_fail(FreePascal) |
d303da4568b7
introduce find_package_or_fail/disable to group together similar cmake code
koda
parents:
8669
diff
changeset
|
126 |
|
8665
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
127 |
#when cmake-2.6 support is dropped, this ought to be inside FindFreePascal.cmake |
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
128 |
if (FREEPASCAL_VERSION VERSION_LESS required_fpc_version) |
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
129 |
message(FATAL_ERROR "Freepascal ${FREEPASCAL_VERSION} is too old, minimum version required is ${required_fpc_version}") |
8164
b12634f2e1b2
Move noexecstack flags to Freepascal module and refactor.
Bryan Dunsmore <dunsmoreb@gmail.com>
parents:
8162
diff
changeset
|
130 |
endif() |
476
a4e975f70b60
check for noexecstack linker compatibility (MacOS linker)
displacer
parents:
433
diff
changeset
|
131 |
|
a4e975f70b60
check for noexecstack linker compatibility (MacOS linker)
displacer
parents:
433
diff
changeset
|
132 |
|
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
|
133 |
#DEPENDECIES AND EXECUTABLES SECTION |
2652 | 134 |
if(APPLE) |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
135 |
string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
136 |
string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
137 |
string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}") |
2652 | 138 |
|
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
139 |
if(powerpc_build) |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
140 |
set(powerpc_build "powerpc") |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
141 |
endif() |
2652 | 142 |
|
7708 | 143 |
#on OSX we need to provide the SDL_main() function when building as executable |
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
|
144 |
if(NOT ${BUILD_ENGINE_LIBRARY}) |
7708 | 145 |
#let's look for the installed sdlmain file; if it is not found, let's build our own |
7109 | 146 |
find_package(SDL REQUIRED) |
147 |
#remove the ";-framework Cocoa" from the SDL_LIBRARY variable |
|
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
|
148 |
string(REGEX REPLACE "(.*);-.*" "\\1" sdl_library_only "${SDL_LIBRARY}") |
7109 | 149 |
#find libsdmain.a |
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
|
150 |
find_file(SDLMAIN_LIB libSDLMain.a PATHS ${sdl_library_only}/Resources/) |
2669 | 151 |
|
7109 | 152 |
if(SDLMAIN_LIB MATCHES "SDLMAIN_LIB-NOTFOUND") |
153 |
include_directories(${SDL_INCLUDE_DIR}) |
|
154 |
add_library (SDLmain STATIC SDLMain.m) |
|
155 |
#add a dependency to the hwengine target |
|
8347 | 156 |
list(APPEND engine_sources SDLmain) |
7708 | 157 |
set(SDLMAIN_LIB "${LIBRARY_OUTPUT_PATH}/libSDLmain.a") |
7109 | 158 |
endif() |
2669 | 159 |
|
8347 | 160 |
list(APPEND pascal_flags "-k${SDLMAIN_LIB}") |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
161 |
endif() |
8518
24d2bdc6deff
fix compiling on osx when you have multiple linkers installed
koda
parents:
8379
diff
changeset
|
162 |
|
24d2bdc6deff
fix compiling on osx when you have multiple linkers installed
koda
parents:
8379
diff
changeset
|
163 |
#when you have multiple ld installation make sure you get the one bundled with the compiler |
24d2bdc6deff
fix compiling on osx when you have multiple linkers installed
koda
parents:
8379
diff
changeset
|
164 |
get_filename_component(compiler_dir ${CMAKE_C_COMPILER} PATH) |
24d2bdc6deff
fix compiling on osx when you have multiple linkers installed
koda
parents:
8379
diff
changeset
|
165 |
list(APPEND pascal_flags "-FD${compiler_dir}") |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
166 |
endif(APPLE) |
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
167 |
|
8688 | 168 |
find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP") |
169 |
if(PNG_FOUND) |
|
8832 | 170 |
list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path |
171 |
get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH) |
|
8932
e095e3023682
it's still not really clear to my why this is needed, maybe only in combination with -XD
koda
parents:
8832
diff
changeset
|
172 |
list(APPEND pascal_flags "-dPNG_SCREENSHOTS" "-Fl${PNG_LIBRARY_DIR}" "-k-L${PNG_LIBRARY_DIR}") |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
173 |
endif() |
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
174 |
|
7655 | 175 |
|
7706 | 176 |
#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6 |
8665
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
177 |
if(FREEPASCAL_VERSION VERSION_LESS "2.6") |
7940 | 178 |
#under some configurations CMAKE_BUILD_TOOL fails to pass on the jobserver, breaking parallel compilation |
179 |
if(UNIX) |
|
180 |
set(SAFE_BUILD_TOOL $(MAKE)) |
|
181 |
else() |
|
182 |
set(SAFE_BUILD_TOOL ${CMAKE_BUILD_TOOL}) |
|
183 |
endif() |
|
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
|
184 |
add_custom_target(ENGINECLEAN COMMAND ${SAFE_BUILD_TOOL} "clean" "${PROJECT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") |
7655 | 185 |
endif() |
186 |
||
187 |
||
8666
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
188 |
if(${FFMPEG_FOUND}) |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
189 |
# TODO: this check is only for SDL < 2 |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
190 |
# fpc will take care of linking but we need to have this library installed |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
191 |
find_package(GLUT REQUIRED) |
7954 | 192 |
|
8666
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
193 |
#TODO: convert avwrapper to .pas unit so we can skip this step |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
194 |
include_directories(${FFMPEG_INCLUDE_DIR}) |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
195 |
list(APPEND pascal_flags "-dUSE_VIDEO_RECORDING") |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
196 |
if(WIN32) |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
197 |
# there are some problems with linking our avwrapper as static lib, so link it as shared |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
198 |
add_library(avwrapper SHARED avwrapper.c) |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
199 |
target_link_libraries(avwrapper ${FFMPEG_LIBRARIES}) |
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
200 |
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}avwrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION ${target_library_install_dir}) |
7540 | 201 |
else() |
8666
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
202 |
add_library(avwrapper STATIC avwrapper.c) |
7538 | 203 |
endif() |
204 |
endif() |
|
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
205 |
|
8067
34a679e5ca9d
Link some libraries needed for physfs on windows (there are still 5 symbols which couldn't be found - to be resolved)
unc0rr
parents:
8064
diff
changeset
|
206 |
|
8665
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
207 |
set(fpc_flags ${pascal_flags} ${hwengine_project}) |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
208 |
|
8146 | 209 |
if(NOT APPLE) |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
210 |
#here is the command for standard executables or for shared library |
8311 | 211 |
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" |
8665
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
212 |
COMMAND "${FREEPASCAL_EXECUTABLE}" |
8314
7faceaca67d4
can change library name and compile it on windows again
koda
parents:
8312
diff
changeset
|
213 |
ARGS ${fpc_flags} -o${engine_output_name} |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
214 |
DEPENDS ${engine_sources} |
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
|
215 |
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
216 |
) |
8146 | 217 |
else() |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
218 |
#these are the dependencies for building a universal binary on Mac OS X |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
219 |
foreach (build_arch ${powerpc_build} ${i386_build} ${x86_64_build}) |
8347 | 220 |
list(APPEND lipo_args_list "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}") |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
221 |
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" |
8665
3ff8694d9e22
rewritten findfreepascal, moved checkstack code elsewhere
koda
parents:
8664
diff
changeset
|
222 |
COMMAND "${FREEPASCAL_EXECUTABLE}" |
7112
38c5d56c4d6e
rename a few internal cmake variables (for consistency and readability)
koda
parents:
7109
diff
changeset
|
223 |
ARGS ${fpc_flags} -ohwengine.${build_arch} -P${build_arch} |
7109 | 224 |
DEPENDS ${engine_sources} |
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
|
225 |
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
226 |
) |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
227 |
add_custom_target(hwengine.${build_arch} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}") |
8322 | 228 |
add_custom_command(TARGET hwengine.${build_arch} POST_BUILD |
229 |
COMMAND "install_name_tool" |
|
230 |
ARGS -id @executable_path/../Frameworks/${engine_output_name} |
|
231 |
${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch} |
|
232 |
) |
|
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
233 |
endforeach() |
2003 | 234 |
|
4930 | 235 |
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
236 |
COMMAND "lipo" |
4930 | 237 |
ARGS ${lipo_args_list} -create -output ${EXECUTABLE_OUTPUT_PATH}/${engine_output_name} |
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
238 |
DEPENDS ${lipo_args_list} |
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4158
diff
changeset
|
239 |
) |
8146 | 240 |
endif() |
2003 | 241 |
|
2641 | 242 |
|
8379 | 243 |
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}") |
7031
d5ea24399a48
when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents:
7029
diff
changeset
|
244 |
|
d5ea24399a48
when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents:
7029
diff
changeset
|
245 |
#when system Lua is not found we need to compile it before engine |
7233
225179f64fd8
LUA_FOUND should surely be set only if the system lua was found.
nemo
parents:
7223
diff
changeset
|
246 |
if(NOT LUA_FOUND) |
8379 | 247 |
add_dependencies(hwengine lua) |
7031
d5ea24399a48
when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents:
7029
diff
changeset
|
248 |
endif() |
d5ea24399a48
when Lua is not found, fallback to compiling the one that comes bundled in our sources
koda
parents:
7029
diff
changeset
|
249 |
|
8528 | 250 |
# same for physfs |
251 |
if(NOT PHYSFS_FOUND) |
|
252 |
add_dependencies(hwengine physfs) |
|
253 |
endif() |
|
254 |
||
255 |
add_dependencies(hwengine physlayer) |
|
7967 | 256 |
|
7942
17b3937de37b
avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents:
7940
diff
changeset
|
257 |
#when ffmpeg/libav is found we need to compile it before engine |
7954 | 258 |
#TODO: convert avwrapper to .pas unit so we can skip this step |
7942
17b3937de37b
avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents:
7940
diff
changeset
|
259 |
if(${FFMPEG_FOUND}) |
8379 | 260 |
add_dependencies(hwengine avwrapper) |
7942
17b3937de37b
avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents:
7940
diff
changeset
|
261 |
endif() |
17b3937de37b
avwrapper needs to depend on hwengine not on ENGINECLEAN
koda
parents:
7940
diff
changeset
|
262 |
|
7706 | 263 |
#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6 |
8666
1652c1d9adc8
rework ffmpeg/libav/videorec linking and their cmake discovery
koda
parents:
8665
diff
changeset
|
264 |
if((FREEPASCAL_VERSION VERSION_LESS "2.6") AND (NOT ${FFMPEG_FOUND})) |
8379 | 265 |
add_dependencies(hwengine ENGINECLEAN) |
7653 | 266 |
endif() |
184 | 267 |
|
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
|
268 |
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}" DESTINATION ${destination_dir}) |