72 lines
1.7 KiB
CMake
72 lines
1.7 KiB
CMake
find_package(Vulkan REQUIRED)
|
|
find_package(vma REQUIRED)
|
|
find_package(glfw3 REQUIRED)
|
|
find_package(stb REQUIRED)
|
|
find_package(FreeType 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/solid_objects.frag
|
|
shaders/on_screen_text.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}
|
|
${stb_INCLUDE_DIR}
|
|
${FreeType_INCLUDE_DIR}
|
|
)
|
|
|
|
target_sources(rse_graphics PRIVATE
|
|
src/vma_port.cpp
|
|
src/window.c
|
|
src/vulkan_base.c
|
|
src/vulkan_pipeline.c
|
|
src/rse_vulkan_commands.c
|
|
src/vulkan_buffers.c
|
|
src/vulkan_descriptors.c
|
|
src/rse_graphics.c
|
|
src/rse_math.c
|
|
src/mesh_controller.c
|
|
src/vulkan_commons.c
|
|
src/rse_vulkan_image.c
|
|
src/rse_text_renderer.c
|
|
)
|
|
|
|
target_link_libraries(rse_graphics PRIVATE
|
|
rse_utilities
|
|
${Vulkan_LIBRARIES}
|
|
${glfw}
|
|
${freetype}
|
|
)
|