78 lines
1.8 KiB
CMake
78 lines
1.8 KiB
CMake
find_package(Vulkan REQUIRED)
|
|
find_package(VulkanMemoryAllocator CONFIG REQUIRED)
|
|
find_package(glfw3 REQUIRED)
|
|
find_package(FreeType REQUIRED)
|
|
|
|
find_package(Vulkan COMPONENTS glslc)
|
|
find_program(glslc_executable NAMES glslc HINTS ${Vulkan_GLSLC_EXECUTABLE}/..)
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
|
|
|
|
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}
|
|
COMMAND
|
|
${glslc_executable}
|
|
-o ${source}.${arg_FORMAT}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${source}
|
|
)
|
|
endforeach()
|
|
endfunction()
|
|
|
|
compile_shader(graphics
|
|
ENV opengl
|
|
FORMAT num
|
|
SOURCES
|
|
shaders/shader.vert
|
|
shaders/solid_objects.frag
|
|
shaders/on_screen_text.frag
|
|
)
|
|
|
|
add_library(graphics SHARED
|
|
shaders/shader.vert.num
|
|
shaders/solid_objects.frag.num
|
|
shaders/on_screen_text.frag.num
|
|
)
|
|
target_include_directories(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(graphics PRIVATE
|
|
src/vma_port.cpp
|
|
src/window.c
|
|
src/vulkan_base.c
|
|
src/vulkan_commands.c
|
|
src/vulkan_buffers.c
|
|
src/rse_graphics.c
|
|
src/math.c
|
|
src/mesh_controller.c
|
|
src/vulkan_commons.c
|
|
src/vulkan_image.c
|
|
src/vulkan_render_pass.c
|
|
src/vulkan_swapchain.c
|
|
src/text_renderer.c
|
|
src/pipeline_builder.c
|
|
src/descriptor_builder.c
|
|
)
|
|
|
|
target_link_libraries(graphics PUBLIC
|
|
utilities
|
|
${Vulkan_LIBRARIES}
|
|
glfw
|
|
${freetype}
|
|
)
|