-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCMakeLists.txt
131 lines (104 loc) · 2.8 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
cmake_minimum_required(VERSION 3.12)
#
# Include libs that need to be built
#
set(CMAKE_CXX_STANDARD 20)
set(SDL2_DISABLE_INSTALL ON)
set(SDL2_DISABLE_SDL2MAIN ON)
set(SDL2_DISABLE_UNINSTALL ON)
set(SDL_AUDIO OFF)
add_subdirectory(vendor/fullsrc/SDL2 vendor/SDL2)
add_subdirectory(vendor/fullsrc/box2d vendor/box2d)
add_subdirectory(vendor/fullsrc/ImGui vendor/ImGui)
add_subdirectory(vendor/fullsrc/phonon_fmod vendor/phonon_fmod)
set(TBB_TEST OFF)
set(BUILD_SHARED_LIBS ON)
add_subdirectory(vendor/fullsrc/tbb vendor/tbb)
#
# Set build file settings
#
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
if (CMAKE_GENERATOR MATCHES "Visual Studio")
add_compile_options(/bigobj /MP)
else ()
#add_compile_options(-Wa,-mbig-obj)
endif ()
if (WIN32)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/win_x64)
elseif (APPLE)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/mac_arm64)
elseif (LINUX)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/linux_x64)
endif ()
#
# Project
#
project(WinterFramework)
#
# Source files
#
file(GLOB_RECURSE sources CONFIGURE_DEPENDS
"include/*"
"src/*"
"vendor/public/include/*"
"vendor/public/src/*"
"vendor/private/include/*"
"vendor/private/src/*"
)
#
# Output a static library
#
add_library(WinterFramework STATIC ${sources})
#
# Link vendor libraries
#
target_link_directories(WinterFramework PRIVATE ${VENDOR_PREBUILT_DIR})
target_link_libraries(WinterFramework
PRIVATE box2d
PRIVATE SDL2
PRIVATE ImGui
PRIVATE phonon_fmod
PRIVATE tbb
PRIVATE fmod
PRIVATE fmodstudio
PRIVATE phonon
)
#
# Include everything in src, and from vendors
#
target_include_directories(WinterFramework
PUBLIC include
PRIVATE src
# should be PRIVATE
PUBLIC vendor/private/include
PUBLIC vendor/public/include
PUBLIC vendor/fullsrc/box2d/include
PUBLIC vendor/fullsrc/SDL2/include
PUBLIC vendor/fullsrc/ImGui/include
PUBLIC vendor/fullsrc/phonon_fmod/include
PUBLIC vendor/fullsrc/tbb/include
)
#
# Definitions
#
target_compile_definitions(WinterFramework
PRIVATE ASSET_ROOT_PATH="./assets"
PUBLIC SDL_MAIN_HANDLED
PUBLIC wGL_DEBUG
)
#
# Set vars for the consumer of this library
#
if (WIN32)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/win_x64 PARENT_SCOPE)
file(GLOB VENDOR_PREBUILT_LIBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${VENDOR_PREBUILT_DIR}/*.dll)
set(VENDOR_PREBUILT_LIBS ${VENDOR_PREBUILT_LIBS_FILES} PARENT_SCOPE)
elseif (APPLE)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/mac_arm64 PARENT_SCOPE)
file(GLOB VENDOR_PREBUILT_LIBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${VENDOR_PREBUILT_DIR}/*.dylib)
set(VENDOR_PREBUILT_LIBS ${VENDOR_PREBUILT_LIBS_FILES} PARENT_SCOPE)
elseif (LINUX)
set(VENDOR_PREBUILT_DIR vendor/prebuilt/linux_x64 PARENT_SCOPE)
file(GLOB VENDOR_PREBUILT_LIBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${VENDOR_PREBUILT_DIR}/*.so)
set(VENDOR_PREBUILT_LIBS ${VENDOR_PREBUILT_LIBS_FILES} PARENT_SCOPE)
endif ()