I'm not sure I understand the desired outcome properly. Does this patch native llvm-config according to the target libdir, or according to the build host libdir? The first one is not correct (native items must be reusable between targets), the second one is not solving the problem?
Alex On Sun, 13 Nov 2022 at 09:44, Vincent Davis Jr <vi...@underview.tech> wrote: > > Problem occurs when native llvm-config binary is > required by another recipe. RUNPATH is hardcoded > to $ORIGIN/../lib:$ORIGIN/../../lib which depending > upon architecture 'lib' directory name may vary > (i.e 'lib64'). > > Commit fixes issue by updating rpath on binary to include > architecture dependent directory name. > > Commit also fixes issue with llvm-config --libdir command > by setting LLVM_LIBDIR_SUFFIX. Command will return proper > architecture dependent directory name. > > Signed-off-by: Vincent Davis Jr <vi...@underview.tech> > --- > meta/recipes-devtools/llvm/llvm_git.bb | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/meta/recipes-devtools/llvm/llvm_git.bb > b/meta/recipes-devtools/llvm/llvm_git.bb > index 1f47e5d0fb..29eb119be5 100644 > --- a/meta/recipes-devtools/llvm/llvm_git.bb > +++ b/meta/recipes-devtools/llvm/llvm_git.bb > @@ -56,6 +56,14 @@ def get_llvm_arch(bb, d, arch_var): > def get_llvm_host_arch(bb, d): > return get_llvm_arch(bb, d, 'HOST_ARCH') > > +def get_llvm_libdir_suffix(bb, d): > + import re > + arch = d.getVar('HOST_ARCH') > + if re.match(r'(x86.64)$', arch): > + return 64 > + else: > + return "" > + > PACKAGECONFIG ??= "" > # if optviewer OFF, force the modules to be not found or the ones on the > host would be found > PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF > -DPY_PYGMENTS_LEXERS_C_CPP_FOUND=OFF -DPY_YAML_FOUND=OFF,python3-pygments > python3-pyyaml,python3-pygments python3-pyyaml" > @@ -64,6 +72,7 @@ PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF > -DPY_PYGMENTS_LEXERS_C_CPP_ > # Default to build all OE-Core supported target arches (user overridable). > # > LLVM_TARGETS ?= "AMDGPU;${@get_llvm_host_arch(bb, d)}" > +LLVM_TARGET_LIBDIR_SUFFIX ?= "${@get_llvm_libdir_suffix(bb, d)}" > > ARM_INSTRUCTION_SET:armv5 = "arm" > ARM_INSTRUCTION_SET:armv4t = "arm" > @@ -83,6 +92,10 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ > -DCMAKE_BUILD_TYPE=Release \ > -G Ninja" > > +EXTRA_OECMAKE:append:class-native = "\ > + -DLLVM_LIBDIR_SUFFIX=${LLVM_TARGET_LIBDIR_SUFFIX} \ > + " > + > EXTRA_OECMAKE:append:class-target = "\ > -DCMAKE_CROSSCOMPILING:BOOL=ON \ > -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \ > @@ -129,6 +142,7 @@ do_install:class-native() { > } > > SYSROOT_PREPROCESS_FUNCS:append:class-target = " llvm_sysroot_preprocess" > +SYSROOT_PREPROCESS_FUNCS:append:class-native = " > llvm_sysroot_preprocess_native" > > llvm_sysroot_preprocess() { > install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/ > @@ -136,6 +150,18 @@ llvm_sysroot_preprocess() { > ln -sf llvm-config > ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV} > } > > +# All of LLVM's shipping binaries have an rpath pointing at > ``$ORIGIN/../lib``. > +# Recipe llvm requires llvm-native to compile. When compiling llvm build > libraries > +# are located in $ORIGIN/../lib directory. When the llvm-config binary > required > +# in another recipe depending upon HOST_ARCH variable libraries may be > located > +# in a different directory. Account for both situations here. > +llvm_sysroot_preprocess_native() { > + chrpath --replace > '$ORIGIN'/../lib${LLVM_TARGET_LIBDIR_SUFFIX}:'$ORIGIN'/../../lib${LLVM_TARGET_LIBDIR_SUFFIX}:'$ORIGIN'/../lib:'$ORIGIN'/../../lib > \ > + ${SYSROOT_DESTDIR}${bindir}/llvm-tblgen${PV} > + chrpath --replace > '$ORIGIN'/../lib${LLVM_TARGET_LIBDIR_SUFFIX}:'$ORIGIN'/../../lib${LLVM_TARGET_LIBDIR_SUFFIX}:'$ORIGIN'/../lib:'$ORIGIN'/../../lib > \ > + ${SYSROOT_DESTDIR}${bindir}/llvm-config${PV} > +} > + > PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm > ${PN}-liboptremarks ${PN}-liblto" > > RRECOMMENDS:${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello > ${PN}-liboptremarks" > -- > 2.34.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#173207): https://lists.openembedded.org/g/openembedded-core/message/173207 Mute This Topic: https://lists.openembedded.org/mt/94995332/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-