-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
227 lines (194 loc) · 8.12 KB
/
Copy pathCMakeLists.txt
File metadata and controls
227 lines (194 loc) · 8.12 KB
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
cmake_minimum_required(VERSION 2.8.12)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW)
endif(POLICY CMP0020)
endif(COMMAND cmake_policy)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "Build configuration for single configuration generators" FORCE)
endif()
if(NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
endif()
option(USE_JAVA "Build as JNI library")
option(USE_AEONGUI "Use the Glitch GUI library")
option(USE_ZLIB "Use the zlib compression library")
option(USE_PNG "Add PNG image support")
option(USE_OPENAL "Add OpenAL audio support")
option(USE_V8 "Add v8 Javascript support")
option(USE_GTEST "Add gtest unit testing.")
option(USE_OPENGEX "Add OpenGEX support.")
option(USE_ASSIMP "Use the open asset import library.")
option(BUILD_KTX_CODER "Build ImageMagick coder module for the KTX format")
option(BUILD_EDITOR "Build the game editor")
option(BUILD_JAVA "Build a Java executable")
option(BUILD_XML_ENCODER "Build XML Encoder")
option(BUILD_XSLTPROC "Build Custom XSLTProc executable")
option(BUILD_PACKAGER "Build Packager")
option(BUILD_MAX "Build old 3D Studio Max Mesh Exporter")
option(BUILD_DAZ_EXPORTERS "Build Daz Studio Exporters")
option(BUILD_THESIS "Build Thesis Experiment executable")
option(DISABLE_VAO "Disable OpenGL code using Vertex Array Objects (Only really useful for OpenGL ES 2.0 devices without the VAO extension)")
option(ENABLE_OPENGL_TESTS "Enable Unit Tests that are dependent on OpenGL")
option(ENABLE_TELNET_SERVER "Add Telnet Server code for console access.")
set(RUNTIME_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/runtime" CACHE PATH "Where to find the Aeon Games Runtime instalation.")
list(APPEND CMAKE_PREFIX_PATH "${RUNTIME_INSTALL_PREFIX}")
set(HTTP_PROXY "" CACHE STRING "HTTP proxy for package downloading.")
if(HTTP_PROXY)
message(STATUS "Setting proxy environment variable.")
set(ENV{http_proxy} "${HTTP_PROXY}")
set(ENV{https_proxy} "${HTTP_PROXY}")
endif(HTTP_PROXY)
if(CMAKE_EXTRA_GENERATOR MATCHES ".*Eclipse.*")
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
set(CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT ON)
endif()
message(STATUS "Eclipse Generator Found.")
endif()
SET(ImageMagick_Private_INCLUDE_DIR "" CACHE PATH "Directory to find private ImageMagick headers.")
IF(BUILD_JAVA AND NOT USE_JAVA)
SET(USE_JAVA true)
ENDIF(BUILD_JAVA AND NOT USE_JAVA)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${RUNTIME_INSTALL_PREFIX}/cmake")
list(APPEND CMAKE_MODULE_PATH "${RUNTIME_INSTALL_PREFIX}/lib/cmake/protobuf")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
project(AeonEngine)
find_program (ASTYLE_EXECUTABLE astyle)
if(WIN32)
configure_file("${CMAKE_SOURCE_DIR}/astyle.bat.in" "${CMAKE_SOURCE_DIR}/astyle.bat")
else()
configure_file("${CMAKE_SOURCE_DIR}/astyle.sh.in" "${CMAKE_SOURCE_DIR}/astyle.sh")
endif()
if(USE_OPENAL)
find_package(OpenAL)
endif(USE_OPENAL)
find_package(OpenGL REQUIRED)
if(USE_JAVA)
find_package(Java)
find_package(JNI)
if(JNI_FOUND AND BUILD_JAVA)
message(STATUS "Adding JOGL application")
add_subdirectory(jogl)
endif()
endif()
find_package(Cygwin)
if(CYGWIN_INSTALL_PATH)
list(APPEND CMAKE_PREFIX_PATH "${CYGWIN_INSTALL_PATH}")
set(ENV{CYGWIN} "nodosfilewarning")
else(CYGWIN_INSTALL_PATH)
# Try to guess the path for GnuWin32
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};C:/GnuWin32")
endif(CYGWIN_INSTALL_PATH)
find_package(BISON)
find_package(FLEX)
find_package(Git)
find_package(Protobuf)
if(USE_ZLIB OR USE_PNG)
find_package(ZLIB)
if(USE_PNG)
find_package(PNG)
endif(USE_PNG)
endif(USE_ZLIB OR USE_PNG)
if(USE_OPENGEX)
include(opengex)
endif(USE_OPENGEX)
if(USE_GTEST)
enable_testing()
find_package(GTest)
endif()
include(v8)
if(USE_AEONGUI)
if(GIT_FOUND)
if(NOT IS_DIRECTORY "${CMAKE_SOURCE_DIR}/AeonGUI")
MESSAGE(STATUS "Cloning AeonGUI git repository, this may take some time depending on your network connection")
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} clone https://github.com/AeonGames/AeonGUI.git "${CMAKE_SOURCE_DIR}/AeonGUI" RESULT_VARIABLE git_clone_aeongui_result ERROR_VARIABLE git_clone_aeongui_error)
#MESSAGE(STATUS "${GIT_EXECUTABLE} clone https://github.com/AeonGames/AeonGUI.git ${CMAKE_SOURCE_DIR}/AeonGUI")
#MESSAGE(STATUS "Cloning AEONGUI git repository result ${git_clone_aeongui_result}")
#MESSAGE(STATUS "Cloning AeonGUI git repository error ${git_clone_aeongui_error}")
IF(NOT git_clone_aeongui_result EQUAL 0)
message(FATAL_ERROR "Cloning AeonGUI git repository failed, perhaps you need to set your proxy with git config --global http.proxy <proxy address:port>, The error reported was ${git_clone_aeongui_error}")
ENDIF(NOT git_clone_aeongui_result EQUAL 0)
else(NOT IS_DIRECTORY "${CMAKE_SOURCE_DIR}/AeonGUI")
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} pull WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/AeonGUI" RESULT_VARIABLE git_clone_aeongui_result)
IF(NOT git_clone_aeongui_result EQUAL 0)
message(FATAL_ERROR "Pulling lattest changes from AeonGUI git repository failed, perhaps you need to set your proxy with git config --global http.proxy <proxy address:port>")
ENDIF(NOT git_clone_aeongui_result EQUAL 0)
endif(NOT IS_DIRECTORY "${CMAKE_SOURCE_DIR}/AeonGUI")
else(GIT_FOUND)
MESSAGE(FATAL_ERROR "Git was not found on your system or is not on your path, is it installed?")
endif(GIT_FOUND)
add_subdirectory(${CMAKE_SOURCE_DIR}/AeonGUI)
set(AEONGUI_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/AeonGUI/include)
set(AEONGUI_LIBRARIES OpenGLRenderer AeonGUI)
endif(USE_AEONGUI)
if(BUILD_KTX_CODER)
find_package(ImageMagick COMPONENTS MagickCore)
endif(BUILD_KTX_CODER)
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "-std=gnu++11 -Wall -Werror")
endif()
if(ENABLE_TELNET_SERVER)
if(NOT FLEX_FOUND)
message(FATAL_ERROR "FLEX is required to build the telnet server module.")
else(NOT FLEX_FOUND)
# ENABLE_TELNET_SERVER *MUST* be defined for all projects using the AeonEngine class (those that include the AeonEngine.h header),
# otherwise, a stack frame corruption will ocurr, need to solve this... later, when adding extensions maybe.
add_definitions(-DENABLE_TELNET_SERVER)
endif(NOT FLEX_FOUND)
endif(ENABLE_TELNET_SERVER)
add_subdirectory(common)
add_subdirectory(tools/bin2hex)
add_subdirectory(engine)
if(WIN32)
add_subdirectory(windows)
elseif(UNIX)
add_subdirectory(linux)
endif()
if(BUILD_XML_ENCODER)
include(libxml2)
add_subdirectory(tools/axe)
endif(BUILD_XML_ENCODER)
if(BUILD_XSLTPROC)
include(libxslt)
add_subdirectory(tools/xsltproc)
endif(BUILD_XSLTPROC)
IF(BUILD_PACKAGER)
add_subdirectory(tools/packager)
ENDIF(BUILD_PACKAGER)
if(BUILD_EDITOR OR BUILD_DAZ_EXPORTERS)
find_package(Qt5 COMPONENTS Core Gui Widgets OpenGL Test)
if(WIN32)
find_package(Qt5 COMPONENTS WinExtras)
endif(WIN32)
if(BUILD_EDITOR)
add_subdirectory(editor)
endif()
if(BUILD_DAZ_EXPORTERS)
add_subdirectory(tools/daz/exporter)
endif()
endif(BUILD_EDITOR OR BUILD_DAZ_EXPORTERS)
IF(ImageMagick_FOUND AND BUILD_KTX_CODER)
ADD_SUBDIRECTORY(tools/ktxcoder)
ENDIF(ImageMagick_FOUND AND BUILD_KTX_CODER)
if(USE_ASSIMP)
include(assimp)
add_subdirectory(tools/converter)
endif(USE_ASSIMP)
# Make Max Plugin build optional
if(MSVC AND BUILD_MAX)
add_subdirectory(tools/max)
endif(MSVC AND BUILD_MAX)
if(BUILD_THESIS)
add_subdirectory(thesis)
endif(BUILD_THESIS)
if(MINGW)
get_filename_component(TOOLCHAIN_PATH ${CMAKE_CXX_COMPILER} DIRECTORY CACHE)
string(REGEX REPLACE "/" "\\\\\\\\" TOOLCHAIN_PATH ${TOOLCHAIN_PATH})
string(REGEX REPLACE "/" "\\\\\\\\" BUILD_PATH ${CMAKE_BINARY_DIR})
message(STATUS "Toolchain path: ${TOOLCHAIN_PATH}")
message(STATUS "Build path: ${BUILD_PATH}")
configure_file(.atom-build.json.in "${CMAKE_SOURCE_DIR}/.atom-build.json")
endif()