summaryrefslogtreecommitdiff
path: root/dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch')
-rw-r--r--dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch b/dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch
new file mode 100644
index 000000000000..48afd5a736f1
--- /dev/null
+++ b/dev-util/spirv-tools/files/spirv-tools-1.3.211-cmake-librt.patch
@@ -0,0 +1,40 @@
+https://github.com/KhronosGroup/SPIRV-Tools/commit/cb96abbf7affd986016f17dd09f9f971138a922b
+
+From: Chad Versace <chad@kiwitree.net>
+Date: Thu, 14 Apr 2022 06:04:12 -0700
+Subject: [PATCH] Fix CMake for librt (#4773)
+
+In the installed file
+/usr/lib64/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake, occurences of
+librt in the INTERFACE_LINK_LIBRARIES property are incorrect. The
+property contains the absolute path to librt. In most situations, this
+produces no problem. But when building in a sysroot, which is commonly
+done when cross-compiling, the absolute path breaks dependent projects.
+
+For example, when building spirv-tools using the Chrome OS SDK, and
+targeting the board 'volteer', where the build sysroot is
+'/build/volteer', the file includes this line
+ INTERFACE_LINK_LIBRARIES "/build/volteer/usr/lib64/librt.so"
+when it should instead say
+ INTERFACE_LINK_LIBRARIES "rt"
+
+The CMake documentation agrees [1]:
+ Note that it is not advisable to populate the
+ INTERFACE_LINK_LIBRARIES of a target with absolute paths to
+ dependencies. That would hard-code into installed packages the
+ library file paths for dependencies as found on the machine the
+ package was made on.
+
+[1] https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_LINK_LIBRARIES.html
+--- a/source/CMakeLists.txt
++++ b/source/CMakeLists.txt
+@@ -407,7 +407,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ find_library(LIBRT rt)
+ if(LIBRT)
+ foreach(target ${SPIRV_TOOLS_TARGETS})
+- target_link_libraries(${target} ${LIBRT})
++ target_link_libraries(${target} rt)
+ endforeach()
+ endif()
+ endif()
+