mirror of
https://git.yoctoproject.org/poky
synced 2026-06-07 15:09:50 +00:00
llvm: use default install paths
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. (From OE-Core rev: 974f67b18a2f1a15c76785d69e7234594af97a88) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
cbb01bd465
commit
9481976d80
@@ -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
|
||||
DESTDIR=${D} ninja -v install
|
||||
|
||||
install -d ${D}${bindir}/${LLVM_DIR}
|
||||
cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/
|
||||
# llvm harcodes usr/lib as install path, so this corrects it to actual libdir
|
||||
mv -T -n ${D}/${prefix}/lib ${D}/${libdir} || true
|
||||
|
||||
install -d ${D}${includedir}/${LLVM_DIR}
|
||||
cp -r ${LLVM_INSTALL_DIR}${includedir}/* ${D}${includedir}/${LLVM_DIR}/
|
||||
# Remove opt-viewer: https://llvm.org/docs/Remarks.html
|
||||
rm -rf ${D}${datadir}/opt-viewer
|
||||
rmdir ${D}${datadir}
|
||||
|
||||
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
|
||||
|
||||
# Remove unnecessary cmake files
|
||||
rm -rf ${D}${libdir}/${LLVM_DIR}/cmake
|
||||
|
||||
ln -s ${LLVM_DIR}/libLLVM-${MAJOR_VERSION}${SOLIBSDEV} ${D}${libdir}/libLLVM-${MAJOR_VERSION}${SOLIBSDEV}
|
||||
|
||||
# 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"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user