blob: 02112d1bb64239421bc138cf3241724c15fd1658 [file] [log] [blame]
cmake_minimum_required(VERSION 3.7)
project(vkbench)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_BUILD_TYPE Debug)
find_package(Vulkan REQUIRED)
find_package(PNG REQUIRED)
include_directories(.)
include_directories(${Vulkan_INCLUDE_DIRS})
include_directories(${PNG_INCLUDE_DIRS})
link_libraries(${Vulkan_LIBRARIES})
link_libraries(${PNG_LIBRARIES})
# Suppress deprecated warning
set(CMAKE_CXX_FLAGS "-Wno-deprecated-declarations")
# GLSL files to SPIR-V.
find_program(GLSL_VALIDATOR "glslangValidator")
if(NOT GLSL_VALIDATOR)
message(FATAL_ERROR "glslangValidator not found!")
endif()
file(GLOB_RECURSE GLSL_SOURCE_FILES "src/shaders/*.frag" "src/shaders/*.vert")
foreach(GLSL ${GLSL_SOURCE_FILES})
get_filename_component(FILE_NAME ${GLSL} NAME)
set(SPIRV "${PROJECT_BINARY_DIR}/shaders/${FILE_NAME}.spv")
add_custom_command(
OUTPUT ${SPIRV}
COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_BINARY_DIR}/shaders/"
COMMAND ${GLSL_VALIDATOR} -V ${GLSL} -o ${SPIRV})
list(APPEND SPIRV_BINARY_FILES ${SPIRV})
endforeach(GLSL)
add_custom_target(Shaders DEPENDS ${SPIRV_BINARY_FILES})
file(GLOB_RECURSE TEST_FILES "src/tests/*.cc")
file(GLOB_RECURSE SRC_FILES "src/*.cc")
add_executable(vkbench ${SRC_FILES} ${SRC_FILES})
add_dependencies(vkbench Shaders)
set(INSTALL_DIR "/usr/local/graphics/${CMAKE_PROJECT_NAME}")
install(TARGETS vkbench
RUNTIME DESTINATION ${INSTALL_DIR})
install(DIRECTORY ${CMAKE_BINARY_DIR}/shaders
DESTINATION ${INSTALL_DIR}
FILES_MATCHING PATTERN "*.spv")