There are many problems with the way the current version is provided and maintained. This commit or series of commits will fix this.
78 lines
1.8 KiB
CMake
78 lines
1.8 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}/..)
|
|
|
|
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}
|
|
DEPFILE ${source}.d
|
|
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_pipeline.c
|
|
src/vulkan_commands.c
|
|
src/vulkan_buffers.c
|
|
src/vulkan_descriptors.c
|
|
src/rse_graphics.c
|
|
src/math.c
|
|
src/mesh_controller.c
|
|
src/vulkan_commons.c
|
|
src/vulkan_image.c
|
|
src/text_renderer.c
|
|
)
|
|
|
|
target_link_libraries(graphics PRIVATE
|
|
utilities
|
|
${Vulkan_LIBRARIES}
|
|
${glfw}
|
|
${freetype}
|
|
)
|