[cfe-commits] r85240 - in /cfe/trunk: include/clang/Frontend/InitHeaderSearch.h lib/Frontend/InitHeaderSearch.cpp

Rafael Espindola rafael.espindola at gmail.com
Tue Oct 27 07:47:31 PDT 2009


Author: rafael
Date: Tue Oct 27 09:47:31 2009
New Revision: 85240

URL: http://llvm.org/viewvc/llvm-project?rev=85240&view=rev
Log:
Split AddDefaultSystemIncludePaths into C, C++ and framework specific functions.

The user visible changes are:

*) Frameworks are only searched on OS X
*) The Cygwin c++ headers are now marked as c++ aware. I am almost
sure that not marking them was a bug.


Modified:
    cfe/trunk/include/clang/Frontend/InitHeaderSearch.h
    cfe/trunk/lib/Frontend/InitHeaderSearch.cpp

Modified: cfe/trunk/include/clang/Frontend/InitHeaderSearch.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/InitHeaderSearch.h?rev=85240&r1=85239&r2=85240&view=diff

==============================================================================
--- cfe/trunk/include/clang/Frontend/InitHeaderSearch.h (original)
+++ cfe/trunk/include/clang/Frontend/InitHeaderSearch.h Tue Oct 27 09:47:31 2009
@@ -73,6 +73,16 @@
   ///  variables such as CPATH.
   void AddDefaultEnvVarPaths(const LangOptions &Lang);
 
+  // AddDefaultCIncludePaths - Add paths that should always be searched.
+  void AddDefaultCIncludePaths(const llvm::Triple &triple);
+
+  // AddDefaultCPlusPlusIncludePaths -  Add paths that should be searched when
+  //  compiling c++.
+  void AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple);
+
+  // AddDefaultFrameworkIncludePaths - Add the framework paths. Used on darwin.
+  void AddDefaultFrameworkIncludePaths(const llvm::Triple &triple);
+
   /// AddDefaultSystemIncludePaths - Adds the default system include paths so
   ///  that e.g. stdio.h is found.
   void AddDefaultSystemIncludePaths(const LangOptions &Lang,

Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=85240&r1=85239&r2=85240&view=diff

==============================================================================
--- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original)
+++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Tue Oct 27 09:47:31 2009
@@ -241,11 +241,9 @@
   return(false);
 }
 
-void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang,
-                                                    const llvm::Triple &triple) {
+void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple) {
   // FIXME: temporary hack: hard-coded paths.
   llvm::Triple::OSType os = triple.getOS();
-
   switch (os) {
   case llvm::Triple::Win32:
     {
@@ -276,162 +274,175 @@
       }
     }
     break;
-  case llvm::Triple::Cygwin:
-    if (Lang.CPlusPlus) {
-      AddPath("/lib/gcc/i686-pc-cygwin/3.4.4/include",
-        System, false, false, false);
-      AddPath("/lib/gcc/i686-pc-cygwin/3.4.4/include/c++",
-        System, false, false, false);
-    }
-    AddPath("/usr/include", System, false, false, false);
-    break;
   case llvm::Triple::MinGW64:
-    if (Lang.CPlusPlus) { // I'm guessing here.
-      // Try gcc 4.4.0
-      AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw64", "4.4.0");
-      // Try gcc 4.3.0
-      AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw64", "4.3.0");
-    }
-    // Fall through.
   case llvm::Triple::MinGW32:
-    if (Lang.CPlusPlus) {
-      // Try gcc 4.4.0
-      AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.4.0");
-      // Try gcc 4.3.0
-      AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.3.0");
-    }
     AddPath("c:/mingw/include", System, true, false, false);
     break;
   default:
-    if (Lang.CPlusPlus) {
-      switch (os) {
-        case llvm::Triple::Darwin:
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
-                                      "i686-apple-darwin10",
-                                      "i686-apple-darwin10/x86_64",
-                                      triple);
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.0.0",
-                                      "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",
-                                      triple);
-          // Ubuntu 9.04
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.3",
-                                      "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",
-                                      triple);
-          // Fedora 9
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.0",
-                                      "i386-redhat-linux",
-                                      "i386-redhat-linux",
-                                      triple);
-          // Fedora 10
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.2",
-                                      "i386-redhat-linux",
-                                      "i386-redhat-linux",
-                                      triple);
-          // openSUSE 11.1 32 bit
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
-                                      "i586-suse-linux",
-                                      "i586-suse-linux",
-                                      triple);
-          // openSUSE 11.1 64 bit
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
-                                      "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",
-                                      triple);
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4",
-                                      "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",
-                                      triple);
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1",
-                                      "x86_64-unknown-linux-gnu",
-                                      "x86_64-unknown-linux-gnu",
-                                      triple);
-          // Gentoo x86 2009.1 stable
-          AddGnuCPlusPlusIncludePaths(
-             "/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4",
-             "i686-pc-linux-gnu",
-             "i686-pc-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",
-             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",
-             triple);
-          // Ubuntu 8.10
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
-                                      "i486-pc-linux-gnu",
-                                      "i486-pc-linux-gnu",
-                                      triple);
-          // Ubuntu 9.04
-          AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
-                                      "i486-linux-gnu",
-                                      "i486-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",
-             triple);
-          break;
-        case llvm::Triple::FreeBSD:
-          // DragonFly
-          AddPath("/usr/include/c++/4.1", System, true, false, false);
-          // FreeBSD
-          AddPath("/usr/include/c++/4.2", System, true, false, false);
-          break;
-        case llvm::Triple::Solaris:
-          // Solaris - Fall though..
-        case llvm::Triple::AuroraUX:
-          // AuroraUX
-          AddGnuCPlusPlusIncludePaths("/opt/gcc4/include/c++/4.2.4",
-                                      "i386-pc-solaris2.11",
-                                      "i386-pc-solaris2.11",
-                                      triple);
-          break;
-        default:
-          break;
-      }
-    }
     break;
   }
 
   AddPath("/usr/local/include", System, false, false, false);
   AddPath("/usr/include", System, false, false, false);
+}
+
+void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple) {
+  llvm::Triple::OSType os = triple.getOS();
+  // FIXME: temporary hack: hard-coded paths.
+  switch (os) {
+  case llvm::Triple::Cygwin:
+    AddPath("/lib/gcc/i686-pc-cygwin/3.4.4/include",
+        System, true, false, false);
+    AddPath("/lib/gcc/i686-pc-cygwin/3.4.4/include/c++",
+        System, true, false, false);
+    break;
+  case llvm::Triple::MinGW64:
+    // Try gcc 4.4.0
+    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw64", "4.4.0");
+    // Try gcc 4.3.0
+    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw64", "4.3.0");
+    // Fall through.
+  case llvm::Triple::MinGW32:
+    // Try gcc 4.4.0
+    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.4.0");
+    // Try gcc 4.3.0
+    AddMinGWCPlusPlusIncludePaths("c:/MinGW/lib/gcc", "mingw32", "4.3.0");
+    break;
+  case llvm::Triple::Darwin:
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
+				"i686-apple-darwin10",
+				"i686-apple-darwin10/x86_64",
+				triple);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.0.0",
+				"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",
+				triple);
+    // Ubuntu 9.04
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.3",
+				"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",
+				triple);
+    // Fedora 9
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.0",
+				"i386-redhat-linux",
+				"i386-redhat-linux",
+				triple);
+    // Fedora 10
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.2",
+				"i386-redhat-linux",
+				"i386-redhat-linux",
+				triple);
+    // openSUSE 11.1 32 bit
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
+				"i586-suse-linux",
+				"i586-suse-linux",
+				triple);
+    // openSUSE 11.1 64 bit
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
+				"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",
+				triple);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.4",
+				"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",
+				triple);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3.1",
+				"x86_64-unknown-linux-gnu",
+				"x86_64-unknown-linux-gnu",
+				triple);
+    // Gentoo x86 2009.1 stable
+    AddGnuCPlusPlusIncludePaths(
+        "/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4",
+	"i686-pc-linux-gnu",
+	"i686-pc-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",
+	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",
+	triple);
+    // Ubuntu 8.10
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
+				"i486-pc-linux-gnu",
+				"i486-pc-linux-gnu",
+				triple);
+    // Ubuntu 9.04
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.3",
+				"i486-linux-gnu",
+				"i486-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",
+        triple);
+    break;
+  case llvm::Triple::FreeBSD:
+    // DragonFly
+    AddPath("/usr/include/c++/4.1", System, true, false, false);
+    // FreeBSD
+    AddPath("/usr/include/c++/4.2", System, true, false, false);
+    break;
+  case llvm::Triple::Solaris:
+    // Solaris - Fall though..
+  case llvm::Triple::AuroraUX:
+    // AuroraUX
+    AddGnuCPlusPlusIncludePaths("/opt/gcc4/include/c++/4.2.4",
+                                "i386-pc-solaris2.11",
+                                "i386-pc-solaris2.11",
+                                triple);
+    break;
+  default:
+    break;
+  }
+}
+
+void InitHeaderSearch::AddDefaultFrameworkIncludePaths(const llvm::Triple &triple) {
+  llvm::Triple::OSType os = triple.getOS();
+  if (os != llvm::Triple::Darwin)
+    return;
   AddPath("/System/Library/Frameworks", System, true, false, true);
   AddPath("/Library/Frameworks", System, true, false, true);
 }
 
+void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang,
+                                                    const llvm::Triple &triple) {
+  AddDefaultCIncludePaths(triple);
+  AddDefaultFrameworkIncludePaths(triple);
+  if (Lang.CPlusPlus)
+    AddDefaultCPlusPlusIncludePaths(triple);
+}
+
 void InitHeaderSearch::AddDefaultEnvVarPaths(const LangOptions &Lang) {
   AddEnvVarPaths("CPATH");
   if (Lang.CPlusPlus && Lang.ObjC1)





More information about the cfe-commits mailing list