From 8ed2a0956930d4effbf7c9290b8d12b59b300ba9 Mon Sep 17 00:00:00 2001 From: Troy Dawson Date: Thu, 15 Oct 2020 09:33:08 -0700 Subject: [PATCH] RHEL 9.0.0 Alpha bootstrap The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/shaderc#1987df224e598b69529d5c0bc21540bdb112db89 --- .gitignore | 6 + ...p-third-party-code-in-CMakeLists.txt.patch | 25 ++ CHANGES | 223 ++++++++++++++++++ README.md | 3 + glslang_linker_flags.patch | 24 ++ shaderc.spec | 162 +++++++++++++ sources | 1 + 7 files changed, 444 insertions(+) create mode 100644 0001-Drop-third-party-code-in-CMakeLists.txt.patch create mode 100644 CHANGES create mode 100644 README.md create mode 100644 glslang_linker_flags.patch create mode 100644 shaderc.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..e49bb4b 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,6 @@ +/shaderc-7a23a01.tar.gz +/shaderc-7d8582b.tar.gz +/shaderc-34c412f.tar.gz +/shaderc-f76bb2f.tar.gz +/shaderc-7c2aa93.tar.gz +/shaderc-4162bb1.tar.gz diff --git a/0001-Drop-third-party-code-in-CMakeLists.txt.patch b/0001-Drop-third-party-code-in-CMakeLists.txt.patch new file mode 100644 index 0000000..541bcc0 --- /dev/null +++ b/0001-Drop-third-party-code-in-CMakeLists.txt.patch @@ -0,0 +1,25 @@ +diff -up shaderc-f76bb2f09f858c3014b329961d836964e515095d/CMakeLists.txt.orig shaderc-f76bb2f09f858c3014b329961d836964e515095d/CMakeLists.txt +--- shaderc-f76bb2f09f858c3014b329961d836964e515095d/CMakeLists.txt.orig 2020-01-22 21:15:53.000000000 +0100 ++++ shaderc-f76bb2f09f858c3014b329961d836964e515095d/CMakeLists.txt 2020-02-02 21:06:15.193583552 +0100 +@@ -98,7 +98,6 @@ endif(MSVC) + + # Configure subdirectories. + # We depend on these for later projects, so they should come first. +-add_subdirectory(third_party) + + if(SHADERC_ENABLE_SPVC) + add_subdirectory(libshaderc_spvc) +@@ -107,13 +106,6 @@ endif() + add_subdirectory(libshaderc_util) + add_subdirectory(libshaderc) + add_subdirectory(glslc) +-add_subdirectory(examples) +- +-add_custom_target(build-version +- ${PYTHON_EXECUTABLE} +- ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py +- ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc +- COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).") + + function(define_pkg_config_file NAME LIBS) + add_custom_target(${NAME}-pkg-config ALL diff --git a/CHANGES b/CHANGES new file mode 100644 index 0000000..ff3ef43 --- /dev/null +++ b/CHANGES @@ -0,0 +1,223 @@ +Revision history for Shaderc + +v2020.1 2020-06-09 + This is the last version that officially supports VS2013. + + - General: + - Added warning signs about unsupported downloads (#1041) + - Added .NET bindings to README.md (#1060) + - Only add -fPIC if supported by the compiler. (#1061) + + - glslc, libshaderc: + - Removed Singleton pattern around access to glslang (#1059) + + - spvc: + - Added concept of comparison sampler to API (#1036) + - Added support for options.hlsl.nonwritable_uav_texture_as_srv (#1048) + - Support forcing storage buffers to be always declared as UAV. (#1076) + +v2020.0 2020-03-06 + - General: + - Getting spirv.hpp from SPIRV-Headers instead of not glslang (#992) + - Added clarification about status of artifacts in downloads.md (#1012) + + - glslc, libshaderc: + - Added support for new Glslang profile enum, EProfileCount (#973) + - Updated user documentation for -S in glslc (#978) + - Add documentation for Vulkan 1.2 and SPIR-V 1.5 (#980) + - Removed NV_EXTENSIONS conditionals (#1003) + - Added support for generating WebGPU SPIR-V to libshaderc (#1021) + - Rolled in all DEPS for provisional SPIR-V extensions for raytracing + + - spvc: + - Normalized API behaviour (#967) + - Added source_set target for libshaderc_spvc (#976) + - Added in support for spvc logging to the terminal (#981) + - Internal refactoring to reduce boiler plate in API implementations (#984) + - Added newline to logging messages to make them readable (#985) + - Added reflection support for Dawn: + - storage textures (#1001) + - storage texture format (#1005) + - texture dimension for storage textures (#1008) + - is storage texture declared as multisampled texture (#1011) + - Converted compile options to require explicit environments (#1019) + - Added knob to control force_zero_initialized_variables in SPIRV-Cross (#1028) + +v2019.1 2020-01-22 + - glslc, libshaderc: + - Add -fnan-clamp: Generate code for max and min builtins so that, + given a NaN operand, will return the other operand. Similarly, the + clamp builtin favours non-NaN operands, as if clamp was implemented + as the composition of max and min. + - Add -finvert-y + - Using SetBeforeHlslLegalization for more relaxed validation rules + - Added support for SPIR-V 1.5 + - Add --emit-line-directive option + - Added support for Vulkan 1.2 + - spvc: + - Add many options: + --flatten-multidimensional-arrays + --es + --no-es + --glsl-emit-push-constant-as-ubo + --msl-swizzle-texture-samples + --msl-platform=ios|macos + --msl-pad-fragment-output + --msl-capture-output + --msl-domain-lower-left + --msl-argument-buffers + --msl-discrete-descriptor-set= + --hlsl-enable-compat + - Reintroduce shaderc_spvc_compile_options_set_shader_model + - Added option to inject robust buffer access code + - Added support for emitting ToVulkan shaders + - Added spirv-opt based IR generation as alternative to built in spirv_cross IR gen + - Added API for specifying source and target execution environments + - Added option & reflection API methods neede by Dawn + - Substantial internal refactoring and code cleanup + - Large number of breaking changes to the API + - Replaced shaderc_spvc_compile_options_set_shader_model with + shaderc_spvc_compile_options_set_hlsl_shader_model + - Compiler initialization and shader generation moved into seperate calls + - Seperated return codes from shaderc ones + - Many small API changes + - Improvements to testing + - Refactoring and clean up of run_spirv_cross_tests.py + - Seperation of expectations into known failures, known invalids, and cases + that need investigation + - Tweaks and fixes to substantially increase passing cases + - Added support for running tests using spvc IR generation + - Infrastructure + - Update DEPS with cross-verified commits from associated repos. + - Add utils/roll-deps + - Infrastructure: + - Removed Appveyor artifacts link + - Improvements and clean up of DEPS rolling scripts + - Enabled warnings about implicit fallthrough + - Enabled improper semicolon warnings + - Restricted -fPIC to platforms that support it + - Converted remaining scripts to use Python 3 + - Replaced nosetest with unittest + - Removed assumptions aabout location of spirv-tools, effcee, and RE2 + - Migrated BUILD.gn spirv_cross dependency to local repo + - Fixes: + - Fix duplicate install paths when using VisualStudio + - Fixed BUILD.gn for Chromium, Dawn & Fuchsia + - Explicitly enabled HLSL support in glslang + - Added installing necessary headers in Android.mk + - Removed unsupported Unicode characters + - Fixed detection of spirv-headers directory + #666: Update Docker file to use Python3 + +v2019.0 2019-06-04 + - Add optional spvc, libshaderc_spvc as wrapper around SPIRV-Cross: + - Rejects bad modules by running the SPIR-V validator first + - Skips exception-heavy SPIRV-Cross SPIR-V parser + - Support NV extensions for shader stages + - Require SPIRV-Tools and SPIRV-Headers with SPIR-V 1.4 support + Build support: + - Use KhronosGroup/glslang instead of google/glslang + - Stop running tests on VS 2013 (googletest no longer supports VS2013) + - Require Python3 for building + - Support Chromium's GN build system + - Kokoro build fixes + - Cmake build fixes: Only build subdirs if those targets are not yet defined + - Use Android.mk from Glslang + - Dockerfile gets re2 and effcee sources + - Fixes for newer googletest + - Add address sanitizer presubmit bot + - Generate config files for pkg-config + Spvc: + - Add option to specify source environment. Spvc will transform from source + to target environment if they are different. This only works for WebGPU0 + and Vulkan 1.1. + Fixes: + #499: In HLSL compilation, relax layout and logical pointer validation rules + prior to running the legalization recipe. + +v2018.0 2018-10-01 + - Support -fhlsl_functionality1 (also -fhlsl-functionality1) + - Support NVIDIA Turing extensions. Requires updated Glslang and SPIRV-Tools. + - Use SPIR-V optimization and HLSL legalization recipes from SPIRV-Tools. + - Pass target environment into SPIRV-Tools code, e.g. from --target-env vulkan1.1 + - Add SONAME=1 property to shared library + - Support GN build for Chromium + Fixes: + #469: Add virtual dtor to classes with virtual functions. + #457: Fix writing SPIR-V binaries to standard output on Windows. + +v2017.2 2018-02-27 + - Add a shared library version of libshaderc + - Support GLSL 4.6 and ESSL 3.2 + - Fail compilation if a resource does not have a binding. + - Add options for automatically setting bindings for (uniform) resources that + don't have bindings set in shader source. + - Add options for automatically setting locations for pipline inputs and outputs. + - Add option for using HLSL IO mappings as expressed in source. + - Add options for setting resource binding base numbers. + - Add option to use HLSL resource register numbers for bindings. + - HLSL compilation now defaults to HLSL packing rules. + (This change is inherited from Glslang commit 7cca140.) + - HLSL compilation runs SPIR-V "legalization" transforms to reduce + manipulation of opaque handles (e.g. images), to satisfy Vulkan rules. + - Adapt to Glslang generator version numbers: + - To 2: a fix for code generation for atomicCounterDecrement. + - To 3: change memory barrier semantics masks + - To 4: generate more access chains for swizzles + - CMake install rules uses GNUInstallDirs. For example, install to lib64 + when that is the norm for the target system. + +v2017.1 2017-03-10 + - Add option to automatically assign bindings to uniform variables + that don't have an explicit 'binding' layout in the shader source. + - Enable NVIDIA extensions by default in GLSL compilation + - README mentions language bindings provided by 3rd parties. + - README describes the known-good branch on GitHub + - Fixed examples in shaderc.h; added C API use to examples/online-compile + - Fixes issues: + #289: Don't output an object file when compilation fails. + #296: Enable use of the CMake in Android Studio. + +v2016.2 2016-12-13 + - Describe Shaderc's level of stability. + - Support HLSL compilation, exposing functionality in Glslang. + - Supported in C, C++ API + - glslc accepts "-x hlsl", and assumes .hlsl files are HLSL. + - glslc accepts "-fentry-point=" to set entry point name, + overriding default value "main". + - Support setting shader resource limits in C, C++ APIs, and in + glslc + - glslc adds -flimit= + - glslc adds --show-limits to display defaults and valid resource + limit syntax. + - glslc adds "-flimit-file " support to read Glslang resource + configuration files, i.e. the output of "glslangValidator -c". + - Enable AMD extensions by default in GLSL compilation + - Fixes issues: + #281: Work around Android build issue with abspath on Windows + #283: Increase default maxDrawBuffers to 4, to match Vulkan/GLES3.0 + +v2016.1 2016-10-12 + - C API for assembling now takes an options object + - Support compilation options to optimize for size. + - Maintain compatibility with recent SPIRV-Tools and Glslang versions. + - Update examples. + - Build cleanups. + - Fixes issues: + #238: Fix invocation of python scripts during build + +v2016.0 2016-07-07 + + - Adds v. versioning, with "-dev" suffix to indicate work in + progress. The intent is to summarize and report functionalities more easily + for incorporating into downstream projects. + + - Summary of functionalities (See the README.md for more details): + - Provides libraries and command line tools for generating SPIR-V modules + - Supports GLSL source code or SPIR-V assembly as input + - Supports SPIR-V binary or assembly text as output + - Command line options follow GCC/Clang conventions + - Supports various semantics (OpenGL, OpenGL Compatible and Vulkan) + - Supports #include + - Supports user-defined macros + - Supports dependency information dumping diff --git a/README.md b/README.md new file mode 100644 index 0000000..27579fc --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# shaderc + +The shaderc package \ No newline at end of file diff --git a/glslang_linker_flags.patch b/glslang_linker_flags.patch new file mode 100644 index 0000000..9324f21 --- /dev/null +++ b/glslang_linker_flags.patch @@ -0,0 +1,24 @@ +--- a/libshaderc_util/CMakeLists.txt ++++ b/libshaderc_util/CMakeLists.txt +@@ -47,7 +47,7 @@ + find_package(Threads) + target_link_libraries(shaderc_util PRIVATE + glslang OSDependent OGLCompiler HLSL glslang SPIRV +- SPIRV-Tools-opt ${CMAKE_THREAD_LIBS_INIT}) ++ SPIRV-Tools-opt MachineIndependent GenericCodeGen ${CMAKE_THREAD_LIBS_INIT}) + + shaderc_add_tests( + TEST_PREFIX shaderc_util + +--- a/glslc/CMakeLists.txt ++++ b/glslc/CMakeLists.txt +@@ -43,7 +43,7 @@ + endif(SHADERC_ENABLE_WGSL_OUTPUT) + + target_link_libraries(glslc PRIVATE +- glslang OSDependent OGLCompiler HLSL glslang SPIRV # Glslang libraries ++ glslang OSDependent OGLCompiler HLSL glslang SPIRV MachineIndependent GenericCodeGen # Glslang libraries + $<$:libtint> # Tint libraries, optional + shaderc_util shaderc # internal Shaderc libraries + ${CMAKE_THREAD_LIBS_INIT}) + diff --git a/shaderc.spec b/shaderc.spec new file mode 100644 index 0000000..19a2ee2 --- /dev/null +++ b/shaderc.spec @@ -0,0 +1,162 @@ +# Force out of source build +%undefine __cmake_in_source_build + +# Release 2020.2 +%global commit 4162bb13b426dab68ebe411ea7ef05f6343bea95 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global snapshotdate 20200808 + +# Glslang revision from packaged version +%global glslang_version SDK-candidate-2-11-gc9b28b9f + +Name: shaderc +Version: 2020.2 +Release: 1%{?dist} +Summary: A collection of tools, libraries, and tests for Vulkan shader compilation + +License: ASL 2.0 +URL: https://github.com/google/shaderc +Source0: %url/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +# Patch to unbundle 3rd party code +Patch1: 0001-Drop-third-party-code-in-CMakeLists.txt.patch +Patch2: glslang_linker_flags.patch + +BuildRequires: cmake3 +BuildRequires: gcc-c++ +BuildRequires: ninja-build +BuildRequires: python3-devel +BuildRequires: glslang-devel +BuildRequires: spirv-headers-devel +BuildRequires: spirv-tools +BuildRequires: spirv-tools-devel + +%description +A collection of tools, libraries and tests for shader compilation. + +Shaderc aims to to provide: + - a command line compiler with GCC- and Clang-like usage, for better + integration with build systems + - an API where functionality can be added without breaking existing clients + - an API supporting standard concurrency patterns across multiple + operating systems + - increased functionality such as file #include support + +%package -n glslc +Summary: A command line compiler for GLSL/HLSL to SPIR-V + +%description -n glslc +A command line compiler for GLSL/HLSL to SPIR-V. + +%package -n libshaderc +Summary: A library for compiling shader strings into SPIR-V + +%description -n libshaderc +A library for compiling shader strings into SPIR-V. + +%package -n libshaderc-devel +Summary: Development files for libshaderc +Requires: libshaderc%{?_isa} = %{version}-%{release} + +%description -n libshaderc-devel +A library for compiling shader strings into SPIR-V. + +Development files for libshaderc. + +%package -n libshaderc-static +Summary: A library for compiling shader strings into SPIR-V (static libraries) + +%description -n libshaderc-static +A library for compiling shader strings into SPIR-V. + +Static libraries for libshaderc. + +%prep +%autosetup -p1 -n %{name}-%{commit} + +rm -rf third_party + +# Stolen from Gentoo +# Create build-version.inc since we want to use our packaged +# SPIRV-Tools and glslang +echo \"shaderc $(grep -m1 -o '^v[[:digit:]]\{4\}\.[[:digit:]]\(-dev\)\? [[:digit:]]\{4\}-[[:digit:]]\{2\}-[[:digit:]]\{2\}$' CHANGES)\" \ + > glslc/src/build-version.inc +echo \"spirv-tools $(grep -m1 -o '^v[[:digit:]]\{4\}\.[[:digit:]]\(-dev\)\? [[:digit:]]\{4\}-[[:digit:]]\{2\}-[[:digit:]]\{2\}$' /usr/share/doc/spirv-tools/CHANGES)\" \ + >> glslc/src/build-version.inc +echo \"glslang %{glslang_version}\" >> glslc/src/build-version.inc + +# Point to correct include +sed -i 's|SPIRV/GlslangToSpv.h|glslang/SPIRV/GlslangToSpv.h|' libshaderc_util/src/compiler.cc + +%build +# We disable the tests because they don't work with our unbundling of 3rd party. +# See https://github.com/google/shaderc/issues/470 +%cmake3 -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_SKIP_RPATH=True \ + -DSHADERC_SKIP_TESTS=True \ + -DPYTHON_EXE=%{__python3} \ + -GNinja +%cmake3_build + +%install +%cmake3_install + +%check +%ctest3 + +%files -n glslc +%doc glslc/README.asciidoc +%license LICENSE +%{_bindir}/glslc + +%files -n libshaderc +%doc AUTHORS CHANGES CONTRIBUTORS README.md +%license LICENSE +%{_libdir}/libshaderc_shared.so.1* + +%files -n libshaderc-devel +%{_includedir}/%{name}/ +%{_libdir}/libshaderc_shared.so +%{_libdir}/pkgconfig/shaderc.pc + +%files -n libshaderc-static +%license LICENSE +%{_libdir}/libshaderc.a +%{_libdir}/libshaderc_combined.a +%{_libdir}/pkgconfig/shaderc_static.pc +%{_libdir}/pkgconfig/shaderc_combined.pc + +%changelog +* Sat Aug 08 2020 Robert-André Mauchin - 2020.2-1 +- Update to 2020.2 + +* Sat Aug 01 2020 Fedora Release Engineering - 2020.1-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 2020.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jun 17 20:15:27 CEST 2020 Robert-André Mauchin - 2020.1-1 +- Update to 2020.1 + +* Sun Feb 02 20:53:01 CET 2020 Robert-André Mauchin - 2019.1-1 +- Update to 2019.1 + +* Thu Jan 30 2020 Fedora Release Engineering - 2019.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 2019.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jun 10 00:18:18 CEST 2019 Robert-André Mauchin - 2019.0-1 +- Release 2019.0 + +* Sat Feb 02 2019 Fedora Release Engineering - 2018.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Oct 03 2018 Robert-André Mauchin - 2018.0-1 +- Release 2018.0 + +* Mon Sep 24 2018 Robert-André Mauchin - 2017.2-1 +- Initial build + diff --git a/sources b/sources new file mode 100644 index 0000000..b28928c --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (shaderc-4162bb1.tar.gz) = 30be976ed1d366428eae4592a201260e2b310350c181000c2fb2099553a7bcd4f964191973bbcbe96968fd6c37c18cc4819f642938e3d772dbffc28d0abc4fe7