9 ENDIF() |
9 ENDIF() |
10 ENDFOREACH() |
10 ENDFOREACH() |
11 #use available modules, fallback to ours if not present (CMP0017 helps) |
11 #use available modules, fallback to ours if not present (CMP0017 helps) |
12 set(CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules") |
12 set(CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules") |
13 |
13 |
|
14 #set some default values |
|
15 option(NOREVISION "Build Hedgewars without revision information" OFF) |
|
16 |
|
17 option(NOSERVER "Disable gameServer build [default: auto]" OFF) |
|
18 option(NOPNG "Disable screenshoot compression [default: auto]" OFF) |
|
19 option(NOVIDEOREC "Disable video recording [default: auto]" OFF) |
|
20 |
|
21 option(BUILD_ENGINE_LIBRARY "Enable hwengine library [default: off]" OFF) |
|
22 option(ANDROID "Enable Android build [default: off]" OFF) |
|
23 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF) |
|
24 option(CROSSAPPLE "Enable OSX when not on OSX [default: off]" OFF) |
|
25 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF) |
14 |
26 |
15 #detect Mercurial revision (if present) |
27 #detect Mercurial revision (if present) |
16 set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME |
28 IF(NOT NOREVISION) |
17 set(HGCHANGED "") |
29 set(default_build_type "DEBUG") |
18 IF(version_suffix MATCHES "-dev") |
30 set(version_suffix "-development_version") |
19 set(HW_DEV true) |
31 set(HW_DEV true) |
20 set(default_build_type "DEBUG") |
32 FIND_PROGRAM(HGCOMMAND hg) |
21 IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) |
33 IF(HGCOMMAND AND (EXISTS ${CMAKE_SOURCE_DIR}/.hg)) |
22 FIND_PROGRAM(HGCOMMAND hg) |
34 execute_process(COMMAND ${HGCOMMAND} identify -in |
23 IF(HGCOMMAND) |
35 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
24 exec_program(${HGCOMMAND} |
36 OUTPUT_VARIABLE internal_version |
25 ARGS identify -in ${CMAKE_CURRENT_SOURCE_DIR} |
37 ERROR_QUIET |
26 OUTPUT_VARIABLE version_suffix |
38 ) |
27 ) |
39 #check local repo status |
28 STRING(REGEX REPLACE "[^+]" "" HGCHANGED ${version_suffix}) |
40 STRING(REGEX REPLACE "[^+]" "" HGCHANGED ${internal_version}) |
29 STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3-\\1" version_suffix ${version_suffix}) |
41 |
30 IF (HGCHANGED) |
42 STRING(REGEX REPLACE "[0-9a-zA-Z]+(.*) ([0-9]+)(.*)" "\\2" revision_number ${internal_version}) |
31 MESSAGE(STATUS "Building revision ${version_suffix} (SOURCE CODE MODIFIED)") |
43 STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) [0-9]+(.*)" "\\1" revision_hash ${internal_version}) |
32 ELSE() |
44 |
33 MESSAGE(STATUS "Building revision ${version_suffix}") |
45 MESSAGE(STATUS "Building revision ${revision_number} from hash ${revision_hash} ${HGCHANGED}") |
34 ENDIF() |
46 IF(HGCHANGED) |
35 set(version_suffix "-${version_suffix}") |
47 MESSAGE(WARNING "You have uncommitted changes") |
36 ENDIF() |
48 ENDIF() |
|
49 set(version_suffix "-${revision_number}${HGCHANGED}") |
37 ENDIF() |
50 ENDIF() |
38 ELSE() |
51 ELSE(NOT NOREVISION) |
39 set(HW_DEV false) |
|
40 set(default_build_type "RELEASE") |
52 set(default_build_type "RELEASE") |
41 ENDIF() |
53 set(HWDEV false) |
|
54 MESSAGE(STATUS "Building distributable version") |
|
55 ENDIF(NOT NOREVISION) |
42 |
56 |
43 |
57 |
44 #versioning |
58 #versioning |
45 set(CPACK_PACKAGE_VERSION_MAJOR 0) |
59 set(CPACK_PACKAGE_VERSION_MAJOR 0) |
46 set(CPACK_PACKAGE_VERSION_MINOR 9) |
60 set(CPACK_PACKAGE_VERSION_MINOR 9) |
47 set(CPACK_PACKAGE_VERSION_PATCH 19${version_suffix}) |
61 set(CPACK_PACKAGE_VERSION_PATCH 19${version_suffix}) |
48 set(HEDGEWARS_PROTO_VER 44) |
62 set(HEDGEWARS_PROTO_VER 44) |
49 set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") |
63 set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") |
50 |
64 |
51 |
|
52 #set some default values |
|
53 option(NOSERVER "Disable gameServer build [default: auto]" OFF) |
|
54 option(NOPNG "Disable screenshoot compression [default: auto]" OFF) |
|
55 option(NOVIDEOREC "Disable video recording [default: auto]" OFF) |
|
56 |
|
57 option(BUILD_ENGINE_LIBRARY "Enable hwengine library [default: off]" OFF) |
|
58 option(ANDROID "Enable Android build [default: off]" OFF) |
|
59 option(NOAUTOUPDATE "Disable OS X Sparkle update checking" OFF) |
|
60 option(CROSSAPPLE "Enable OSX when not on OSX [default: off]" OFF) |
|
61 option(MINIMAL_FLAGS "Respect system flags as much as possible [default: off]" OFF) |
|
62 |
65 |
63 #bundle .app setup |
66 #bundle .app setup |
64 if(APPLE OR CROSSAPPLE) |
67 if(APPLE OR CROSSAPPLE) |
65 #paths for creating the bundle |
68 #paths for creating the bundle |
66 set(bundle_name Hedgewars.app) |
69 set(bundle_name Hedgewars.app) |
80 set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET}) |
83 set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET}) |
81 |
84 |
82 #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 |
83 find_program(sw_vers sw_vers) |
86 find_program(sw_vers sw_vers) |
84 if(sw_vers) |
87 if(sw_vers) |
85 exec_program(${sw_vers} ARGS "-productVersion" OUTPUT_VARIABLE current_macosx_version) |
88 execute_process(COMMAND ${sw_vers} "-productVersion" OUTPUT_VARIABLE current_macosx_version) |
86 string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
89 string(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version}) |
87 else() |
90 else() |
88 if(NOT minimum_macosx_version) |
91 if(NOT minimum_macosx_version) |
89 message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set") |
92 message(FATAL_ERROR "sw_vers not found! Need explicit MACOSX_DEPLOYMENT_TARGET variable set") |
90 else() |
93 else() |