aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinz Wiesinger <pprkut@liwjatan.at>2011-12-17 22:54:23 -0600
committerRobby Workman <rworkman@slackbuilds.org>2011-12-17 22:54:23 -0600
commit8cc82f7af33407c24402998f9c6b1516d0154454 (patch)
treeb593b192cab0d23e4155db9b35b28dccafafcdaf
parent27f68e1684022dd5f3cf1e713198225edf4d4326 (diff)
development/llvm: Updated for version 2.9 and added clang support.
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
-rw-r--r--development/llvm/README9
-rw-r--r--development/llvm/clang-slackware.diff39
-rw-r--r--development/llvm/llvm.SlackBuild58
-rw-r--r--development/llvm/llvm.info8
-rw-r--r--development/llvm/slack-desc6
5 files changed, 105 insertions, 15 deletions
diff --git a/development/llvm/README b/development/llvm/README
index 14c71bc1f2e3e..49353dc1f907f 100644
--- a/development/llvm/README
+++ b/development/llvm/README
@@ -1,6 +1,7 @@
Low Level Virtual Machine is a toolkit for the construction of
-highly optimized compilers, optimizers, and runtime
-environments.
+highly optimized compilers, optimizers, and runtime environments.
-llvm makes use of ocaml if available, which is also available
-from SlackBuilds.org
+This optionally builds with the clang compiler. In order to
+enable building clang you have to pass CLANG=yes to the script.
+
+ocaml is an optional dependency.
diff --git a/development/llvm/clang-slackware.diff b/development/llvm/clang-slackware.diff
new file mode 100644
index 0000000000000..7047ece73e961
--- /dev/null
+++ b/development/llvm/clang-slackware.diff
@@ -0,0 +1,39 @@
+diff -U 3 -H -d -r -N -- 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 22:29:27.000000000 +0100
++++ clang-2.9/lib/Driver/ToolChains.cpp 2011-12-14 22:50:28.813000001 +0100
+@@ -1432,6 +1432,9 @@
+ else if (!llvm::sys::fs::exists("/usr/lib/gcc/x86_64-manbo-linux-gnu",
+ Exists) && Exists)
+ GccTriple = "x86_64-manbo-linux-gnu";
++ else if (!llvm::sys::fs::exists("/usr/lib64/gcc/x86_64-slackware-linux", Exists)
++ && Exists)
++ GccTriple = "x86_64-slackware-linux";
+ } else if (Arch == llvm::Triple::x86) {
+ if (!llvm::sys::fs::exists("/usr/lib/gcc/i686-linux-gnu", Exists) && Exists)
+ GccTriple = "i686-linux-gnu";
+@@ -1447,6 +1450,9 @@
+ else if (!llvm::sys::fs::exists("/usr/lib/gcc/i586-suse-linux", Exists) &&
+ Exists)
+ GccTriple = "i586-suse-linux";
++ else if (!llvm::sys::fs::exists("/usr/lib/gcc/i486-slackware-linux", Exists)
++ && Exists)
++ GccTriple = "i486-slackware-linux";
+ }
+
+ const char* GccVersions[] = {"4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4",
+diff -U 3 -H -d -r -N -- clang-2.9.orig/lib/Frontend/InitHeaderSearch.cpp clang-2.9/lib/Frontend/InitHeaderSearch.cpp
+--- clang-2.9.orig/lib/Frontend/InitHeaderSearch.cpp 2011-03-22 01:24:04.000000000 +0100
++++ clang-2.9/lib/Frontend/InitHeaderSearch.cpp 2011-12-17 19:12:24.966000013 +0100
+@@ -748,6 +748,12 @@
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.5",
+ "x86_64-suse-linux", "", "", triple);
+
++ // Slackware 13.37
++ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.5.2",
++ "i486-slackware-linux", "", "", triple);
++ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.5.2",
++ "x86_64-slackware-linux", "", "", triple);
++
+ // Arch Linux 2008-06-24
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1",
+ "i686-pc-linux-gnu", "", "", triple);
diff --git a/development/llvm/llvm.SlackBuild b/development/llvm/llvm.SlackBuild
index cf9e67440599d..ddc573d093348 100644
--- a/development/llvm/llvm.SlackBuild
+++ b/development/llvm/llvm.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for llvm
-# Copyright 2008-2010 Heinz Wiesinger, Amsterdam, The Netherlands
+# Copyright 2008-2011 Heinz Wiesinger, Amsterdam, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=llvm
-VERSION=2.7
+VERSION=2.9
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -54,6 +54,8 @@ else
LIBDIRSUFFIX=""
fi
+CLANG=${CLANG:-no}
+
set -e
rm -rf $PKG
@@ -61,10 +63,27 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tgz
-cd $PRGNAM-$VERSION
+
+if [ "$CLANG" = "no" ]; then
+ cd $PRGNAM-$VERSION
+else
+ cd $PRGNAM-$VERSION/tools
+ rm -rf clang
+ tar xvf $CWD/clang-$VERSION.tgz
+ mv clang-$VERSION clang
+ cd ../
+
+ # clang fixes for slackware
+ patch -p1 -d tools/clang -i $CWD/clang-slackware.diff
+fi
+
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
+CINC="/usr/include/"
+CINC="$CINC:/usr/lib$LIBDIRSUFFIX/gcc/$ARCH-slackware-linux/4.5.2/include/"
+CINC="$CINC:/usr/lib$LIBDIRSUFFIX/gcc/$ARCH-slackware-linux/4.5.2/include-fixed/"
+
# --mandir doesn't work currently
# need to disable assertions to make llvm thread-safe
CFLAGS="$SLKCFLAGS" \
@@ -78,21 +97,43 @@ CXXFLAGS="$SLKCFLAGS" \
--enable-optimized \
--disable-assertions \
--enable-pic \
+ --with-c-include-dirs=$CINC \
--build=$ARCH-slackware-linux \
--host=$ARCH-slackware-linux
# Correct libdir setting
-sed -i "s|\$(PROJ_prefix)/lib|\$(PROJ_prefix)/lib$LIBDIRSUFFIX|" Makefile.config
+sed -i "s|\$(PROJ_prefix)/lib|\$(PROJ_prefix)/lib$LIBDIRSUFFIX|" \
+ Makefile.config
+
+if [ "$CLANG" != "no" ]; then
+ sed -i "s|\$(PROJ_prefix)/lib|\$(PROJ_prefix)/lib$LIBDIRSUFFIX|" \
+ tools/clang/lib/Headers/Makefile
+fi
make
make install DESTDIR=$PKG
+if [ "$CLANG" != "no" ]; then
+ # install clang-static-analyzer
+ mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/clang-analyzer
+ cp -pr tools/clang/tools/scan-{build,view} \
+ $PKG/usr/lib$LIBDIRSUFFIX/clang-analyzer/
+ for i in scan-{build,view}; do
+ ln -s /usr/lib$LIBDIRSUFFIX/clang-analyzer/$i/$i \
+ $PKG/usr/bin/$i
+ done
+ for i in ccc c++; do
+ ln -s /usr/lib$LIBDIRSUFFIX/clang-analyzer/scan-build/$i-analyzer \
+ $PKG/usr/bin/$i-analyzer
+ done
+fi
+
# Remove example libraries
rm -f $PKG/usr/lib$LIBDIRSUFFIX/LLVMHello*
# Fix wrong libdir
sed -i -e "s|ABS_RUN_DIR/lib\"|ABS_RUN_DIR/lib$LIBDIRSUFFIX\"|" \
- $PKG/usr/bin/llvm-config
+ $PKG/usr/bin/llvm-config
mv $PKG/usr/share/* $PKG/usr/
rmdir $PKG/usr/share
@@ -106,6 +147,13 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a CREDITS* LICENSE* README* $PKG/usr/doc/$PRGNAM-$VERSION
mv $PKG/usr/docs/llvm/* $PKG/usr/doc/$PRGNAM-$VERSION
rm -rf $PKG/usr/docs
+
+if [ "$CLANG" != "no" ]; then
+ mkdir $PKG/usr/doc/$PRGNAM-$VERSION/clang
+ cp -a tools/clang/{INSTALL,NOTES,README,TODO}.txt \
+ $PKG/usr/doc/$PRGNAM-$VERSION/clang
+fi
+
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/development/llvm/llvm.info b/development/llvm/llvm.info
index 06930eb42aa7d..358c912ffc536 100644
--- a/development/llvm/llvm.info
+++ b/development/llvm/llvm.info
@@ -1,8 +1,10 @@
PRGNAM="llvm"
-VERSION="2.7"
+VERSION="2.9"
HOMEPAGE="http://llvm.org/"
-DOWNLOAD="http://llvm.org/releases/2.7/llvm-2.7.tgz"
-MD5SUM="ac322661f20e7d6c810b1869f886ad9b"
+DOWNLOAD="http://llvm.org/releases/2.9/llvm-2.9.tgz \
+ http://llvm.org/releases/2.9/clang-2.9.tgz"
+MD5SUM="793138412d2af2c7c7f54615f8943771 \
+ 634de18d04b7a4ded19ec4c17d23cfca"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="Heinz Wiesinger"
diff --git a/development/llvm/slack-desc b/development/llvm/slack-desc
index 5447393f47373..70157b3a8bf3d 100644
--- a/development/llvm/slack-desc
+++ b/development/llvm/slack-desc
@@ -8,12 +8,12 @@
|-----handy-ruler------------------------------------------------|
llvm: llvm (Low Level Virtual Machine)
llvm:
-llvm: Low Level Virtual Machine is a toolkit for the construction of
-llvm: highly optimized compilers, optimizers, and runtime
+llvm: Low Level Virtual Machine is a toolkit for the construction
+llvm: of highly optimized compilers, optimizers, and runtime
llvm: environments.
llvm:
llvm: Homepage: http://llvm.org/
llvm:
llvm:
llvm:
-llvm: \ No newline at end of file
+llvm: