]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
llvm: use default install paths
authorAlexander Kanavin <alex.kanavin@gmail.com>
Thu, 7 Apr 2022 17:00:15 +0000 (19:00 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 19 Apr 2022 13:14:01 +0000 (14:14 +0100)
There was a very brittle sed hack against cpp source code
that allowed installing multiple llvm versions into the same
target/sysroot. Patching with sed is prone to silent
regressions as it can change both too little and too much,
and it indeed it broke with llvm 14. It's also difficult to tell
what the 'right' change should look like.

If this feature is actually needed somewhere, please do it properly:
proper patch and upstream first.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/llvm/llvm_git.bb
meta/recipes-graphics/mesa/mesa.inc

index 13f7fb763efc616073a03913e225902328534528..e10348a7f271fae8811c45ff569fdc2f68d2e82f 100644 (file)
@@ -24,7 +24,6 @@ PV = "14.0.0"
 MAJOR_VERSION = "${@oe.utils.trim_version("${PV}", 1)}"
 
 LLVM_RELEASE = "${PV}"
-LLVM_DIR = "llvm${LLVM_RELEASE}"
 
 BRANCH = "release/${MAJOR_VERSION}.x"
 SRCREV = "329fda39c507e8740978d10458451dcdb21563be"
@@ -91,13 +90,6 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
                   -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
                  "
 
-do_configure:prepend() {
-# Fix paths in llvm-config
-       sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
-       sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp
-       sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g" ${S}/tools/llvm-config/llvm-config.cpp
-}
-
 # patch out build host paths for reproducibility
 do_compile:prepend:class-target() {
         sed -i -e "s,${WORKDIR},,g" ${B}/tools/llvm-config/BuildVariables.inc
@@ -112,34 +104,17 @@ do_compile:class-native() {
 }
 
 do_install() {
-       DESTDIR=${LLVM_INSTALL_DIR} ninja -v install
-       install -D -m 0755 ${B}/bin/llvm-config ${D}${libdir}/${LLVM_DIR}/llvm-config
-
-       install -d ${D}${bindir}/${LLVM_DIR}
-       cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/
-
-       install -d ${D}${includedir}/${LLVM_DIR}
-       cp -r ${LLVM_INSTALL_DIR}${includedir}/* ${D}${includedir}/${LLVM_DIR}/
-
-       install -d ${D}${libdir}/${LLVM_DIR}
-
-       # The LLVM sources have "/lib" embedded and so we cannot completely rely on the ${libdir} variable
-       if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then
-               cp -r ${LLVM_INSTALL_DIR}${libdir}/* ${D}${libdir}/${LLVM_DIR}/
-       elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then
-               cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/* ${D}${libdir}/${LLVM_DIR}/
-       elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then
-               cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/* ${D}${libdir}/${LLVM_DIR}/
-       fi
+       DESTDIR=${D} ninja -v install
 
-       # Remove unnecessary cmake files
-       rm -rf ${D}${libdir}/${LLVM_DIR}/cmake
+        # llvm harcodes usr/lib as install path, so this corrects it to actual libdir
+        mv -T -n ${D}/${prefix}/lib ${D}/${libdir} || true
 
-       ln -s ${LLVM_DIR}/libLLVM-${MAJOR_VERSION}${SOLIBSDEV} ${D}${libdir}/libLLVM-${MAJOR_VERSION}${SOLIBSDEV}
+        # Remove opt-viewer: https://llvm.org/docs/Remarks.html
+        rm -rf ${D}${datadir}/opt-viewer
+        rmdir ${D}${datadir}
 
-       # We'll have to delete the libLLVM.so due to multiple reasons...
-       rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so
-       rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so
+        # reproducibility
+        sed -i -e 's,${WORKDIR},,g' ${D}/${libdir}/cmake/llvm/LLVMConfig.cmake
 }
 
 do_install:class-native() {
@@ -152,34 +127,33 @@ PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptrema
 RRECOMMENDS:${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liboptremarks"
 
 FILES:${PN}-bugpointpasses = "\
-    ${libdir}/${LLVM_DIR}/BugpointPasses.so \
+    ${libdir}/BugpointPasses.so \
 "
 
 FILES:${PN}-libllvm = "\
-    ${libdir}/${LLVM_DIR}/libLLVM-${MAJOR_VERSION}.so \
     ${libdir}/libLLVM-${MAJOR_VERSION}.so \
 "
 
 FILES:${PN}-liblto += "\
-    ${libdir}/${LLVM_DIR}/libLTO.so.* \
+    ${libdir}/libLTO.so.* \
 "
 
 FILES:${PN}-liboptremarks += "\
-    ${libdir}/${LLVM_DIR}/libRemarks.so.* \
+    ${libdir}/libRemarks.so.* \
 "
 
 FILES:${PN}-llvmhello = "\
-    ${libdir}/${LLVM_DIR}/LLVMHello.so \
+    ${libdir}/LLVMHello.so \
 "
 
 FILES:${PN}-dev += " \
-    ${libdir}/${LLVM_DIR}/llvm-config \
-    ${libdir}/${LLVM_DIR}/libRemarks.so \
-    ${libdir}/${LLVM_DIR}/libLLVM-${PV}.so \
+    ${libdir}/llvm-config \
+    ${libdir}/libRemarks.so \
+    ${libdir}/libLLVM-${PV}.so \
 "
 
 FILES:${PN}-staticdev += "\
-    ${libdir}/${LLVM_DIR}/*.a \
+    ${libdir}/*.a \
 "
 
 INSANE_SKIP:${PN}-libllvm += "dev-so"
index e8c07a456314a967c42d504007271e9478f6c9f7..21fa1a6a9e6b8de831a15458d063f35c7c18b547 100644 (file)
@@ -52,7 +52,7 @@ ANY_OF_DISTRO_FEATURES:class-target = "opengl vulkan"
 
 PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}"
 
-export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config"
+export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-config"
 export YOCTO_ALTERNATE_MULTILIB_NAME = "${base_libdir}"
 export LLVM_CONFIG = "${STAGING_BINDIR_NATIVE}/llvm-config${MESA_LLVM_RELEASE}"
 export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}"