CMakeLists.txt
changeset 8093 2286a39140da
parent 8090 38d9cc60b14c
child 8096 453917e94e55
child 8104 09c38cdf380d
equal deleted inserted replaced
8091:e0a76056a633 8093:2286a39140da
    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