hedgewars/CMakeLists.txt
changeset 8162 b97a17bf89ec
parent 8146 1fba650c2aa4
child 8164 b12634f2e1b2
equal deleted inserted replaced
8159:e226be871b6e 8162:b97a17bf89ec
     9 configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
     9 configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
    10 
    10 
    11 #SOURCE AND PROGRAMS SECTION
    11 #SOURCE AND PROGRAMS SECTION
    12 set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
    12 set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
    13 set(engine_output_name "hwengine")
    13 set(engine_output_name "hwengine")
       
    14 SET(REQUIRED_FPC_VERSION 2.2)
    14 
    15 
    15 set(engine_sources
    16 set(engine_sources
    16     ${hwengine_project}
    17     ${hwengine_project}
    17     LuaPas.pas
    18     LuaPas.pas
    18     PNGh.pas
    19     PNGh.pas
    99         set(engine_output_name "libhwengine.dylib")
   100         set(engine_output_name "libhwengine.dylib")
   100     endif (APPLE)
   101     endif (APPLE)
   101 endif(BUILD_ENGINE_LIBRARY)
   102 endif(BUILD_ENGINE_LIBRARY)
   102 
   103 
   103 
   104 
   104 #PASCAL DETECTION SECTION
   105 # Check Freepascal version
   105 if(FPC)
   106 FIND_PACKAGE(Freepascal)
   106     set(fpc_executable ${FPC})
   107 
   107 else()
   108 IF (FPC_VERSION VERSION_GREATER REQUIRED_FPC_VERSION
   108     find_program(fpc_executable fpc)
   109     OR FPC_VERSION VERSION_EQUAL REQUIRED_FPC_VERSION)
   109 endif()
   110     MESSAGE(STATUS "Found FPC: ${FPC_EXECUTABLE} (version ${FPC_VERSION})")
   110 
   111 ELSEIF (APPLE AND FPC_VERSION VERSION_LESS 2.6)
   111 message(STATUS "Check for working FPC compiler: ${fpc_executable}")
   112     MESSAGE(FATAL_ERROR "Necessary FPC version not found (version >= 2.6 required)")
   112 execute_process(COMMAND ${fpc_executable} -iV OUTPUT_VARIABLE fpc_output ERROR_VARIABLE fpc_error)
   113 ELSE()
   113 if(fpc_error)
   114     MESSAGE(FATAL_ERROR "Necessary FPC version not found (version >= ${REQUIRED_FPC_VERSION} required)")
   114     message(STATUS "Check for working FPC compiler: ${fpc_executable} -- broken")
   115 ENDIF()
   115 else(fpc_error)
   116 
   116     message(STATUS "Check for working FPC compiler: ${fpc_executable} -- works")
       
   117 endif(fpc_error)
       
   118 
       
   119 string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
       
   120 if(fpc_version)
       
   121     string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
       
   122     string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
       
   123     string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
       
   124     message(STATUS "Found Freepascal: ${fpc_executable} (version ${fpc_vers_major}.${fpc_vers_minor})")
       
   125     math(EXPR fpc_version "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
       
   126 
       
   127     if(fpc_version LESS "020200")
       
   128         message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0")
       
   129     elseif(APPLE AND (fpc_version LESS "020600"))
       
   130         message(FATAL_ERROR "Minimum required version of FreePascal is 2.6.0 on Mac OS X")
       
   131     endif()
       
   132 else()
       
   133     message(FATAL_ERROR "No FreePascal compiler found!")
       
   134 endif()
       
   135 
   117 
   136 message(STATUS "Checking whether linker supports noexecstack flag")
   118 message(STATUS "Checking whether linker supports noexecstack flag")
   137 set(noexecstack_flags "-k-z" "-knoexecstack")
   119 set(noexecstack_flags "-k-z" "-knoexecstack")
   138 file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
   120 file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
   139 
   121