26 |
26 |
27 option(ANDROID "Enable Android build [default: off]" OFF) |
27 option(ANDROID "Enable Android build [default: off]" OFF) |
28 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF) |
28 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF) |
29 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF) |
29 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF) |
30 option(GL2 "Enable OpenGL 2 rendering [default: off]" OFF) |
30 option(GL2 "Enable OpenGL 2 rendering [default: off]" OFF) |
31 set(FPFLAGS "" CACHE STRING "Additional Freepascal flags" FORCE) |
31 set(FPFLAGS "" CACHE STRING "Additional Freepascal flags") |
32 set(GHFLAGS "" CACHE STRING "Additional Haskell flags" FORCE) |
32 set(GHFLAGS "" CACHE STRING "Additional Haskell flags") |
33 |
33 if(UNIX AND NOT APPLE) |
|
34 set(DATA_INSTALL_DIR "share/hedgewars" CACHE STRING "Resource folder path") |
|
35 endif() |
34 |
36 |
35 #detect Mercurial revision (if present) |
37 #detect Mercurial revision (if present) |
36 if(NOT ${NOREVISION}) |
38 if(NOT ${NOREVISION}) |
37 set(default_build_type "DEBUG") |
39 set(default_build_type "DEBUG") |
38 set(version_suffix "-development_version") |
40 set(version_suffix "-development_version") |
87 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) |
89 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) |
88 |
90 |
89 if(UNIX AND NOT APPLE) |
91 if(UNIX AND NOT APPLE) |
90 set(target_binary_install_dir "bin") |
92 set(target_binary_install_dir "bin") |
91 set(target_library_install_dir "lib") |
93 set(target_library_install_dir "lib") |
92 if(DEFINED DATA_INSTALL_DIR) |
94 set(SHAREPATH "${DATA_INSTALL_DIR}/") |
93 set(SHAREPATH "${DATA_INSTALL_DIR}") |
|
94 else() |
|
95 set(SHAREPATH "share/hedgewars/") |
|
96 endif() |
|
97 else() |
95 else() |
98 set(target_binary_install_dir "./") |
96 set(target_binary_install_dir "./") |
99 |
97 |
100 if(APPLE) |
98 if(APPLE) |
101 set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/") |
99 set(CMAKE_INSTALL_PREFIX "Hedgewars.app/Contents/MacOS/") |
147 #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2) |
145 #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2) |
148 if(current_macosx_version VERSION_EQUAL "10.4") |
146 if(current_macosx_version VERSION_EQUAL "10.4") |
149 find_package(SDL_mixer REQUIRED) |
147 find_package(SDL_mixer REQUIRED) |
150 set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg") |
148 set(DYLIB_SMPEG "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg") |
151 set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") |
149 set(DYLIB_MIKMOD "-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod") |
152 set(pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}" ${pascal_flags}) |
150 set(CMAKE_C_FLAGS "${DYLIB_SMPEG} ${DYLIB_MIKMOD}") |
153 set(CMAKE_C_FLAGS "${DYLIB_SMPEG}" "${DYLIB_MIKMOD}" ${CMAKE_C_FLAGS}) |
151 list(APPEND pascal_flags "-k${DYLIB_SMPEG}" "-k${DYLIB_MIKMOD}") |
154 endif() |
152 endif() |
155 |
153 |
156 #CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking |
154 #CMAKE_OSX_ARCHITECTURES and CMAKE_OSX_SYSROOT need to be set for universal binary and correct linking |
157 if(NOT CMAKE_OSX_ARCHITECTURES) |
155 if(NOT CMAKE_OSX_ARCHITECTURES) |
158 if(current_macosx_version VERSION_LESS "10.6") |
156 if(current_macosx_version VERSION_LESS "10.6") |
178 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/") |
176 set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/") |
179 endif() |
177 endif() |
180 endif() |
178 endif() |
181 |
179 |
182 #add user framework directory, other paths can be passed via FPFLAGS |
180 #add user framework directory, other paths can be passed via FPFLAGS |
183 set(pascal_flags "-Ff~/Library/Frameworks" ${pascal_flags}) |
181 list(APPEND pascal_flags "-Ff~/Library/Frameworks") |
184 #set deployment target |
182 #set deployment target |
185 set(pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_flags}) |
183 list(APPEND pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}") |
186 |
184 |
187 #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3 |
185 #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3 |
188 if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6") |
186 if(NOT NOVIDEOREC AND ${minimum_macosx_version} VERSION_LESS "10.6") |
189 set(WARNING "Video recording support before OS X 10.6 is experimental") |
187 set(WARNING "Video recording support before OS X 10.6 is experimental") |
190 endif() |
188 endif() |
201 else (CMAKE_BUILD_TYPE) |
199 else (CMAKE_BUILD_TYPE) |
202 set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Choose the build type, options are: Debug Release." FORCE) |
200 set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Choose the build type, options are: Debug Release." FORCE) |
203 endif (CMAKE_BUILD_TYPE) |
201 endif (CMAKE_BUILD_TYPE) |
204 |
202 |
205 #set default flags values for all projects (unless MINIMAL_FLAGS is true) |
203 #set default flags values for all projects (unless MINIMAL_FLAGS is true) |
206 if(NOT MINIMAL_FLAGS) |
204 if(NOT ${MINIMAL_FLAGS}) |
207 set(CMAKE_C_FLAGS "-pipe") |
205 set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}") |
208 set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer") |
206 set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}") |
209 set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG") |
207 set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}") |
210 set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) |
208 set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) |
211 set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) |
209 set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) |
212 set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) |
210 set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) |
213 else() |
211 else() |
214 #CMake adds a lot of additional configuration flags, so let's clear them up |
212 #CMake adds a lot of additional configuration flags, so let's clear them up |
227 separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS}) |
225 separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS}) |
228 separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS}) |
226 separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS}) |
229 endif() |
227 endif() |
230 endif() |
228 endif() |
231 |
229 |
232 set(pascal_flags ${fpflags_parsed} # user flags |
230 list(APPEND pascal_flags ${fpflags_parsed} # user flags |
233 "-vm4079,4080,4081" # fpc output format |
231 "-vm4079,4080,4081" # fpc output format |
234 "-B" # compile all units |
232 "-B" # compile all units |
235 "-FE${PROJECT_BINARY_DIR}/bin" # fpc output directory |
233 "-FE${PROJECT_BINARY_DIR}/bin" # fpc output directory |
236 "-Fl${PROJECT_BINARY_DIR}/bin" # fpc linking directory |
234 "-Fl${PROJECT_BINARY_DIR}/bin" # fpc linking directory |
237 "-Cs2000000" # stack size |
235 "-Cs2000000" # stack size |
238 "-vewnq" # fpc output verbosity |
236 "-vewnq" # fpc output verbosity |
239 "-dDEBUGFILE" # macro for engine output |
237 "-dDEBUGFILE" # macro for engine output |
240 ${pascal_flags} # adding to list |
|
241 ) |
238 ) |
242 set(haskell_flags "-O2" ${ghflags_parsed} ${haskell_flags}) |
239 list(APPEND haskell_flags "-O2" ${ghflags_parsed}) |
243 |
240 |
244 #get BUILD_TYPE and enable/disable optimisation |
241 #get BUILD_TYPE and enable/disable optimisation |
245 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration") |
242 message(STATUS "Using ${CMAKE_BUILD_TYPE} configuration") |
246 if(CMAKE_BUILD_TYPE MATCHES "DEBUG") |
243 if(CMAKE_BUILD_TYPE MATCHES "DEBUG") |
247 set(pascal_flags "-O-" "-g" "-gl" "-gv" ${pascal_flags}) |
244 list(APPEND pascal_flags "-O-" "-g" "-gl" "-gv") |
248 set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags}) |
245 list(APPEND haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind") |
249 else() |
246 else() |
250 # set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags}) |
247 # set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags}) |
251 set(pascal_flags "-Os" "-Xs" "-Si" ${pascal_flags}) |
248 list(APPEND pascal_flags "-Os" "-Xs" "-Si") |
252 set(haskell_flags "-w" "-fno-warn-unused-do-bind" ${haskell_flags}) |
249 list(APPEND haskell_flags "-w" "-fno-warn-unused-do-bind") |
253 endif() |
250 endif() |
254 |
251 |
255 |
252 |
256 #Haskell compiler discovery (for server and engine in c) |
253 #Haskell compiler discovery (for server and engine in c) |
257 if((NOT NOSERVER) OR NOPASCAL) |
254 if((NOT NOSERVER) OR NOPASCAL) |
287 message(STATUS "Found LUA: ${LUA_DEFAULT}") |
284 message(STATUS "Found LUA: ${LUA_DEFAULT}") |
288 else() |
285 else() |
289 message(STATUS "Using internal LUA library") |
286 message(STATUS "Using internal LUA library") |
290 add_subdirectory(misc/liblua) |
287 add_subdirectory(misc/liblua) |
291 #linking with liblua.a requires system readline |
288 #linking with liblua.a requires system readline |
292 set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags}) |
289 list(APPEND pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline") |
293 endif() |
290 endif() |
294 |
291 |
295 |
292 |
296 #physfs library (static on unix, dll on win32) |
293 #physfs library (static on unix, dll on win32) |
297 add_subdirectory(misc/physfs) |
294 add_subdirectory(misc/physfs) |
298 if(NOT WIN32) |
295 if(NOT WIN32) |
299 set(pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a" ${pascal_flags}) |
296 list(APPEND pascal_flags "-k${LIBRARY_OUTPUT_PATH}/libphysfs.a") |
300 endif() |
297 endif() |
301 |
298 |
302 |
299 |
303 #frontend library |
300 #frontend library |
304 add_subdirectory(project_files/frontlib) |
301 add_subdirectory(project_files/frontlib) |