summaryrefslogtreecommitdiffstats
path: root/abs/extra/llvm
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
committerJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
commit2648e999d277eac5c3d331a3609bcc73fafbea71 (patch)
tree40951fb8e7fdbe28a0baa324ae615055203f1e2e /abs/extra/llvm
parentc759b5e0c4aa6fc37412b4dee2cf9ad993fd376d (diff)
parent7e6f7ca174e1af67178dc5293a312a4a733eb095 (diff)
downloadlinhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.zip
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.gz
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.bz2
Merge branch 'testing'
# By James Meyer (1091) and others # Via James Meyer (5) and others * testing: (1148 commits) LinHES-config: during install don't kill off lirc. This keeps the remote active all the way to the finish Change version numbers to 8.0 to match the release number. LinHES-conifg LinHES-system mythdb-initial runit-scripts supplemental-web LinHES-conifig: mv_install.py for the last partition don't go all the way to the end. Gotta leave room for gpt tables. xf86-video-ati: xorg ati driver. LinHES-config: timezip.py add syncing up of parental lvl passwords and starting level with MBE. LinHES-system: correct the logic for breaking out of the wmctrl loop. As written it would break out of the inner loop..but not the 60 iteration loop. e16_theme_settings: remove slide-in prop for new windows. For whatever reason this was preventing mplayer from being positioned correctly for appletrailers. LinHES-config, mythinstall: change case of hd_pvr and serial to all lower refs #902 zilog-firmware: firmware for TX support of the hdpvr and pvr-150 In general I can't recommend anybody using these transmitters but including the firmware just in case someone really wants to linhes-udev-rules: added hdprv_lirc rule. All of these lirc rules are limited to exactly one device. If more then one device is present then only the last device in init will get the symlink runit-scripts: fix logging for igdeamon, add support to remote init script so that the blaster is always the first device in the chain. added support specificly for hd_pvr LinHES-system: add lh_system_restore and lh_system_backup. These scripts are called from the mythmenu. refs #900 iguanair: rebuild with python 2.7 LinHES-system: msg_daemon.py fix init and nasty bug related to timeout. In a nutshell timeout wouldn't work unless a msg without a timeout was called first. linhes-udev-rules: add rules for mce,streamzap,serial lirc devices. mythinstall: recompile for matching libs mythtv: latest .25-fixes and change mythbackup/restore call lh_system_$op to replace mythbackup/mythrestore. mythbackup no longer works correctly with the new windowmanager linhes-scripts: myth2mp3, myth2x264, myth2xvid: use mythutil to get cutlist LinHES-config, supplimental-web: Fix proxy numbering for Ceton infiniTV linhes-system: add additional stuff to the system backup and also introduced an exclude file. The exclude/include files are locate in /home/mythtv/backup_config/ ...
Diffstat (limited to 'abs/extra/llvm')
-rw-r--r--abs/extra/llvm/PKGBUILD226
-rw-r--r--abs/extra/llvm/bug-9869-operator-h-c++0x.patch57
-rw-r--r--abs/extra/llvm/cindexer-clang-path.patch10
-rw-r--r--abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch12
-rw-r--r--abs/extra/llvm/clang-plugin-loader-registry.patch11
-rw-r--r--abs/extra/llvm/clang-pure64.patch13
-rw-r--r--abs/extra/llvm/clang-toolchains-gcc-versions.patch12
-rw-r--r--abs/extra/llvm/enable-lto.patch32
l---------abs/extra/llvm/llvm-3.1-2.src.tar.gz1
-rw-r--r--abs/extra/llvm/llvm-Config-config.h9
-rw-r--r--abs/extra/llvm/llvm-Config-llvm-config.h9
11 files changed, 392 insertions, 0 deletions
diff --git a/abs/extra/llvm/PKGBUILD b/abs/extra/llvm/PKGBUILD
new file mode 100644
index 0000000..515dbc7
--- /dev/null
+++ b/abs/extra/llvm/PKGBUILD
@@ -0,0 +1,226 @@
+# $Id: PKGBUILD 159472 2012-05-24 20:02:15Z foutrelis $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Sebastian Nowicki <sebnow@gmail.com>
+# Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Contributor: Geoffroy Carrier <geoffroy.carrier@aur.archlinux.org>
+# Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk>
+# Contributor: Roberto Alsina <ralsina@kde.org>
+# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
+
+pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer')
+pkgver=3.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://llvm.org/"
+license=('custom:University of Illinois/NCSA Open Source License')
+makedepends=('libffi' 'python2' 'ocaml')
+source=(http://llvm.org/releases/$pkgver/$pkgname-$pkgver.src.tar.gz
+ http://llvm.org/releases/$pkgver/clang-$pkgver.src.tar.gz
+ http://dev.archlinux.org/~foutrelis/sources/compiler-rt/compiler-rt-$pkgver.src.tar.xz
+ llvm-Config-config.h
+ llvm-Config-llvm-config.h
+ cindexer-clang-path.patch
+ clang-pure64.patch
+ enable-lto.patch
+ clang-3.1-fix-libprofile_rt.a-location.patch)
+sha256sums=('1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab'
+ 'ff63e215dcd3e2838ffdea38502f8d35bab17e487f3c3799579961e452d5a786'
+ '563d8a5ef86123ed8775e115ad7f90c1aa3e80f70b4e587f1bccab2c10753558'
+ '312574e655f9a87784ca416949c505c452b819fad3061f2cde8aced6540a19a3'
+ '597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48'
+ '3074df5322900e087377a8e03a02115463ccc0011c25917c2f06df11facd9b92'
+ '288a82fbff17bc554f5863734246500e637882af33ee8511019d5e0d6cd20524'
+ 'f7145e203ffb4ce2c01976027f7840a9520e5341a9945f2459b6b11e5422d5b7'
+ '0d32ad283566357ca1bfbeb4cbe6b0b961943b79d3d718ed0435101c05629137')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver.src"
+
+ # At the present, clang must reside inside the LLVM source code tree to build
+ # See http://llvm.org/bugs/show_bug.cgi?id=4840
+ rm -rf tools/clang
+ cp -r "$srcdir/clang-$pkgver.src" tools/clang
+
+ rm -rf projects/compiler-rt
+ cp -r "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
+
+ # Fix symbolic links from OCaml bindings to LLVM libraries
+ sed -i 's:\$(PROJ_libdir):/usr/lib/llvm:' bindings/ocaml/Makefile.ocaml
+
+ # 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)/lib:$(PROJ_prefix)/lib/llvm:' \
+ -e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
+ Makefile.config.in
+ sed -i '/ActiveLibDir = ActivePrefix/s:lib:lib/llvm:' \
+ tools/llvm-config/llvm-config.cpp
+ sed -i 's:LLVM_LIBDIR="${prefix}/lib":LLVM_LIBDIR="${prefix}/lib/llvm":' \
+ autoconf/configure.ac \
+ configure
+
+ # Fix insecure rpath (http://bugs.archlinux.org/task/14017)
+ sed -i 's:$(RPATH) -Wl,$(\(ToolDir\|LibDir\|ExmplDir\))::g' Makefile.rules
+
+ # Fix clang path in CIndexer.cpp (https://bugs.archlinux.org/task/22799)
+ patch -d tools/clang -Np0 -i "$srcdir/cindexer-clang-path.patch"
+
+ if [[ $CARCH == x86_64 ]]; then
+ # Adjust linker path
+ patch -d tools/clang -Np0 -i "$srcdir/clang-pure64.patch"
+ fi
+
+ # Make -flto work
+ # Use gold instead of default linker, and always use the plugin
+ patch -d tools/clang -Np0 -i "$srcdir/enable-lto.patch"
+
+ # Fix FS#29984: [clang] -coverage is broken
+ patch -d tools/clang -Np1 -i \
+ "$srcdir/clang-3.1-fix-libprofile_rt.a-location.patch"
+
+ # Apply strip option to configure
+ _optimized_switch="enable"
+ [[ $(check_option strip) == n ]] && _optimized_switch="disable"
+
+ # Include location of libffi headers in CPPFLAGS
+ export CPPFLAGS="$CPPFLAGS $(pkg-config --cflags libffi)"
+
+ # Use Python 2
+ mkdir "$srcdir/python2-path"
+ ln -s /usr/bin/python2 "$srcdir/python2-path/python"
+ export PATH="$srcdir/python2-path:$PATH"
+
+ # Force the use of GCC instead of clang
+ CC=gcc CXX=g++ \
+ ./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib/llvm \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --enable-libffi \
+ --enable-targets=all \
+ --disable-expensive-checks \
+ --disable-debug-runtime \
+ --disable-assertions \
+ --with-binutils-include=/usr/include \
+ --$_optimized_switch-optimized
+
+ make REQUIRES_RTTI=1
+}
+
+package_llvm() {
+ pkgdesc="Low Level Virtual Machine"
+ depends=('perl' 'libffi')
+
+ cd "$srcdir/$pkgname-$pkgver.src"
+
+ # We move the clang directory out of the tree so it won't get installed and
+ # then we bring it back in for the clang package
+ mv tools/clang "$srcdir"
+
+ # -j1 is due to race conditions during the installation of the OCaml bindings
+ make -j1 DESTDIR="$pkgdir" install
+ mv "$srcdir/clang" tools
+
+ # OCaml bindings go to a separate package
+ rm -rf "$srcdir"/{ocaml,ocamldoc}
+ mv "$pkgdir"/usr/{lib/ocaml,share/doc/llvm/ocamldoc} "$srcdir"
+
+ # Remove duplicate files installed by the OCaml bindings
+ rm "$pkgdir"/usr/{lib/llvm/libllvm*,share/doc/llvm/ocamldoc.tar.gz}
+
+ # Fix permissions of static libs
+ chmod -x "$pkgdir"/usr/lib/llvm/*.a
+
+ # Get rid of example Hello transformation
+ rm "$pkgdir"/usr/lib/llvm/*LLVMHello.*
+
+ # Add ld.so.conf.d entry
+ install -d "$pkgdir/etc/ld.so.conf.d"
+ echo /usr/lib/llvm >"$pkgdir/etc/ld.so.conf.d/llvm.conf"
+
+ # Symlink LLVMgold.so into /usr/lib/bfd-plugins
+ # (https://bugs.archlinux.org/task/28479)
+ install -d "$pkgdir/usr/lib/bfd-plugins"
+ ln -s ../llvm/LLVMgold.so "$pkgdir/usr/lib/bfd-plugins/LLVMgold.so"
+
+ if [[ $CARCH == x86_64 ]]; then
+ # Needed for multilib (https://bugs.archlinux.org/task/29951)
+ # Header stubs are taken from Fedora
+ for _header in config llvm-config; do
+ mv "$pkgdir/usr/include/llvm/Config/$_header"{,-64}.h
+ cp "$srcdir/llvm-Config-$_header.h" \
+ "$pkgdir/usr/include/llvm/Config/$_header.h"
+ done
+ fi
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+package_llvm-ocaml() {
+ pkgdesc="OCaml bindings for LLVM"
+ depends=("llvm=$pkgver-$pkgrel" 'ocaml')
+
+ cd "$srcdir/llvm-$pkgver.src"
+
+ install -d "$pkgdir"/{usr/lib,usr/share/doc/llvm}
+ cp -r "$srcdir/ocaml" "$pkgdir/usr/lib"
+ cp -r "$srcdir/ocamldoc" "$pkgdir/usr/share/doc/llvm"
+
+ # Remove execute bit from static libraries
+ chmod -x "$pkgdir"/usr/lib/ocaml/libllvm*.a
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/llvm-ocaml/LICENSE"
+}
+
+package_clang() {
+ pkgdesc="C language family frontend for LLVM"
+ url="http://clang.llvm.org/"
+ depends=("llvm=$pkgver-$pkgrel" 'gcc')
+
+ # Fix installation path for clang docs
+ sed -i 's:$(PROJ_prefix)/share/doc/llvm:$(PROJ_prefix)/share/doc/clang:' \
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
+
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
+ make DESTDIR="$pkgdir" install
+
+ # Fix permissions of static libs
+ chmod -x "$pkgdir"/usr/lib/llvm/*.a
+
+ # Revert the path change in case we want to do a repackage later
+ sed -i 's:$(PROJ_prefix)/share/doc/clang:$(PROJ_prefix)/share/doc/llvm:' \
+ "$srcdir/llvm-$pkgver.src/Makefile.config"
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/clang/LICENSE"
+}
+
+package_clang-analyzer() {
+ pkgdesc="A source code analysis framework"
+ url="http://clang-analyzer.llvm.org/"
+ depends=("clang=$pkgver-$pkgrel" 'python2')
+
+ cd "$srcdir/llvm-$pkgver.src/tools/clang"
+
+ install -d "$pkgdir"/usr/{bin,lib/clang-analyzer}
+ for _tool in scan-{build,view}; do
+ cp -r tools/$_tool "$pkgdir/usr/lib/clang-analyzer/"
+ ln -s /usr/lib/clang-analyzer/$_tool/$_tool "$pkgdir/usr/bin/"
+ done
+
+ # Use Python 2
+ sed -i \
+ -e 's|env python$|&2|' \
+ -e 's|/usr/bin/python$|&2|' \
+ "$pkgdir/usr/lib/clang-analyzer/scan-view/scan-view" \
+ "$pkgdir/usr/lib/clang-analyzer/scan-build/set-xcode-analyzer"
+
+ # Compile Python scripts
+ python2 -m compileall "$pkgdir/usr/lib/clang-analyzer"
+ python2 -O -m compileall "$pkgdir/usr/lib/clang-analyzer"
+
+ install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/clang-analyzer/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra/llvm/bug-9869-operator-h-c++0x.patch b/abs/extra/llvm/bug-9869-operator-h-c++0x.patch
new file mode 100644
index 0000000..b95d7d7
--- /dev/null
+++ b/abs/extra/llvm/bug-9869-operator-h-c++0x.patch
@@ -0,0 +1,57 @@
+--- llvm/trunk/include/llvm/Operator.h 2011/02/07 16:40:21 125006
++++ llvm/trunk/include/llvm/Operator.h 2011/05/08 01:59:22 131062
+@@ -186,28 +186,46 @@
+ };
+
+ class AddOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {
++ ~AddOperator(); // DO NOT IMPLEMENT
++};
+ class SubOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {
++ ~SubOperator(); // DO NOT IMPLEMENT
++};
+ class MulOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {
++ ~MulOperator(); // DO NOT IMPLEMENT
++};
+ class ShlOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {
++ ~ShlOperator(); // DO NOT IMPLEMENT
++};
+
+
+ class SDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {
++ ~SDivOperator(); // DO NOT IMPLEMENT
++};
+ class UDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {
++ ~UDivOperator(); // DO NOT IMPLEMENT
++};
+ class AShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {
++ ~AShrOperator(); // DO NOT IMPLEMENT
++};
+ class LShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {
++ ~LShrOperator(); // DO NOT IMPLEMENT
++};
+
+
+
+ class GEPOperator
+ : public ConcreteOperator<Operator, Instruction::GetElementPtr> {
++ ~GEPOperator(); // DO NOT IMPLEMENT
++
+ enum {
+ IsInBounds = (1 << 0)
+ };
diff --git a/abs/extra/llvm/cindexer-clang-path.patch b/abs/extra/llvm/cindexer-clang-path.patch
new file mode 100644
index 0000000..ddaab69
--- /dev/null
+++ b/abs/extra/llvm/cindexer-clang-path.patch
@@ -0,0 +1,10 @@
+--- tools/libclang/CIndexer.cpp.orig 2011-04-07 13:08:24.000000000 +0300
++++ tools/libclang/CIndexer.cpp 2011-04-07 13:11:52.224884642 +0300
+@@ -80,6 +80,7 @@ std::string CIndexer::getClangResourcesP
+
+ // We now have the CIndex directory, locate clang relative to it.
+ LibClangPath.eraseComponent();
++ LibClangPath.eraseComponent();
+ #endif
+
+ LibClangPath.appendComponent("clang");
diff --git a/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch b/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch
new file mode 100644
index 0000000..080aa4f
--- /dev/null
+++ b/abs/extra/llvm/clang-3.1-fix-libprofile_rt.a-location.patch
@@ -0,0 +1,12 @@
+diff -upr clang-3.1.src.orig/lib/Driver/Tools.cpp clang-3.1.src/lib/Driver/Tools.cpp
+--- clang-3.1.src.orig/lib/Driver/Tools.cpp 2012-04-19 00:32:25.000000000 +0300
++++ clang-3.1.src/lib/Driver/Tools.cpp 2012-05-23 21:12:08.000000000 +0300
+@@ -193,7 +193,7 @@ static void addProfileRT(const ToolChain
+ // libprofile_rt.so. We used to use the -l:libprofile_rt.a syntax, but that is
+ // not supported by old linkers.
+ std::string ProfileRT =
+- std::string(TC.getDriver().Dir) + "/../lib/libprofile_rt.a";
++ std::string(TC.getDriver().Dir) + "/../lib/llvm/libprofile_rt.a";
+
+ CmdArgs.push_back(Args.MakeArgString(ProfileRT));
+ }
diff --git a/abs/extra/llvm/clang-plugin-loader-registry.patch b/abs/extra/llvm/clang-plugin-loader-registry.patch
new file mode 100644
index 0000000..f46eb9f
--- /dev/null
+++ b/abs/extra/llvm/clang-plugin-loader-registry.patch
@@ -0,0 +1,11 @@
+diff -upr llvm-2.7.orig/autoconf/ExportMap.map llvm-2.7/autoconf/ExportMap.map
+--- llvm-2.7.orig/autoconf/ExportMap.map 2010-02-25 00:33:41.000000000 +0200
++++ llvm-2.7/autoconf/ExportMap.map 2010-05-10 14:14:22.000000000 +0300
+@@ -2,6 +2,7 @@
+ global: main;
+ __progname;
+ environ;
++ _ZN4llvm8RegistryIN5clang14FrontendActionENS_14RegistryTraitsIS2_EEE4HeadE;
+
+ local: *;
+ };
diff --git a/abs/extra/llvm/clang-pure64.patch b/abs/extra/llvm/clang-pure64.patch
new file mode 100644
index 0000000..9bbbfaa
--- /dev/null
+++ b/abs/extra/llvm/clang-pure64.patch
@@ -0,0 +1,13 @@
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- lib/Driver/Tools.cpp (revision 123373)
++++ lib/Driver/Tools.cpp (working copy)
+@@ -3306,7 +3306,7 @@
+ else if (ToolChain.getArch() == llvm::Triple::ppc64)
+ CmdArgs.push_back("/lib64/ld64.so.1");
+ else
+- CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
++ CmdArgs.push_back("/lib/ld-linux-x86-64.so.2");
+ }
+
+ CmdArgs.push_back("-o");
diff --git a/abs/extra/llvm/clang-toolchains-gcc-versions.patch b/abs/extra/llvm/clang-toolchains-gcc-versions.patch
new file mode 100644
index 0000000..7e00837
--- /dev/null
+++ b/abs/extra/llvm/clang-toolchains-gcc-versions.patch
@@ -0,0 +1,12 @@
+diff -upr clang-2.9.orig/lib/Driver/ToolChains.cpp clang-2.9/lib/Driver/ToolChains.cpp
+--- clang-2.9.orig/lib/Driver/ToolChains.cpp 2011-03-21 23:29:27.000000000 +0200
++++ clang-2.9/lib/Driver/ToolChains.cpp 2011-04-08 00:03:34.000000000 +0300
+@@ -1449,7 +1449,7 @@ Linux::Linux(const HostInfo &Host, const
+ GccTriple = "i586-suse-linux";
+ }
+
+- const char* GccVersions[] = {"4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4",
++ const char* GccVersions[] = {"4.6.1", "4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4",
+ "4.4.3", "4.4", "4.3.4", "4.3.3", "4.3.2",
+ "4.3", "4.2.4", "4.2.3", "4.2.2", "4.2.1",
+ "4.2"};
diff --git a/abs/extra/llvm/enable-lto.patch b/abs/extra/llvm/enable-lto.patch
new file mode 100644
index 0000000..3205fbf
--- /dev/null
+++ b/abs/extra/llvm/enable-lto.patch
@@ -0,0 +1,32 @@
+Index: lib/Driver/ToolChains.cpp
+===================================================================
+--- lib/Driver/ToolChains.cpp (revision 123373)
++++ lib/Driver/ToolChains.cpp (working copy)
+@@ -1398,7 +1398,7 @@
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple() + "/bin").str());
+
+- Linker = GetProgramPath("ld");
++ Linker = GetProgramPath("ld.gold");
+
+ LinuxDistro Distro = DetectLinuxDistro(Arch);
+
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- lib/Driver/Tools.cpp (revision 123373)
++++ lib/Driver/Tools.cpp (working copy)
+@@ -3412,11 +3412,11 @@
+ // Tell the linker to load the plugin. This has to come before AddLinkerInputs
+ // as gold requires -plugin to come before any -plugin-opt that -Wl might
+ // forward.
+- if (D.IsUsingLTO(Args) || Args.hasArg(options::OPT_use_gold_plugin)) {
++ // if (D.IsUsingLTO(Args) || Args.hasArg(options::OPT_use_gold_plugin)) {
+ CmdArgs.push_back("-plugin");
+- std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so";
++ std::string Plugin = ToolChain.getDriver().Dir + "/../lib/llvm/LLVMgold.so";
+ CmdArgs.push_back(Args.MakeArgString(Plugin));
+- }
++ // }
+
+ AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
+ }
diff --git a/abs/extra/llvm/llvm-3.1-2.src.tar.gz b/abs/extra/llvm/llvm-3.1-2.src.tar.gz
new file mode 120000
index 0000000..4ea98f7
--- /dev/null
+++ b/abs/extra/llvm/llvm-3.1-2.src.tar.gz
@@ -0,0 +1 @@
+/data/pkg_repo/src_packages/llvm-3.1-2.src.tar.gz \ No newline at end of file
diff --git a/abs/extra/llvm/llvm-Config-config.h b/abs/extra/llvm/llvm-Config-config.h
new file mode 100644
index 0000000..c369b45
--- /dev/null
+++ b/abs/extra/llvm/llvm-Config-config.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "config-32.h"
+#elif __WORDSIZE == 64
+#include "config-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/abs/extra/llvm/llvm-Config-llvm-config.h b/abs/extra/llvm/llvm-Config-llvm-config.h
new file mode 100644
index 0000000..2fa08c9
--- /dev/null
+++ b/abs/extra/llvm/llvm-Config-llvm-config.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "llvm-config-32.h"
+#elif __WORDSIZE == 64
+#include "llvm-config-64.h"
+#else
+#error "Unknown word size"
+#endif