forked from tswow/TrinityCore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
226 lines (190 loc) · 6.24 KB
/
CMakeLists.txt
File metadata and controls
226 lines (190 loc) · 6.24 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
# This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cmake_minimum_required(VERSION 3.11)
# add this options before PROJECT keyword
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
# Set projectname (must be done AFTER setting configurationtypes)
project(TrinityCore)
#tswow-begin add tswow sources
cmake_policy(SET CMP0135 NEW) # use local timestamps for FetchContent
include(FetchContent)
FetchContent_Declare(lua
URL https://www.lua.org/ftp/lua-5.4.4.tar.gz
URL_HASH MD5=bd8ce7069ff99a400efd14cf339a727b
)
FetchContent_MakeAvailable(lua)
SET(LUA_ROOT ${lua_SOURCE_DIR}/src)
file(GLOB SRC_LUA ${LUA_ROOT}/*.h ${LUA_ROOT}/*.c)
LIST(REMOVE_ITEM SRC_LUA ${CMAKE_SOURCE_DIR}/../../misc/client-extensions/lua-5.1/src/lua.c)
add_library ( liblua STATIC ${SRC_LUA} )
if(NOT WIN32)
target_compile_options(liblua PUBLIC -fPIC)
endif()
#
# sol2
#
FetchContent_Declare (sol2
GIT_REPOSITORY https://github.com/ThePhD/sol2
GIT_TAG 4de99c5b41b64b7e654bf8e48b177e8414a756b7
)
FetchContent_MakeAvailable (sol2)
target_compile_definitions(sol2 INTERFACE SOL_NO_CHECK_NUMBER_PRECISION)
#
# sourcemap
#
FetchContent_Declare (sourcemap
GIT_REPOSITORY https://github.com/tswow/sourcemap.cpp.git
GIT_TAG 79a901a367fdc1482306661eadfbb7d0ec50f2c2
)
FetchContent_MakeAvailable (sourcemap)
file(GLOB SOURCEMAP_SRC
${sourcemap_SOURCE_DIR}/src/*
${sourcemap_SOURCE_DIR}/src/format/*
${sourcemap_SOURCE_DIR}/deps/json/*
${sourcemap_SOURCE_DIR}/deps/cencode/*
)
add_library(sourcemaps STATIC ${SOURCEMAP_SRC})
target_include_directories(sourcemaps PUBLIC
${sourcemap_SOURCE_DIR}/src
${sourcemap_SOURCE_DIR}/deps/json
${sourcemap_SOURCE_DIR}/deps/cencode
)
if(NOT WIN32)
target_compile_options(sourcemaps PUBLIC -fPIC)
endif()
#
# tracy
#
if(WIN32)
SET(TRACY_NO_CALLSTACK ON CACHE BOOL "" FORCE)
SET(TRACY_NO_SAMPLING ON CACHE BOOL "" FORCE)
SET(TRACY_NO_CALLSTACK_INLINES ON CACHE BOOL "" FORCE)
SET(TRACY_NO_SYSTEM_TRACING ON CACHE BOOL "" FORCE)
SET(TRACY_CALLSTACK OFF CACHE BOOL "" FORCE)
SET(TRACY_NO_CONTEXT_SWITCH ON CACHE BOOL "" FORCE)
SET(TRACY_NO_VSYNC_CAPTURE ON CACHE BOOL "" FORCE)
SET(TRACY_NO_FRAME_IMAGE ON CACHE BOOL "" FORCE)
SET(TRACY_NO_CRASH_HANDLER ON CACHE BOOL "" FORCE)
endif()
SET(TRACY_ON_DEMAND ON CACHE BOOL "" FORCE)
SET(TRACY_ONLY_LOCALHOST OFF CACHE BOOL "" FORCE)
FetchContent_Declare (
tracy
GIT_REPOSITORY https://github.com/wolfpld/tracy.git
GIT_TAG a8511d357650282c6915f7aa9775e9c4945e42b5
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
FetchContent_MakeAvailable (tracy)
target_compile_definitions(TracyClient
PRIVATE
TRACY_DATA_PORT=8084
TRACY_ON_DEMAND=1
)
# note: temporary workaround until the latest server that tracy publishes
# does this automatically via CMake.
if(TRACY_TIMER_FALLBACK)
target_compile_definitions(TracyClient PRIVATE TRACY_TIMER_FALLBACK=1)
endif()
#
# tswow
#
get_filename_component(
TSWOW_CORE_PRIVATE ${CMAKE_SOURCE_DIR}/../../tswow-core/Private ABSOLUTE
)
get_filename_component(
TSWOW_CORE_PUBLIC ${CMAKE_SOURCE_DIR}/../../tswow-core/Public ABSOLUTE
)
get_filename_component(
TSWOW_MESSAGES_INCLUDES ${CMAKE_SOURCE_DIR}/../../misc/client-extensions/CustomPackets ABSOLUTE
)
SET(TSWOW_INCLUDES
${TSWOW_CORE_PRIVATE}
${TSWOW_CORE_PUBLIC}
${TSWOW_MESSAGES_INCLUDES}
)
ADD_COMPILE_DEFINITIONS(USE_STD_SHARED_PTR=1)
FILE(GLOB_RECURSE TSWOW_SOURCES
${TSWOW_CORE_PRIVATE}/*
${TSWOW_CORE_PUBLIC}/*
${TSWOW_MESSAGES_INCLUDES}/*.h
${TSWOW_MESSAGES_INCLUDES}/*.cpp
)
#tswow-end
# CMake policies (can not be handled elsewhere)
cmake_policy(SET CMP0005 NEW)
if(CMAKE_VERSION VERSION_LESS "3.16.0")
cmake_policy(SET CMP0043 OLD) # Disable 'Ignore COMPILE_DEFINITIONS_<Config> properties'
else()
cmake_policy(SET CMP0043 NEW) # Cotire isn't used so set to NEW
endif()
cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as variables or keywords when unquoted - prevents intepreting if(SOME_STRING_VARIABLE MATCHES "MSVC") as if(SOME_STRING_VARIABLE MATCHES "1")
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW) # find_package() uses <PackageName>_ROOT variables
endif()
# Set RPATH-handing (CMake parameters)
set(CMAKE_SKIP_BUILD_RPATH 0)
set(CMAKE_BUILD_WITH_INSTALL_RPATH 0)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
# set macro-directory
list(APPEND CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/cmake/macros")
if(CMAKE_VERSION VERSION_LESS "3.16.0")
list(APPEND CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/dep/cotire/CMake")
endif()
# build in Release-mode by default if not explicitly set
if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config")
set(CMAKE_DEFAULT_BUILD_TYPE "RelWithDebInfo" CACHE INTERNAL "")
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
include(CheckCXXSourceRuns)
include(CheckIncludeFiles)
include(ConfigureScripts)
# set default buildoptions and print them
include(cmake/options.cmake)
# turn off PCH totally if enabled (hidden setting, mainly for devs)
if(NOPCH)
set(USE_COREPCH 0)
set(USE_SCRIPTPCH 0)
endif()
include(ConfigureBaseTargets)
include(CheckPlatform)
include(GroupSources)
include(AutoCollect)
find_package(PCHSupport)
find_package(MySQL)
if(NOT WITHOUT_GIT)
find_package(Git 1.7)
endif()
# Find revision ID and hash of the sourcetree
include(cmake/genrev.cmake)
# print out the results before continuing
include(cmake/showoptions.cmake)
# add dependencies
add_subdirectory(dep)
# add core sources
add_subdirectory(src)
include(CTest)
if(BUILD_TESTING)
list(APPEND CMAKE_MODULE_PATH
"${Catch2_SOURCE_DIR}/contrib")
include(Catch)
add_subdirectory(tests)
# Catch cmakefile messes with our settings we explicitly leave up to the user
# restore user preference
if (NOT WITH_SOURCE_TREE STREQUAL "hierarchical-folders")
set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
endif()
endif()