Files
RedScarfEngine/graphics/CMakeLists.txt
T
Piotr Krygier bf31b96a2e Add my own math library
GLM works only for C++ and I plan on moving to back to C. There is
a C port, but it would be good for me to figure out vertex math myself.
Hence, my own library has been created.
2023-08-10 09:43:26 +02:00

65 lines
1.5 KiB
CMake

find_package(Vulkan REQUIRED)
find_package(vma REQUIRED)
find_package(glfw3 REQUIRED)
find_package(Vulkan COMPONENTS glslc)
find_program(glslc_executable NAMES glslc HINTS ${Vulkan_GLSLC_EXECUTABLE}/..)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/shaders)
cmake_policy(SET CMP0116 NEW)
function(compile_shader)
cmake_parse_arguments(PARSE_ARGV 1 arg "" "ENV;FORMAT" "SOURCES")
foreach(source ${arg_SOURCES})
message(${source}.${arg_FORMAT})
add_custom_command(
OUTPUT ${source}.${arg_FORMAT}
DEPENDS ${source}
DEPFILE ${source}.d
COMMAND
${glslc_executable}
-o ${source}.${arg_FORMAT}
${CMAKE_CURRENT_SOURCE_DIR}/${source}
)
endforeach()
endfunction()
compile_shader(rse_graphics
ENV opengl
FORMAT num
SOURCES
shaders/shader.vert
shaders/shader.frag
)
add_library(rse_graphics SHARED shaders/shader.vert.num shaders/shader.frag.num)
target_include_directories(rse_graphics PRIVATE
${PROJECT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}
${Vulkan_INCLUDE_DIR}
${vma_INCLUDE_DIR}
${glfw3_INCLUDE_DIR}
)
message("Vulkan_INCLUDE_DIR: ${Vulkan_INCLUDE_DIR}")
target_sources(rse_graphics PRIVATE
src/window.cpp
src/vulkan_base.cpp
src/vulkan_pipeline.cpp
src/vulkan_buffers.cpp
src/vulkan_descriptors.cpp
src/rse_graphics.cpp
src/rse_math.c
src/mesh_controller.cpp
src/vulkan_commons.cpp
)
target_link_libraries(rse_graphics PRIVATE
rse_utilities
${Vulkan_LIBRARIES}
${glfw}
)