diff --git a/scripts/build-dependencies-mac.sh b/scripts/build-dependencies-mac.sh index d0d26847f..6cdb58591 100755 --- a/scripts/build-dependencies-mac.sh +++ b/scripts/build-dependencies-mac.sh @@ -327,7 +327,7 @@ mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers" tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools" cd .. -patch -p1 < "$SCRIPTDIR/shaderc-install.patch" +patch -p1 < "$SCRIPTDIR/shaderc-changes.patch" cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build make -C build "-j$NPROCS" make -C build install diff --git a/scripts/build-dependencies-windows-arm64.bat b/scripts/build-dependencies-windows-arm64.bat index ee6670a70..14ca8ec17 100644 --- a/scripts/build-dependencies-windows-arm64.bat +++ b/scripts/build-dependencies-windows-arm64.bat @@ -240,7 +240,7 @@ rename "SPIRV-Headers-%SHADERC_SPIRVHEADERS%" "spirv-headers" || goto error %SEVENZIP% x "..\..\shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" || goto error rename "SPIRV-Tools-%SHADERC_SPIRVTOOLS%" "spirv-tools" || goto error cd .. || goto error -%PATCH% -p1 < "%SCRIPTDIR%\shaderc-install.patch" || goto error +%PATCH% -p1 < "%SCRIPTDIR%\shaderc-changes.patch" || goto error cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error cmake --build build --parallel || goto error ninja -C build install || goto error diff --git a/scripts/build-dependencies-windows-x64.bat b/scripts/build-dependencies-windows-x64.bat index 88f756f8d..e59d7c4a5 100644 --- a/scripts/build-dependencies-windows-x64.bat +++ b/scripts/build-dependencies-windows-x64.bat @@ -237,7 +237,7 @@ rename "SPIRV-Headers-%SHADERC_SPIRVHEADERS%" "spirv-headers" || goto error %SEVENZIP% x "..\..\shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" || goto error rename "SPIRV-Tools-%SHADERC_SPIRVTOOLS%" "spirv-tools" || goto error cd .. || goto error -%PATCH% -p1 < "%SCRIPTDIR%\shaderc-install.patch" || goto error +%PATCH% -p1 < "%SCRIPTDIR%\shaderc-changes.patch" || goto error cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error cmake --build build --parallel || goto error ninja -C build install || goto error diff --git a/scripts/build-dependencies.sh b/scripts/build-dependencies.sh index 8931c484c..3381cd7d8 100755 --- a/scripts/build-dependencies.sh +++ b/scripts/build-dependencies.sh @@ -291,7 +291,7 @@ mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers" tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools" cd .. -patch -p1 < "$SCRIPTDIR/shaderc-install.patch" +patch -p1 < "$SCRIPTDIR/shaderc-changes.patch" cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja cmake --build build --parallel ninja -C build install diff --git a/scripts/flatpak/modules/22-shaderc.json b/scripts/flatpak/modules/22-shaderc.json index 6a5955dc9..b4143c95e 100644 --- a/scripts/flatpak/modules/22-shaderc.json +++ b/scripts/flatpak/modules/22-shaderc.json @@ -37,7 +37,7 @@ }, { "type": "patch", - "path": "shaderc-install.patch" + "path": "../../shaderc-changes.patch" } ], "cleanup": [ @@ -48,4 +48,4 @@ "/lib/cmake", "/lib/pkgconfig" ] -} \ No newline at end of file +} diff --git a/scripts/flatpak/modules/shaderc-install.patch b/scripts/shaderc-changes.patch similarity index 56% rename from scripts/flatpak/modules/shaderc-install.patch rename to scripts/shaderc-changes.patch index a56abd0dc..4cbca1e3e 100644 --- a/scripts/flatpak/modules/shaderc-install.patch +++ b/scripts/shaderc-changes.patch @@ -1,3 +1,13 @@ +--- a/CHANGES ++++ b/CHANGES +@@ -1,6 +1,6 @@ + Revision history for Shaderc + +-v2024.0 ++v2024.0 2024-03-09 + - Update dependencies + - Utilities: + - Use Python3 explicitly in utility scripts --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,6 +117,9 @@ if(MSVC) @@ -93,34 +103,118 @@ if(${SHADERC_ENABLE_TESTS}) add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c) shaderc_default_c_compile_options(shaderc_c_smoke_test) -diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc -index e5f5d10..f4f0fef 100644 +--- a/libshaderc/include/shaderc/shaderc.h ++++ b/libshaderc/include/shaderc/shaderc.h +@@ -319,6 +319,10 @@ SHADERC_EXPORT void shaderc_compile_options_set_source_language( + SHADERC_EXPORT void shaderc_compile_options_set_generate_debug_info( + shaderc_compile_options_t options); + ++// Sets the compiler mode to emit non-semantic debug information in the output. ++SHADERC_EXPORT void shaderc_compile_options_set_emit_non_semantic_debug_info( ++ shaderc_compile_options_t options); ++ + // Sets the compiler optimization level to the given level. Only the last one + // takes effect if multiple calls of this function exist. + SHADERC_EXPORT void shaderc_compile_options_set_optimization_level( +--- a/libshaderc/include/shaderc/shaderc.hpp ++++ b/libshaderc/include/shaderc/shaderc.hpp +@@ -172,6 +172,12 @@ class CompileOptions { + shaderc_compile_options_set_generate_debug_info(options_); + } + ++ // Sets the compiler mode to emit non-semantic debug information in the ++ // output. ++ void SetEmitNonSemanticDebugInfo() { ++ shaderc_compile_options_set_emit_non_semantic_debug_info(options_); ++ } ++ + // Sets the compiler optimization level to the given level. Only the last one + // takes effect if multiple calls of this function exist. + void SetOptimizationLevel(shaderc_optimization_level level) { +--- a/libshaderc/src/shaderc.cc ++++ b/libshaderc/src/shaderc.cc +@@ -422,6 +422,11 @@ void shaderc_compile_options_set_generate_debug_info( + options->compiler.SetGenerateDebugInfo(); + } + ++void shaderc_compile_options_set_emit_non_semantic_debug_info( ++ shaderc_compile_options_t options) { ++ options->compiler.SetEmitNonSemanticDebugInfo(); ++} ++ + void shaderc_compile_options_set_optimization_level( + shaderc_compile_options_t options, shaderc_optimization_level level) { + auto opt_level = shaderc_util::Compiler::OptimizationLevel::Zero; +--- a/libshaderc_util/include/libshaderc_util/compiler.h ++++ b/libshaderc_util/include/libshaderc_util/compiler.h +@@ -195,6 +195,7 @@ class Compiler { + warnings_as_errors_(false), + suppress_warnings_(false), + generate_debug_info_(false), ++ emit_non_semantic_debug_info_(false), + enabled_opt_passes_(), + target_env_(TargetEnv::Vulkan), + target_env_version_(TargetEnvVersion::Default), +@@ -220,6 +221,10 @@ class Compiler { + // such as identifier names and line numbers. + void SetGenerateDebugInfo(); + ++ // Requests that the compiler emit non-semantic debug information. ++ // Requires VK_KHR_shader_non_semantic_info. ++ void SetEmitNonSemanticDebugInfo(); ++ + // Sets the optimization level to the given level. Only the last one takes + // effect if multiple calls of this method exist. + void SetOptimizationLevel(OptimizationLevel level); +@@ -486,6 +491,10 @@ class Compiler { + // output. + bool generate_debug_info_; + ++ // When true and generate_debug_info_ is also set, generate non-semantic debug ++ // information. ++ bool emit_non_semantic_debug_info_; ++ + // Optimization passes to be applied. + std::vector enabled_opt_passes_; + --- a/libshaderc_util/src/compiler.cc +++ b/libshaderc_util/src/compiler.cc -@@ -341,6 +341,10 @@ std::tuple, size_t> Compiler::Compile( +@@ -341,6 +341,11 @@ std::tuple, size_t> Compiler::Compile( options.generateDebugInfo = generate_debug_info_; options.disableOptimizer = true; options.optimizeSize = false; -+ if (generate_debug_info_) { -+ options.emitNonSemanticShaderDebugInfo = true; -+ options.emitNonSemanticShaderDebugSource = true; -+ } ++ options.emitNonSemanticShaderDebugInfo = ++ generate_debug_info_ && emit_non_semantic_debug_info_; ++ options.emitNonSemanticShaderDebugSource = ++ generate_debug_info_ && emit_non_semantic_debug_info_; ++ // Note the call to GlslangToSpv also populates compilation_output_data. glslang::GlslangToSpv(*program.getIntermediate(used_shader_stage), spirv, &options); +@@ -438,6 +443,10 @@ void Compiler::SetGenerateDebugInfo() { + } + } + ++void Compiler::SetEmitNonSemanticDebugInfo() { ++ emit_non_semantic_debug_info_ = true; ++} ++ + void Compiler::SetOptimizationLevel(Compiler::OptimizationLevel level) { + // Clear previous settings first. + enabled_opt_passes_.clear(); --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -20,9 +20,9 @@ set(SHADERC_TINT_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/tint" CACHE STRING set(SHADERC_ABSL_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/abseil_cpp" CACHE STRING "Location of re2 source") - + -set( SKIP_GLSLANG_INSTALL ${SHADERC_SKIP_INSTALL} ) -set( SKIP_SPIRV_TOOLS_INSTALL ${SHADERC_SKIP_INSTALL} ) -set( SKIP_GOOGLETEST_INSTALL ${SHADERC_SKIP_INSTALL} ) +set( SKIP_GLSLANG_INSTALL ON ) +set( SKIP_SPIRV_TOOLS_INSTALL ON ) +set( SKIP_GOOGLETEST_INSTALL ON ) - + # Configure third party projects. if(${SHADERC_ENABLE_TESTS}) @@ -64,7 +64,10 @@ if (NOT TARGET SPIRV-Tools) @@ -136,7 +230,7 @@ index e5f5d10..f4f0fef 100644 if (MSVC) if (${MSVC_VERSION} LESS 1920) @@ -83,7 +86,7 @@ endif() - + if (NOT TARGET glslang) if (IS_DIRECTORY ${SHADERC_GLSLANG_DIR}) - add_subdirectory(${SHADERC_GLSLANG_DIR} glslang) diff --git a/scripts/shaderc-install.patch b/scripts/shaderc-install.patch deleted file mode 100644 index a56abd0dc..000000000 --- a/scripts/shaderc-install.patch +++ /dev/null @@ -1,146 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -117,6 +117,9 @@ if(MSVC) - endif() - endif(MSVC) - -+if(NOT WIN32) -+ add_definitions("-fvisibility=hidden") -+endif() - - # Configure subdirectories. - # We depend on these for later projects, so they should come first. -@@ -124,7 +127,6 @@ add_subdirectory(third_party) - - add_subdirectory(libshaderc_util) - add_subdirectory(libshaderc) --add_subdirectory(glslc) - if(${SHADERC_ENABLE_EXAMPLES}) - add_subdirectory(examples) - endif() -@@ -158,5 +160,3 @@ function(define_pkg_config_file NAME LIBS) - endfunction() - - define_pkg_config_file(shaderc -lshaderc_shared) --define_pkg_config_file(shaderc_static "-lshaderc ${EXTRA_STATIC_PKGCONFIG_LIBS} -lshaderc_util") --define_pkg_config_file(shaderc_combined -lshaderc_combined) ---- a/libshaderc/CMakeLists.txt -+++ b/libshaderc/CMakeLists.txt -@@ -24,13 +24,6 @@ set(SHADERC_SOURCES - src/shaderc_private.h - ) - --add_library(shaderc STATIC ${SHADERC_SOURCES}) --shaderc_default_compile_options(shaderc) --target_include_directories(shaderc -- PUBLIC include -- PRIVATE ${glslang_SOURCE_DIR} -- ${SPIRV-Headers_SOURCE_DIR}/include) -- - add_library(shaderc_shared SHARED ${SHADERC_SOURCES}) - shaderc_default_compile_options(shaderc_shared) - target_include_directories(shaderc_shared -@@ -54,7 +47,7 @@ if(SHADERC_ENABLE_INSTALL) - DESTINATION - ${CMAKE_INSTALL_INCLUDEDIR}/shaderc) - -- install(TARGETS shaderc shaderc_shared -+ install(TARGETS shaderc_shared - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} -@@ -69,20 +62,8 @@ set(SHADERC_LIBS - SPIRV-Tools - ) - --target_link_libraries(shaderc PRIVATE ${SHADERC_LIBS}) - target_link_libraries(shaderc_shared PRIVATE ${SHADERC_LIBS}) - --shaderc_add_tests( -- TEST_PREFIX shaderc -- LINK_LIBS shaderc -- INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR} -- ${spirv-tools_SOURCE_DIR}/include -- ${SPIRV-Headers_SOURCE_DIR}/include -- TEST_NAMES -- shaderc -- shaderc_cpp -- shaderc_private) -- - shaderc_add_tests( - TEST_PREFIX shaderc_shared - LINK_LIBS shaderc_shared SPIRV-Tools -@@ -94,22 +75,6 @@ shaderc_add_tests( - shaderc_cpp - shaderc_private) - --shaderc_combine_static_lib(shaderc_combined shaderc) -- --if(SHADERC_ENABLE_INSTALL) -- install(TARGETS shaderc_combined DESTINATION ${CMAKE_INSTALL_LIBDIR}) --endif(SHADERC_ENABLE_INSTALL) -- --shaderc_add_tests( -- TEST_PREFIX shaderc_combined -- LINK_LIBS shaderc_combined ${CMAKE_THREAD_LIBS_INIT} -- INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR} -- ${spirv-tools_SOURCE_DIR}/include -- ${SPIRV-Headers_SOURCE_DIR}/include -- TEST_NAMES -- shaderc -- shaderc_cpp) -- - if(${SHADERC_ENABLE_TESTS}) - add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c) - shaderc_default_c_compile_options(shaderc_c_smoke_test) -diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc -index e5f5d10..f4f0fef 100644 ---- a/libshaderc_util/src/compiler.cc -+++ b/libshaderc_util/src/compiler.cc -@@ -341,6 +341,10 @@ std::tuple, size_t> Compiler::Compile( - options.generateDebugInfo = generate_debug_info_; - options.disableOptimizer = true; - options.optimizeSize = false; -+ if (generate_debug_info_) { -+ options.emitNonSemanticShaderDebugInfo = true; -+ options.emitNonSemanticShaderDebugSource = true; -+ } - // Note the call to GlslangToSpv also populates compilation_output_data. - glslang::GlslangToSpv(*program.getIntermediate(used_shader_stage), spirv, - &options); ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -20,9 +20,9 @@ set(SHADERC_TINT_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/tint" CACHE STRING - set(SHADERC_ABSL_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/abseil_cpp" CACHE STRING - "Location of re2 source") - --set( SKIP_GLSLANG_INSTALL ${SHADERC_SKIP_INSTALL} ) --set( SKIP_SPIRV_TOOLS_INSTALL ${SHADERC_SKIP_INSTALL} ) --set( SKIP_GOOGLETEST_INSTALL ${SHADERC_SKIP_INSTALL} ) -+set( SKIP_GLSLANG_INSTALL ON ) -+set( SKIP_SPIRV_TOOLS_INSTALL ON ) -+set( SKIP_GOOGLETEST_INSTALL ON ) - - # Configure third party projects. - if(${SHADERC_ENABLE_TESTS}) -@@ -64,7 +64,10 @@ if (NOT TARGET SPIRV-Tools) - add_subdirectory(${SHADERC_RE2_DIR} re2) - add_subdirectory(${SHADERC_EFFCEE_DIR} effcee) - endif() -- add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools) -+ set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "Skip building SPIRV-Tools executables") -+ set(SPIRV_TOOLS_BUILD_STATIC OFF CACHE BOOL "Skip building two SPIRV-Tools libs") -+ set(SPIRV_TOOLS_LIBRARY_TYPE STATIC CACHE STRING "Build static SPIRV-Tools libs") -+ add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools EXCLUDE_FROM_ALL) - if (NOT "${SPIRV_SKIP_TESTS}") - if (MSVC) - if (${MSVC_VERSION} LESS 1920) -@@ -83,7 +86,7 @@ endif() - - if (NOT TARGET glslang) - if (IS_DIRECTORY ${SHADERC_GLSLANG_DIR}) -- add_subdirectory(${SHADERC_GLSLANG_DIR} glslang) -+ add_subdirectory(${SHADERC_GLSLANG_DIR} glslang EXCLUDE_FROM_ALL) - endif() - if (NOT TARGET glslang) - message(FATAL_ERROR "glslang was not found - required for compilation")