CMakeLists.txt
changeset 8090 38d9cc60b14c
parent 8089 56bf04303311
child 8093 2286a39140da
equal deleted inserted replaced
8089:56bf04303311 8090:38d9cc60b14c
     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()