42 STRING(REGEX REPLACE "[0-9a-zA-Z]+(.*) ([0-9]+)(.*)" "\\2" revision_number ${internal_version}) |
42 STRING(REGEX REPLACE "[0-9a-zA-Z]+(.*) ([0-9]+)(.*)" "\\2" revision_number ${internal_version}) |
43 STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) [0-9]+(.*)" "\\1" revision_hash ${internal_version}) |
43 STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) [0-9]+(.*)" "\\1" revision_hash ${internal_version}) |
44 |
44 |
45 MESSAGE(STATUS "Building revision ${revision_number} from hash ${revision_hash} ${HGCHANGED}") |
45 MESSAGE(STATUS "Building revision ${revision_number} from hash ${revision_hash} ${HGCHANGED}") |
46 IF(HGCHANGED) |
46 IF(HGCHANGED) |
47 MESSAGE(WARNING "You have uncommitted changes") |
47 MESSAGE(WARNING "Notice: you have uncommitted changes in your repository") |
48 ENDIF() |
48 ENDIF() |
49 set(version_suffix "-${revision_number}${HGCHANGED}") |
49 set(version_suffix "-${revision_number}${HGCHANGED}") |
50 ENDIF() |
50 ENDIF() |
51 ELSE(NOT NOREVISION) |
51 ELSE(NOT NOREVISION) |
52 set(default_build_type "RELEASE") |
52 set(default_build_type "RELEASE") |
83 set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET}) |
83 set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET}) |
84 |
84 |
85 #detect on which system we are: if sw_vers cannot be found for any reason (re)use minimum_macosx_version |
85 #detect on which system we are: if sw_vers cannot be found for any reason (re)use minimum_macosx_version |
86 find_program(sw_vers sw_vers) |
86 find_program(sw_vers sw_vers) |
87 if(sw_vers) |
87 if(sw_vers) |
88 execute_process(COMMAND ${sw_vers} "-productVersion" OUTPUT_VARIABLE current_macosx_version) |
88 execute_process(COMMAND ${sw_vers} "-productVersion" |
|
89 OUTPUT_VARIABLE current_macosx_version |
|
90 OUTPUT_STRIP_TRAILING_WHITESPACE) |
89 string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
91 string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
90 else() |
92 else() |
91 if(NOT minimum_macosx_version) |
93 if(NOT minimum_macosx_version) |
92 message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set") |
94 message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set") |
93 else() |
95 else() |
|
96 message(WARNING "sw_vers not found! Fallback to MACOSX_DEPLOYMENT_TARGET variable") |
94 set(current_macosx_version ${minimum_macosx_version}) |
97 set(current_macosx_version ${minimum_macosx_version}) |
95 endif() |
98 endif() |
96 endif() |
99 endif() |
97 |
100 |
98 #if nothing is set, we deploy only for the current system |
101 #if nothing is set, we deploy only for the current system |
99 if(NOT minimum_macosx_version) |
102 if(NOT minimum_macosx_version) |
100 set(minimum_macosx_version ${current_macosx_version}) |
103 set(minimum_macosx_version ${current_macosx_version}) |
101 endif() |
104 endif() |
102 |
105 |
103 #lower systems don't have enough processing power anyways |
106 #lower systems don't have enough processing power anyway |
104 if (minimum_macosx_version LESS "10.4") |
107 if (minimum_macosx_version LESS "10.4") |
105 message(FATAL_ERROR "Hedgewars is not supported on Mac OS X pre-10.4") |
108 message(FATAL_ERROR "Hedgewars is not supported on Mac OS X pre-10.4") |
106 endif() |
109 endif() |
107 |
110 |
108 #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2) |
111 #workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2) |
143 #add user framework directory, other paths can be passed via FPFLAGS |
146 #add user framework directory, other paths can be passed via FPFLAGS |
144 set(pascal_flags "-Ff~/Library/Frameworks" ${pascal_flags}) |
147 set(pascal_flags "-Ff~/Library/Frameworks" ${pascal_flags}) |
145 #set deployment target |
148 #set deployment target |
146 set(pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_flags}) |
149 set(pascal_flags "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_flags}) |
147 |
150 |
148 message(STATUS "Build system: Mac OS X ${current_macosx_version} with GCC:${CMAKE_C_COMPILER}") |
151 message(STATUS "Build system: Mac OS X ${current_macosx_version} with C compiler: ${CMAKE_C_COMPILER}") |
149 message(STATUS "Target system: Mac OS X ${minimum_macosx_version} for architecture(s):${CMAKE_OSX_ARCHITECTURES}") |
152 message(STATUS "Target system: Mac OS X ${minimum_macosx_version} for architecture(s): ${CMAKE_OSX_ARCHITECTURES}") |
150 endif(APPLE) |
153 endif(APPLE) |
151 |
154 |
152 |
155 |
153 #when build type is not specified, assume Debug/Release according to build version information |
156 #when build type is not specified, assume Debug/Release according to build version information |
154 if (CMAKE_BUILD_TYPE) |
157 if (CMAKE_BUILD_TYPE) |
228 if(ghc_executable) |
231 if(ghc_executable) |
229 set(HAVE_NETSERVER true) |
232 set(HAVE_NETSERVER true) |
230 add_subdirectory(gameServer) |
233 add_subdirectory(gameServer) |
231 message(STATUS "Found GHC: ${ghc_executable}") |
234 message(STATUS "Found GHC: ${ghc_executable}") |
232 else() |
235 else() |
233 message(STATUS "Could NOT find GHC, server will not be built") |
236 message(WARNING "Could NOT find GHC, server will not be built") |
234 set(HAVE_NETSERVER false) |
237 set(HAVE_NETSERVER false) |
235 endif() |
238 endif() |
236 else() |
239 else() |
237 message(STATUS "Server will not be built per user request") |
240 message(STATUS "Server will not be built per user request") |
238 set(HAVE_NETSERVER false) |
241 set(HAVE_NETSERVER false) |
244 if(LUA_FOUND) |
247 if(LUA_FOUND) |
245 message(STATUS "Found LUA: ${LUA_DEFAULT}") |
248 message(STATUS "Found LUA: ${LUA_DEFAULT}") |
246 else() |
249 else() |
247 message(STATUS "LUA will be provided by the bundled sources") |
250 message(STATUS "LUA will be provided by the bundled sources") |
248 add_subdirectory(misc/liblua) |
251 add_subdirectory(misc/liblua) |
249 #linking with liblua.a requires system readline -- this works everywhere, right? |
252 #linking with liblua.a requires system readline |
250 set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags}) |
253 set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags}) |
251 endif() |
254 endif() |
252 |
255 |
253 |
256 |
254 #main engine |
257 #main engine |
255 add_subdirectory(hedgewars) |
258 add_subdirectory(hedgewars) |
256 |
259 |
257 # physfs library |
260 #physfs library |
258 add_subdirectory(misc/physfs) |
261 add_subdirectory(misc/physfs) |
259 |
262 |
260 # frontend library |
263 #frontend library |
261 add_subdirectory(project_files/frontlib) |
264 add_subdirectory(project_files/frontlib) |
262 |
265 |
263 #Android related build scripts |
266 #Android related build scripts |
264 if(ANDROID) |
267 if(ANDROID) |
265 #run cmake -DANDROID=1 to enable this |
268 #run cmake -DANDROID=1 to enable this |