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) # Shaders find_program(SLANGC NAMES slangc PATHS /opt/shader-slang-bin/bin ) 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 ) add_dependencies(mikemon basic_vertex_shader basic_pixel_shader )