summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2010-10-24 12:11:06 +0000
committerFabian Groffen <grobian@gentoo.org>2010-10-24 12:11:06 +0000
commit0cf4c28446f970c66a98b99f6d4262ca1f8827fe (patch)
tree7e9e02976026174dae1b5b407cf3673dcb576a6a /sys-devel
parentAdd new revision and drop ruby19 support from the previous to create a stable... (diff)
downloadgentoo-2-0cf4c28446f970c66a98b99f6d4262ca1f8827fe.tar.gz
gentoo-2-0cf4c28446f970c66a98b99f6d4262ca1f8827fe.tar.bz2
gentoo-2-0cf4c28446f970c66a98b99f6d4262ca1f8827fe.zip
Fix compilation on Darwin, fixes bug #342373, adds back necessary bits for bug #339922
(Portage version: 2.2.01.17063-prefix/cvs/Darwin powerpc)
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/clang/ChangeLog7
-rw-r--r--sys-devel/clang/clang-2.8-r2.ebuild22
-rw-r--r--sys-devel/clang/files/clang-2.8-darwin-prefix.patch127
3 files changed, 153 insertions, 3 deletions
diff --git a/sys-devel/clang/ChangeLog b/sys-devel/clang/ChangeLog
index 0422ef98ec7e..e0b56f26d380 100644
--- a/sys-devel/clang/ChangeLog
+++ b/sys-devel/clang/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for sys-devel/clang
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/ChangeLog,v 1.29 2010/10/21 08:14:07 voyageur Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/ChangeLog,v 1.30 2010/10/24 12:11:06 grobian Exp $
+
+ 24 Oct 2010; Fabian Groffen <grobian@gentoo.org> clang-2.8-r2.ebuild,
+ +files/clang-2.8-darwin-prefix.patch:
+ Fix compilation on Darwin, fixes bug #342373, adds back necessary bits for
+ bug #339922
*clang-2.8-r2 (21 Oct 2010)
diff --git a/sys-devel/clang/clang-2.8-r2.ebuild b/sys-devel/clang/clang-2.8-r2.ebuild
index cffcbd8d3e65..a99a9f7ee4aa 100644
--- a/sys-devel/clang/clang-2.8-r2.ebuild
+++ b/sys-devel/clang/clang-2.8-r2.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-2.8-r2.ebuild,v 1.1 2010/10/21 08:14:07 voyageur Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-2.8-r2.ebuild,v 1.2 2010/10/24 12:11:06 grobian Exp $
EAPI=3
@@ -33,6 +33,14 @@ src_prepare() {
# Same as llvm doc patches
epatch "${FILESDIR}"/${PN}-2.7-fixdoc.patch
+ # Fix toolchain lookup for Darwin/Prefix.
+ epatch "${FILESDIR}"/${PN}-2.8-darwin-prefix.patch
+ sed -e "s|@GENTOO_PORTAGE_CHOST_ARCH@|${CHOST%%-darwin*}-darwin|g" \
+ -e "s|@GENTOO_PORTAGE_CHOST@|${CHOST}|g" \
+ -e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}|g" \
+ -i tools/clang/lib/Driver/ToolChains.cpp \
+ || die "fixing toolchain lookup"
+
# multilib-strict
sed -e "/PROJ_headers/s#lib/clang#$(get_libdir)/clang#" \
-i tools/clang/lib/Headers/Makefile \
@@ -149,9 +157,19 @@ src_install() {
# Fix install_names on Darwin. The build system is too complicated
# to just fix this, so we correct it post-install
if [[ ${CHOST} == *-darwin* ]] ; then
- for lib in libCIndex.dylib ; do
+ for lib in lib{CIndex,clang}.dylib ; do
+ ebegin "fixing install_name of $lib"
install_name_tool -id "${EPREFIX}"/usr/lib/llvm/${lib} \
"${ED}"/usr/lib/llvm/${lib}
+ eend $?
+ done
+ for f in c-index-test ; do
+ ebegin "fixing reference to libclang.dylib in $f"
+ install_name_tool \
+ -change "@rpath/libclang.dylib" \
+ "${EPREFIX}"/usr/lib/llvm/libclang.dylib \
+ "${ED}"/usr/bin/$f
+ eend $?
done
fi
}
diff --git a/sys-devel/clang/files/clang-2.8-darwin-prefix.patch b/sys-devel/clang/files/clang-2.8-darwin-prefix.patch
new file mode 100644
index 000000000000..555b8ee0bcc9
--- /dev/null
+++ b/sys-devel/clang/files/clang-2.8-darwin-prefix.patch
@@ -0,0 +1,127 @@
+This code looks as if it is written by Apple, lots of assumptions that
+only hold for them and their scenario.
+
+--- tools/clang/lib/Driver/ToolChains.cpp
++++ tools/clang/lib/Driver/ToolChains.cpp
+@@ -131,7 +131,7 @@
+ GCCVersion[2] = 1;
+
+ // Set up the tool chain paths to match gcc.
+- ToolChainDir = "i686-apple-darwin";
++ ToolChainDir = "@GENTOO_PORTAGE_CHOST@";
+ ToolChainDir += llvm::utostr(DarwinVersion[0]);
+ ToolChainDir += "/";
+ ToolChainDir += llvm::utostr(GCCVersion[0]);
+@@ -141,9 +141,9 @@
+ ToolChainDir += llvm::utostr(GCCVersion[2]);
+
+ // Try the next major version if that tool chain dir is invalid.
+- std::string Tmp = "/usr/lib/gcc/" + ToolChainDir;
++ std::string Tmp = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir;
+ if (!llvm::sys::Path(Tmp).exists()) {
+- std::string Next = "i686-apple-darwin";
++ std::string Next = "@GENTOO_PORTAGE_CHOST_ARCH@";
+ Next += llvm::utostr(DarwinVersion[0] + 1);
+ Next += "/";
+ Next += llvm::utostr(GCCVersion[0]);
+@@ -155,7 +155,7 @@
+ // Use that if it exists, otherwise hope the user isn't linking.
+ //
+ // FIXME: Drop dependency on gcc's tool chain.
+- Tmp = "/usr/lib/gcc/" + Next;
++ Tmp = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + Next;
+ if (llvm::sys::Path(Tmp).exists())
+ ToolChainDir = Next;
+ }
+@@ -168,7 +168,7 @@
+ Path += "/x86_64";
+ getFilePaths().push_back(Path);
+
+- Path = "/usr/lib/gcc/";
++ Path = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/";
+ Path += ToolChainDir;
+ Path += "/x86_64";
+ getFilePaths().push_back(Path);
+@@ -179,7 +179,7 @@
+ Path += ToolChainDir;
+ getFilePaths().push_back(Path);
+
+- Path = "/usr/lib/gcc/";
++ Path = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/";
+ Path += ToolChainDir;
+ getFilePaths().push_back(Path);
+
+@@ -188,7 +188,7 @@
+ Path += ToolChainDir;
+ getProgramPaths().push_back(Path);
+
+- Path = "/usr/libexec/gcc/";
++ Path = "@GENTOO_PORTAGE_EPREFIX@/usr/libexec/gcc/";
+ Path += ToolChainDir;
+ getProgramPaths().push_back(Path);
+
+@@ -291,14 +291,14 @@
+
+ // FIXME: Derive these correctly.
+ if (getArchName() == "x86_64") {
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir +
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir +
+ "/x86_64"));
+ // Intentionally duplicated for (temporary) gcc bug compatibility.
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir +
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir +
+ "/x86_64"));
+ }
+
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/" + ToolChainDir));
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/" + ToolChainDir));
+
+ Tmp = getDriver().Dir + "/../lib/gcc/" + ToolChainDir;
+ if (llvm::sys::Path(Tmp).exists())
+@@ -306,18 +306,18 @@
+ Tmp = getDriver().Dir + "/../lib/gcc";
+ if (llvm::sys::Path(Tmp).exists())
+ CmdArgs.push_back(Args.MakeArgString("-L" + Tmp));
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir));
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir));
+ // Intentionally duplicated for (temporary) gcc bug compatibility.
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir));
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir));
+ Tmp = getDriver().Dir + "/../lib/" + ToolChainDir;
+ if (llvm::sys::Path(Tmp).exists())
+ CmdArgs.push_back(Args.MakeArgString("-L" + Tmp));
+ Tmp = getDriver().Dir + "/../lib";
+ if (llvm::sys::Path(Tmp).exists())
+ CmdArgs.push_back(Args.MakeArgString("-L" + Tmp));
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir +
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir +
+ "/../../../" + ToolChainDir));
+- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc/" + ToolChainDir +
++ CmdArgs.push_back(Args.MakeArgString("-L@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/" + ToolChainDir +
+ "/../../.."));
+ }
+
+@@ -386,22 +386,7 @@
+ P.eraseComponent(); // .../usr/bin -> ../usr
+ P.appendComponent("lib");
+ P.appendComponent("gcc");
+- switch (getTriple().getArch()) {
+- default:
+- assert(0 && "Invalid Darwin arch!");
+- case llvm::Triple::x86:
+- case llvm::Triple::x86_64:
+- P.appendComponent("i686-apple-darwin10");
+- break;
+- case llvm::Triple::arm:
+- case llvm::Triple::thumb:
+- P.appendComponent("arm-apple-darwin10");
+- break;
+- case llvm::Triple::ppc:
+- case llvm::Triple::ppc64:
+- P.appendComponent("powerpc-apple-darwin10");
+- break;
+- }
++ P.appendComponent("@GENTOO_PORTAGE_CHOST@");
+ P.appendComponent("4.2.1");
+
+ // Determine the arch specific GCC subdirectory.