hedgewars/CMakeLists.txt
author unc0rr
Sat, 18 Aug 2007 15:16:03 +0000
changeset 575 9a18a9b9d7d4
parent 564 17fb45c670c1
child 593 1f5e66379a43
permissions -rw-r--r--
One more security fix (check size of QList before using QList::operator[])
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 256
diff changeset
     1
configure_file(${hedgewars_SOURCE_DIR}/hedgewars/proto.inc.in 
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 256
diff changeset
     2
	${hedgewars_SOURCE_DIR}/hedgewars/proto.inc) 
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 256
diff changeset
     3
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
     4
set(fpc_tryexe fpc)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
     5
set(hwengine_project "hwengine.dpr")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
     6
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     7
set(engine_sources
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     8
	${hwengine_project}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     9
	SDLh.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    10
	uAI.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    11
	uAIActions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    12
	uAIAmmoTests.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    13
	uAIMisc.pas
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 276
diff changeset
    14
	uAmmos.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    15
	uCollisions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    16
	uConsole.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    17
	uConsts.pas
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    18
	uFloat.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    19
	uGame.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    20
	uGears.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    21
	uIO.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    22
	uKeys.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    23
	uLand.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    24
	uLandGraphics.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    25
	uLandObjects.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    26
	uLandTemplates.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    27
	uLocale.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    28
	uMisc.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    29
	uRandom.pas
368
fe71e55d2d7b Make SHA really work
unc0rr
parents: 360
diff changeset
    30
	uSHA.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    31
	uSound.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    32
	uStore.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    33
	uTeams.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    34
	uWorld.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    35
	CCHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    36
	GSHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    37
	HHHandlers.inc
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    38
	SinTable.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    39
	options.inc
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 534
diff changeset
    40
	playlist.inc
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 256
diff changeset
    41
	proto.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    42
	tunsetborder.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    43
	)
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    44
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    45
find_program(fpc_executable ${fpc_tryexe})
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    46
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    47
if (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    48
	 exec_program(${fpc_executable} ARGS "-h" OUTPUT_VARIABLE fpc_output)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    49
endif (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    50
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    51
set (noexecstack_flags "-k-z" "-knoexecstack")
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    52
FILE(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    53
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    54
EXEC_PROGRAM(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH}
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    55
		ARGS ${noexecstack_flags} checkstack.pas
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    56
		OUTPUT_VARIABLE noout
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    57
		RETURN_VALUE testnoexecstack)
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    58
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    59
if (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    60
set (noexecstack_flags "")
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    61
endif (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    62
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    63
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    64
if (fpc_version)
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    65
	string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    66
	string(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    67
	string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    68
	math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    69
	if (fpc_ver LESS "010904")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    70
		message("Minimum required version of FreePascal is 1.9.4")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    71
	else (fpc_ver LESS "010904")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    72
		set(pascal_compiler ${fpc_executable})
534
92fb2b0d5117 - Fix some bugs
unc0rr
parents: 476
diff changeset
    73
		set(pascal_compiler_flags ${noexecstack_flags} "-B" "-FE../bin" "-Cs2000000" "-vwi" "-O2" ${hwengine_project})
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    74
	endif (fpc_ver LESS "010904")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    75
endif (fpc_version)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    76
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    77
if (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    78
	message(FATAL_ERROR "No Pascal compiler found!")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    79
endif (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    80
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    81
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}"
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    82
                  COMMAND "${pascal_compiler}" 
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    83
                  ARGS ${pascal_compiler_flags}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    84
                  MAIN_DEPENDENCY ${hwengine_project}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    85
                  DEPENDS ${engine_sources}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    86
                  )
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    87
                   
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    88
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    89
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    90
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION bin)