-
Notifications
You must be signed in to change notification settings - Fork 2
/
CMakeLists.txt
84 lines (68 loc) · 2.39 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
cmake_minimum_required(VERSION 3.10)
project(un)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# cmake options
set(CMAKE_SUPPRESS_REGENERATION true)
include(${CMAKE_SOURCE_DIR}/cmake/Platform.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/Options.cmake)
set(THIRD_PARTY ${CMAKE_SOURCE_DIR}/third_party)
# collect source files
set(MAIN_ENTRY src/main.c)
set(PROJECT_SRC ${MAIN_ENTRY})
# foundation
aux_source_directory(src/foundation FOUNDATION_SOURCES)
file(GLOB FOUNDATION_HEADERS src/foundation/*.h)
list(APPEND PROJECT_SRC ${FOUNDATION_SOURCES})
# os
aux_source_directory(src/os OS_SOURCES)
file(GLOB OS_HEADERS src/os/*.h)
list(APPEND PROJECT_SRC ${OS_SOURCES})
# ui
aux_source_directory(src/gpu UI_SOURCES)
file(GLOB GPU_HEADERS src/gpu/*.h)
list(APPEND PROJECT_SRC ${GPU_SOURCES})
# ui
aux_source_directory(src/ui UI_SOURCES)
file(GLOB UI_HEADERS src/ui/*.h)
list(APPEND PROJECT_SRC ${UI_SOURCES})
# script
aux_source_directory(src/script SCRIPT_SOURCES)
file(GLOB SCRIPT_HEADERS src/script/*.h)
list(APPEND PROJECT_SRC ${SCRIPT_SOURCES})
# macos
set(APPLE_SOURCES
src/apple/metal.m
src/apple/metal_type.m)
file(GLOB APPLE_HEADERS src/apple/*.h)
# win
if (APPLE)
list(APPEND APPLE_SOURCES src/apple/os.m)
if (IOS)
list(APPEND APPLE_SOURCES src/apple/os.ios.m)
else()
list(APPEND APPLE_SOURCES src/apple/os.macos.m)
endif()
list(APPEND PROJECT_SRC ${APPLE_SOURCES})
source_group(apple FILE ${APPLE_SOURCES} ${APPLE_HEADERS})
else()
set(VULKAN_SOURCES
src/vulkan/device.c)
list(APPEND PROJECT_SRC ${VULKAN_SOURCES})
source_group(vulkan FILES ${VULKAN_SOURCES})
endif()
# include third party
include(${CMAKE_SOURCE_DIR}/cmake/ThirdParty.cmake)
# source groups
source_group(foundation FILES ${FOUNDATION_SOURCES} ${FOUNDATION_HEADERS})
source_group(os FILES ${OS_SOURCES} ${OS_HEADERS})
source_group(ui FILES ${UI_SOURCES} ${UI_HEADERS})
source_group(script FILES ${SCRIPT_SOURCES} ${SCRIPT_HEADERS})
source_group(main FILES ${MAIN_ENTRY})
include(${CMAKE_SOURCE_DIR}/cmake/Include.cmake)
add_executable(${PROJECT_NAME} ${PROJECT_SRC})
include(${CMAKE_SOURCE_DIR}/cmake/UnityBuild.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/Link.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/Lib.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/PostBuild.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/Install.cmake)