From 9670cf4f435c304f1fe8ff1ccb067c5913a13fce Mon Sep 17 00:00:00 2001 From: Hristo Iliev Date: Fri, 24 Mar 2023 17:35:10 +0200 Subject: [PATCH] Improvments on the shader compiler utility The custom command didn't recognize bgfx::shaderc and the generator expression seems bettter. I also added an include option since it might be important to be able to define those. Added changes to each of the cmake files to make sure bgfx:: is defined Also add an output variable name parameter. Co-Authored-By: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- cmake/bgfx/examples.cmake | 2 +- cmake/bgfx/geometryc.cmake | 6 ++++++ cmake/bgfx/shaderc.cmake | 6 ++++++ cmake/bgfxToolUtils.cmake | 11 ++++++++--- cmake/bimg/texturec.cmake | 6 ++++++ cmake/bx/bin2c.cmake | 6 ++++++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/cmake/bgfx/examples.cmake b/cmake/bgfx/examples.cmake index 81e1d47..389a051 100755 --- a/cmake/bgfx/examples.cmake +++ b/cmake/bgfx/examples.cmake @@ -105,7 +105,7 @@ function(add_bgfx_shader FILE FOLDER) foreach(OUT ${OUTPUTS}) list(APPEND OUTPUT_FILES ${${OUT}_OUTPUT}) - list(APPEND COMMANDS COMMAND "$" ${${OUT}}) + list(APPEND COMMANDS COMMAND "bgfx::shaderc" ${${OUT}}) get_filename_component(OUT_DIR ${${OUT}_OUTPUT} DIRECTORY) file(MAKE_DIRECTORY ${OUT_DIR}) endforeach() diff --git a/cmake/bgfx/geometryc.cmake b/cmake/bgfx/geometryc.cmake index 06e4001..31684db 100644 --- a/cmake/bgfx/geometryc.cmake +++ b/cmake/bgfx/geometryc.cmake @@ -31,6 +31,12 @@ if(BGFX_BUILD_TOOLS_GEOMETRY AND BGFX_CUSTOM_TARGETS) add_dependencies(tools geometryc) endif() +if(BGFX_BUILD_TOOLS_GEOMETRY) + if(TARGET geometryc AND NOT TARGET bgfx::geometryc) + add_executable(bgfx::geometryc ALIAS geometryc) + endif() +endif() + if(IOS) set_target_properties(geometryc PROPERTIES MACOSX_BUNDLE ON MACOSX_BUNDLE_GUI_IDENTIFIER geometryc) endif() diff --git a/cmake/bgfx/shaderc.cmake b/cmake/bgfx/shaderc.cmake index bed59a0..998c531 100644 --- a/cmake/bgfx/shaderc.cmake +++ b/cmake/bgfx/shaderc.cmake @@ -54,6 +54,12 @@ if(BGFX_BUILD_TOOLS_SHADER AND BGFX_CUSTOM_TARGETS) add_dependencies(tools shaderc) endif() +if(BGFX_BUILD_TOOLS_SHADER) + if(TARGET shaderc AND NOT TARGET bgfx::shaderc) + add_executable(bgfx::shaderc ALIAS shaderc) + endif() +endif() + if(ANDROID) target_link_libraries(shaderc PRIVATE log) elseif(IOS) diff --git a/cmake/bgfxToolUtils.cmake b/cmake/bgfxToolUtils.cmake index 22a1c67..834df2f 100644 --- a/cmake/bgfxToolUtils.cmake +++ b/cmake/bgfxToolUtils.cmake @@ -535,12 +535,14 @@ endfunction() # SHADERS filenames # VARYING_DEF filename # OUTPUT_DIR directory +# OUT_FILES_VAR variable name +# INCLUDE_DIRS directories # ) # function(bgfx_compile_shader_to_header) set(options "") - set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR) - set(multiValueArgs SHADERS) + set(oneValueArgs TYPE VARYING_DEF OUTPUT_DIR OUT_FILES_VAR) + set(multiValueArgs SHADERS INCLUDE_DIRS) cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}") set(PROFILES 120 300_es spirv) # pssl @@ -596,12 +598,15 @@ function(bgfx_compile_shader_to_header) PROFILE ${PROFILE} O "$<$:0>$<$:3>$<$:3>$<$:3>" VARYINGDEF ${ARGS_VARYING_DEF} - INCLUDES ${BGFX_SHADER_INCLUDE_PATH} + INCLUDES ${BGFX_SHADER_INCLUDE_PATH} ${ARGS_INCLUDE_DIRS} BIN2C BIN2C ${SHADER_FILE_NAME_WE}_${PROFILE_EXT} ) list(APPEND OUTPUTS ${OUTPUT}) list(APPEND COMMANDS COMMAND bgfx::shaderc ${CLI}) endforeach() + if(DEFINED ARGS_OUT_FILES_VAR) + set(${ARGS_OUT_FILES_VAR} ${OUTPUTS} PARENT_SCOPE) + endif() add_custom_command( OUTPUT ${OUTPUTS} diff --git a/cmake/bimg/texturec.cmake b/cmake/bimg/texturec.cmake index 5a8ed81..d7e67aa 100644 --- a/cmake/bimg/texturec.cmake +++ b/cmake/bimg/texturec.cmake @@ -26,6 +26,12 @@ if(BGFX_BUILD_TOOLS_TEXTURE AND BGFX_CUSTOM_TARGETS) add_dependencies(tools texturec) endif() +if(BGFX_BUILD_TOOLS_TEXTURE) + if(TARGET texturec AND NOT TARGET bgfx::texturec) + add_executable(bgfx::texturec ALIAS texturec) + endif() +endif() + if(ANDROID) target_link_libraries(texturec PRIVATE log) elseif(IOS) diff --git a/cmake/bx/bin2c.cmake b/cmake/bx/bin2c.cmake index 9c66eed..a25e870 100644 --- a/cmake/bx/bin2c.cmake +++ b/cmake/bx/bin2c.cmake @@ -26,6 +26,12 @@ if(BGFX_BUILD_TOOLS_BIN2C AND BGFX_CUSTOM_TARGETS) add_dependencies(tools bin2c) endif() +if(BGFX_BUILD_TOOLS_BIN2C) + if(TARGET bin2c AND NOT TARGET bgfx::bin2c) + add_executable(bgfx::bin2c ALIAS bin2c) + endif() +endif() + if(ANDROID) target_link_libraries(bin2c PRIVATE log) elseif(IOS)