Make bgfx_compile_shaders more generic

Allow compiling as header or as binaries
This commit is contained in:
Sandy Carter
2024-07-20 00:19:39 -04:00
committed by Sandy
parent 79e4993ca5
commit 85b9f3cf5f

View File

@@ -551,17 +551,18 @@ if(TARGET bgfx::shaderc)
set(${PROFILE_EXT} ${PROFILE} PARENT_SCOPE) set(${PROFILE_EXT} ${PROFILE} PARENT_SCOPE)
endfunction() endfunction()
# bgfx_compile_shader_to_header( # bgfx_compile_shaders(
# TYPE VERTEX|FRAGMENT|COMPUTE # TYPE VERTEX|FRAGMENT|COMPUTE
# SHADERS filenames # SHADERS filenames
# VARYING_DEF filename # VARYING_DEF filename
# OUTPUT_DIR directory # OUTPUT_DIR directory
# OUT_FILES_VAR variable name # OUT_FILES_VAR variable name
# INCLUDE_DIRS directories # INCLUDE_DIRS directories
# [AS_HEADERS]
# ) # )
# #
function(bgfx_compile_shader_to_header) function(bgfx_compile_shaders)
set(options "") set(options AS_HEADERS)
set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR OUT_FILES_VAR) set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR OUT_FILES_VAR)
set(multiValueArgs SHADERS INCLUDE_DIRS) set(multiValueArgs SHADERS INCLUDE_DIRS)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}") cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
@@ -599,13 +600,18 @@ if(TARGET bgfx::shaderc)
set(COMMANDS "") set(COMMANDS "")
foreach(PROFILE ${PROFILES}) foreach(PROFILE ${PROFILES})
_bgfx_get_profile_ext(${PROFILE} PROFILE_EXT) _bgfx_get_profile_ext(${PROFILE} PROFILE_EXT)
set(OUTPUT ${ARGS_OUTPUT_DIR}/${SHADER_FILE_BASENAME}.${PROFILE_EXT}.bin.h) set(OUTPUT ${ARGS_OUTPUT_DIR}/${SHADER_FILE_BASENAME}.${PROFILE_EXT}.bin$<ARGS_AS_HEADERS:.h>)
set(PLATFORM_I ${PLATFORM}) set(PLATFORM_I ${PLATFORM})
if(PROFILE STREQUAL "spirv") if(PROFILE STREQUAL "spirv")
set(PLATFORM_I LINUX) set(PLATFORM_I LINUX)
endif() endif()
set(BIN2C_PART "")
if(ARGS_AS_HEADERS)
set(BIN2C_PART BIN2C ${SHADER_FILE_NAME_WE}_${PROFILE_EXT})
endif()
_bgfx_shaderc_parse( _bgfx_shaderc_parse(
CLI # CLI #
${BIN2C_PART} #
${ARGS_TYPE} ${PLATFORM_I} WERROR "$<$<CONFIG:debug>:DEBUG>$<$<CONFIG:relwithdebinfo>:DEBUG>" ${ARGS_TYPE} ${PLATFORM_I} WERROR "$<$<CONFIG:debug>:DEBUG>$<$<CONFIG:relwithdebinfo>:DEBUG>"
FILE ${SHADER_FILE_ABSOLUTE} FILE ${SHADER_FILE_ABSOLUTE}
OUTPUT ${OUTPUT} OUTPUT ${OUTPUT}
@@ -613,7 +619,6 @@ if(TARGET bgfx::shaderc)
O "$<$<CONFIG:debug>:0>$<$<CONFIG:release>:3>$<$<CONFIG:relwithdebinfo>:3>$<$<CONFIG:minsizerel>:3>" O "$<$<CONFIG:debug>:0>$<$<CONFIG:release>:3>$<$<CONFIG:relwithdebinfo>:3>$<$<CONFIG:minsizerel>:3>"
VARYINGDEF ${ARGS_VARYING_DEF} VARYINGDEF ${ARGS_VARYING_DEF}
INCLUDES ${BGFX_SHADER_INCLUDE_PATH} ${ARGS_INCLUDE_DIRS} INCLUDES ${BGFX_SHADER_INCLUDE_PATH} ${ARGS_INCLUDE_DIRS}
BIN2C BIN2C ${SHADER_FILE_NAME_WE}_${PROFILE_EXT}
) )
list(APPEND OUTPUTS ${OUTPUT}) list(APPEND OUTPUTS ${OUTPUT})
list(APPEND ALL_OUTPUTS ${OUTPUT}) list(APPEND ALL_OUTPUTS ${OUTPUT})