diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2009-10-14 17:09:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2009-10-14 17:09:44 +0000 |
commit | 31b63beefa058aa42a12a1c2b72b43a4ba21f7f1 (patch) | |
tree | ea588022533bb5886b14007435e61b9285d027e6 /lib/Frontend/InitHeaderSearch.cpp | |
parent | aa40454a14837c573f323e29269cc0b53f495a13 (diff) |
Add support for having different c++ search dirs with -m32 and -m64. So far
this is only used in darwin10, 64 bit ubuntu 9.10 and 64 bit openSUSE 11.1.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84115 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/InitHeaderSearch.cpp')
-rw-r--r-- | lib/Frontend/InitHeaderSearch.cpp | 93 |
1 files changed, 69 insertions, 24 deletions
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp index eb5b4335cb..822a5baf59 100644 --- a/lib/Frontend/InitHeaderSearch.cpp +++ b/lib/Frontend/InitHeaderSearch.cpp @@ -103,10 +103,18 @@ void InitHeaderSearch::AddEnvVarPaths(const char *Name) { } void InitHeaderSearch::AddGnuCPlusPlusIncludePaths(const std::string &Base, - const char *Arch) { - AddPath(Base, System, true, false, false); - AddPath(Base + "/" + Arch, System, true, false, false); - AddPath(Base + "/backward", System, true, false, false); + const char *Dir32, + const char *Dir64, + const llvm::Triple &triple) { + llvm::Triple::ArchType arch = triple.getArch(); + bool is64bit = arch == llvm::Triple::ppc64 || arch == llvm::Triple::x86_64; + + AddPath(Base, System, true, false, false); + if (is64bit) + AddPath(Base + "/" + Dir64, System, true, false, false); + else + AddPath(Base + "/" + Dir32, System, true, false, false); + AddPath(Base + "/backward", System, true, false, false); } void InitHeaderSearch::AddMinGWCPlusPlusIncludePaths(const std::string &Base, @@ -234,7 +242,7 @@ bool getVisualStudioDir(std::string &path) { } void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang, - const llvm::Triple &triple) { + const llvm::Triple &triple) { // FIXME: temporary hack: hard-coded paths. llvm::Triple::OSType os = triple.getOS(); @@ -299,56 +307,91 @@ void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang, switch (os) { case llvm::Triple::Darwin: AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1", - "i686-apple-darwin10"); + "i686-apple-darwin10", + "i686-apple-darwin10/x86_64", + triple); AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.0.0", - "i686-apple-darwin8"); + "i686-apple-darwin8", + "i686-apple-darwin8", + triple); break; case llvm::Triple::Linux: // Ubuntu 7.10 - Gutsy Gibbon AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.1.3", - "i486-linux-gnu"); + "i486-linux-gnu", + "i486-linux-gnu", + triple); // Ubuntu 9.04 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.3", - "x86_64-linux-gnu"); + "x86_64-linux-gnu/32", + "x86_64-linux-gnu", + triple); // Fedora 8 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.1.2", - "i386-redhat-linux"); + "i386-redhat-linux", + "i386-redhat-linux", + triple); // Fedora 9 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.0", - "i386-redhat-linux"); + "i386-redhat-linux", + "i386-redhat-linux", + triple); // Fedora 10 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.2", - "i386-redhat-linux"); - // openSUSE 11.1 + "i386-redhat-linux", + "i386-redhat-linux", + triple); + // openSUSE 11.1 32 bit AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", - "i586-suse-linux"); + "i586-suse-linux", + "i586-suse-linux", + triple); + // openSUSE 11.1 64 bit AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", - "x86_64-suse-linux"); + "x86_64-suse-linux/32", + "x86_64-suse-linux", + triple); // openSUSE 11.2 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4", - "i586-suse-linux"); + "i586-suse-linux", + "i586-suse-linux", + triple); AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4", - "x86_64-suse-linux"); + "x86_64-suse-linux", + "x86_64-suse-linux", + triple); // Arch Linux 2008-06-24 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1", - "i686-pc-linux-gnu"); + "i686-pc-linux-gnu", + "i686-pc-linux-gnu", + triple); AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1", - "x86_64-unknown-linux-gnu"); + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-gnu", + triple); // Gentoo x86 2009.0 stable AddGnuCPlusPlusIncludePaths( "/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4", - "i686-pc-linux-gnu"); + "i686-pc-linux-gnu", + "i686-pc-linux-gnu", + triple); // Gentoo x86 2008.0 stable AddGnuCPlusPlusIncludePaths( "/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4", - "i686-pc-linux-gnu"); + "i686-pc-linux-gnu", + "i686-pc-linux-gnu", + triple); // Ubuntu 8.10 AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", - "i486-pc-linux-gnu"); + "i486-pc-linux-gnu", + "i486-pc-linux-gnu", + triple); // Gentoo amd64 stable AddGnuCPlusPlusIncludePaths( "/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4", - "i686-pc-linux-gnu"); + "i686-pc-linux-gnu", + "i686-pc-linux-gnu", + triple); break; case llvm::Triple::FreeBSD: // DragonFly @@ -359,7 +402,9 @@ void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang, case llvm::Triple::Solaris: // AuroraUX AddGnuCPlusPlusIncludePaths("/opt/gcc4/include/c++/4.2.4", - "i386-pc-solaris2.11"); + "i386-pc-solaris2.11", + "i386-pc-solaris2.11", + triple); break; default: break; |