diff options
author | 2010-10-24 12:11:06 +0000 | |
---|---|---|
committer | 2010-10-24 12:11:06 +0000 | |
commit | 0cf4c28446f970c66a98b99f6d4262ca1f8827fe (patch) | |
tree | 7e9e02976026174dae1b5b407cf3673dcb576a6a /sys-devel | |
parent | Add new revision and drop ruby19 support from the previous to create a stable... (diff) | |
download | gentoo-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/ChangeLog | 7 | ||||
-rw-r--r-- | sys-devel/clang/clang-2.8-r2.ebuild | 22 | ||||
-rw-r--r-- | sys-devel/clang/files/clang-2.8-darwin-prefix.patch | 127 |
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. |