hedgewars/CMakeLists.txt
author koda
Tue, 30 Jun 2009 12:31:32 +0000
changeset 2213 bd51bbf06033
parent 2203 6bd39d75e0dd
child 2219 07f5345ecae7
permissions -rw-r--r--
-Smaxx's porting of the library to MSVC compilers -library is now ANSI C -interface headers reworked
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 
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
     2
	${CMAKE_CURRENT_BINARY_DIR}/proto.inc)
271
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)
782
e2d2b84aa776 Full support for out-of-source build
unc0rr
parents: 781
diff changeset
     5
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.dpr)
184
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
942
b41af014d85e Stub for chat implementation
unc0rr
parents: 814
diff changeset
    15
	uChat.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    16
	uCollisions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    17
	uConsole.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    18
	uConsts.pas
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    19
	uFloat.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    20
	uGame.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    21
	uGears.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    22
	uIO.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    23
	uKeys.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    24
	uLand.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    25
	uLandGraphics.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    26
	uLandObjects.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    27
	uLandTemplates.pas
1806
3c4f0886c123 More reorganization
unc0rr
parents: 1744
diff changeset
    28
	uLandTexture.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    29
	uLocale.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    30
	uMisc.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    31
	uRandom.pas
368
fe71e55d2d7b Make SHA really work
unc0rr
parents: 360
diff changeset
    32
	uSHA.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    33
	uSound.pas
814
7fb4417b7bc1 Start implementing better statistics implementation (does nothing yet)
unc0rr
parents: 802
diff changeset
    34
	uStats.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    35
	uStore.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    36
	uTeams.pas
593
1f5e66379a43 Triggers proof-of-concept
unc0rr
parents: 564
diff changeset
    37
	uTriggers.pas
802
ed5450a89b96 Start implementing 'visual gears' - gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents: 782
diff changeset
    38
	uVisualGears.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    39
	uWorld.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    40
	CCHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    41
	GSHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    42
	HHHandlers.inc
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    43
	SinTable.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    44
	options.inc
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    45
	${CMAKE_CURRENT_BINARY_DIR}/proto.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    46
	tunsetborder.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    47
	)
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    48
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    49
find_program(fpc_executable ${fpc_tryexe})
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    50
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    51
if (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    52
	 exec_program(${fpc_executable} ARGS "-h" OUTPUT_VARIABLE fpc_output)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    53
endif (fpc_executable)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    54
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    55
set (noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    56
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    57
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    58
exec_program(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH}
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    59
		ARGS ${noexecstack_flags} checkstack.pas
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    60
		OUTPUT_VARIABLE noout
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    61
		RETURN_VALUE testnoexecstack)
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    62
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    63
if (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    64
set (noexecstack_flags "")
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    65
endif (${testnoexecstack})
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    66
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    67
IF(APPLE)
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
    68
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    69
	FIND_PACKAGE(SDL)
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
    70
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    71
	if (SDL_FOUND)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    72
		set(CMAKE_C_FLAGS "-Wall -pipe")
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    73
		set(CMAKE_C_FLAGS_RELEASE "-w -O2 -fomit-frame-pointer")
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    74
		set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
    75
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    76
		set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    77
		include_directories(${SDL_INCLUDE_DIR})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    78
		link_libraries(${SDL_LIBRARY})
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    79
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    80
		add_library (SDLmain STATIC SDLMain.m)
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
    81
		set(engine_sources SDLmain ${engine_sources})
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    82
	else (SDL_FOUND)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    83
		message(FATAL_ERROR "No SDL framework found!")
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    84
	endif (SDL_FOUND)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    85
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    86
ENDIF(APPLE)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
    87
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    88
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    89
if (fpc_version)
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    90
	string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    91
	string(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    92
	string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    93
	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
    94
	if (fpc_ver LESS "020200")
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
    95
		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
    96
	else (fpc_ver LESS "020200")
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
    97
		set(pascal_compiler ${fpc_executable})
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    98
		if( NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "Release")
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    99
			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
   100
		else()
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   101
			set(pascal_compiler_flags ${noexecstack_flags} "-B" "-FE../bin" "-Fl../bin/" "-Cs2000000" "-vwi" "-O-" "-gl" ${hwengine_project})			
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   102
		endif()
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1097
diff changeset
   103
	endif (fpc_ver LESS "020200")
360
ab6a94334d6d - Two more templates
unc0rr
parents: 358
diff changeset
   104
endif (fpc_version)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   105
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   106
if (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   107
	message(FATAL_ERROR "No Pascal compiler found!")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   108
endif (NOT pascal_compiler)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   109
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   110
#special handling of MSVC compiler (no static linking)
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   111
if(MSVC)
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   112
	set(pascal_compiler_flags "-dMSVC" ${pascal_compiler_flags})
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2203
diff changeset
   113
endif(MSVC)
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   114
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   115
IF(NOT APPLE OR NOT universal_build MATCHES "1")
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   116
#here is the standard command for any system
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
   117
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
   118
		COMMAND "${pascal_compiler}"
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   119
		ARGS ${pascal_compiler_flags}
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   120
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   121
		DEPENDS openalbridge ${engine_sources}
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   122
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   123
ELSE()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   124
#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
   125
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.386"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   126
		COMMAND "ppc386" 
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   127
		ARGS ${pascal_compiler_flags} -ohwengine.386
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   128
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   129
		DEPENDS openalbridge ${engine_sources}
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   130
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   131
add_custom_target(hwengine.386 ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.386")
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   132
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   133
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   134
		COMMAND "ppcppc"
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   135
		ARGS ${pascal_compiler_flags} -ohwengine.ppc
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   136
		MAIN_DEPENDENCY ${hwengine_project}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   137
		DEPENDS openalbridge ${engine_sources}
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   138
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   139
add_custom_target(hwengine.ppc ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc")
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   140
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   141
#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
   142
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   143
		COMMAND "lipo"
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   144
		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
   145
		DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.386" "${EXECUTABLE_OUTPUT_PATH}/hwengine.ppc"
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   146
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   147
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   148
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   149
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
   150
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   151
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   152
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   153