CMakeLists.txt
author koda
Sun, 11 Oct 2009 16:23:59 +0000
changeset 2417 f7ed1ea25050
parent 2413 d921d13a8546
child 2494 1e10a47cabea
permissions -rw-r--r--
updated build method
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
1461
87e5a6c3882c Ping clients every 30 seconds, should help with ghosts on server
unc0rr
parents: 1459
diff changeset
     3
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
     4
1107
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
     5
if(COMMAND cmake_policy)
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
     6
	cmake_policy(SET CMP0003 NEW)
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
     7
endif(COMMAND cmake_policy)
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
     8
1843
16cdd1745b73 Add QCA2 checks to build system
unc0rr
parents: 1758
diff changeset
     9
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
1107
ee873ada9e86 Supress CMake warning
unc0rr
parents: 1074
diff changeset
    10
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    11
set(CPACK_PACKAGE_VERSION_MAJOR "0")
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    12
set(CPACK_PACKAGE_VERSION_MINOR "9")
2122
a3f987f1ddcd Current trunk version isn't compatible with 0.9.11, so set version to 0.9.12-dev
unc0rr
parents: 2107
diff changeset
    13
set(CPACK_PACKAGE_VERSION_PATCH "12-dev")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    14
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    15
set(universal_build false)
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    16
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    17
if(APPLE)
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    18
set(bundle_name Hedgewars.app)
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    19
set(CMAKE_INSTALL_PREFIX ${bundle_name}/Contents/MacOS/) 
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    20
set(DATA_INSTALL_DIR "../Resources/")
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    21
set(target_dir ".")
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    22
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    23
if(UNIVERSAL)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    24
	set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400")
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    25
	set(universal_build true)
2401
2a694ea2a437 fixes & co.
koda
parents: 2239
diff changeset
    26
	message(STATUS "Building a Universal Application")
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    27
else(UNIVERSAL)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    28
	if(UNIVERSAL64)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    29
		set(CMAKE_OSX_ARCHITECTURES "i386;ppc7400;x86_64")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    30
		set(universal_build true)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    31
		message(STATUS "Building a Universal 64 bits Application")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    32
	endif(UNIVERSAL64)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    33
endif(UNIVERSAL)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    34
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    35
else(APPLE)
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    36
set(target_dir "bin")
2015
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    37
endif(APPLE)
d2848d723690 koda's patch
unc0rr
parents: 2005
diff changeset
    38
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    39
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    40
if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "Release")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    41
	set(CMAKE_BUILD_TYPE "Release")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    42
	set(OPTIMIZATIONS true)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    43
	message(STATUS "Building Release")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    44
else()
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    45
	set(CMAKE_BUILD_TYPE "Debug")
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    46
	set(OPTIMIZATIONS false)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    47
	set(CMAKE_VERBOSE_MAKEFILE true)
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    48
	message(STATUS "Building Debug")	
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    49
endif()
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    50
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    51
266
53f46353d029 one else fix
displacer
parents: 265
diff changeset
    52
if(DEFINED DATA_INSTALL_DIR)
262
b4bc05237c06 fixed absent DATA_INSTALL_DIR
displacer
parents: 261
diff changeset
    53
	set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/)
266
53f46353d029 one else fix
displacer
parents: 265
diff changeset
    54
else(DEFINED DATA_INSTALL_DIR)
262
b4bc05237c06 fixed absent DATA_INSTALL_DIR
displacer
parents: 261
diff changeset
    55
	set(SHAREPATH share/hedgewars/)
266
53f46353d029 one else fix
displacer
parents: 265
diff changeset
    56
endif(DEFINED DATA_INSTALL_DIR)
220
d79eaeaf969d Fix hwengine target behaviour
unc0rr
parents: 205
diff changeset
    57
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    58
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    59
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
2122
a3f987f1ddcd Current trunk version isn't compatible with 0.9.11, so set version to 0.9.12-dev
unc0rr
parents: 2107
diff changeset
    60
set(HEDGEWARS_PROTO_VER 28)
271
f2f9a3d5b441 Protocol version sets in CMake
unc0rr
parents: 268
diff changeset
    61
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    62
if(WITH_SERVER)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    63
	set(HAVE_NETSERVER true)
1979
912e450d4db2 - Add gameServer to build system
unc0rr
parents: 1843
diff changeset
    64
	add_subdirectory(gameServer)
1415
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    65
else(WITH_SERVER)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    66
	set(HAVE_NETSERVER false)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    67
endif(WITH_SERVER)
6fbfee0e113a Allow build without net game server: introduce -DWITH_SERVER configuration parameter
unc0rr
parents: 1370
diff changeset
    68
2239
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    69
#set default flags values for all the project
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    70
set(CMAKE_C_FLAGS "-Wall -pipe")
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    71
set(CMAKE_C_FLAGS_RELEASE "-w -O2 -fomit-frame-pointer")
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    72
set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    73
if(APPLE AND NOT universal_build)
2413
d921d13a8546 fix that nasty "Pascal Internal Error" when compiling
koda
parents: 2406
diff changeset
    74
	set(CMAKE_C_FLAGS_RELEASE "-msse2 ${CMAKE_C_FLAGS_RELEASE}")
2406
2e757b32991e cmake optimizations and simplification
koda
parents: 2401
diff changeset
    75
endif()
2239
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    76
set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    77
set(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    78
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    79
d7b5c65f7544 move C and C++ optimization flags in the main CMakeLists.txt
koda
parents: 2219
diff changeset
    80
223
c41effdd461d Better build system scripts
unc0rr
parents: 220
diff changeset
    81
add_subdirectory(bin)
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2122
diff changeset
    82
add_subdirectory(openalbridge)
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    83
add_subdirectory(QTfrontend)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    84
add_subdirectory(hedgewars)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    85
add_subdirectory(share)
2219
07f5345ecae7 additional variable (BUNDLE) to make a standalone Mac application
koda
parents: 2203
diff changeset
    86
add_subdirectory(tools)
2203
6bd39d75e0dd -Added support for Release and Debug for CMAKE_BUILD_TYPE
koda
parents: 2200
diff changeset
    87
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
    88
# CPack vars
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
    89
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    90
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Hedgewars, a turn-based strategy")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    91
set(CPACK_PACKAGE_VENDOR "Hedgewars")
907
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    92
set(CPACK_PACKAGE_FILE_NAME "hedgewars-${HEDGEWARS_VERSION}")
a5b0b93a39c8 Use constant generated by cmake for version string
unc0rr
parents: 904
diff changeset
    93
set(CPACK_SOURCE_PACKAGE_FILE_NAME "hedgewars-src-${HEDGEWARS_VERSION}")
1459
cf6fa7c9cf45 Fix generator name (TBZ2 instead of BZ2)
unc0rr
parents: 1458
diff changeset
    94
set(CPACK_SOURCE_GENERATOR "TBZ2")
1173
70b0acd4548c Revert accidental nsis installer generator regression
unc0rr
parents: 1159
diff changeset
    95
set(CPACK_PACKAGE_EXECUTABLES "hedgewars" "hedgewars")
458
5880af7b530a Fix build
unc0rr
parents: 360
diff changeset
    96
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
    97
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Hedgewars ${HEDGEWARS_VERSION}")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    98
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
    99
if(WIN32 AND NOT UNIX)
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2191
diff changeset
   100
	set(CPACK_NSIS_DISPLAY_NAME "Hedgewars, a free turn-based strategy game") 
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   101
	set(CPACK_NSIS_HELP_LINK "http://www.hedgewars.org/")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   102
	set(CPACK_NSIS_URL_INFO_ABOUT "http://www.hedgewars.org/")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   103
	set(CPACK_NSIS_CONTACT "unC0Rr@gmail.com")
1159
49c88f620e51 Various build system improvements
unc0rr
parents: 1141
diff changeset
   104
	set(CPACK_NSIS_MODIFY_PATH OFF)
49c88f620e51 Various build system improvements
unc0rr
parents: 1141
diff changeset
   105
	set(CPACK_GENERATOR "ZIP;NSIS")
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   106
else(WIN32 AND NOT UNIX)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   107
	set(CPACK_STRIP_FILES "bin/hedgewars;bin/hwengine")
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   108
endif(WIN32 AND NOT UNIX)
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   109
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   110
set(CPACK_SOURCE_IGNORE_FILES
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   111
	"~"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   112
	"\\\\.svn"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   113
	"\\\\.exe$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   114
	"\\\\.a$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   115
	"\\\\.dll$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   116
	"\\\\.xcf$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   117
	"\\\\.cxx$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   118
	"\\\\.db$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   119
	"\\\\.dof$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   120
	"\\\\.cmake$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   121
	"\\\\.layout$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   122
	"\\\\.zip$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   123
	"\\\\.gz$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   124
	"\\\\.bz2$"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   125
	"\\\\.tmp$"
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   126
	"\\\\.core$"
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   127
	"\\\\.sh$"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   128
	"\\\\.ppu$"
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   129
	"\\\\.o$"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   130
	"Makefile"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   131
	"Doxyfile"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   132
	"CMakeFiles"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   133
	"debug"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   134
	"release$"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   135
	"Debug$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   136
	"Release$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   137
	"proto.inc$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   138
	"hwconsts.cpp$"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   139
	"playlist.inc$"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   140
	"CPack"
727
da975a75af09 Fix all issues with make package_source on my system
unc0rr
parents: 722
diff changeset
   141
	"^${PROJECT_SOURCE_DIR}/bin/[a-z]"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   142
	"^${PROJECT_SOURCE_DIR}/tools"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   143
	"^${PROJECT_SOURCE_DIR}/doc"
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   144
	"^${PROJECT_SOURCE_DIR}/templates"
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   145
	"^${PROJECT_SOURCE_DIR}/Graphics"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   146
	"^${PROJECT_SOURCE_DIR}/realtest"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   147
	"^${PROJECT_SOURCE_DIR}/tmp"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   148
	"^${PROJECT_SOURCE_DIR}/utils"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   149
	"^${PROJECT_SOURCE_DIR}/share/hedgewars/Data/Maps/test"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   150
	"^${PROJECT_SOURCE_DIR}/share/hedgewars/Data/Themes/ethereal"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   151
	"^${PROJECT_SOURCE_DIR}/install_manifest.txt"
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   152
	"^${PROJECT_SOURCE_DIR}/CMakeCache.txt"
722
993faebbe546 - Use shotgun training as more attractive than the second one with bazooka
unc0rr
parents: 720
diff changeset
   153
	"^${PROJECT_SOURCE_DIR}/hedgewars\\\\."
584
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   154
)
f381705f1aeb Some stuff to get good results from make 'package_source'
unc0rr
parents: 546
diff changeset
   155
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 123
diff changeset
   156
include(CPack)