forked from Admenri/urge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
145 lines (120 loc) · 4.7 KB
/
CMakeLists.txt
File metadata and controls
145 lines (120 loc) · 4.7 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
cmake_minimum_required(VERSION 3.20.1)
#--------------------------------------------------------------------------------
# Project Setup
#--------------------------------------------------------------------------------
project(URGE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
include_directories("${PROJECT_SOURCE_DIR}")
#--------------------------------------------------------------------------------
# Build Options
#--------------------------------------------------------------------------------
option(URGE_SHARED_RENDERER_LIBRARY "Use Dynamic Renderer Library in Engine Building" OFF)
#--------------------------------------------------------------------------------
# Platform and compiler check
#--------------------------------------------------------------------------------
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_compile_definitions(NOMINMAX _CRT_SECURE_NO_WARNINGS _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
link_libraries(
"shell32;ws2_32;iphlpapi;imagehlp;shlwapi;bcrypt"
"setupapi;advapi32;uuid;version;oleaut32;ole32;imm32;winmm;user32;rpcrt4;usp10"
)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
link_libraries(crypt)
endif ()
#--------------------------------------------------------------------------------
# Auto-generated directory include path
#--------------------------------------------------------------------------------
find_package(Python3 COMPONENTS Interpreter)
if (Python3_FOUND)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
message(STATUS "Found Python3: ${Python3_EXECUTABLE}")
else ()
message(FATAL_ERROR "Python3 not found.")
endif ()
set(RGU_AUTOGEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/gen")
include_directories("${RGU_AUTOGEN_DIR}")
#-------------------------------------------------------------------------
# * third party libraries
#-------------------------------------------------------------------------
include_directories(base/third_party)
include_directories(third_party)
### Android compile configure
set(SDL_STATIC on)
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
set(SDL_STATIC off)
endif ()
## SDL
add_subdirectory(third_party/SDL)
include_directories(third_party/SDL/include)
## image loader (SDL_image)
add_subdirectory(third_party/image_loader)
include_directories(third_party/image_loader/include)
## text render (SDL_ttf)
add_subdirectory(third_party/freetype)
include_directories(third_party/freetype/include)
add_subdirectory(third_party/text_render)
include_directories(third_party/text_render/include)
## Zlib
add_subdirectory(third_party/zlib)
include_directories(third_party/zlib)
## Diligent Engine
add_subdirectory(third_party/DiligentCore)
include_directories(third_party/DiligentCore)
## IMGUI
add_subdirectory(third_party/imgui)
include_directories(third_party/imgui)
## Physfs
set(PHYSFS_BUILD_STATIC TRUE)
set(PHYSFS_BUILD_SHARED FALSE)
set(PHYSFS_BUILD_DOCS FALSE)
add_subdirectory(third_party/physfs)
include_directories(third_party/physfs/src)
## Vorbis OGG
add_subdirectory(third_party/ogg)
add_subdirectory(third_party/vorbis)
## Soloud
add_subdirectory(third_party/soloud)
include_directories(third_party/soloud/include)
## CRuby-Mri (extern)
## TODO: Enhance ruby build ins
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
add_subdirectory(third_party/ruby_android)
include_directories(third_party/ruby_android/include)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_library(mri_ruby UNKNOWN IMPORTED)
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(RUBY_INCLUDE_PATH
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/include/"
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/config/x86/"
)
set(RUBY_LIBRARY_PATH
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/lib/x86/vcruntime140-ruby320-static.lib"
)
elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(RUBY_INCLUDE_PATH
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/include/"
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/config/x64/"
)
set(RUBY_LIBRARY_PATH
"${PROJECT_SOURCE_DIR}/third_party/ruby_extern/lib/x64/x64-vcruntime140-ruby320-static.lib"
)
else ()
message(FATAL_ERROR "No Implement")
endif ()
message(STATUS "Ruby Library: ${RUBY_LIBRARY_PATH}")
set_target_properties(mri_ruby PROPERTIES
IMPORTED_LOCATION "${RUBY_LIBRARY_PATH}"
INTERFACE_INCLUDE_DIRECTORIES "${RUBY_INCLUDE_PATH}")
endif ()
#-------------------------------------------------------------------------
# * source
#-------------------------------------------------------------------------
add_subdirectory(base)
add_subdirectory(components/filesystem)
add_subdirectory(components/audioservice)
add_subdirectory(ui)
add_subdirectory(renderer)
add_subdirectory(content)
add_subdirectory(binding/mri)
add_subdirectory(app)