diff options
author | Hunter Sezen <orbea@riseup.net> | 2020-11-06 21:57:38 +0000 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2020-11-07 14:02:26 +0700 |
commit | 35bf831af31fbbf162841eb670c61d0a48fa0520 (patch) | |
tree | 3d527d9ae9bfb29526cb14df918d97e8e1c8c4b3 /graphics/SPIRV-Tools/build-shared.patch | |
parent | a5b1414db9fd394546fedce1b0b4ffb7f004fc08 (diff) |
graphics/SPIRV-Tools: Added (API+commands to process SPIR-V modules)
Signed-off-by: Dave Woodfall <dave@slackbuilds.org>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'graphics/SPIRV-Tools/build-shared.patch')
-rw-r--r-- | graphics/SPIRV-Tools/build-shared.patch | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/graphics/SPIRV-Tools/build-shared.patch b/graphics/SPIRV-Tools/build-shared.patch new file mode 100644 index 0000000000000..0bee8ba4a39f0 --- /dev/null +++ b/graphics/SPIRV-Tools/build-shared.patch @@ -0,0 +1,367 @@ +From 7403dfafd8a4b7216343dd9be891e540a5f30240 Mon Sep 17 00:00:00 2001 +From: Ben Clayton <bclayton@google.com> +Date: Thu, 29 Oct 2020 13:25:26 +0000 +Subject: [PATCH] CMake: Add SPIRV_TOOLS_BUILD_STATIC flag (#3910) + +If enabled the following targets will be created: + +* `${SPIRV_TOOLS}-static` - `STATIC` library. Has full public symbol visibility. +* `${SPIRV_TOOLS}-shared` - `SHARED` library. Has default-hidden symbol visibility. +* `${SPIRV_TOOLS}` - will alias to one of above, based on BUILD_SHARED_LIBS. + +If disabled the following targets will be created: + +* `${SPIRV_TOOLS}` - either `STATIC` or `SHARED` based on the new `SPIRV_TOOLS_LIBRARY_TYPE` flag. Has full public symbol visibility. +* `${SPIRV_TOOLS}-shared` - `SHARED` library. Has default-hidden symbol visibility. + +Defaults to `ON`, matching existing build behavior. + +This flag can be used by package maintainers to ensure that all libraries are built as shared objects. +--- + CMakeLists.txt | 40 +++++++++++++++++++++ + source/CMakeLists.txt | 70 +++++++++++++++++++----------------- + source/fuzz/CMakeLists.txt | 2 +- + source/link/CMakeLists.txt | 2 +- + source/opt/CMakeLists.txt | 4 +-- + source/reduce/CMakeLists.txt | 4 +-- + test/CMakeLists.txt | 6 ++-- + test/val/CMakeLists.txt | 10 +++--- + tools/CMakeLists.txt | 16 ++++----- + 9 files changed, 100 insertions(+), 54 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 30dde20a44..55f84e6d81 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -132,6 +132,46 @@ if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS) + add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS}) + endif() + ++# Library build setting definitions: ++# ++# * SPIRV_TOOLS_BUILD_STATIC - ON or OFF - Defaults to ON. ++# If enabled the following targets will be created: ++# ${SPIRV_TOOLS}-static - STATIC library. ++# Has full public symbol visibility. ++# ${SPIRV_TOOLS}-shared - SHARED library. ++# Has default-hidden symbol visibility. ++# ${SPIRV_TOOLS} - will alias to one of above, based on BUILD_SHARED_LIBS. ++# If disabled the following targets will be created: ++# ${SPIRV_TOOLS} - either STATIC or SHARED based on SPIRV_TOOLS_LIBRARY_TYPE. ++# Has full public symbol visibility. ++# ${SPIRV_TOOLS}-shared - SHARED library. ++# Has default-hidden symbol visibility. ++# ++# * SPIRV_TOOLS_LIBRARY_TYPE - SHARED or STATIC. ++# Specifies the library type used for building SPIRV-Tools libraries. ++# Defaults to SHARED when BUILD_SHARED_LIBS=1, otherwise STATIC. ++# ++# * SPIRV_TOOLS_FULL_VISIBILITY - "${SPIRV_TOOLS}-static" or "${SPIRV_TOOLS}" ++# Evaluates to the SPIRV_TOOLS target library name that has no hidden symbols. ++# This is used by internal targets for accessing symbols that are non-public. ++# Note this target provides no API stability guarantees. ++# ++# Ideally, all of these will go away - see https://github.com/KhronosGroup/SPIRV-Tools/issues/3909. ++option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS}-static target. ${SPIRV_TOOLS} will alias to ${SPIRV_TOOLS}-static or ${SPIRV_TOOLS}-shared based on BUILD_SHARED_LIBS" ON) ++if(SPIRV_TOOLS_BUILD_STATIC) ++ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static) ++ set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC") ++else(SPIRV_TOOLS_BUILD_STATIC) ++ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}) ++ if (NOT DEFINED SPIRV_TOOLS_LIBRARY_TYPE) ++ if(BUILD_SHARED_LIBS) ++ set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED") ++ else() ++ set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC") ++ endif() ++ endif() ++endif(SPIRV_TOOLS_BUILD_STATIC) ++ + function(spvtools_default_compile_options TARGET) + target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS}) + +diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt +index fa900e03e1..65087f2c93 100644 +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -346,58 +346,64 @@ set_source_files_properties( + + spvtools_pch(SPIRV_SOURCES pch_source) + +-add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES}) +-spvtools_default_compile_options(${SPIRV_TOOLS}-static) +-target_include_directories(${SPIRV_TOOLS}-static +- PUBLIC +- $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include> +- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> +- PRIVATE ${spirv-tools_BINARY_DIR} +- PRIVATE ${SPIRV_HEADER_INCLUDE_DIR} ++# spirv_tools_default_target_options() sets the target options that are common ++# for all ${SPIRV_TOOLS} targets. ++function(spirv_tools_default_target_options target) ++ spvtools_default_compile_options(${target}) ++ target_include_directories(${target} ++ PUBLIC ++ $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include> ++ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> ++ PRIVATE ${spirv-tools_BINARY_DIR} ++ PRIVATE ${SPIRV_HEADER_INCLUDE_DIR} + ) +-set_property(TARGET ${SPIRV_TOOLS}-static PROPERTY FOLDER "SPIRV-Tools libraries") +-spvtools_check_symbol_exports(${SPIRV_TOOLS}-static) +-add_dependencies(${SPIRV_TOOLS}-static core_tables enum_string_mapping extinst_tables) +- +-# The static target does not have the '-static' suffix. +-set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}") ++ set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools libraries") ++ spvtools_check_symbol_exports(${target}) ++ add_dependencies(${target} core_tables enum_string_mapping extinst_tables) ++endfunction() + ++# Always build ${SPIRV_TOOLS}-shared. This is expected distro packages, and ++# unlike the other SPIRV_TOOLS target, defaults to hidden symbol visibility. + add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES}) +-spvtools_default_compile_options(${SPIRV_TOOLS}-shared) +-target_include_directories(${SPIRV_TOOLS}-shared +- PUBLIC +- $<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include> +- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> +- PRIVATE ${spirv-tools_BINARY_DIR} +- PRIVATE ${SPIRV_HEADER_INCLUDE_DIR} +- ) ++spirv_tools_default_target_options(${SPIRV_TOOLS}-shared) + set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES CXX_VISIBILITY_PRESET hidden) +-set_property(TARGET ${SPIRV_TOOLS}-shared PROPERTY FOLDER "SPIRV-Tools libraries") +-spvtools_check_symbol_exports(${SPIRV_TOOLS}-shared) + target_compile_definitions(${SPIRV_TOOLS}-shared + PRIVATE SPIRV_TOOLS_IMPLEMENTATION + PUBLIC SPIRV_TOOLS_SHAREDLIB + ) +-add_dependencies(${SPIRV_TOOLS}-shared core_tables enum_string_mapping extinst_tables) + +-# Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static" +-# or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS. +-if(BUILD_SHARED_LIBS) ++if(SPIRV_TOOLS_BUILD_STATIC) ++ add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES}) ++ spirv_tools_default_target_options(${SPIRV_TOOLS}-static) ++ # The static target does not have the '-static' suffix. ++ set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}") ++ ++ # Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static" ++ # or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS. ++ if(BUILD_SHARED_LIBS) + add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-shared) +-else() ++ else() + add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-static) ++ endif() ++ ++ set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared) ++else() ++ add_library(${SPIRV_TOOLS} ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_SOURCES}) ++ spirv_tools_default_target_options(${SPIRV_TOOLS}) ++ set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS} ${SPIRV_TOOLS}-shared) + endif() + + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + find_library(LIBRT rt) + if(LIBRT) +- target_link_libraries(${SPIRV_TOOLS}-static ${LIBRT}) +- target_link_libraries(${SPIRV_TOOLS}-shared ${LIBRT}) ++ foreach(target ${SPIRV_TOOLS_TARGETS}) ++ target_link_libraries(${target} ${LIBRT}) ++ endforeach() + endif() + endif() + + if(ENABLE_SPIRV_TOOLS_INSTALL) +- install(TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared EXPORT ${SPIRV_TOOLS}Targets ++ install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +diff --git a/source/fuzz/CMakeLists.txt b/source/fuzz/CMakeLists.txt +index 63a6625177..d3aa9f1e03 100644 +--- a/source/fuzz/CMakeLists.txt ++++ b/source/fuzz/CMakeLists.txt +@@ -447,7 +447,7 @@ if(SPIRV_BUILD_FUZZER) + + # The fuzzer reuses a lot of functionality from the SPIRV-Tools library. + target_link_libraries(SPIRV-Tools-fuzz +- PUBLIC ${SPIRV_TOOLS}-static ++ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY} + PUBLIC SPIRV-Tools-opt + PUBLIC SPIRV-Tools-reduce + PUBLIC protobuf::libprotobuf) +diff --git a/source/link/CMakeLists.txt b/source/link/CMakeLists.txt +index bb058ea226..c8dd2f7153 100644 +--- a/source/link/CMakeLists.txt ++++ b/source/link/CMakeLists.txt +@@ -11,7 +11,7 @@ + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. +-add_library(SPIRV-Tools-link STATIC ++add_library(SPIRV-Tools-link ${SPIRV_TOOLS_LIBRARY_TYPE} + linker.cpp + ) + +diff --git a/source/opt/CMakeLists.txt b/source/opt/CMakeLists.txt +index 3630a06051..fa74690882 100644 +--- a/source/opt/CMakeLists.txt ++++ b/source/opt/CMakeLists.txt +@@ -233,7 +233,7 @@ endif() + + spvtools_pch(SPIRV_TOOLS_OPT_SOURCES pch_source_opt) + +-add_library(SPIRV-Tools-opt STATIC ${SPIRV_TOOLS_OPT_SOURCES}) ++add_library(SPIRV-Tools-opt ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_TOOLS_OPT_SOURCES}) + + spvtools_default_compile_options(SPIRV-Tools-opt) + target_include_directories(SPIRV-Tools-opt +@@ -245,7 +245,7 @@ target_include_directories(SPIRV-Tools-opt + ) + # We need the assembling and disassembling functionalities in the main library. + target_link_libraries(SPIRV-Tools-opt +- PUBLIC ${SPIRV_TOOLS}-static) ++ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY}) + + set_property(TARGET SPIRV-Tools-opt PROPERTY FOLDER "SPIRV-Tools libraries") + spvtools_check_symbol_exports(SPIRV-Tools-opt) +diff --git a/source/reduce/CMakeLists.txt b/source/reduce/CMakeLists.txt +index e113ca2554..a3291c77b2 100644 +--- a/source/reduce/CMakeLists.txt ++++ b/source/reduce/CMakeLists.txt +@@ -78,7 +78,7 @@ endif() + + spvtools_pch(SPIRV_TOOLS_REDUCE_SOURCES pch_source_reduce) + +-add_library(SPIRV-Tools-reduce STATIC ${SPIRV_TOOLS_REDUCE_SOURCES}) ++add_library(SPIRV-Tools-reduce ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_TOOLS_REDUCE_SOURCES}) + + spvtools_default_compile_options(SPIRV-Tools-reduce) + target_include_directories(SPIRV-Tools-reduce +@@ -90,7 +90,7 @@ target_include_directories(SPIRV-Tools-reduce + ) + # The reducer reuses a lot of functionality from the SPIRV-Tools library. + target_link_libraries(SPIRV-Tools-reduce +- PUBLIC ${SPIRV_TOOLS}-static ++ PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY} + PUBLIC SPIRV-Tools-opt) + + set_property(TARGET SPIRV-Tools-reduce PROPERTY FOLDER "SPIRV-Tools libraries") +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 5dd4036c2a..8ede58bfa6 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -159,12 +159,12 @@ spvtools_pch(TEST_SOURCES pch_test) + add_spvtools_unittest( + TARGET spirv_unit_tests + SRCS ${TEST_SOURCES} +- LIBS ${SPIRV_TOOLS}-static) ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) + + add_spvtools_unittest( + TARGET c_interface + SRCS c_interface_test.cpp +- LIBS ${SPIRV_TOOLS}-static) ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) + + add_spvtools_unittest( + TARGET c_interface_shared +@@ -181,7 +181,7 @@ if (${SPIRV_TIMER_ENABLED}) + add_spvtools_unittest( + TARGET timer + SRCS timer_test.cpp +- LIBS ${SPIRV_TOOLS}-static) ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) + endif() + + +diff --git a/test/val/CMakeLists.txt b/test/val/CMakeLists.txt +index c458a2f93a..153a91670c 100644 +--- a/test/val/CMakeLists.txt ++++ b/test/val/CMakeLists.txt +@@ -41,21 +41,21 @@ add_spvtools_unittest(TARGET val_abcde + val_extension_spv_khr_terminate_invocation.cpp + val_ext_inst_test.cpp + ${VAL_TEST_COMMON_SRCS} +- LIBS ${SPIRV_TOOLS}-static ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY} + PCH_FILE pch_test_val + ) + + add_spvtools_unittest(TARGET val_capability + SRCS + val_capability_test.cpp +- LIBS ${SPIRV_TOOLS}-static ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY} + PCH_FILE pch_test_val + ) + + add_spvtools_unittest(TARGET val_limits + SRCS val_limits_test.cpp + ${VAL_TEST_COMMON_SRCS} +- LIBS ${SPIRV_TOOLS}-static ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY} + PCH_FILE pch_test_val + ) + +@@ -76,7 +76,7 @@ add_spvtools_unittest(TARGET val_fghijklmnop + val_opencl_test.cpp + val_primitives_test.cpp + ${VAL_TEST_COMMON_SRCS} +- LIBS ${SPIRV_TOOLS}-static ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY} + PCH_FILE pch_test_val + ) + +@@ -91,6 +91,6 @@ add_spvtools_unittest(TARGET val_stuvw + val_version_test.cpp + val_webgpu_test.cpp + ${VAL_TEST_COMMON_SRCS} +- LIBS ${SPIRV_TOOLS}-static ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY} + PCH_FILE pch_test_val + ) +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +index 67d606a849..124a33281a 100644 +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -40,19 +40,19 @@ function(add_spvtools_tool) + endfunction() + + if (NOT ${SPIRV_SKIP_EXECUTABLES}) +- add_spvtools_tool(TARGET spirv-as SRCS as/as.cpp LIBS ${SPIRV_TOOLS}-static) +- add_spvtools_tool(TARGET spirv-dis SRCS dis/dis.cpp LIBS ${SPIRV_TOOLS}-static) +- add_spvtools_tool(TARGET spirv-val SRCS val/val.cpp util/cli_consumer.cpp LIBS ${SPIRV_TOOLS}-static) +- add_spvtools_tool(TARGET spirv-opt SRCS opt/opt.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-opt ${SPIRV_TOOLS}-static) ++ add_spvtools_tool(TARGET spirv-as SRCS as/as.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) ++ add_spvtools_tool(TARGET spirv-dis SRCS dis/dis.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) ++ add_spvtools_tool(TARGET spirv-val SRCS val/val.cpp util/cli_consumer.cpp LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) ++ add_spvtools_tool(TARGET spirv-opt SRCS opt/opt.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-opt ${SPIRV_TOOLS_FULL_VISIBILITY}) + if (NOT DEFINED IOS_PLATFORM) # iOS does not allow std::system calls which spirv-reduce requires +- add_spvtools_tool(TARGET spirv-reduce SRCS reduce/reduce.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-reduce ${SPIRV_TOOLS}-static) ++ add_spvtools_tool(TARGET spirv-reduce SRCS reduce/reduce.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-reduce ${SPIRV_TOOLS_FULL_VISIBILITY}) + endif() +- add_spvtools_tool(TARGET spirv-link SRCS link/linker.cpp LIBS SPIRV-Tools-link ${SPIRV_TOOLS}-static) ++ add_spvtools_tool(TARGET spirv-link SRCS link/linker.cpp LIBS SPIRV-Tools-link ${SPIRV_TOOLS_FULL_VISIBILITY}) + add_spvtools_tool(TARGET spirv-cfg + SRCS cfg/cfg.cpp + cfg/bin_to_dot.h + cfg/bin_to_dot.cpp +- LIBS ${SPIRV_TOOLS}-static) ++ LIBS ${SPIRV_TOOLS_FULL_VISIBILITY}) + target_include_directories(spirv-cfg PRIVATE ${spirv-tools_SOURCE_DIR} + ${SPIRV_HEADER_INCLUDE_DIR}) + set(SPIRV_INSTALL_TARGETS spirv-as spirv-dis spirv-val spirv-opt +@@ -62,7 +62,7 @@ if (NOT ${SPIRV_SKIP_EXECUTABLES}) + endif() + + if(SPIRV_BUILD_FUZZER) +- add_spvtools_tool(TARGET spirv-fuzz SRCS fuzz/fuzz.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-fuzz ${SPIRV_TOOLS}-static) ++ add_spvtools_tool(TARGET spirv-fuzz SRCS fuzz/fuzz.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-fuzz ${SPIRV_TOOLS_FULL_VISIBILITY}) + set(SPIRV_INSTALL_TARGETS ${SPIRV_INSTALL_TARGETS} spirv-fuzz) + endif(SPIRV_BUILD_FUZZER) + |