75 lines
2.3 KiB
CMake
75 lines
2.3 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(sdlgpu1 VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
SET(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE)
|
|
set(EXE_NAME ${CMAKE_PROJECT_NAME})
|
|
|
|
#set(PROGRAM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/vulkanapp.cc)
|
|
|
|
# Get our GLSL shaders
|
|
set(SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shaders)
|
|
set(SHADER_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
file(GLOB SHADERS ${SHADER_DIR}/*.vert
|
|
${SHADER_DIR}/*.frag
|
|
${SHADER_DIR}/*.comp
|
|
${SHADER_DIR}/*.geom
|
|
${SHADER_DIR}/*.tesc
|
|
${SHADER_DIR}/*.tese
|
|
${SHADER_DIR}/*.mesh
|
|
${SHADER_DIR}/*.task
|
|
${SHADER_DIR}/*.rgen
|
|
${SHADER_DIR}/*.rchit
|
|
${SHADER_DIR}/*.rmiss
|
|
)
|
|
|
|
option(SDL3_NONSYSTEM "Use SDL2 from folder in source tree" ON)
|
|
|
|
if(SDL3_NONSYSTEM)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/SDL3 ${CMAKE_CURRENT_BINARY_DIR}/SDL3 EXCLUDE_FROM_ALL)
|
|
else()
|
|
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared)
|
|
endif()
|
|
|
|
find_package(Vulkan REQUIRED COMPONENTS glslc)
|
|
|
|
# Compile each shader
|
|
foreach(SHADER IN LISTS SHADERS)
|
|
get_filename_component(FILENAME ${SHADER} NAME)
|
|
add_custom_command(OUTPUT ${SHADER_BIN_DIR}/${FILENAME}.spv
|
|
COMMAND ${Vulkan_GLSLC_EXECUTABLE} ${SHADER} -o ${SHADER_BIN_DIR}/${FILENAME}.spv
|
|
DEPENDS ${SHADER}
|
|
COMMENT "Compiling Shader ${FILENAME}")
|
|
list(APPEND SPV_SHADERS ${SHADER_BIN_DIR}/${FILENAME}.spv)
|
|
endForeach()
|
|
|
|
# Shader target
|
|
add_custom_target(shaders ALL DEPENDS ${SPV_SHADERS})
|
|
|
|
add_executable(${EXE_NAME} ${CMAKE_SOURCE_DIR}/main.c ${SHADERS})
|
|
|
|
if(WIN32)
|
|
add_custom_command(
|
|
TARGET ${EXE_NAME} POST_BUILD
|
|
COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_FILE:SDL3::SDL3-shared> $<TARGET_FILE_DIR:${EXE_NAME}>
|
|
VERBATIM
|
|
)
|
|
endif()
|
|
|
|
set_target_properties(${EXE_NAME}
|
|
PROPERTIES
|
|
CXX_STANDARD 17
|
|
CXX_STANDARD_REQUIRED ON
|
|
CXX_EXTENSIONS ON
|
|
)
|
|
|
|
target_include_directories(${EXE_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)
|
|
add_dependencies(${EXE_NAME} shaders)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
target_compile_options(${EXE_NAME} PRIVATE -Wall -Wextra)
|
|
elseif(MSVC)
|
|
target_compile_options(${EXE_NAME} PRIVATE /W4)
|
|
endif()
|
|
|
|
# Linking
|
|
target_link_libraries(${EXE_NAME} PRIVATE SDL3::SDL3) |