-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
132 lines (109 loc) · 2.79 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.13)
include(cmake/prelude.cmake)
project(mdo-core VERSION 0.0.0)
# options
option(COMPILE_SHADERS "Compile shaders in bulid tree.")
option(TRACY_ENABLE "Enable Tracy profiling.")
if(MSVC)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
set(BUILD_SHARED_LIBS TRUE)
endif()
include_directories(include)
# dependencies
#include(FindVulkan)
#if(NOT Vulkan_FOUND)
# message(FATAL_ERROR "Vulkan not found.")
#endif()
#if(NOT Vulkan_GLSLC_EXECUTABLE)
# message(FATAL_ERROR "glslc not found.")
#endif()
add_subdirectory(lib)
find_mondradiko_dependency(
mondradiko::vulkan "Vulkan" NOCONFIG
INSTALL "vulkan-sdk"
Vulkan::Vulkan
)
find_mondradiko_dependency(
mondradiko::sdl2 "SDL2" SDL2::SDL2main
INSTALL "sdl2[vulkan]"
UNIX SDL2::SDL2-static
# UNIX SDL2::SDL2
WIN32 SDL2::SDL2
)
find_mondradiko_dependency(
mondradiko::libuv "unofficial-libuv" unofficial::libuv::libuv
INSTALL "libuv"
)
find_mondradiko_dependency(
mondradiko::openxr "OpenXR"
INSTALL "openxr-loader"
OpenXR::headers
OpenXR::openxr_loader
OpenXR::openxr-all-supported
)
find_mondradiko_dependency(
mondradiko::flecs "flecs" flecs::flecs_static
INSTALL "flecs"
)
find_mondradiko_dependency(
mondradiko::cglm "cglm" cglm::cglm
INSTALL "cglm"
)
# shaders
function(spirv_shader ret GLSL VAR)
set(SPIRV "${CMAKE_CURRENT_BINARY_DIR}/${GLSL}.spv")
set(GLSL "${CMAKE_CURRENT_SOURCE_DIR}/${GLSL}")
add_custom_command(
OUTPUT ${SPIRV}
COMMAND Vulkan::glslc -O -o ${SPIRV} ${GLSL}
DEPENDS ${GLSL}
)
set(${ret} "${SPIRV}" PARENT_SCOPE)
endfunction(spirv_shader)
function(spirv_shaders ret)
foreach(GLSL ${ARGN})
string(MAKE_C_IDENTIFIER ${GLSL} IDENTIFIER)
spirv_shader(HEADER ${GLSL} ${IDENTIFIER})
list(APPEND HEADERS ${HEADER})
endforeach()
set(${ret} "${HEADERS}" PARENT_SCOPE)
endfunction(spirv_shaders)
set(SHADERS_SRC
shaders/debug.frag
shaders/debug.vert
)
if(COMPILE_SHADERS)
spirv_shaders(SHADERS_BIN ${SHADERS_SRC})
add_library(mdo-shaders INTERFACE ${SHADERS_BIN})
else()
message(WARNING "Shader compilation is disabled.")
message(WARNING "Ask Marceline on Discord for a .zip of the current shaders.")
endif()
# main library
set(MDO_CORE_SRC
src/displays/sdl/sdl_display.c
src/gpu/gpu_device.c
src/gpu/gpu_shader.c
src/gpu/gpu_vector.c
src/renderer/debug/debug_draw.c
src/renderer/debug/debug_pass.c
src/renderer/camera.c
src/renderer/renderer.c
src/renderer/viewport.c
src/network/network_client.c
src/network/network_server.c
src/world/world.c
src/log.c
)
add_library(mdo-core SHARED ${MDO_CORE_SRC})
target_link_libraries(mdo-core
mondradiko::sdl2
mondradiko::vulkan
mondradiko::libuv
mondradiko::openxr
mondradiko::cglm
flecs
tracy
)
add_executable(mdo-cli cli/main.c)
target_link_libraries(mdo-cli mdo-core)