hedgewars/CMakeLists.txt
author nemo
Tue, 08 Sep 2009 19:44:49 +0000
changeset 2357 babe1a55e284
parent 2326 0ddf641fddee
child 2401 2a694ea2a437
permissions -rw-r--r--
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2213
diff changeset
     1
configure_file(${hedgewars_SOURCE_DIR}/hedgewars/proto.inc.in ${CMAKE_CURRENT_BINARY_DIR}/proto.inc)
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 256
diff changeset
     2
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
     3
set(fpc_tryexe fpc)
2326
0ddf641fddee rename dpr -> pas, restores ammos on two columns, minor fixes to openalbridge
koda
parents: 2251
diff changeset
     4
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
     5
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     6
set(engine_sources
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     7
	${hwengine_project}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     8
	SDLh.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
     9
	uAI.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    10
	uAIActions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    11
	uAIAmmoTests.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    12
	uAIMisc.pas
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 276
diff changeset
    13
	uAmmos.pas
942
b41af014d85e Stub for chat implementation
unc0rr
parents: 814
diff changeset
    14
	uChat.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
1806
3c4f0886c123 More reorganization
unc0rr
parents: 1744
diff changeset
    27
	uLandTexture.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    28
	uLocale.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    29
	uMisc.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    30
	uRandom.pas
368
fe71e55d2d7b Make SHA really work
unc0rr
parents: 360
diff changeset
    31
	uSHA.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    32
	uSound.pas
814
7fb4417b7bc1 Start implementing better statistics implementation (does nothing yet)
unc0rr
parents: 802
diff changeset
    33
	uStats.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    34
	uStore.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    35
	uTeams.pas
593
1f5e66379a43 Triggers proof-of-concept
unc0rr
parents: 564
diff changeset
    36
	uTriggers.pas
802
ed5450a89b96 Start implementing 'visual gears' - gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents: 782
diff changeset
    37
	uVisualGears.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    38
	uWorld.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    39
	CCHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    40
	GSHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    41
	HHHandlers.inc
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    42
	SinTable.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    43
	options.inc
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    44
	${CMAKE_CURRENT_BINARY_DIR}/proto.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    45
	tunsetborder.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    46
	)
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    47
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    48
find_program(fpc_executable ${fpc_tryexe})
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    49
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    50
if (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    51
	 exec_program(${fpc_executable} ARGS "-h" OUTPUT_VARIABLE fpc_output)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    52
endif (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    53
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    54
set (noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    55
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    56
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    57
exec_program(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH}
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    58
		ARGS ${noexecstack_flags} checkstack.pas
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    59
		OUTPUT_VARIABLE noout
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    60
		RETURN_VALUE testnoexecstack)
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    61
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    62
if (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    63
set (noexecstack_flags "")
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    64
endif (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    65
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    66
IF(APPLE)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    67
	FIND_PACKAGE(SDL)
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
    68
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    69
	if (SDL_FOUND)
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    70
		set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    71
		include_directories(${SDL_INCLUDE_DIR})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    72
		link_libraries(${SDL_LIBRARY})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    73
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    74
		add_library (SDLmain STATIC SDLMain.m)
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    75
		set(engine_sources SDLmain ${engine_sources})
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    76
	else (SDL_FOUND)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    77
		message(FATAL_ERROR "No SDL framework found!")
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    78
	endif (SDL_FOUND)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    79
ENDIF(APPLE)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    80
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    81
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    82
if (fpc_version)
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    83
	string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    84
	string(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    85
	string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    86
	math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
    87
	if (fpc_ver LESS "020200")
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
    88
		message("Minimum required version of FreePascal is 2.2.0")
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
    89
	else (fpc_ver LESS "020200")
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    90
		set(pascal_compiler ${fpc_executable})
2241
7992f7ba388d completes removal of wav files, updates SDLh and adds DEBUGFILE to hwengine when compiled in Debug mode
koda
parents: 2239
diff changeset
    91
		if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "Release")
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    92
			set(pascal_compiler_flags ${noexecstack_flags} "-B" "-FE../bin" "-Fl../bin/" "-Cs2000000" "-vwi" "-O2" "-Xs" ${hwengine_project})
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    93
		else()
2241
7992f7ba388d completes removal of wav files, updates SDLh and adds DEBUGFILE to hwengine when compiled in Debug mode
koda
parents: 2239
diff changeset
    94
			set(pascal_compiler_flags ${noexecstack_flags} "-B" "-FE../bin" "-Fl../bin/" "-Cs2000000" "-vwi" "-O-" "-gl" "-dDEBUGFILE" ${hwengine_project})
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    95
		endif()
2251
bf0b59d3536a fix a binding that was preveting to display anything else besides hogs on iphone
koda
parents: 2241
diff changeset
    96
		if(LOWRES)
bf0b59d3536a fix a binding that was preveting to display anything else besides hogs on iphone
koda
parents: 2241
diff changeset
    97
			set(pascal_compiler_flags "-dLOWRES" ${pascal_compiler_flags} ${hwengine_project})
bf0b59d3536a fix a binding that was preveting to display anything else besides hogs on iphone
koda
parents: 2241
diff changeset
    98
		endif(LOWRES)
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
    99
	endif (fpc_ver LESS "020200")
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
   100
endif (fpc_version)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   101
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   102
if (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   103
	message(FATAL_ERROR "No Pascal compiler found!")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   104
endif (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   105
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   106
#special handling of MSVC compiler (no static linking)
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   107
if(MSVC)
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   108
	set(pascal_compiler_flags "-dMSVC" ${pascal_compiler_flags})
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   109
endif(MSVC)
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   110
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2213
diff changeset
   111
IF(NOT APPLE OR NOT universal_build)
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   112
#here is the standard command for any system
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
   113
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}"
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   114
		COMMAND "${pascal_compiler}"
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   115
		ARGS ${pascal_compiler_flags}
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   116
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   117
		DEPENDS openalbridge ${engine_sources}
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   118
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   119
ELSE()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   120
#these are the two dependencies for building a universal binary on Mac OS X
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   121
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.386"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   122
		COMMAND "ppc386" 
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   123
		ARGS ${pascal_compiler_flags} -ohwengine.386
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   124
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   125
		DEPENDS openalbridge ${engine_sources}
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   126
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   127
add_custom_target(hwengine.386 ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.386")
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   128
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   129
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   130
		COMMAND "ppcppc"
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   131
		ARGS ${pascal_compiler_flags} -ohwengine.ppc
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   132
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   133
		DEPENDS openalbridge ${engine_sources}
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   134
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   135
add_custom_target(hwengine.ppc ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc")
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   136
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   137
#this is the command that bundles the two executables into one
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   138
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   139
		COMMAND "lipo"
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   140
		ARGS ${EXECUTABLE_OUTPUT_PATH}/hwengine.386 ${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc -create -output ${EXECUTABLE_OUTPUT_PATH}/hwengine
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   141
		DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.386" "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   142
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   143
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   144
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   145
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
   146
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   147
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   148
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   149