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 |