llvm: update to 3.8.0.

Use cmake to build.  This is the favored method of building by upstream.

Consequences:
- Build lld again
- Build LLVMgold
- Enable sanitizers on non-musl platforms
- Remove llvm-doc (not built by cmake, quite useless)
- Use versioned binary names
- Could use ninja with make_cmd=ninja and configure -Gninja, but we
  stick to make for now.

Also cleaned up and fixed remaining patches.
This commit is contained in:
Christian Neukirchen 2016-01-07 19:23:11 +01:00
parent 3fdcf959af
commit dffb85bee2
14 changed files with 128 additions and 311 deletions

View file

@ -948,6 +948,7 @@ libLLVM-3.5.so libllvm-3.5.0_1
libLLVM-3.6.so libllvm3.6-3.6.0_1
libLLVM-3.7.so libllvm3.7-3.7.0_1
libLLVM-3.7.1.so libllvm3.7-3.7.1_1
libLLVM-3.8.so libllvm3.8-3.8.0_1
libisofs.so.6 libisofs-0.6.24_1
libbfd-2.22.so binutils-2.22_1<2.23_1
libopcodes-2.22.so binutils-2.22_1<2.23_1

1
srcpkgs/lld Symbolic link
View file

@ -0,0 +1 @@
llvm

1
srcpkgs/lld-devel Symbolic link
View file

@ -0,0 +1 @@
llvm

View file

@ -1,17 +1,6 @@
From edd1fc14b3c3e05b14c3ab1917515a11bc477aca Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:33:28 +0200
Subject: [PATCH 4/7] fix dynamic linker paths
---
lib/Driver/Tools.cpp | 43 ++++++++++++++++++++++++++++++++++++++-----
1 file changed, 38 insertions(+), 5 deletions(-)
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 19ebbb9..4384829 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -7958,7 +7958,14 @@ static std::string getLinuxDynamicLinker(const ArgList &Args,
--- cfe-3.8.0.src/lib/Driver/Tools.cpp.orig
+++ cfe-3.8.0.src/lib/Driver/Tools.cpp
@@ -8632,7 +8632,14 @@
return "/system/bin/linker64";
else
return "/system/bin/linker";
@ -27,26 +16,8 @@ index 19ebbb9..4384829 100644
Arch == llvm::Triple::sparcel)
return "/lib/ld-linux.so.2";
else if (Arch == llvm::Triple::aarch64)
@@ -7970,14 +7977,34 @@ static std::string getLinuxDynamicLinker(const ArgList &Args,
tools::arm::getARMFloatABI(ToolChain.getDriver(), Args, ToolChain.getTriple()) == "hard")
return "/lib/ld-linux-armhf.so.3";
else
- return "/lib/ld-linux.so.3";
+ switch (ToolChain.getTriple().getEnvironment()) {
+ case llvm::Triple::Musl:
+ case llvm::Triple::MuslEABI:
+ return "/lib/ld-musl-arm.so.1";
+ case llvm::Triple::MuslEABIHF:
+ return "/lib/ld-musl-armhf.so.1";
+ case llvm::Triple::GNUEABIHF:
+ return "/lib/ld-linux-armhf.so.1";
+ default:
+ return "/lib/ld-linux.so.3";
+ }
} else if (Arch == llvm::Triple::armeb || Arch == llvm::Triple::thumbeb) {
// TODO: check which dynamic linker name.
if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF ||
tools::arm::getARMFloatABI(ToolChain.getDriver(), Args, ToolChain.getTriple()) == "hard")
@@ -8651,7 +8658,17 @@
arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard)
return "/lib/ld-linux-armhf.so.3";
else
- return "/lib/ld-linux.so.3";
@ -63,8 +34,8 @@ index 19ebbb9..4384829 100644
+ }
} else if (Arch == llvm::Triple::mips || Arch == llvm::Triple::mipsel ||
Arch == llvm::Triple::mips64 || Arch == llvm::Triple::mips64el) {
StringRef CPUName;
@@ -8014,8 +8041,14 @@ static std::string getLinuxDynamicLinker(const ArgList &Args,
std::string LibDir =
@@ -8685,8 +8702,14 @@
else if (Arch == llvm::Triple::x86_64 &&
ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUX32)
return "/libx32/ld-linux-x32.so.2";
@ -81,6 +52,3 @@ index 19ebbb9..4384829 100644
}
static void AddRunTimeLibs(const ToolChain &TC, const Driver &D,
--
2.5.1

View file

@ -1,26 +0,0 @@
From 7024157ee8c63e3d892e3bcac8bbe73b4dd92bbd Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:35:39 +0200
Subject: [PATCH 5/7] no use cxa atexit
---
lib/Driver/Tools.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 4384829..b6bf7fc 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -4435,7 +4435,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
options::OPT_fno_use_cxa_atexit,
!IsWindowsCygnus && !IsWindowsGNU &&
getToolChain().getArch() != llvm::Triple::hexagon &&
- getToolChain().getArch() != llvm::Triple::xcore) ||
+ getToolChain().getArch() != llvm::Triple::xcore &&
+ getToolChain().getTriple().getEnvironment() != llvm::Triple::Musl) ||
KernelOrKext)
CmdArgs.push_back("-fno-use-cxa-atexit");
--
2.5.1

View file

@ -1,26 +1,10 @@
From 886d662712b1cfb5cf7b84bfd96fb5f8b58069d5 Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:38:44 +0200
Subject: [PATCH 6/7] musl use init array
---
lib/Driver/ToolChains.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 3cd6dd1..ef77df8 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -2071,7 +2071,8 @@ void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs,
--- cfe-3.8.0.src/lib/Driver/ToolChains.cpp.orig
+++ cfe-3.8.0.src/lib/Driver/ToolChains.cpp
@@ -2428,6 +2428,7 @@
ArgStringList &CC1Args) const {
const Generic_GCC::GCCVersion &V = GCCInstallation.getVersion();
bool UseInitArrayDefault =
+ getTriple().getEnvironment() == llvm::Triple::Musl ||
getTriple().getArch() == llvm::Triple::aarch64 ||
getTriple().getArch() == llvm::Triple::aarch64_be ||
(getTriple().getOS() == llvm::Triple::Linux &&
(!V.isOlderThan(4, 7, 0) ||
- getTriple().getEnvironment() == llvm::Triple::Android)) ||
+ getTriple().getEnvironment() == llvm::Triple::Android ||
+ getTriple().getEnvironment() == llvm::Triple::Musl)) ||
getTriple().getOS() == llvm::Triple::NaCl;
if (DriverArgs.hasFlag(options::OPT_fuse_init_array,
--
2.5.1

View file

@ -1,25 +0,0 @@
From 75d91fe8d9219007069af02301565173bd5d0612 Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:39:20 +0200
Subject: [PATCH 7/7] remove lgcc when using compiler rt
---
lib/Driver/Tools.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index b6bf7fc..665961a 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -2389,8 +2389,6 @@ static void addClangRT(const ToolChain &TC, const ArgList &Args,
CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, "builtins")));
if (!TC.getTriple().isOSWindows()) {
- // FIXME: why do we link against gcc when we are using compiler-rt?
- CmdArgs.push_back("-lgcc_s");
if (TC.getDriver().CCCIsCXX())
CmdArgs.push_back("-lgcc_eh");
}
--
2.5.1

View file

@ -1,14 +1,3 @@
From 7f278344034eab699a90fab3d313048d1de44012 Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:45:11 +0200
Subject: [PATCH 2/2] musl no dlvsym
---
lib/interception/interception_linux.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/interception/interception_linux.cc b/lib/interception/interception_linux.cc
index 6e908ac..7fcf2a6 100644
--- a/lib/interception/interception_linux.cc
+++ b/lib/interception/interception_linux.cc
@@ -24,7 +24,7 @@ bool GetRealFunctionAddress(const char *func_name, uptr *func_addr,
@ -16,10 +5,7 @@ index 6e908ac..7fcf2a6 100644
}
-#if !defined(__ANDROID__) // android does not have dlvsym
+#if 0 // !defined(__ANDROID__) // android does not have dlvsym
+#if defined(__GLIBC__) // !defined(__ANDROID__) // android does not have dlvsym
void *GetFuncAddrVer(const char *func_name, const char *ver) {
return dlvsym(RTLD_NEXT, func_name, ver);
}
--
2.5.1

View file

@ -1,31 +0,0 @@
From 146c027efdd839b7173a922a43c4ab7003bdc160 Mon Sep 17 00:00:00 2001
From: Andrea Brancaleoni <miwaxe@gmail.com>
Date: Tue, 8 Sep 2015 22:44:22 +0200
Subject: [PATCH 1/2] disable sanitizers
---
lib/Makefile.mk | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/Makefile.mk b/lib/Makefile.mk
index 7eb6489..c0efac3 100644
--- a/lib/Makefile.mk
+++ b/lib/Makefile.mk
@@ -10,10 +10,10 @@
SubDirs :=
# Add submodules.
-SubDirs += asan
+# SubDirs += asan
SubDirs += builtins
SubDirs += interception
-SubDirs += lsan
+# SubDirs += lsan
SubDirs += profile
-SubDirs += sanitizer_common
-SubDirs += ubsan
+# SubDirs += sanitizer_common
+# SubDirs += ubsan
--
2.5.1

View file

@ -11,18 +11,6 @@ Subject: [PATCH] fix musl
source/Plugins/Process/Linux/Procfs.h | 2 +-
5 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/source/Core/ConnectionSharedMemory.cpp b/source/Core/ConnectionSharedMemory.cpp
index 77daeb1..36e9bc7 100644
--- a/source/Core/ConnectionSharedMemory.cpp
+++ b/source/Core/ConnectionSharedMemory.cpp
@@ -16,6 +16,7 @@
#ifdef _WIN32
#include "lldb/Host/windows/windows.h"
#else
+#include <fcntl.h> /* O_RDRW */
#include <sys/file.h>
#include <sys/mman.h>
#include <sys/stat.h>
diff --git a/source/Host/common/FileSpec.cpp b/source/Host/common/FileSpec.cpp
index ceb094b..a48620d 100644
--- a/source/Host/common/FileSpec.cpp
@ -35,33 +23,6 @@ index ceb094b..a48620d 100644
#ifndef _MSC_VER
#include <libgen.h>
#endif
diff --git a/source/Host/linux/Host.cpp b/source/Host/linux/Host.cpp
index 6217b1d..edcfa4a 100644
--- a/source/Host/linux/Host.cpp
+++ b/source/Host/linux/Host.cpp
@@ -14,7 +14,7 @@
#include <sys/stat.h>
#include <dirent.h>
#include <fcntl.h>
-#ifndef __ANDROID__
+#ifdef __GLIBC__
#include <execinfo.h>
#endif
diff --git a/source/Host/linux/HostThreadLinux.cpp b/source/Host/linux/HostThreadLinux.cpp
index 8151215..a849e51 100644
--- a/source/Host/linux/HostThreadLinux.cpp
+++ b/source/Host/linux/HostThreadLinux.cpp
@@ -30,7 +30,9 @@ HostThreadLinux::HostThreadLinux(lldb::thread_t thread)
void
HostThreadLinux::SetName(lldb::thread_t thread, llvm::StringRef name)
{
+#if defined(__ANDROID__) || defined(__GLIBC__)
::pthread_setname_np(thread, name.data());
+#endif
}
void
diff --git a/source/Plugins/Process/Linux/Procfs.h b/source/Plugins/Process/Linux/Procfs.h
index 1b383fb..4ebe390 100644
--- a/source/Plugins/Process/Linux/Procfs.h

View file

@ -49,29 +49,6 @@ index c6646fb..8d47ad9 100644
.StartsWith("msvc", Triple::MSVC)
.StartsWith("itanium", Triple::Itanium)
.StartsWith("cygnus", Triple::Cygnus)
diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
index dd101df..c5bdcca 100644
--- a/lib/Target/ARM/ARMSubtarget.h
+++ b/lib/Target/ARM/ARMSubtarget.h
@@ -381,8 +381,10 @@ public:
bool isTargetEHABICompatible() const {
return (TargetTriple.getEnvironment() == Triple::EABI ||
TargetTriple.getEnvironment() == Triple::GNUEABI ||
+ TargetTriple.getEnvironment() == Triple::MuslEABI ||
TargetTriple.getEnvironment() == Triple::EABIHF ||
TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
+ TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
TargetTriple.getEnvironment() == Triple::Android) &&
!isTargetDarwin() && !isTargetWindows();
}
@@ -391,6 +393,7 @@ public:
// FIXME: this is invalid for WindowsCE
return TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
TargetTriple.getEnvironment() == Triple::EABIHF ||
+ TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
isTargetWindows();
}
bool isTargetAndroid() const {
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp
index 93495d6..56e6b7f 100644
--- a/lib/Target/ARM/ARMTargetMachine.cpp
@ -88,3 +65,24 @@ index 93495d6..56e6b7f 100644
--
2.5.1
--- llvm-3.8.0.src/lib/Target/ARM/ARMSubtarget.h.orig 2016-03-09 13:34:16.919107629 +0100
+++ llvm-3.8.0.src/lib/Target/ARM/ARMSubtarget.h 2016-03-09 13:38:12.019342405 +0100
@@ -405,8 +405,10 @@
bool isTargetEHABICompatible() const {
return (TargetTriple.getEnvironment() == Triple::EABI ||
TargetTriple.getEnvironment() == Triple::GNUEABI ||
+ TargetTriple.getEnvironment() == Triple::MuslEABI ||
TargetTriple.getEnvironment() == Triple::EABIHF ||
TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
+ TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
isTargetAndroid()) &&
!isTargetDarwin() && !isTargetWindows();
}
@@ -415,6 +417,7 @@
// FIXME: this is invalid for WindowsCE
return TargetTriple.getEnvironment() == Triple::GNUEABIHF ||
TargetTriple.getEnvironment() == Triple::EABIHF ||
+ TargetTriple.getEnvironment() == Triple::MuslEABIHF ||
isTargetWindows() || isAAPCS16_ABI();
}
bool isTargetAndroid() const { return TargetTriple.isAndroid(); }

View file

@ -66,37 +66,6 @@ index 9a7aeb5..e21750d 100644
// On linux we have a weird situation. The stderr/out/in symbols are both
// macros and global variables because of standards requirements. So, we
diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc
index bfe2a3a..e8372d9 100644
--- a/lib/Support/Unix/Signals.inc
+++ b/lib/Support/Unix/Signals.inc
@@ -117,7 +117,7 @@ static void RegisterHandlers() {
// during handling an actual signal because you can't safely call new in a
// signal handler.
*SignalsMutex;
-
+
// If the handlers are already registered, we're done.
if (NumRegisteredSignals != 0) return;
@@ -164,7 +164,7 @@ static void RemoveFilesToRemove() {
// super-user permissions.
if (!S_ISREG(buf.st_mode))
continue;
-
+
// Otherwise, remove the file. We ignore any errors here as there is nothing
// else we can do.
unlink(path);
@@ -430,7 +430,7 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth,
// On glibc systems we have the 'backtrace' function, which works nicely, but
// doesn't demangle symbols.
void llvm::sys::PrintStackTrace(raw_ostream &OS) {
-#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES)
+#if defined(__GLIBC__) && defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES)
static void* StackTrace[256];
// Use backtrace() to output a backtrace on Linux systems with glibc.
int depth = backtrace(StackTrace,
diff --git a/utils/unittest/googletest/src/gtest.cc b/utils/unittest/googletest/src/gtest.cc
index 5780764..1d548c1 100644
--- a/utils/unittest/googletest/src/gtest.cc

View file

@ -1,13 +1,19 @@
# Template file for 'llvm'
pkgname=llvm
version=3.7.1
revision=2
version=3.8.0
revision=1
wrksrc="llvm-${version}.src"
lib32disabled=yes
configure_args="--disable-expensive-checks --disable-debug-runtime
--enable-bindings=none --enable-optimized --enable-shared --enable-libffi
--enable-llvmc-dynamic --disable-assertions --enable-keep-symbols
--enable-experimental-targets=AMDGPU"
build_style=cmake
configure_args="
-DCMAKE_BUILD_TYPE=Release
-DLLVM_BUILD_LLVM_DYLIB=ON
-DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_DYLIB_EXPORT_ALL=ON
-DLLVM_ENABLE_RTTI=ON
-DLLVM_ENABLE_FFI=ON
-DLLVM_BINUTILS_INCDIR=/usr/include
-DCMAKE_INSTALL_DO_STRIP=0"
short_desc="Low Level Virtual Machine"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://www.llvm.org"
@ -15,25 +21,28 @@ license="BSD"
distfiles="
http://www.llvm.org/releases/${version}/llvm-${version}.src.tar.xz
http://www.llvm.org/releases/${version}/lldb-${version}.src.tar.xz
http://www.llvm.org/releases/${version}/lld-${version}.src.tar.xz
http://www.llvm.org/releases/${version}/cfe-${version}.src.tar.xz
http://www.llvm.org/releases/${version}/clang-tools-extra-${version}.src.tar.xz
http://www.llvm.org/releases/${version}/compiler-rt-${version}.src.tar.xz"
checksum="
be7794ed0cec42d6c682ca8e3517535b54555a3defabec83554dbc74db545ad5
9a0bc315ef55f44c98cdf92d064df0847f453ed156dd0ef6a87e04f5fd6a0e01
56e2164c7c2a1772d5ed2a3e57485ff73ff06c97dff12edbeea1acc4412b0674
4a91edaccad1ce984c7c49a4a87db186b7f7b21267b2b03bcf4bd7820715bc6b
9d4769e4a927d3824bcb7a9c82b01e307c68588e6de4e7f04ab82d82c5af8181"
checksum="555b028e9ee0f6445ff8f949ea10e9cd8be0d084840e21fbbe1d31d51fc06e46
e3f68f44147df0433e7989bf6ed1c58ff28d7c68b9c47553cb9915f744785a35
94704dda228c9f75f4403051085001440b458501ec97192eee06e8e67f7f9f0c
04149236de03cf05232d68eb7cb9c50f03062e339b68f4f8a03b650a11536cf9
afbda810106a6e64444bc164b921be928af46829117c95b996f2678ce4cb1ec4
c8d3387e55f229543dac1941769120f24dc50183150bf19d1b070d53d29d56b0"
# XXX Investigate ocaml bindings.
hostmakedepends="groff perl python zlib-devel libffi-devel swig"
makedepends="python-devel zlib-devel libffi-devel libedit-devel"
hostmakedepends="groff perl python zlib-devel libffi-devel swig cmake"
makedepends="python-devel zlib-devel libffi-devel libedit-devel libxml2-devel binutils-devel"
depends="libllvm3.8"
subpackages="clang clang-analyzer libllvm3.7 llvm-doc"
subpackages="clang clang-analyzer libllvm3.8"
if [ -z "$CROSS_BUILD" ]; then
# XXX fails to cross compile due to python
subpackages+=" lldb lldb-devel"
fi
subpackages+=" lld lld-devel"
post_extract() {
# patches
@ -48,9 +57,6 @@ post_extract() {
msg_normal "Applying $i to compiler-rt\n"
patch -sNp1 -i ${i}
done
case "$XBPS_TARGET_MACHINE" in
*-musl) patch -sNp1 -i "${FILESDIR}/patches/compiler-rt/compiler-rt_musl_001-disable-sanitizers.patch" ;;
esac
# FIX BUG 22661
case "$XBPS_TARGET_MACHINE" in
i686*) sed -ri "/ifeq.*CompilerTargetArch/s#i386#i686#g" make/platform/clang_linux.mk ;;
@ -79,6 +85,10 @@ post_extract() {
if [ -d ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ]; then
mv ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ${wrksrc}/tools/clang/extra
fi
# Move lld files into the llvm source.
if [ -d ${XBPS_BUILDDIR}/lld-${version}.src ]; then
mv ${XBPS_BUILDDIR}/lld-${version}.src ${wrksrc}/tools/lld
fi
# Move lldb files into the llvm source.
if [ -z "$CROSS_BUILD" -a -d ${XBPS_BUILDDIR}/lldb-${version}.src ]; then
mv ${XBPS_BUILDDIR}/lldb-${version}.src ${wrksrc}/tools/lldb
@ -87,32 +97,46 @@ post_extract() {
if [ -d ${XBPS_BUILDDIR}/compiler-rt-${version}.src ]; then
mv ${XBPS_BUILDDIR}/compiler-rt-${version}.src ${wrksrc}/projects/compiler-rt
fi
case "$XBPS_TARGET_MACHINE" in
*-musl)
# Disable sanitizers
sed -i 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' ${wrksrc}/projects/compiler-rt/cmake/config-ix.cmake
;;
esac
}
do_configure() {
unset CC CXX CPP AR AS RANLIB CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
pre_configure() {
if [ "$CROSS_BUILD" ]; then
msg_normal "Building host tblgen\n"
mkdir -p build/HOST
cd build/HOST
CC="$BUILD_CC" CXX="$BUILD_CXX" CFLAGS="$BUILD_CFLAGS" \
CXXFLAGS="$BUILD_CXXFLAGS" LDFLAGS="$BUILD_LDFLAGS" \
cmake ../.. -DCMAKE_BUILD_TYPE=Release
make ${makejobs} -C utils/TableGen
make ${makejobs} -C tools/clang/utils/TableGen
configure_args+=" -DLLVM_TABLEGEN=${wrksrc}/build/HOST/bin/llvm-tblgen"
configure_args+=" -DCLANG_TABLEGEN=${wrksrc}/build/HOST/bin/clang-tblgen"
cd ../..
fi
# Fix installation directories, ./configure doesn't seem to set them right
sed -i -e 's:\$(PROJ_prefix)/etc/llvm:/etc/llvm:' \
-e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
Makefile.config.in
mkdir build
cd build
../configure ${configure_args}
}
do_build() {
unset CC CXX CPP AR AS RANLIB CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
cd build
make REQUIRES_RTTI=1 ${makejobs}
case "$XBPS_TARGET_MACHINE" in
i686*) _arch="X86";;
x86_64*) _arch="X86";;
arm*) _arch="ARM";;
aarch64*) _arch="AArch64";;
mips*) _arch="Mips";;
esac
configure_args+=" -DLLVM_TARGET_ARCH=${_arch}"
configure_args+=" -DLLVM_DEFAULT_TARGET_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}"
}
do_install() {
vlicense LICENSE.TXT
cd build
make DESTDIR=${DESTDIR} install
cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr -P cmake_install.cmake
# Fix permissions of static libs
chmod -x ${DESTDIR}/usr/lib/*.a
@ -122,7 +146,7 @@ do_install() {
# Required for multilib.
if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
for _header in config llvm-config; do
for _header in llvm-config; do
mv ${DESTDIR}/usr/include/llvm/Config/${_header}{,-64}.h
vinstall ${FILESDIR}/llvm-Config-${_header}.h 644 \
usr/include/llvm/Config ${_header}.h
@ -139,21 +163,15 @@ do_install() {
clang-analyzer_package() {
noarch=yes
pycompile_dirs="usr/lib/clang-analyzer"
pycompile_dirs="usr/share/scan-view"
depends="clang-${version}_${revision} python"
short_desc+=" - A source code analysis framework"
homepage="http://clang-analyzer.llvm.org/"
pkg_install() {
vmkdir usr/bin
vmkdir usr/lib/clang-analyzer
for f in build view; do
cp -r ${wrksrc}/tools/clang/tools/scan-${f} ${PKGDESTDIR}/usr/lib/clang-analyzer
cd ${PKGDESTDIR}/usr/bin
ln -s ../lib/${pkgname}/scan-${f}/scan-${f} scan-${f}
done
ln -sf /usr/bin/clang ${PKGDESTDIR}/usr/lib/${pkgname}/scan-build
vmove usr/share/man/man1/scan-build.1
vmove "/usr/bin/scan-*"
vmove "/usr/share/scan-*"
vmove "/usr/libexec/*analyzer"
}
}
clang_package() {
@ -171,6 +189,25 @@ clang_package() {
vmove usr/bin/c-index-test
vmove usr/lib/clang
vmove "usr/lib/libclang*"
vmove "usr/share/clang"
}
}
lld_package() {
lib32disabled=yes
short_desc+=" - linker"
homepage="http://lld.llvm.org"
pkg_install() {
vmove usr/bin/lld*
vmove usr/bin/ld.lld*
}
}
lld-devel_package() {
lib32disabled=yes
short_desc+=" - linker - development files"
homepage="http://lld.llvm.org"
pkg_install() {
vmove usr/include/lld
vmove "usr/lib/liblld*a"
}
}
lldb_package() {
@ -179,7 +216,7 @@ lldb_package() {
homepage="http://lldb.llvm.org/"
pkg_install() {
vmove "usr/bin/*lldb*"
vmove "usr/lib/liblldb*so"
vmove "usr/lib/liblldb*so.*"
vman tools/lldb/docs/lldb.1
vmove "/usr/lib/python*"
}
@ -190,19 +227,12 @@ lldb-devel_package() {
pkg_install() {
vmove usr/include/lldb
vmove "usr/lib/liblldb*.a"
vmove "usr/lib/liblldb*.so"
}
}
llvm-doc_package() {
noarch=yes
short_desc+=" - documentation files"
pkg_install() {
vmove usr/share/doc
}
}
libllvm3.7_package() {
libllvm3.8_package() {
short_desc+=" - runtime library"
pkg_install() {
vmove usr/lib/libLLVM-${version%.*}.so
vmove usr/lib/libLLVM-${version}.so
vmove "usr/lib/libLLVM-*.so*"
}
}