| 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. |