aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2009-10-06 01:33:02 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2009-10-06 01:33:02 +0000
commit2e9f652d53346bf7e64c8a12a9ff06b004a3e489 (patch)
tree42e2dfa8d7fa6645216f1a80c81c0fe0efbdc6cd
parent979ec2e5ee9e1a648e13c35510bb1cd437f90d24 (diff)
Refactor the c++ include path a bit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83357 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Frontend/InitHeaderSearch.h4
-rw-r--r--lib/Frontend/InitHeaderSearch.cpp101
2 files changed, 37 insertions, 68 deletions
diff --git a/include/clang/Frontend/InitHeaderSearch.h b/include/clang/Frontend/InitHeaderSearch.h
index 23499c641b..097f34ea5e 100644
--- a/include/clang/Frontend/InitHeaderSearch.h
+++ b/include/clang/Frontend/InitHeaderSearch.h
@@ -56,6 +56,10 @@ public:
/// header search list.
void AddEnvVarPaths(const char *Name);
+ /// AddGnuCPlusPlusIncludePaths - Add the necessary paths to suport a gnu
+ /// libstdc++.
+ void AddGnuCPlusPlusIncludePaths(std::string base, std::string arch);
+
/// AddDefaultEnvVarPaths - Adds list of paths from default environment
/// variables such as CPATH.
void AddDefaultEnvVarPaths(const LangOptions &Lang);
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
index da45bcca97..b56e3a8a98 100644
--- a/lib/Frontend/InitHeaderSearch.cpp
+++ b/lib/Frontend/InitHeaderSearch.cpp
@@ -98,6 +98,12 @@ void InitHeaderSearch::AddEnvVarPaths(const char *Name) {
AddPath(at, Angled, false, true, false);
}
+void InitHeaderSearch::AddGnuCPlusPlusIncludePaths(std::string base,
+ std::string arch) {
+ AddPath(base, System, true, false, false);
+ AddPath(base + "/" + arch, System, true, false, false);
+ AddPath(base + "/backward", System, true, false, false);
+}
void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang) {
// FIXME: temporary hack: hard-coded paths.
@@ -119,96 +125,56 @@ void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang) {
#else
if (Lang.CPlusPlus) {
- AddPath("/usr/include/c++/4.2.1", System, true, false, false);
- AddPath("/usr/include/c++/4.2.1/i686-apple-darwin10", System, true, false,
- false);
- AddPath("/usr/include/c++/4.2.1/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
+ "i686-apple-darwin10");
- AddPath("/usr/include/c++/4.0.0", System, true, false, false);
- AddPath("/usr/include/c++/4.0.0/i686-apple-darwin8", System, true, false,
- false);
- AddPath("/usr/include/c++/4.0.0/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.0.0", "i686-apple-darwin8");
// Ubuntu 7.10 - Gutsy Gibbon
- AddPath("/usr/include/c++/4.1.3", System, true, false, false);
- AddPath("/usr/include/c++/4.1.3/i486-linux-gnu", System, true, false,
- false);
- AddPath("/usr/include/c++/4.1.3/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.1.3", "i486-linux-gnu");
// Ubuntu 9.04
- AddPath("/usr/include/c++/4.3.3", System, true, false, false);
- AddPath("/usr/include/c++/4.3.3/x86_64-linux-gnu/", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3.3/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.3", "x86_64-linux-gnu");
// Fedora 8
- AddPath("/usr/include/c++/4.1.2", System, true, false, false);
- AddPath("/usr/include/c++/4.1.2/i386-redhat-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.1.2/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.1.2", "i386-redhat-linux");
// Fedora 9
- AddPath("/usr/include/c++/4.3.0", System, true, false, false);
- AddPath("/usr/include/c++/4.3.0/i386-redhat-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3.0/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.0", "i386-redhat-linux");
// Fedora 10
- AddPath("/usr/include/c++/4.3.2", System, true, false, false);
- AddPath("/usr/include/c++/4.3.2/i386-redhat-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3.2/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.2", "i386-redhat-linux");
// openSUSE 11.1
- AddPath("/usr/include/c++/4.3", System, true, false, false);
- AddPath("/usr/include/c++/4.3/i586-suse-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3/x86_64-suse-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", "i586-suse-linux");
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", "x86_64-suse-linux");
// openSUSE 11.2
- AddPath("/usr/include/c++/4.4", System, true, false, false);
- AddPath("/usr/include/c++/4.4/i586-suse-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.4/x86_64-suse-linux", System, true, false,
- false);
- AddPath("/usr/include/c++/4.4/backward", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4", "i586-suse-linux");
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4", "x86_64-suse-linux");
// Arch Linux 2008-06-24
- AddPath("/usr/include/c++/4.3.1", System, true, false, false);
- AddPath("/usr/include/c++/4.3.1/i686-pc-linux-gnu", System, true, false,
- false);
- AddPath("/usr/include/c++/4.3.1/backward", System, true, false, false);
- AddPath("/usr/include/c++/4.3.1/x86_64-unknown-linux-gnu", System, true,
- false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1", "i686-pc-linux-gnu");
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1",
+ "x86_64-unknown-linux-gnu");
// Gentoo x86 2009.0 stable
- AddPath("/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4", System,
- true, false, false);
- AddPath("/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4/"
- "i686-pc-linux-gnu", System, true, false, false);
- AddPath(" /usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4/backward",
- System, true, false, false);
+ AddGnuCPlusPlusIncludePaths(
+ "/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4",
+ "i686-pc-linux-gnu");
// Gentoo x86 2008.0 stable
- AddPath("/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4", System,
- true, false, false);
- AddPath("/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4/"
- "i686-pc-linux-gnu", System, true, false, false);
- AddPath("/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4/backward",
- System, true, false, false);
+ AddGnuCPlusPlusIncludePaths(
+ "/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4",
+ "i686-pc-linux-gnu");
// Ubuntu 8.10
- AddPath("/usr/include/c++/4.3/i486-linux-gnu", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3", "i486-pc-linux-gnu");
// Gentoo amd64 stable
- AddPath("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4", System,
- true, false, false);
- AddPath("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/"
- "i686-pc-linux-gnu", System, true, false, false);
- AddPath("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/backward",
- System, true, false, false);
+ AddGnuCPlusPlusIncludePaths(
+ "/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4",
+ "i686-pc-linux-gnu");
// DragonFly
AddPath("/usr/include/c++/4.1", System, true, false, false);
@@ -217,8 +183,8 @@ void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang) {
AddPath("/usr/include/c++/4.2", System, true, false, false);
// AuroraUX
- AddPath("/opt/gcc4/include/c++/4.2.4", System, true, false, false);
- AddPath("/opt/gcc4/include/c++/4.2.4/i386-pc-solaris2.11", System, true, false, false);
+ AddGnuCPlusPlusIncludePaths("/Opt/gcc4/include/c++/4.2.4",
+ "i386-pc-solaris2.11");
}
AddPath("/usr/local/include", System, false, false, false);
@@ -366,4 +332,3 @@ void InitHeaderSearch::Realize() {
fprintf(stderr, "End of search list.\n");
}
}
-