-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCmakeLists.txt
103 lines (88 loc) · 2.13 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
cmake_minimum_required(VERSION 3.25)
project(
LearnWebGPU
VERSION 0.1.0
LANGUAGES CXX C
)
# variables
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS 1) # clangd
set(DAWN_FETCH_DEPENDENCIES 1)
# dependencies
add_subdirectory(deps/glfw)
add_subdirectory(deps/webgpu)
add_subdirectory(deps/glm)
add_subdirectory(deps/tinyobjloader)
add_subdirectory(deps/stb)
# imgui
set(IMGUI_DIR ${PROJECT_SOURCE_DIR}/deps/imgui)
file(GLOB IMGUI_SRC ${IMGUI_DIR}/*.cpp)
set(IMGUI_SRC ${IMGUI_SRC}
${IMGUI_DIR}/backends/imgui_impl_glfw.cpp
${IMGUI_DIR}/backends/imgui_impl_wgpu.cpp
)
set(IMGUI_INCLUDE_DIRS ${IMGUI_DIR} ${IMGUI_DIR}/backends)
# perlin noise
set(PERLIN_NOISE_DIR ${PROJECT_SOURCE_DIR}/deps/PerlinNoise)
# app
set(APP_SRC
src/main.cpp
src/game.cpp
src/util/camera.cpp
src/util/load.cpp
src/util/webgpu-util.cpp
src/util/texture.cpp
src/util/timer.cpp
src/util/frustum.cpp
src/gfx/context.cpp
src/gfx/renderer.cpp
src/gfx/pipeline.cpp
src/gfx/sun.cpp
src/game/chunk.cpp
src/game/chunk_manager.cpp
src/game/block.cpp
src/game/mesh.cpp
src/game/player.cpp
src/game/direction.cpp
src/game/ray.cpp
src/game/gen.cpp
)
add_executable(App
${APP_SRC}
${IMGUI_SRC}
)
target_include_directories(App PRIVATE
${PROJECT_SOURCE_DIR}/src
${IMGUI_INCLUDE_DIRS}
${PERLIN_NOISE_DIR}
)
target_compile_definitions(App PRIVATE
ROOT_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
GLM_FORCE_SWIZZLE
# GLM_FORCE_XYZW_ONLY
GLM_FORCE_DEPTH_ZERO_TO_ONE
)
target_link_libraries(App PRIVATE
glfw webgpu glm tinyobjloader stb
dawn_glfw dawncpp dawn_utils
)
# set_target_properties(App PROPERTIES
# CXX_STANDARD 20
# COMPILE_WARNING_AS_ERROR ON
# )
# DAWN_DEBUG_BREAK_ON_ERROR
if (MSVC)
target_compile_options(App PRIVATE /W4)
else()
target_compile_options(App PRIVATE -Wall -Wextra -pedantic)
# assert in release
target_compile_options(App PRIVATE -UNDEBUG)
endif()
if(XCODE)
set_target_properties(App PROPERTIES
XCODE_GENERATE_SCHEME ON
XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE "Metal"
)
set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed")
endif()