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 set(required_fpc_version 2.2) |
15 |
15 |
16 set(engine_sources |
16 set(engine_sources |
17 ${hwengine_project} |
17 ${hwengine_project} |
18 LuaPas.pas |
18 LuaPas.pas |
19 PNGh.pas |
19 PNGh.pas |
101 endif (APPLE) |
101 endif (APPLE) |
102 endif(BUILD_ENGINE_LIBRARY) |
102 endif(BUILD_ENGINE_LIBRARY) |
103 |
103 |
104 |
104 |
105 # Check Freepascal version |
105 # Check Freepascal version |
106 FIND_PACKAGE(Freepascal) |
106 find_package(Freepascal) |
107 |
107 |
108 IF (FPC_VERSION VERSION_GREATER REQUIRED_FPC_VERSION |
108 if (NOT APPLE) |
109 OR FPC_VERSION VERSION_EQUAL REQUIRED_FPC_VERSION) |
109 if (FPC_VERSION VERSION_LESS required_fpc_version) |
110 MESSAGE(STATUS "Found FPC: ${FPC_EXECUTABLE} (version ${FPC_VERSION})") |
110 message(FATAL_ERROR "Necessary FPC version not found (version >= ${required_fpc_version} required)") |
111 ELSEIF (APPLE AND FPC_VERSION VERSION_LESS 2.6) |
111 endif() |
112 MESSAGE(FATAL_ERROR "Necessary FPC version not found (version >= 2.6 required)") |
112 elseif (APPLE) |
113 ELSE() |
113 if (FPC_VERSION VERSION_LESS 2.6) |
114 MESSAGE(FATAL_ERROR "Necessary FPC version not found (version >= ${REQUIRED_FPC_VERSION} required)") |
114 message(FATAL_ERROR "Necessary FPC version not found (version >= 2.6 required)") |
115 ENDIF() |
115 endif() |
116 |
116 endif() |
117 |
117 |
118 message(STATUS "Checking whether linker supports noexecstack flag") |
118 message(STATUS "Found FPC: ${FPC_EXECUTABLE} (version ${FPC_VERSION})") |
119 set(noexecstack_flags "-k-z" "-knoexecstack") |
119 |
120 file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.") |
|
121 |
|
122 execute_process(COMMAND ${fpc_executable} ${noexecstack_flags} checkstack.pas |
|
123 WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} |
|
124 RESULT_VARIABLE testnoexecstack |
|
125 OUTPUT_QUIET ERROR_QUIET |
|
126 ) |
|
127 |
|
128 if(${testnoexecstack}) |
|
129 set (noexecstack_flags "") |
|
130 message(STATUS "Checking whether linker supports noexecstack flag -- no") |
|
131 else(${testnoexecstack}) |
|
132 message(STATUS "Checking whether linker supports noexecstack flag -- yes") |
|
133 endif(${testnoexecstack}) |
|
134 |
120 |
135 #DEPENDECIES AND EXECUTABLES SECTION |
121 #DEPENDECIES AND EXECUTABLES SECTION |
136 if(APPLE) |
122 if(APPLE) |
137 string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") |
123 string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") |
138 string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") |
124 string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") |