-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
133 lines (103 loc) · 2.64 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
cmake_minimum_required(VERSION 3.15)
project(The-Forge)
# Do some OS checks, and setup accordingly.
set(APPLE_PLATFORM OFF)
set(LINUX OFF)
set(WINDOWS OFF)
# On macOS, we always set Metal support to on.
set(METAL OFF)
# Make our APIs into options
option(DX12 "DirectX12 (Windows only)" OFF)
option(DX11 "DirectX11 (Windows only)" OFF)
option(EXAMPLES "The Forge examples" OFF)
option(VULKAN "Vulkan" OFF)
option(DYNAMIC_LIB "Dynamic Library" OFF)
set(ASSIMP OFF)
set(OZZ OFF)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message("Apple platform detected. Generating macOS and iOS targets.")
set(APPLE_PLATFORM ON)
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
message("Linux detected. Generating Linux targets.")
set(LINUX ON)
set(VULKAN ON)
endif()
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
message("Windows detected. Generating Windows targets.")
set(WINDOWS ON)
endif()
# Setup some sane API defaults.
set(API_SELECTED ON)
if(${VULKAN} MATCHES OFF)
if(${DX11} MATCHES OFF)
if(${DX12} MATCHES OFF)
if(${METAL} MATCHES OFF)
set(API_SELECTED OFF)
endif()
endif()
endif()
endif()
# Apple platforms should always default to Metal.
if (${APPLE_PLATFORM} MATCHES ON)
if(${METAL} MATCHES OFF)
set(METAL ON)
endif()
if(${VULKAN} MATCHES ON)
set(VULKAN OFF)
endif()
if(${DX11} MATCHES ON)
set(DX11 OFF)
endif()
if(${DX12} MATCHES ON)
set(DX12 OFF)
endif()
set(API_SELECTED ON)
endif()
if (${API_SELECTED} MATCHES OFF)
if(${APPLE_PLATFORM} MATCHES ON)
set(METAL ON)
endif()
if(${LINUX} MATCHES ON)
set(VULKAN ON)
endif()
if(${WINDOWS} MATCHES ON)
set(DX12 ON)
# Needed due to how the profiler in forge force-links to vulkan as well.
set(VULKAN ON)
endif()
endif()
if(${DX12} MATCHES ON)
set(DX11 ON)
endif()
message("The following options have been set to on:\n")
if(${APPLE_PLATFORM} MATCHES ON)
message("Apple platform")
endif()
if(${LINUX} MATCHES ON)
message("Linux platform")
endif()
if(${WINDOWS} MATCHES ON)
message("Windows platform")
endif()
if(${METAL} MATCHES ON)
message("Metal reendering API")
endif()
if(${VULKAN} MATCHES ON)
message("Vulkan rendering API")
endif()
if(${DX11} MATCHES ON)
message("DirectX 11 rendering API")
endif()
if(${DX12} MATCHES ON)
message("DirectX 12 rendering API")
endif()
if(${DYNAMIC_LIB} MATCHES ON)
message("Dynamic library")
endif()
message("\n")
add_subdirectory(Common)
add_subdirectory(Testing)
add_subdirectory(Triangle)
add_subdirectory(Quad)
add_subdirectory(Cube)