76 lines
1.8 KiB
CMake
76 lines
1.8 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
|
|
project(mikemon VERSION 0.1 LANGUAGES CXX C)
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
|
|
|
|
# SDL
|
|
set(SDL_SHARED OFF)
|
|
set(SDL_STATIC ON)
|
|
add_subdirectory(libs/SDL3)
|
|
|
|
# Dear ImGui
|
|
add_library(imgui STATIC
|
|
libs/imgui/imgui.cpp
|
|
libs/imgui/imgui_draw.cpp
|
|
libs/imgui/imgui_demo.cpp
|
|
libs/imgui/imgui_tables.cpp
|
|
libs/imgui/imgui_widgets.cpp
|
|
libs/imgui/backends/imgui_impl_sdl3.cpp
|
|
libs/imgui/backends/imgui_impl_sdlgpu3.cpp
|
|
)
|
|
target_include_directories(imgui PUBLIC
|
|
libs/imgui
|
|
libs/imgui/backends
|
|
)
|
|
target_link_libraries(imgui PRIVATE SDL3::SDL3)
|
|
|
|
# Shaders
|
|
find_program(SLANGC
|
|
NAMES slangc
|
|
PATHS /opt/shader-slang-bin/bin
|
|
)
|
|
|
|
# stb_image
|
|
add_library(stb_image STATIC libs/stb/stb_image.c)
|
|
target_include_directories(stb_image INTERFACE libs/stb)
|
|
|
|
function(add_shader name)
|
|
set(INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/assets/shader/${name}.slang)
|
|
set(OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/assets/shader/${name}.h)
|
|
|
|
if (SLANGC)
|
|
add_custom_command(
|
|
OUTPUT ${OUTPUT_FILE}
|
|
COMMAND ${SLANGC} ${INPUT_FILE} -g3 -O0 -emit-spirv-via-glsl -entry main -target spirv -profile glsl_330 -o ${OUTPUT_FILE} -source-embed-style u8 -source-embed-name SPIRV_${name}
|
|
DEPENDS ${INPUT_FILE}
|
|
)
|
|
endif()
|
|
|
|
add_custom_target(${name}
|
|
DEPENDS ${OUTPUT_FILE}
|
|
)
|
|
endfunction()
|
|
|
|
add_shader(basic_vertex_shader)
|
|
add_shader(basic_pixel_shader)
|
|
|
|
add_executable(mikemon
|
|
src/log.cpp
|
|
src/load_entire_file.cpp
|
|
src/main.cpp
|
|
)
|
|
target_link_libraries(mikemon
|
|
PRIVATE
|
|
SDL3::SDL3
|
|
stb_image
|
|
imgui
|
|
)
|
|
add_dependencies(mikemon
|
|
basic_vertex_shader
|
|
basic_pixel_shader
|
|
)
|