From 6fac581fa90d0e2dab2cba9e9f1972409b63f410 Mon Sep 17 00:00:00 2001 From: Fabian Sauter Date: Fri, 24 Jun 2022 09:56:22 +0200 Subject: [PATCH] Accepting a relative path when compiling shaders to work via fetch_content Signed-off-by: Fabian Sauter --- cmake/vulkan_shader_compiler.cmake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cmake/vulkan_shader_compiler.cmake b/cmake/vulkan_shader_compiler.cmake index abd927ec0..7c10cc831 100644 --- a/cmake/vulkan_shader_compiler.cmake +++ b/cmake/vulkan_shader_compiler.cmake @@ -5,10 +5,14 @@ function(vulkan_compile_shader) return() endif() - cmake_parse_arguments(SHADER_COMPILE "" "INFILE;OUTFILE;NAMESPACE" "" ${ARGN}) + cmake_parse_arguments(SHADER_COMPILE "" "INFILE;OUTFILE;NAMESPACE;RELATIVE_PATH" "" ${ARGN}) set(SHADER_COMPILE_INFILE_FULL "${CMAKE_CURRENT_SOURCE_DIR}/${SHADER_COMPILE_INFILE}") set(SHADER_COMPILE_SPV_FILE_FULL "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_COMPILE_INFILE}.spv") set(SHADER_COMPILE_HEADER_FILE_FULL "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_COMPILE_OUTFILE}") + + if(NOT SHADER_COMPILE_RELATIVE_PATH) + set(SHADER_COMPILE_RELATIVE_PATH "${PROJECT_SOURCE_DIR}/cmake") + endif() # .comp -> .spv add_custom_command(OUTPUT "${SHADER_COMPILE_SPV_FILE_FULL}" @@ -32,8 +36,8 @@ function(vulkan_compile_shader) "-DHEADER_NAMESPACE=${SHADER_COMPILE_NAMESPACE}" "-DIS_BIG_ENDIAN=${IS_BIG_ENDIAN}" "-P" - "${PROJECT_SOURCE_DIR}/cmake/bin_file_to_header.cmake" - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/cmake" + "${SHADER_COMPILE_RELATIVE_PATH}/bin_file_to_header.cmake" + WORKING_DIRECTORY "${SHADER_COMPILE_RELATIVE_PATH}" COMMENT "Converting compiled shader '${SHADER_COMPILE_SPV_FILE_FULL}' to header file '${SHADER_COMPILE_HEADER_FILE_FULL}'." MAIN_DEPENDENCY "${SHADER_COMPILE_SPV_FILE_FULL}") endfunction()