]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
spirv-tools: fix INTERFACE_LINK_LIBRARIES cmake prop
authorVincent Davis Jr <vince@underview.tech>
Tue, 6 Jun 2023 15:13:35 +0000 (10:13 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 9 Jun 2023 12:53:46 +0000 (13:53 +0100)
The output of spirv-tools specifically SPIRV-ToolsTarget.cmake is
utilized in other recipes. If other recipe utilize cmake and include
SPIRV-Tools in target_link_libraries. I leads to errors such as

error: '../recipe-sysroot/usr/lib',
needed by 'layers/libVkLayer_khronos_validation.so',
missing and no known rule to make it

This is due to cmake pulling in the properties set in
SPIRV-ToolsTarget.cmake. Key property being
INTERFACE_LINK_LIBRARIES.

With the current setup do_install:append:class-target updates
SPIRV-ToolsTarget.cmake package installed file to bellow

set_target_properties(SPIRV-Tools PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
    INTERFACE_LINK_LIBRARIES "${_IMPORT_PREFIX}/lib"
)

set_target_properties(SPIRV-Tools-shared PROPERTIES
    INTERFACE_COMPILE_DEFINITIONS "SPIRV_TOOLS_SHAREDLIB"
    INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
    INTERFACE_LINK_LIBRARIES "${_IMPORT_PREFIX}/lib"
)

If base_libdir isn't lib, but lib64 you get the error
described at the being of commit message as lib directory
doesn't exists.

Solution replace hardcoded "lib" with "${base_libdir}".

Signed-off-by: Vincent Davis Jr <vince@underview.tech>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-graphics/spir/spirv-tools_1.3.243.0.bb

index c57acc5a1169940834172499c90477b5ed8bc780..21f9dd9650f68278c604ce3b06c1edd738b65daa 100644 (file)
@@ -32,7 +32,7 @@ do_install:append:class-target() {
     # Properly set _IMPORT_PREFIX in INTERFACE_LINK_LIBRARIES so that dependent
     # tools can find the right library
     sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
-        -e 's:INTERFACE_LINK_LIBRARIES.*$:INTERFACE_LINK_LIBRARIES "\$\{_IMPORT_PREFIX\}/lib":'
+        -e 's:INTERFACE_LINK_LIBRARIES.*$:INTERFACE_LINK_LIBRARIES "\$\{_IMPORT_PREFIX\}\${base_libdir}":'
 }
 
 # all the libraries are unversioned, so don't pack it on PN-dev