-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
237 lines (194 loc) · 7.95 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
cmake_minimum_required(VERSION 2.4.4)
# Project name
PROJECT(Warmux)
SET(VERSION "svn")
# change the default install prefix to /usr
SET(CMAKE_INSTALL_PREFIX /usr)
# Some aliases of cmake variables
IF(BUILD)
SET(BUILD CACHE STRING "Abbreviation for CMAKE_BUILD_TYPE.")
SET(CMAKE_BUILD_TYPE ${BUILD})
ENDIF(BUILD)
IF(PREFIX)
SET(PREFIX CACHE PATH "Abbreviation for CMAKE_INSTALL_PREFIX.")
SET(CMAKE_INSTALL_PREFIX ${PREFIX})
ENDIF(PREFIX)
# Set some global variables
SET(WARMUX_CFLAGS "-Wall") # additional compile flags for warmux
SET(WARMUX_LDFLAGS "") # additional linking flags for warmux
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/build/cmake)
IF(BIN_PATH)
# If user specified a path for binary, use it
SET(BIN_DESTINATION ${BIN_PATH})
ELSE(BIN_PATH)
# Otherwise use defaults
IF(UNIX AND NOT WIN32)
SET(BIN_DESTINATION "bin")
ELSE(UNIX AND NOT WIN32)
SET(BIN_DESTINATION ${CMAKE_BINARY_DIR})
ENDIF(UNIX AND NOT WIN32)
ENDIF(BIN_PATH)
IF(DATA_PATH)
# If user specified a path for data, use it
SET(INSTALL_DATADIR ${DATA_PATH}/data/)
SET(INSTALL_LOCALEDIR ${DATA_PATH}/locale/)
SET(DATA_DESTINATION ${DATA_PATH}/data)
SET(PO_DESTINATION ${DATA_PATH}/locale)
SET(FONT_FILE ${DATA_PATH}/data/font/Ubuntu-R.ttf)
ELSE(DATA_PATH)
# Otherwise use defaults
IF(UNIX AND NOT WIN32)
SET(INSTALL_DATADIR ${CMAKE_INSTALL_PREFIX}/share/warmux/)
SET(INSTALL_LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale/)
SET(DATA_DESTINATION "share/warmux")
SET(PO_DESTINATION "share/locale")
SET(FONT_FILE ${INSTALL_DATADIR}/font/Ubuntu-R.ttf)
ELSE(UNIX AND NOT WIN32)
SET(INSTALL_DATADIR data/)
SET(INSTALL_LOCALEDIR locale/)
SET(DATA_DESTINATION "data")
SET(PO_DESTINATION "locale")
SET(FONT_FILE data/font/Ubuntu-R.ttf)
ENDIF(UNIX AND NOT WIN32)
ENDIF(DATA_PATH)
IF(COMMAND cmake_policy)
# cmake_policy(SET CMP0011 NEW)
ENDIF(COMMAND cmake_policy)
# Optional package CPack
INCLUDE(CPackConfig OPTIONAL)
INCLUDE(XmlValidityTest OPTIONAL)
# Use "make run" and "make debug" to run/debug warmux
ADD_CUSTOM_TARGET(run WARMUX_DATADIR=${PROJECT_SOURCE_DIR}/data/ WARMUX_FONT_PATH=${PROJECT_SOURCE_DIR}/data/font/Ubuntu-R.ttf src/warmux DEPENDS src/warmux)
ADD_CUSTOM_TARGET(debug WARMUX_DATADIR=${PROJECT_SOURCE_DIR}/data/ WARMUX_FONT_PATH=${PROJECT_SOURCE_DIR}/data/font/Ubuntu-R.ttf gdb src/warmux DEPENDS src/warmux)
# Required libraries
FIND_PACKAGE(SDL REQUIRED)
FIND_PACKAGE(SDL_image REQUIRED)
FIND_PACKAGE(SDL_mixer REQUIRED)
FIND_PACKAGE(SDL_ttf REQUIRED)
FIND_PACKAGE(SDL_gfx REQUIRED)
FIND_PACKAGE(SDL_net REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(FriBiDi)
FIND_PACKAGE(CURL REQUIRED)
ADD_DEFINITIONS(-DHAVE_LIBCURL)
IF(APPLE)
# to ease packaging, we'll use a static libintl
# we also need to link against the SDL_main library (required by the mac version of SDL)
SET(WARMUX_LDFLAGS "-L${PROJECT_SOURCE_DIR} -lintl -liconv -framework Carbon -lSDLmain_UB ${WARMUX_LDFLAGS}")
# to ease packaging, we'll use a framework version of libpng
# (with a different name so there is no confusion with the UNIX version of libpng)
SET(WARMUX_LDFLAGS "-framework wmxlibpng -I/Library/Frameworks/wmxlibpng.framework/Headers/ ${WARMUX_LDFLAGS}")
SET(GETTEXT_FOUND TRUE)
ADD_DEFINITIONS(-DENABLE_NLS)
#FIND_LIBRARY(GETTEXT_LIBRARY NAMES intl
# PATHS ${PROJECT_SOURCE_DIR} )
FIND_PROGRAM(GETTEXT_MSGMERGE_EXECUTABLE msgmerge)
FIND_PROGRAM(GETTEXT_XGETTEXT_EXECUTABLE xgettext)
FIND_PROGRAM(GETTEXT_MSGFMT_EXECUTABLE msgfmt)
# additional macro
MACRO(GETTEXT_CREATE_TRANSLATIONS _potFile _firstPoFile)
SET(_gmoFiles)
GET_FILENAME_COMPONENT(_potBasename ${_potFile} NAME_WE)
GET_FILENAME_COMPONENT(_absPotFile ${_potFile} ABSOLUTE)
SET(_addToAll)
IF(${_firstPoFile} STREQUAL "ALL")
SET(_addToAll "ALL")
SET(_firstPoFile)
ENDIF(${_firstPoFile} STREQUAL "ALL")
FOREACH (_currentPoFile ${ARGN})
GET_FILENAME_COMPONENT(_absFile ${_currentPoFile} ABSOLUTE)
GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH)
GET_FILENAME_COMPONENT(_lang ${_absFile} NAME_WE)
SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
ADD_CUSTOM_COMMAND(
OUTPUT ${_gmoFile}
COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile}
DEPENDS ${_absPotFile} ${_absFile}
)
INSTALL(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo)
SET(_gmoFiles ${_gmoFiles} ${_gmoFile})
ENDFOREACH (_currentPoFile )
ADD_CUSTOM_TARGET(translations ${_addToAll} DEPENDS ${_gmoFiles})
ENDMACRO(GETTEXT_CREATE_TRANSLATIONS )
ELSE(APPLE)
FIND_PACKAGE(PNG REQUIRED)
FIND_PACKAGE(Gettext REQUIRED)
ENDIF(APPLE)
# new stuff in 2.6; remove when it is widespread enough and we switch (see top)
# CMP0005 - ADD_DEFINITION is now properly autoescaped
IF(COMMAND cmake_policy)
cmake_policy(SET CMP0005 OLD)
cmake_policy(SET CMP0003 NEW)
# cmake_policy(SET CMP0011 NEW)
ENDIF(COMMAND cmake_policy)
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS})
IF(FRIBIDI_FOUND)
ADD_DEFINITIONS(-DUSE_FRIBIDI ${FRIBIDI_DEFINITIONS})
ENDIF(FRIBIDI_FOUND)
# config.h and compile-flags
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/src/config.h.cmake ${PROJECT_SOURCE_DIR}/lib/warmux/include/config_autotools.h)
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
ADD_DEFINITIONS(-DINSTALL_DATADIR=\\"${INSTALL_DATADIR}\\")
ADD_DEFINITIONS(-DINSTALL_LOCALEDIR=\\"${INSTALL_LOCALEDIR}\\")
ADD_DEFINITIONS(-DFONT_FILE=\\"${FONT_FILE}\\")
ADD_DEFINITIONS(-DPACKAGE_VERSION=\\"${VERSION}\\")
IF(NOT WIN32)
INCLUDE(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-Wextra" COMPILER_SUPPORTS_WEXTRA)
IF(COMPILER_SUPPORTS_WEXTRA)
SET(WARMUX_CFLAGS "-Wextra ${WARMUX_CFLAGS}")
ENDIF(COMPILER_SUPPORTS_WEXTRA)
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
SET(WARMUX_CFLAGS "-Werror ${WARMUX_CFLAGS}")
ENDIF(CMAKE_BUILD_TYPE MATCHES "Debug")
ENDIF(NOT WIN32)
IF(CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
ADD_DEFINITIONS(-DDEBUG)
ADD_DEFINITIONS(-DWMX_LOG)
IF(PROFILE)
SET(WARMUX_CFLAGS "-pg ${WARMUX_CFLAGS}")
SET(WARMUX_LDFLAGS "-pg ${WARMUX_LDFLAGS}")
ENDIF(PROFILE)
ELSE(CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
# optimise nondebug builds
SET(WARMUX_CFLAGS "-O2 ${WARMUX_CFLAGS}")
IF(NOT WIN32 AND NOT APPLE)
SET(WARMUX_CFLAGS "-march=native ${WARMUX_CFLAGS}") # native only works on x86 and x86_64
ENDIF(NOT WIN32 AND NOT APPLE)
ENDIF(CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
# Subdirectories
ADD_SUBDIRECTORY(lib)
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(po)
ADD_SUBDIRECTORY(tools/servers)
# install data/
INSTALL(DIRECTORY data/ DESTINATION ${DATA_DESTINATION}
FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ
DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
PATTERN ".svn" EXCLUDE
PATTERN "Makefile*" EXCLUDE
PATTERN "warmux.desktop" EXCLUDE
)
# Install desktop file and icon
IF(UNIX AND NOT APPLE)
INSTALL(FILES data/warmux.desktop DESTINATION share/applications)
INSTALL(FILES data/icon/warmux_128x128.png DESTINATION share/pixmaps)
ENDIF(UNIX AND NOT APPLE)
# Install docs
INSTALL(DIRECTORY doc DESTINATION share/
PATTERN ".svn" EXCLUDE
PATTERN "Makefile*" EXCLUDE
PATTERN "warmux.man" EXCLUDE
)
INSTALL(FILES README README.cmake INSTALL AUTHORS AUTHORS BUGS DESTINATION share/doc)
IF(UNIX)
INSTALL(FILES doc/warmux.man DESTINATION share/man/man6 RENAME warmux.6)
ENDIF(UNIX)
CONFIGURE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
ADD_CUSTOM_TARGET(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")