1
|
#-----------------------------------------------------------------------------
|
2
|
#
|
3
|
# NeL
|
4
|
# Authors: Nevrax and the NeL Community
|
5
|
# Version: 0.8.0
|
6
|
#
|
7
|
# Notes:
|
8
|
# * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path
|
9
|
# * Changing specific install location variables:
|
10
|
# * NL_ETC_PREFIX (default: $CMAKE_INSTALL_PREFIX/etc)
|
11
|
# * NL_SHARE_PREFIX (default: $CMAKE_INSTALL_PREFIX/share)
|
12
|
# * NL_BIN_PREFIX (default: $CMAKE_INSTALL_PREFIX/bin)
|
13
|
# * NL_SBIN_PREFIX (default: $CMAKE_INSTALL_PREFIX/sbin)
|
14
|
# * NL_LIB_PREFIX (default: $CMAKE_INSTALL_PREFIX/lib)
|
15
|
# * NL_DRIVER_PREFIX (default: $CMAKE_INSTALL_PREFIX/lib (windows) or $CMAKE_INSTALL_PREFIX/lib/nel)
|
16
|
# * Enable building of documentation: add -DBUILD_DOCUMENTATION:BOOL=ON - new make target: DoxygenDoc
|
17
|
# * Updating version: update header (above) but also update NL_VERSION below.
|
18
|
# * To build binary archive, use the 'package' target.
|
19
|
# To build source archive, use the 'package_source' target.
|
20
|
|
21
|
#-----------------------------------------------------------------------------
|
22
|
# Load some macros.
|
23
|
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
|
24
|
#-----------------------------------------------------------------------------
|
25
|
# Set CMake 2.6 Policies.
|
26
|
IF(COMMAND cmake_policy)
|
27
|
# Works around warnings libraries linked against that don't
|
28
|
# have absolute paths (e.g. -lpthread)
|
29
|
cmake_policy(SET CMP0003 NEW)
|
30
|
|
31
|
# Works around warnings about escaped quotes in ADD_DEFINITIONS
|
32
|
# statements
|
33
|
cmake_policy(SET CMP0005 OLD)
|
34
|
ENDIF(COMMAND cmake_policy)
|
35
|
|
36
|
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/nel.cmake)
|
37
|
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/ConfigureChecks.cmake)
|
38
|
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/CheckDepends.cmake)
|
39
|
INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL)
|
40
|
|
41
|
# Force out of source builds.
|
42
|
CHECK_OUT_OF_SOURCE()
|
43
|
|
44
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
45
|
PROJECT(RyzomCore CXX C)
|
46
|
SET(NL_VERSION_MAJOR 0)
|
47
|
SET(NL_VERSION_MINOR 8)
|
48
|
SET(NL_VERSION_PATCH 0)
|
49
|
SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}")
|
50
|
|
51
|
NL_SETUP_BUILD()
|
52
|
NL_SETUP_BUILD_FLAGS()
|
53
|
|
54
|
#-----------------------------------------------------------------------------
|
55
|
# Redirect output files
|
56
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
57
|
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
58
|
|
59
|
# DLL should be in the same directory as EXE under Windows
|
60
|
IF(WIN32)
|
61
|
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
62
|
ELSE(WIN32)
|
63
|
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
64
|
ENDIF(WIN32)
|
65
|
|
66
|
IF(WIN32)
|
67
|
IF(WITH_MFC)
|
68
|
FIND_PACKAGE(MFC QUIET)
|
69
|
ENDIF(WITH_MFC)
|
70
|
|
71
|
IF(NOT DEFINED ENV{QTDIR})
|
72
|
SET(ENV{QTDIR} "c:/qt/4.6.3")
|
73
|
ENDIF(NOT DEFINED ENV{QTDIR})
|
74
|
ENDIF(WIN32)
|
75
|
|
76
|
#-----------------------------------------------------------------------------
|
77
|
# Set default config options
|
78
|
#
|
79
|
NL_SETUP_DEFAULT_OPTIONS()
|
80
|
NL_SETUP_NEL_DEFAULT_OPTIONS()
|
81
|
NL_SETUP_NELNS_DEFAULT_OPTIONS()
|
82
|
NL_SETUP_RYZOM_DEFAULT_OPTIONS()
|
83
|
NL_SETUP_SNOWBALLS_DEFAULT_OPTIONS()
|
84
|
|
85
|
NL_SETUP_PREFIX_PATHS()
|
86
|
RYZOM_SETUP_PREFIX_PATHS()
|
87
|
|
88
|
NL_CONFIGURE_CHECKS()
|
89
|
|
90
|
#-----------------------------------------------------------------------------
|
91
|
#Platform specifics
|
92
|
|
93
|
SETUP_EXTERNAL()
|
94
|
|
95
|
IF(WIN32)
|
96
|
SET(WINSOCK2_LIB ws2_32.lib)
|
97
|
|
98
|
IF(WITH_MFC)
|
99
|
FIND_PACKAGE(CustomMFC REQUIRED)
|
100
|
ENDIF(WITH_MFC)
|
101
|
ENDIF(WIN32)
|
102
|
|
103
|
FIND_PACKAGE(Threads REQUIRED)
|
104
|
FIND_PACKAGE(LibXml2 REQUIRED)
|
105
|
FIND_PACKAGE(PNG REQUIRED)
|
106
|
FIND_PACKAGE(Jpeg)
|
107
|
|
108
|
IF(WITH_STATIC)
|
109
|
# libxml2 could need winsock2 library
|
110
|
SET(LIBXML2_DEFINITIONS ${LIBXML2_DEFINITIONS} -DLIBXML_STATIC)
|
111
|
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${WINSOCK2_LIB})
|
112
|
|
113
|
# on Mac OS X libxml2 requieres iconv
|
114
|
IF(APPLE)
|
115
|
FIND_PACKAGE(Iconv REQUIRED)
|
116
|
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${ICONV_LIBRARIES})
|
117
|
INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
|
118
|
ENDIF(APPLE)
|
119
|
ENDIF(WITH_STATIC)
|
120
|
|
121
|
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/PCHSupport.cmake)
|
122
|
|
123
|
IF(FINAL_VERSION)
|
124
|
ADD_DEFINITIONS(-DFINAL_VERSION=1)
|
125
|
ENDIF(FINAL_VERSION)
|
126
|
|
127
|
IF(WITH_QT)
|
128
|
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtXml REQUIRED)
|
129
|
ENDIF(WITH_QT)
|
130
|
|
131
|
IF(WITH_NEL)
|
132
|
IF(WITH_NEL_TESTS)
|
133
|
FIND_PACKAGE(CppTest)
|
134
|
ENDIF(WITH_NEL_TESTS)
|
135
|
|
136
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include ${LIBXML2_INCLUDE_DIR})
|
137
|
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS})
|
138
|
ADD_SUBDIRECTORY(nel)
|
139
|
ENDIF(WITH_NEL)
|
140
|
|
141
|
IF(WITH_RYZOM)
|
142
|
ADD_SUBDIRECTORY(ryzom)
|
143
|
ENDIF(WITH_RYZOM)
|
144
|
|
145
|
IF(WITH_NELNS)
|
146
|
# ADD_SUBDIRECTORY(nelns)
|
147
|
ADD_SUBDIRECTORY(nelns)
|
148
|
ENDIF(WITH_NELNS)
|
149
|
|
150
|
IF(WITH_SNOWBALLS)
|
151
|
# ADD_SUBDIRECTORY(snowballs2)
|
152
|
ADD_SUBDIRECTORY(snowballs2)
|
153
|
ENDIF(WITH_SNOWBALLS)
|
154
|
|
155
|
IF(WITH_TOOLS)
|
156
|
ADD_SUBDIRECTORY(tool)
|
157
|
ENDIF(WITH_TOOLS)
|
158
|
|
159
|
# To build the documention, you will have to enable it
|
160
|
# and then do the equivalent of "make DoxygenDoc".
|
161
|
IF(BUILD_DOCUMENTATION)
|
162
|
IF(DOT)
|
163
|
SET(HAVE_DOT YES)
|
164
|
ELSE(DOT)
|
165
|
SET(HAVE_DOT NO)
|
166
|
ENDIF(DOT)
|
167
|
# This processes our Doxyfile.in and substitutes paths to generate
|
168
|
# a final Doxyfile
|
169
|
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/doc/Doxyfile.cmake.in ${CMAKE_BINARY_DIR}/doc/Doxyfile)
|
170
|
|
171
|
ADD_CUSTOM_TARGET(DoxygenDoc ${DOXYGEN} ${CMAKE_BINARY_DIR}/doc/Doxyfile)
|
172
|
ENDIF(BUILD_DOCUMENTATION)
|
173
|
|
174
|
IF(WITH_NEL_TESTS)
|
175
|
ENABLE_TESTING()
|
176
|
ADD_TEST(nel_unit_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/nel_unit_test --html)
|
177
|
IF(BUILD_DASHBOARD)
|
178
|
INCLUDE(Dart)
|
179
|
SET(SVNCOMMAND svn)
|
180
|
SET(SVNSOURCEDIR http://dev.ryzom.com/svn/trunk/nel)
|
181
|
SET(GENERATELOGS svn2cl)
|
182
|
ENDIF(BUILD_DASHBOARD)
|
183
|
ENDIF(WITH_NEL_TESTS)
|
184
|
|
185
|
# packaging information
|
186
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NeL MMORPG Framework")
|
187
|
SET(CPACK_PACKAGE_VENDOR "NeL")
|
188
|
SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README)
|
189
|
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING)
|
190
|
SET(CPACK_PACKAGE_VERSION_MAJOR "${NL_VERSION_MAJOR}")
|
191
|
SET(CPACK_PACKAGE_VERSION_MINOR "${NL_VERSION_MINOR}")
|
192
|
SET(CPACK_PACKAGE_VERSION_PATCH "${NL_VERSION_PATCH}")
|
193
|
SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};NeL;ALL;/")
|
194
|
SET(CPACK_PACKAGE_EXECUTABLES "nel${NL_VERSION}" "nel")
|
195
|
|
196
|
# NSIS Specific Packing Setup
|
197
|
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "NeL")
|
198
|
SET(CPACK_NSIS_MODIFY_PATH "ON")
|
199
|
SET(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
|
200
|
SET(CPACK_NSIS_MUI_UNIICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
|
201
|
SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/resources\\\\nel.bmp)
|
202
|
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} NeL")
|
203
|
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\dev.ryzom.com")
|
204
|
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\dev.ryzom.com\\\\projects\\\\nel\\\\wiki")
|
205
|
SET(CPACK_NSIS_CONTACT "[email protected]")
|
206
|
|
207
|
## Source Packages
|
208
|
SET(CPACK_PACKAGE_FILE_NAME "nel-${NL_VERSION}")
|
209
|
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "nel-${NL_VERSION}")
|
210
|
IF(WIN32)
|
211
|
#SET(CPACK_GENERATOR "NSIS")
|
212
|
SET(CPACK_GENERATOR "NSIS;ZIP")
|
213
|
SET(CPACK_SOURCE_GENERATOR "ZIP")
|
214
|
ELSE(WIN32)
|
215
|
SET(CPACK_GENERATOR "TGZ")
|
216
|
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
217
|
ENDIF(WIN32)
|
218
|
set(CPACK_SOURCE_IGNORE_FILES
|
219
|
"~$"
|
220
|
"\\\\.cvsignore$"
|
221
|
"^${CMAKE_SOURCE_DIR}.*/CVS/"
|
222
|
"^${CMAKE_SOURCE_DIR}.*/\\\\.svn/"
|
223
|
"^${CMAKE_SOURCE_DIR}/debian/"
|
224
|
"^${CMAKE_SOURCE_DIR}/old/")
|
225
|
IF(WIN32)
|
226
|
IF(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
|
227
|
SET(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE)
|
228
|
IF(WITH_QT)
|
229
|
INCLUDE(${QT_USE_FILE})
|
230
|
INSTALL(FILES
|
231
|
"${QT_LIBRARY_DIR}/../bin/QtGuid4.dll"
|
232
|
"${QT_LIBRARY_DIR}/../bin/QtXmld4.dll"
|
233
|
"${QT_LIBRARY_DIR}/../bin/QtCored4.dll"
|
234
|
DESTINATION bin)
|
235
|
ENDIF(WITH_QT)
|
236
|
ELSE(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
|
237
|
IF(WITH_QT)
|
238
|
INCLUDE(${QT_USE_FILE})
|
239
|
INSTALL(FILES
|
240
|
"${QT_LIBRARY_DIR}/../bin/QtGui4.dll"
|
241
|
"${QT_LIBRARY_DIR}/../bin/QtXml4.dll"
|
242
|
"${QT_LIBRARY_DIR}/../bin/QtCore4.dll"
|
243
|
DESTINATION bin)
|
244
|
ENDIF(WITH_QT)
|
245
|
ENDIF(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
|
246
|
|
247
|
# Install CEGUI and its dependencies.
|
248
|
IF(WITH_NEL_CEGUI)
|
249
|
INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIBase.dll" DESTINATION bin)
|
250
|
INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIDevilImageCodec.dll" DESTINATION bin)
|
251
|
INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIExpatParser.dll" DESTINATION bin)
|
252
|
INSTALL(FILES "${CEGUI_LIB_DIR}/CEGUIFalagardWRBase.dll" DESTINATION bin)
|
253
|
INSTALL(FILES "${CEGUI_LIB_DIR}/Devil.dll" DESTINATION bin)
|
254
|
INSTALL(FILES "${CEGUI_LIB_DIR}/ILU.dll" DESTINATION bin)
|
255
|
ENDIF(WITH_NEL_CEGUI)
|
256
|
|
257
|
# Only the tools require MFC.
|
258
|
IF(WITH_TOOLS)
|
259
|
SET(CMAKE_INSTALL_MFC_LIBRARIES TRUE)
|
260
|
ENDIF(WITH_TOOLS)
|
261
|
INCLUDE(InstallRequiredSystemLibraries)
|
262
|
ENDIF(WIN32)
|
263
|
|
264
|
INCLUDE(CPack)
|
265
|
|
266
|
INCLUDE(CMakePackaging.txt)
|
267
|
|
268
|
## Debian Packages
|
269
|
#INCLUDE(UseDebian)
|
270
|
#IF(DEBIAN_FOUND)
|
271
|
# ADD_DEBIAN_TARGETS(nel)
|
272
|
#ENDIF(DEBIAN_FOUND)
|