-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
133 lines (112 loc) · 3.57 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
# Copyright (C) 2022-2023 Made In Server Development team
# GameBryo3 Project
cmake_minimum_required(VERSION 3.20)
project(Gamebryo3)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${CMAKE_CURRENT_LIST_DIR}/Source/CMake
)
option(GB3_ENABLE_UNIT_TESTS "Enable unit tests for migrations" ON)
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
if ("${CMAKE_GENERATOR}" STREQUAL "Unix Makefiles" OR "${CMAKE_GENERATOR}" STREQUAL "Ninja")
message(FATAL_ERROR "Please specify a build type")
endif()
endif()
set(GB3_ROOT "${CMAKE_CURRENT_LIST_DIR}")
set(GB3_INTEGRATION_ROOT "${GB3_ROOT}/Integrations")
if (NOT DEFINED GB3_FOLDER_SUFFIX)
set(GB3_FOLDER_SUFFIX "")
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH};${GB3_INTEGRATION_ROOT})
# architecture detection
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(GB3_ARCH64 TRUE)
set(GB3_ARCH 64)
else()
set(GB3_ARCH32 TRUE)
set(GB3_ARCH 32)
endif()
# platform detection
if (UNIX AND NOT APPLE)
set(GB3_LINUX TRUE)
set(GB3_PLATFORM_NAME "Linux")
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(GB3_MACOSX TRUE)
set(GB3_PLATFORM_NAME "MacOS X")
elseif (WIN32)
set(GB3_WIN32 TRUE)
set(GB3_PLATFORM_NAME "Windows")
if (CYGWIN OR MSYS)
message(FATAL_ERROR "Cygwin/Msys2 is not supported")
endif()
else()
message(FATAL_ERROR "Platform not supported")
endif()
# compiler detection
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(GB3_CLANG TRUE)
set(GB3_COMPILER_NAME "Clang")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(GB3_GCC TRUE)
set(GB3_COMPILER_NAME "GCC")
elseif (MSVC)
set(GB3_MSVC TRUE)
set(GB3_COMPILER_NAME "MSVC")
else()
message(FATAL_ERROR "Compiler not supported")
endif()
# processor detection
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86"
)
set(GB3_X86 TRUE)
set(GB3_CPU_NAME "x86")
else()
message(FATAL_ERROR "Processor not supported (${CMAKE_SYSTEM_PROCESSOR})")
endif()
# nasm
if (GB3_X86)
enable_language(ASM_NASM)
if (GB3_ARCH64)
set(GB3_ASM_SUFFIX "_x86_64.asm")
else()
set(GB3_ASM_SUFFIX "_i386.asm")
endif()
else()
# Disable assembly
set(GB3_ASM_SUFFIX "")
endif()
# Default backend
if (NOT DEFINED GB3_TARGET_BACKEND OR "${GB3_TARGET_BACKEND}" STREQUAL "")
set(GB3_TARGET_BACKEND "SDL2")
set(GB3_BACKEND_ROOT "${GB3_ROOT}/Source")
find_package(SDL2 CONFIG REQUIRED)
endif()
include(Backend)
include(Integration)
include(Swig)
include(Version)
include(Project)
# required packages
find_package(OpenEXR CONFIG REQUIRED)
find_package(PNG REQUIRED)
#find_package(tinyxml2 CONFIG REQUIRED)
# for examples in Win32
set(NISETTINGDIALOG_RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/Source/CoreRuntime/UtilityLibs/NiSettingsDialog/NiSettingsDialogResource.rc")
# bootstrap extensions
bootstrap_backends()
bootstrap_integrations()
message(STATUS "---------------------------------")
message(STATUS "Gamebryo: ${GB3_VERSION_MAJOR}.${GB3_VERSION_MINOR}.${GB3_VERSION_PATCH}.${GB3_VERSION_BUILD} (${GB3_BUILD_DAY}/${GB3_BUILD_MONTH}/${GB3_BUILD_YEAR})")
message(STATUS "Platform: ${GB3_PLATFORM_NAME} ${GB3_CPU_NAME} ${GB3_ARCH}-bit")
message(STATUS "Compiler: ${GB3_COMPILER_NAME}")
message(STATUS "Backend: ${GB3_TARGET_BACKEND}")
message(STATUS "Integrations:")
print_integrations()
message(STATUS "---------------------------------")
add_subdirectory(Source)
# perform extra backend executions
post_backend_operations()