CMakeLists.txt
author unc0rr
Fri, 20 Apr 2012 01:50:47 +0400
changeset 6894 555a8d8db228
parent 6812 929b467c7277
child 6992 b8f3d8991e92
permissions -rw-r--r--
Some more progress with pas2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     1
project(hedgewars)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     2
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
     3
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
     4
#initialise cmake environment
1461
87e5a6c3882c Ping clients every 30 seconds, should help with ghosts on server
unc0rr
parents: 1459
diff changeset
     5
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
5169
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
     6
FOREACH(policy CMP0003 CMP0012)
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
     7
	IF(POLICY ${policy})
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
     8
		CMAKE_POLICY(SET ${policy} NEW)
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
     9
	ENDIF()
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
    10
ENDFOREACH()
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    11
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    12
1107
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
    13
4252
13ec087713dd raised version number
koda
parents: 4098
diff changeset
    14
#detect Mercurial revision (if present)
6404
789c17eac2fe Aaaand merge into trunk too in case guys I was playing earlier are on trunk
nemo
parents: 6375
diff changeset
    15
set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME
4903
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    16
set(HGCHANGED "")
3074
271cfcb2bcda Frontend:
smxx
parents: 3055
diff changeset
    17
IF(version_suffix MATCHES "-dev")
271cfcb2bcda Frontend:
smxx
parents: 3055
diff changeset
    18
	set(HW_DEV true)
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    19
	IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg)
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
    20
		FIND_PROGRAM(HGCOMMAND hg)
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
    21
		IF(HGCOMMAND)
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    22
			exec_program(${HGCOMMAND}
3520
c3dcb80bdb1d add local rev number/rev count to dev version suffix
sheepluva
parents: 3515
diff changeset
    23
				     ARGS identify -in ${CMAKE_CURRENT_SOURCE_DIR}
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
    24
				     OUTPUT_VARIABLE version_suffix
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
    25
				     )
4903
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    26
			STRING(REGEX REPLACE "[^+]" "" HGCHANGED ${version_suffix})
5429
0caa7519cbd1 Colon sign isn't compatible with windows
unc0rr
parents: 5407
diff changeset
    27
			STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3-\\1" version_suffix ${version_suffix})
4903
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    28
			IF (HGCHANGED)
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    29
				MESSAGE(STATUS "Building revision ${version_suffix} (SOURCE CODE MODIFIED)")
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    30
			ELSE()
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    31
				MESSAGE(STATUS "Building revision ${version_suffix}")
21dd1def5aaf if source has uncommitted changes:
sheepluva
parents: 4845
diff changeset
    32
			ENDIF()
4460
bdace1e2f8aa write some version information inside the application
koda
parents: 4360
diff changeset
    33
			set(version_suffix "-${version_suffix}")
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
    34
		ENDIF()
3074
271cfcb2bcda Frontend:
smxx
parents: 3055
diff changeset
    35
	ENDIF()
271cfcb2bcda Frontend:
smxx
parents: 3055
diff changeset
    36
ELSE()
271cfcb2bcda Frontend:
smxx
parents: 3055
diff changeset
    37
	set(HW_DEV false)
2672
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    38
ENDIF()
0f1403bf267a check for sdl_image and sdl_mixer versions
koda
parents: 2671
diff changeset
    39
1107
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
    40
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    41
#versioning
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    42
set(CPACK_PACKAGE_VERSION_MAJOR 0)
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    43
set(CPACK_PACKAGE_VERSION_MINOR 9)
6605
800d4c029d53 bump to 0.9.18-dev - not sure how this was missed before
nemo
parents: 6538
diff changeset
    44
set(CPACK_PACKAGE_VERSION_PATCH 18${version_suffix})
6419
6a464d0a5c13 Tidy up flake land generation, to avoid ragged holes in landbacktex. Remove of one odd Land[] change forces a PROTO bump. Well, had to happen eventually.
nemo
parents: 6415
diff changeset
    45
set(HEDGEWARS_PROTO_VER 42)
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
    46
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    47
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    48
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    49
#set some safe values
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    50
IF(NOT WITH_SERVER)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    51
	SET(WITH_SERVER 0)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    52
ENDIF(NOT WITH_SERVER)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    53
IF(NOT BUILD_ENGINE_LIBRARY)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    54
	SET(BUILD_ENGINE_LIBRARY 0)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    55
ENDIF(NOT BUILD_ENGINE_LIBRARY)
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    56
set(target_dir "bin")
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
    57
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    58
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
    59
#bundle .app setup
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    60
if(APPLE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    61
	set(CMAKE_FIND_FRAMEWORK "FIRST")
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    62
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    63
	#paths for creating the bundle
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    64
	set(bundle_name Hedgewars.app)
5169
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
    65
	set(frameworks_dir ${bundle_name}/Contents/Frameworks/)
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    66
	set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    67
	set(DATA_INSTALL_DIR "../Resources/")
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    68
	set(target_dir ".")
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    69
2669
4eec706e86b0 introduction of IMG_Init
koda
parents: 2666
diff changeset
    70
	#what system are we building for
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    71
	set(minimum_macosx_version $ENV{MACOSX_DEPLOYMENT_TARGET})
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
    72
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    73
	#detect on which system are we
5169
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
    74
	EXEC_PROGRAM("/usr/bin/sw_vers" ARGS "-productVersion" OUTPUT_VARIABLE current_macosx_version)
e353ca78d28b some comments and simplifications for cmake files
koda
parents: 5168
diff changeset
    75
	STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" current_macosx_version ${current_macosx_version})
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    76
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
    77
	#if nothing is set, we deploy only for the current system
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    78
	if(NOT minimum_macosx_version)
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    79
		set(minimum_macosx_version ${current_macosx_version})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
    80
	endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    81
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
    82
	#lower systems don't have enough processing power anyways
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    83
	if (minimum_macosx_version LESS "10.4")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    84
		message(FATAL_ERROR "Hedgewars is not supported on Mac OS X pre-10.4")
2929
dd4efe601bc6 restore tiger 10.4 deployment
koda
parents: 2834
diff changeset
    85
	endif()
dd4efe601bc6 restore tiger 10.4 deployment
koda
parents: 2834
diff changeset
    86
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
    87
	#this variable needs to be set for freepascal universal binary
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
    88
	if(NOT CMAKE_OSX_ARCHITECTURES)
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    89
		if(current_macosx_version LESS "10.6")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    90
			if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "powerpc*")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    91
				set(CMAKE_OSX_ARCHITECTURES "ppc7400")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    92
			else()
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    93
				set(CMAKE_OSX_ARCHITECTURES "i386")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    94
			endif()
3221
3e6586c1ab4f koda's changelog turn
koda
parents: 3205
diff changeset
    95
		else()
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
    96
			set(CMAKE_OSX_ARCHITECTURES "x86_64")
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
    97
		endif()
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
    98
	endif()
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
    99
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   100
	#be sure to select ppc-compatible toolchains just in case
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   101
	if(minimum_macosx_version LESS "10.6")
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   102
		set(CMAKE_C_COMPILER "gcc-4.0")
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   103
		set(CMAKE_CXX_COMPILER "g++-4.0")
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   104
	endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   105
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   106
	if(minimum_macosx_version MATCHES "10.4")
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   107
		set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk/")
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   108
		#workaround for http://playcontrol.net/ewing/jibberjabber/big_behind-the-scenes_chang.html#SDL_mixer (Update 2)
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   109
		if(current_macosx_version MATCHES "10.4")
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   110
			find_package(SDL_mixer REQUIRED)
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
   111
			set(pascal_compiler_flags_cmn "-k-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg" "-k-dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod" ${pascal_compiler_flags_cmn})
3345
25ad24233e77 don't polish other people patches
koda
parents: 3338
diff changeset
   112
			set(CMAKE_C_FLAGS "-dylib_file @loader_path/Frameworks/smpeg.framework/Versions/A/smpeg:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/smpeg.framework/Versions/A/smpeg -dylib_file @loader_path/Frameworks/mikmod.framework/Versions/A/mikmod:${SDLMIXER_LIBRARY}/Versions/A/Frameworks/mikmod.framework/Versions/A/mikmod")
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   113
		endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   114
	else()
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   115
		STRING(REGEX REPLACE "([0-9]+.[0-9]+).[0-9]+" "\\1" sdk_version ${minimum_macosx_version})
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   116
		set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${sdk_version}.sdk/")
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   117
	endif()
2641
b08cafb86797 some tweaks in the mac compilation system
koda
parents: 2629
diff changeset
   118
5223
5730238e7ee6 allow fpc to search through the user directory when linking frameworks
koda
parents: 5188
diff changeset
   119
	#add user framework directory
5730238e7ee6 allow fpc to search through the user directory when linking frameworks
koda
parents: 5188
diff changeset
   120
	set(pascal_compiler_flags_cmn "-Ff~/Library/Frameworks" ${pascal_compiler_flags_cmn})
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   121
	#set deployment target
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   122
	set(pascal_compiler_flags_cmn "-k-macosx_version_min" "-k${minimum_macosx_version}" "-XR${CMAKE_OSX_SYSROOT}" ${pascal_compiler_flags_cmn})
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   123
	#link with liblua.a (which requires readline)
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   124
	set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_compiler_flags_cmn})
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   125
	#link with libsdlmain.a (when building an executable)
3495
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
   126
	if(NOT BUILD_ENGINE_LIBRARY)
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
   127
		set(pascal_compiler_flags_cmn "-k${CMAKE_BINARY_DIR}/bin/libSDLmain.a" ${pascal_compiler_flags_cmn})
a6b4f351d400 now engine can be optionally built as library, there's an example wrapper of how to use it
koda
parents: 3407
diff changeset
   128
	endif()
5188
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   129
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   130
	message(STATUS "Build system: Mac OS X ${current_macosx_version} with GCC:${CMAKE_C_COMPILER}")
d0461bd6d45b some updates to the crossbuild system for mac
koda
parents: 5173
diff changeset
   131
	message(STATUS "Target system: Mac OS X ${minimum_macosx_version} for architecture(s):${CMAKE_OSX_ARCHITECTURES}")
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   132
endif(APPLE)
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
   133
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   134
6065
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   135
#build Debug only when explicitally set
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   136
if (NOT CMAKE_BUILD_TYPE)
6065
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   137
	set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: Debug Release." FORCE)
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   138
endif (NOT CMAKE_BUILD_TYPE)
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   139
6065
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   140
if(CMAKE_BUILD_TYPE MATCHES DEBUG OR CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "debug")
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   141
	message(STATUS "Building Debug")
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   142
	set(Optz false)
0fbb2689cf48 fix issue 287, default cmake build type
koda
parents: 5965
diff changeset
   143
else()
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3677
diff changeset
   144
	message(STATUS "Building Release")
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   145
	set(Optz true)
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   146
endif()
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   147
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
   148
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   149
#set default flags values for all the project
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   150
set(CMAKE_C_FLAGS "-pipe ${CMAKE_C_FLAGS}")
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   151
set(CMAKE_C_FLAGS_RELEASE "-w -Os -fomit-frame-pointer ${CMAKE_C_FLAGS_RELEASE}")
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   152
set(CMAKE_C_FLAGS_DEBUG "-Wall -O0 -g -DDEBUG ${CMAKE_C_FLAGS_DEBUG}")
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   153
set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   154
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   155
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   156
3407
dcc129c4352e Engine:
smxx
parents: 3353
diff changeset
   157
set(pascal_compiler_flags_cmn "-B" "-FE../bin" "-Cs2000000" "-vewn" ${pascal_compiler_flags_cmn})
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   158
set(haskell_compiler_flags_cmn "-O2" ${haskell_compiler_flags_cmn})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   159
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   160
if(Optz)
3677
7d917b587547 Engine:
smaxx
parents: 3629
diff changeset
   161
#	set(pascal_compiler_flags_cmn "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_compiler_flags_cmn})
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   162
	set(pascal_compiler_flags_cmn "-Os" "-Xs" "-Si" ${pascal_compiler_flags_cmn})
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   163
	set(haskell_compiler_flags_cmn "-w" "-fno-warn-unused-do-bind" ${haskell_compiler_flags_cmn})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   164
else(Optz)
6538
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   165
	set(pascal_compiler_flags_cmn "-O-" "-g" "-gl" "-gv" "-dDEBUGFILE" ${pascal_compiler_flags_cmn})
5a1f49d84d95 testing, let's try -Os optimisation for frontend and engine; small cleanup and typos
koda
parents: 6537
diff changeset
   166
	set(haskell_compiler_flags_cmn "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_compiler_flags_cmn})
2606
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   167
endif(Optz)
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   168
ed687a8d081f updated build files for macosx and optimization system
koda
parents: 2573
diff changeset
   169
266
53f46353d029 one else fix
displacer
parents: 265
diff changeset
   170
if(DEFINED DATA_INSTALL_DIR)
262
b4bc05237c06 fixed absent DATA_INSTALL_DIR
displacer
parents: 261
diff changeset
   171
	set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/)
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   172
else()
262
b4bc05237c06 fixed absent DATA_INSTALL_DIR
displacer
parents: 261
diff changeset
   173
	set(SHAREPATH share/hedgewars/)
2652
67d0344aea9f still updates for mac compilation
koda
parents: 2644
diff changeset
   174
endif()
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 205
diff changeset
   175
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   176
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 268
diff changeset
   177
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   178
if(WITH_SERVER)
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   179
	find_program(ghc_executable ghc)
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   180
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   181
	if(ghc_executable)
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   182
		set(HAVE_NETSERVER true)
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   183
		add_subdirectory(gameServer)
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   184
	else()
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   185
		message(STATUS "No GHC executable found, server will *not* be built")
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   186
		set(HAVE_NETSERVER false)
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   187
	endif()
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   188
else(WITH_SERVER)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   189
	set(HAVE_NETSERVER false)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   190
endif(WITH_SERVER)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
   191
3525
1d7b056ff866 some memory caring code
koda
parents: 3522
diff changeset
   192
add_subdirectory(misc/liblua)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   193
add_subdirectory(hedgewars)
5053
a767954cfa03 this should help people hacking the cmake files
koda
parents: 4904
diff changeset
   194
6025
cac1d5601d7c reviewed the build system and parts of the previous merge, performed some code cleanup
koda
parents: 6023
diff changeset
   195
#run cmake -DBUILD_ANDROID_PORT=1 to enable this
6812
929b467c7277 fixed some typo's. LUA_LIBRARY now points to the right name, regardless of the host machine. Running cmake after a bad attempt (ie forgot to add paths to PATH) now works rather than having to clean the cache
Xeli
parents: 6605
diff changeset
   196
if(ANDROID)
6025
cac1d5601d7c reviewed the build system and parts of the previous merge, performed some code cleanup
koda
parents: 6023
diff changeset
   197
	add_subdirectory(project_files/Android-build)
cac1d5601d7c reviewed the build system and parts of the previous merge, performed some code cleanup
koda
parents: 6023
diff changeset
   198
endif()
5381
8f95038f3f75 Removed protocol check, using CMake now to setup the building scripts using Templates/* removed old scripts
Xeli
parents: 5223
diff changeset
   199
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   200
if(NOT BUILD_ENGINE_LIBRARY)
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   201
	add_subdirectory(bin)
5752
ea95ee97c805 Add QuaZIP library to build system
unc0rr
parents: 5610
diff changeset
   202
	add_subdirectory(misc/quazip)
3515
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   203
	add_subdirectory(QTfrontend)
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   204
	add_subdirectory(share)
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   205
	add_subdirectory(tools)
3e8635f43972 fix cmakefiles to work with mercurial
koda
parents: 3495
diff changeset
   206
endif()
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
   207
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   208
5405
5b17e1b3e0d5 better variable grouping...
koda
parents: 5223
diff changeset
   209
# CPack variables
3338
dee9beba85cc patch by raptor (polished by me) to allow tiger/xcode24 compilation
koda
parents: 3306
diff changeset
   210
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Hedgewars, a free turn-based strategy")
2827
45817d8386c7 Engine:
smxx
parents: 2822
diff changeset
   211
set(CPACK_PACKAGE_VENDOR "Hedgewars Project")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   212
set(CPACK_PACKAGE_FILE_NAME "hedgewars-${HEDGEWARS_VERSION}")
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   213
set(CPACK_SOURCE_PACKAGE_FILE_NAME "hedgewars-src-${HEDGEWARS_VERSION}")
1459
cf6fa7c9cf45 Fix generator name (TBZ2 instead of BZ2)
unc0rr
parents: 1458
diff changeset
   214
set(CPACK_SOURCE_GENERATOR "TBZ2")
1173
70b0acd4548c Revert accidental nsis installer generator regression
unc0rr
parents: 1159
diff changeset
   215
set(CPACK_PACKAGE_EXECUTABLES "hedgewars" "hedgewars")
458
5880af7b530a Fix build
unc0rr
parents: 360
diff changeset
   216
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
   217
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Hedgewars ${HEDGEWARS_VERSION}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   218
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   219
if(WIN32 AND NOT UNIX)
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3697
diff changeset
   220
	set(CPACK_NSIS_DISPLAY_NAME "Hedgewars")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   221
	set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   222
	set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   223
	set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com")
1159
49c88f620e51 Various build system improvements
unc0rr
parents: 1141
diff changeset
   224
	set(CPACK_NSIS_MODIFY_PATH OFF)
49c88f620e51 Various build system improvements
unc0rr
parents: 1141
diff changeset
   225
	set(CPACK_GENERATOR "ZIP;NSIS")
3301
smxx
parents: 3292
diff changeset
   226
	set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "hedgewars")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   227
else(WIN32 AND NOT UNIX)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   228
	set(CPACK_STRIP_FILES "bin/hedgewars;bin/hwengine")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   229
endif(WIN32 AND NOT UNIX)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   230
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   231
set(CPACK_SOURCE_IGNORE_FILES
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   232
	"~"
4309
a69c73c5d173 merge of 0.9.14 changes into default - hopefully I successfully avoided the parts we don't want
nemo
parents: 4252 4283
diff changeset
   233
	"\\\\.hg"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   234
	"\\\\.svn"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   235
	"\\\\.exe$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   236
	"\\\\.a$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   237
	"\\\\.dll$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   238
	"\\\\.xcf$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   239
	"\\\\.cxx$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   240
	"\\\\.db$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   241
	"\\\\.dof$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   242
	"\\\\.layout$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   243
	"\\\\.zip$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   244
	"\\\\.gz$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   245
	"\\\\.bz2$"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   246
	"\\\\.tmp$"
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   247
	"\\\\.core$"
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   248
	"\\\\.sh$"
4309
a69c73c5d173 merge of 0.9.14 changes into default - hopefully I successfully avoided the parts we don't want
nemo
parents: 4252 4283
diff changeset
   249
	"\\\\.sifz$"
a69c73c5d173 merge of 0.9.14 changes into default - hopefully I successfully avoided the parts we don't want
nemo
parents: 4252 4283
diff changeset
   250
	"\\\\.svg$"
a69c73c5d173 merge of 0.9.14 changes into default - hopefully I successfully avoided the parts we don't want
nemo
parents: 4252 4283
diff changeset
   251
	"\\\\.svgz$"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   252
	"\\\\.ppu$"
4309
a69c73c5d173 merge of 0.9.14 changes into default - hopefully I successfully avoided the parts we don't want
nemo
parents: 4252 4283
diff changeset
   253
	"\\\\.psd$"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   254
	"\\\\.o$"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   255
	"Makefile"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   256
	"Doxyfile"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   257
	"CMakeFiles"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   258
	"debug"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   259
	"release$"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   260
	"Debug$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   261
	"Release$"
4731
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   262
	"proto\\\\.inc$"
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   263
	"hwconsts\\\\.cpp$"
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   264
	"playlist\\\\.inc$"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   265
	"CPack"
4731
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   266
	"cmake_install\\\\.cmake$"
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   267
	"config\\\\.inc$"
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   268
	"hwengine\\\\.desktop$"
edf7d04d3fa9 merge 0.9.15 (with a typo fix)
nemo
parents: 4721
diff changeset
   269
	"CMakeCache\\\\.txt$"
5957
a6224655647c Include lib* into src package
unc0rr
parents: 5951
diff changeset
   270
#	"^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge"
a6224655647c Include lib* into src package
unc0rr
parents: 5951
diff changeset
   271
#	"^${CMAKE_CURRENT_SOURCE_DIR}/misc/libfreetype"
6025
cac1d5601d7c reviewed the build system and parts of the previous merge, performed some code cleanup
koda
parents: 6023
diff changeset
   272
	"^${CMAKE_CURRENT_SOURCE_DIR}/misc/liblua"
5957
a6224655647c Include lib* into src package
unc0rr
parents: 5951
diff changeset
   273
#	"^${CMAKE_CURRENT_SOURCE_DIR}/misc/libtremor"
3522
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   274
	"^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   275
	"^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   276
	"^${CMAKE_CURRENT_SOURCE_DIR}/tools/templates"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   277
	"^${CMAKE_CURRENT_SOURCE_DIR}/doc"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   278
	"^${CMAKE_CURRENT_SOURCE_DIR}/templates"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   279
	"^${CMAKE_CURRENT_SOURCE_DIR}/Graphics"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   280
	"^${CMAKE_CURRENT_SOURCE_DIR}/realtest"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   281
	"^${CMAKE_CURRENT_SOURCE_DIR}/tmp"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   282
	"^${CMAKE_CURRENT_SOURCE_DIR}/utils"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   283
	"^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Maps/test"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   284
	"^${CMAKE_CURRENT_SOURCE_DIR}/share/hedgewars/Data/Themes/ethereal"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   285
	"^${CMAKE_CURRENT_SOURCE_DIR}/install_manifest.txt"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   286
	"^${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt"
156c04c6a3d8 add initial stubs for selecting weapons in the ifrontend
koda
parents: 3520
diff changeset
   287
	"^${CMAKE_CURRENT_SOURCE_DIR}/hedgewars\\\\."
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   288
)
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   289
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   290
include(CPack)
5407
486231e82e8d typo and spaces
koda
parents: 5405
diff changeset
   291