-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
130 lines (110 loc) · 4.29 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
cmake_minimum_required(VERSION 3.1)
project(OpenGMP)
# Compiler setup
set(CMAKE_CXX_STANDARD 14)
if (CMAKE_COMPILER_IS_GNUCC)
# add warning flags
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -Wall -Wextra")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder -Wno-unused-variable -Wno-unused-parameter -Wno-unused-function")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type") # missing return is error
# Fix up C++ standard
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0)
message(WARNING "Compilation wasn't tested on GCC versions prior to 6.x and might not be successful!")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
endif()
endif()
if(MINGW)
set(COMPILER_PREFIX "i686-mingw32")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s")
elseif(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj")
set(USE_MSVC_RUNTIME_LIBRARY_DLL ON)
add_definitions(-DNOMINMAX)
endif()
# ---------------- Doxygen documentation ------------
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc ALL
${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif(DOXYGEN_FOUND)
# ---------------------------------------------------
#Set library output dir
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
# Add library includes directories:
include_directories(lib/RakNet/Source)
include_directories(lib/RakNet/DependentExtensions)
include_directories(lib/ZenLib)
include_directories(lib/lua/src)
include_directories(lib/lua/etc)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/lib/lua) #luaconf.h generated from lua cmake file.
include_directories(lib/cpgf/include)
include_directories(lib/json)
include_directories(lib/tinydir)
include_directories(lib/cpp-httplib)
include_directories(lib)
include_directories(src)
add_subdirectory(lib/RakNet)
add_subdirectory(lib/ZenLib)
add_subdirectory(lib/lua)
add_subdirectory(lib/python-cmake-buildsystem)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/lib/python-cmake-buildsystem/bin) # generated from python cmake file.
include_directories(${CMAKE_CURRENT_BINARY_DIR}/lib/Python-2.7.13/Include)
add_subdirectory(lib/cpgf)
#Server
file(GLOB serverSources
"src/Server/*.cpp"
"src/Server/*.hpp"
"src/Server/ScriptController/*.cpp"
"src/Server/ScriptController/*.hpp"
"src/Server/Utils/*.cpp"
"src/Server/Utils/*.hpp"
"src/Server/Utils/*.h"
"src/Server/Objects/*.cpp"
"src/Server/Objects/*.hpp"
"src/Server/Systems/*.cpp"
"src/Server/Systems/*.hpp"
"src/Shared/*.cpp"
"src/Shared/*.hpp"
"src/Shared/Components/*.cpp"
"src/Shared/Components/*.hpp"
"src/Shared/Objects/*.cpp"
"src/Shared/Objects/*.hpp"
"src/Shared/Systems/*.cpp"
"src/Shared/Systems/*.hpp"
"src/Shared/GameObjects/*.cpp"
"src/Shared/GameObjects/*.hpp"
"src/Shared/Types/*.cpp"
"src/Shared/Types/*.hpp"
"src/Shared/Types/Messages/*.cpp"
"src/Shared/Types/Messages/*.hpp"
)
# Prevent conflict between windows.h and raknet (winsock2.h) redefinitions.
if(MSVC)
add_definitions(-DWIN32_LEAN_AND_MEAN)
endif()
# Build commands server
message("Will build server.")
add_executable(OpenGMP-Server ${serverSources})
target_link_libraries(OpenGMP-Server RakNetLibStatic liblua libpython-shared libCpgf utils mysqlclient)
# Copy generated python library before linkage.
if(UNIX)
set(PYTHON_OUT_SHARED_LIB ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib/python-cmake-buildsystem/lib/libpython2.7.so)
else()
set(PYTHON_OUT_SHARED_LIB ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib/python-cmake-buildsystem/lib/python2.7.dll)
endif()
add_custom_command(TARGET OpenGMP-Server
PRE_LINK
COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_OUT_SHARED_LIB} ${CMAKE_CURRENT_BINARY_DIR})
# Copy support scripts:
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/lib/BashSupportScripts/binFileToAsciHexInitList.sh
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
# Build commands client (Windows only)
if(MSVC)
message("Will build client.")
else()
message("Client on Gothic2 base cannot be built on Linux systems. Sorry. msvc compiler required.")
endif()