changeset 1325:ee0eedaa9476

core/llvm: fix llvm-config output
author David Demelier <markand@malikania.fr>
date Sun, 21 Nov 2021 10:43:45 +0100
parents 9b16e34aee4d
children 6136d839c2c9
files core/llvm/llvm.sh core/llvm/patch-fhs.patch
diffstat 2 files changed, 37 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/core/llvm/llvm.sh	Sun Nov 21 10:31:09 2021 +0100
+++ b/core/llvm/llvm.sh	Sun Nov 21 10:43:45 2021 +0100
@@ -24,7 +24,7 @@
 PKGDEPENDS="python:build cmake:build"
 PKGOPTIONS="DOXYGEN FFI LIBEDIT LZMA NCURSES SPHINX TARGETS XML ZLIB"
 PKGSPLIT="clang compiler-rt lld lldb libcxx libcxxabi libunwind openmp"
-PKGPRESERVE="lib/libLLVM-13.so"
+PKGPRESERVE="lib/libLLVM-$PKGVERSION.so"
 
 PKGDEPENDS_CLANG="compiler-rt libcxx lld"
 PKGDEPENDS_LLD="libcxx"
@@ -33,7 +33,7 @@
 
 PKGPRESERVE_CLANG="lib/libclang.so.13.0.0"
 PKGPRESERVE_LIBCXX="lib/libc++.so.1.0"
-PKGPRESERVE_LIBCXXABI="lib/libcxxabi.so.1.0"
+PKGPRESERVE_LIBCXXABI="lib/libc++abi.so.1.0"
 PKGPRESERVE_LIBUNWIND="lib/libunwind.so.1.0"
 
 : ${CHOST:=$(uname -m)-linux-musl}
@@ -111,6 +111,13 @@
 	with_zlib="-DLLVM_ENABLE_ZLIB=Off"
 fi
 
+case $(uname -m) in
+x86_64)
+	TARGET=x86_64-linux-musl ;;
+aarch64)
+	TARGET=aarch64-linux-musl ;;
+esac
+
 build()
 {
 	rm -rf llvm-project-llvmorg-$PKGVERSION
@@ -118,14 +125,15 @@
 	cd llvm-project-llvmorg-$PKGVERSION
 
 	patch -p1 < ../patch-disable-atomic.patch
+	patch -p1 < ../patch-fhs.patch
 	cmake -S llvm -B build \
 		-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
 		-DCLANG_DEFAULT_LINKER=lld \
 		-DCLANG_DEFAULT_RTLIB=compiler-rt \
 		-DCLANG_DEFAULT_UNWINDLIB=libunwind \
 		-DCMAKE_BUILD_TYPE=Release \
+		-DCMAKE_INSTALL_MANDIR=/share/man \
 		-DCMAKE_INSTALL_PREFIX=/ \
-		-DCMAKE_INSTALL_MANDIR=/share/man \
 		-DCOMPILER_RT_BUILD_LIBFUZZER=Off \
 		-DCOMPILER_RT_BUILD_MEMPROF=Off \
 		-DCOMPILER_RT_BUILD_ORC=Off \
@@ -134,6 +142,7 @@
 		-DCOMPILER_RT_BUILD_XRAY=Off \
 		-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=Off \
 		-DLIBCXXABI_INCLUDE_TESTS=Off \
+		-DLIBCXXABI_TARGET_TRIPLE=$TARGET \
 		-DLIBCXXABI_USE_COMPILER_RT=On \
 		-DLIBCXXABI_USE_LLVM_UNWINDER=On \
 		-DLIBCXX_CXX_ABI=libcxxabi \
@@ -150,6 +159,7 @@
 		-DLLVM_BUILD_TESTS=Off \
 		-DLLVM_BUILD_TOOLS=On \
 		-DLLVM_BUILD_UTILS=Off \
+		-DLLVM_DEFAULT_TARGET_TRIPLE=$TARGET \
 		-DLLVM_ENABLE_BINDINGS=Off \
 		-DLLVM_ENABLE_DOXYGEN=Off \
 		-DLLVM_ENABLE_EH=On \
@@ -159,6 +169,7 @@
 		-DLLVM_ENABLE_PROJECTS="clang;lld;lldb;compiler-rt;libunwind;libcxxabi;libcxx;openmp" \
 		-DLLVM_ENABLE_RTTI=On \
 		-DLLVM_ENABLE_SPHINX=Off \
+		-DLLVM_HOST_TRIPLE=$TARGET \
 		-DLLVM_INCLUDE_BENCHMARKS=Off \
 		-DLLVM_INCLUDE_DOCS=Off \
 		-DLLVM_INCLUDE_EXAMPLES=Off \
@@ -167,7 +178,6 @@
 		-DLLVM_INCLUDE_TOOLS=On \
 		-DLLVM_INCLUDE_UTILS=Off \
 		-DLLVM_INSTALL_BINUTILS_SYMLINKS=On \
-		-DLLVM_INSTALL_TOOLCHAIN_ONLY=On \
 		-DLLVM_INSTALL_UTILS=Off \
 		-DLLVM_TARGETS_TO_BUILD=$TARGETS \
 		$with_doxygen \
@@ -210,7 +220,7 @@
 	mkdir -p $DESTDIR-compiler-rt/lib/clang/$PKGVERSION
 	mv $DESTDIR/lib/clang/$PKGVERSION/lib $DESTDIR-compiler-rt/lib/clang/$PKGVERSION
 
-	# clang
+	# clang (/lib/cpp and /bin/cpp are still required unfortunately).
 	mkdir -p \
 		$DESTDIR-clang/bin \
 		$DESTDIR-clang/include \
@@ -224,10 +234,13 @@
 	mv $DESTDIR/share/clang $DESTDIR-clang/share
 	mv $DESTDIR/share/scan-build $DESTDIR-clang/share
 	mv $DESTDIR/share/scan-view $DESTDIR-clang/share
+	ln -sf /bin/clang $DESTDIR-clang/bin/cpp
+	ln -sf /bin/clang $DESTDIR-clang/lib/cpp
 
 	# lld
 	mkdir -p $DESTDIR-lld/bin
 	mv $DESTDIR/bin/lld* $DESTDIR-lld/bin
+	ln -sf /bin/lld $DESTDIR-lld/bin/ld
 
 	cd ..
 	rm -rf $PKGNAME-$PKGVERSION.src
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/llvm/patch-fhs.patch	Sun Nov 21 10:43:45 2021 +0100
@@ -0,0 +1,19 @@
+--- a/llvm/tools/llvm-config/llvm-config.cpp
++++ b/llvm/tools/llvm-config/llvm-config.cpp
+@@ -357,12 +357,12 @@
+         ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
+   } else {
+     ActivePrefix = CurrentExecPrefix;
+-    ActiveIncludeDir = ActivePrefix + "/include";
++    ActiveIncludeDir = "/include";
+     SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
+     sys::fs::make_absolute(ActivePrefix, path);
+-    ActiveBinDir = std::string(path.str());
+-    ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
+-    ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
++    ActiveBinDir = "/bin";
++    ActiveLibDir = "/lib";
++    ActiveCMakeDir = "/lib/cmake/llvm";
+     ActiveIncludeOption = "-I" + ActiveIncludeDir;
+   }
+