hedgewars/CMakeLists.txt
author koda
Sun, 20 Dec 2009 20:08:17 +0000
changeset 2667 d9201436c6cf
parent 2666 2b8c8f16421e
child 2669 4eec706e86b0
permissions -rw-r--r--
binding typo
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
2420
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     3
find_package(SDL)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     4
find_package(SDL_image)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     5
find_package(SDL_net)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
     6
find_package(SDL_ttf)
2515
51d3f4b6293a revert audio to use SDL_mixer -- also frontend uses it, so it needs sdlmixer sources
koda
parents: 2494
diff changeset
     7
find_package(SDL_mixer)
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
     8
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
     9
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    10
#SOURCE AND PROGRAMS SECTION 
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    11
set(fpc_tryexe fpc)
2326
0ddf641fddee rename dpr -> pas, restores ammos on two columns, minor fixes to openalbridge
koda
parents: 2251
diff changeset
    12
set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    13
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    14
set(	engine_sources
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    15
	${hwengine_project}
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    16
	SDLh.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    17
	uAI.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    18
	uAIActions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    19
	uAIAmmoTests.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    20
	uAIMisc.pas
288
929c44745fd9 Ammo schemes and ammo stores support in engine
unc0rr
parents: 276
diff changeset
    21
	uAmmos.pas
942
b41af014d85e Stub for chat implementation
unc0rr
parents: 814
diff changeset
    22
	uChat.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    23
	uCollisions.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    24
	uConsole.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    25
	uConsts.pas
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    26
	uFloat.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    27
	uGame.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    28
	uGears.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    29
	uIO.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    30
	uKeys.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    31
	uLand.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    32
	uLandGraphics.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    33
	uLandObjects.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    34
	uLandTemplates.pas
1806
3c4f0886c123 More reorganization
unc0rr
parents: 1744
diff changeset
    35
	uLandTexture.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    36
	uLocale.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    37
	uMisc.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    38
	uRandom.pas
368
fe71e55d2d7b Make SHA really work
unc0rr
parents: 360
diff changeset
    39
	uSHA.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    40
	uSound.pas
814
7fb4417b7bc1 Start implementing better statistics implementation (does nothing yet)
unc0rr
parents: 802
diff changeset
    41
	uStats.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    42
	uStore.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    43
	uTeams.pas
593
1f5e66379a43 Triggers proof-of-concept
unc0rr
parents: 564
diff changeset
    44
	uTriggers.pas
802
ed5450a89b96 Start implementing 'visual gears' - gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents: 782
diff changeset
    45
	uVisualGears.pas
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    46
	uWorld.pas
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    47
	CCHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    48
	GSHandlers.inc
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    49
	HHHandlers.inc
357
165a040e4cfa - Fix Blow Torch and Air Attack
unc0rr
parents: 351
diff changeset
    50
	SinTable.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    51
	options.inc
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    52
	${CMAKE_CURRENT_BINARY_DIR}/proto.inc
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    53
	)
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
    54
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    55
find_program(fpc_executable ${fpc_tryexe})
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    56
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    57
if(fpc_executable)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    58
	 exec_program(${fpc_executable} ARGS "-h" OUTPUT_VARIABLE fpc_output)
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    59
endif(fpc_executable)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
    60
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    61
set(noexecstack_flags "-k-z" "-knoexecstack")
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    62
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    63
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
    64
exec_program(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH}
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    65
	ARGS ${noexecstack_flags} checkstack.pas
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    66
	OUTPUT_VARIABLE noout
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    67
	RETURN_VALUE testnoexecstack
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    68
	)
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    69
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    70
if(${testnoexecstack})
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    71
	set (noexecstack_flags "")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    72
endif(${testnoexecstack})
476
a4e975f70b60 check for noexecstack linker compatibility (MacOS linker)
displacer
parents: 433
diff changeset
    73
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    74
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    75
if(APPLE)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    76
	string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}")
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    77
	string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}")
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    78
	string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    79
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    80
	if(powerpc_build)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    81
		set(powerpc_build "powerpc")
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    82
	endif()
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    83
endif(APPLE)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    84
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    85
#PASCAL DETECTION SECTION
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    86
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    87
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    88
if(fpc_version)
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    89
	string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    90
	string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    91
	string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    92
	message(STATUS "Freepascal version detected: ${fpc_vers_major}.${fpc_vers_minor}.${fpc_vers_patch}")
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    93
	math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    94
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    95
	if(fpc_ver LESS "020200")
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
    96
		message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    97
	elseif(APPLE AND i386_build AND fpc_ver LESS "020400")
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
    98
		message(FATAL_ERROR "Minimum required version of FreePascal is 2.4.0 for building 64 bit applications!")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
    99
	endif()
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   100
else()
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   101
	message(FATAL_ERROR "No Pascal compiler found!")
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   102
endif()
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   103
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   104
set(pascal_compiler ${fpc_executable})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2601
diff changeset
   105
set(pascal_compiler_flags ${noexecstack_flags} ${pascal_compiler_flags_cmn} ${hwengine_project})
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   106
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   107
2e757b32991e cmake optimizations and simplification
koda
parents: 2404
diff changeset
   108
#DEPENDECIES AND EXECUTABLES SECTION
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
   109
IF(APPLE)
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
   110
#let's build sdlmain, which is absent from the framework
2420
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
   111
	find_package(SDL REQUIRED)
b7390a3040f8 ultramegafix
koda
parents: 2413
diff changeset
   112
2663
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   113
	set(CMAKE_OSX_ARCHITECTURES "x86_64;i386;ppc7400")	
d53918cd22bb random updates for 10.6 and iphone builds
koda
parents: 2652
diff changeset
   114
	
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
   115
	set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
   116
	include_directories(${SDL_INCLUDE_DIR})
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
   117
	link_libraries(${SDL_LIBRARY})
2016
73b0bcc4396d lost pieces of previous patch
unc0rr
parents: 2015
diff changeset
   118
2401
2a694ea2a437 fixes & co.
koda
parents: 2326
diff changeset
   119
	add_library (SDLmain STATIC SDLMain.m)
1997
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
   120
ENDIF(APPLE)
cd66434351cf koda's patch
unc0rr
parents: 1806
diff changeset
   121
2629
be70fd3458c0 universal application setup
koda
parents: 2609
diff changeset
   122
IF(NOT APPLE)
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   123
#here is the standard command for any system
2609
b67624c7d61e add a x86_64 mac target
koda
parents: 2606
diff changeset
   124
	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
   125
		COMMAND "${pascal_compiler}"
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   126
		ARGS ${pascal_compiler_flags}
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   127
		MAIN_DEPENDENCY ${hwengine_project}
2521
fc8d26d14ed0 Fix build
unc0rr
parents: 2515
diff changeset
   128
		DEPENDS ${engine_sources}
781
4101f0f1c0b9 First steps to support out-of-source build
unc0rr
parents: 593
diff changeset
   129
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   130
ELSE()
2609
b67624c7d61e add a x86_64 mac target
koda
parents: 2606
diff changeset
   131
#these are the dependencies for building a universal binary on Mac OS X
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   132
	foreach (build_arch ${powerpc_build} ${i386_build} ${x86_64_build})
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   133
		set(lipo_args_list "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" ${lipo_args_list})
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   134
		add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}"
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   135
			COMMAND "${pascal_compiler}"
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   136
			ARGS ${pascal_compiler_flags} -ohwengine.${build_arch} -P${build_arch}
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   137
			MAIN_DEPENDENCY ${hwengine_project}
2664
949c189ba568 powerpc and gameserver compilation disabled temporarily
koda
parents: 2663
diff changeset
   138
			DEPENDS ${engine_sources} SDLmain
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   139
			)
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   140
		add_custom_target(hwengine.${build_arch} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}")
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   141
	endforeach()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   142
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   143
	add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine"
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   144
		COMMAND "lipo"
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   145
		ARGS ${lipo_args_list} -create -output ${EXECUTABLE_OUTPUT_PATH}/hwengine
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   146
		DEPENDS ${lipo_args_list}
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   147
		)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   148
ENDIF()
2003
41b3d00949ca Patch by koda:
unc0rr
parents: 1997
diff changeset
   149
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   150
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 196
diff changeset
   151
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 173
diff changeset
   152
2015
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   153
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir})
d2848d723690 koda's patch
unc0rr
parents: 2003
diff changeset
   154