In case anyone was confused, this was an unintended commit... reverted in r132745....<br><br><div class="gmail_quote">On Wed, Jun 8, 2011 at 3:13 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Author: chandlerc<br>
Date: Wed Jun  8 05:13:14 2011<br>
New Revision: 132743<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=132743&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=132743&view=rev</a><br>
Log:<br>
hack in my new variables for GCC<br>
<br>
Modified:<br>
    cfe/trunk/CMakeLists.txt<br>
    cfe/trunk/include/clang/Config/config.h.cmake<br>
    cfe/trunk/lib/Driver/ToolChains.cpp<br>
<br>
Modified: cfe/trunk/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=132743&r1=132742&r2=132743&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=132743&r1=132742&r2=132743&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/CMakeLists.txt (original)<br>
+++ cfe/trunk/CMakeLists.txt Wed Jun  8 05:13:14 2011<br>
@@ -54,6 +54,18 @@<br>
 set(CLANG_RESOURCE_DIR "" CACHE STRING<br>
   "Relative directory from the Clang binary to its resource files.")<br>
<br>
+set(CLANG_GCC_INSTALL_ROOT "" CACHE STRING<br>
+  "The GCC install root to use for headers and libraries.")<br>
+<br>
+set(CLANG_GCC_LIB_DIR "/lib/gcc" CACHE STRING<br>
+  "The directory relative to the install root for GCC libraries.")<br>
+<br>
+set(CLANG_GCC_ARCH "" CACHE STRING<br>
+  "The architecture string of the GCC installation.")<br>
+<br>
+set(CLANG_GCC_VERSION "" CACHE STRING<br>
+  "The version of the GCC installation.")<br>
+<br>
 set(C_INCLUDE_DIRS "" CACHE STRING<br>
   "Colon separated list of directories clang will search for headers.")<br>
<br>
<br>
Modified: cfe/trunk/include/clang/Config/config.h.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=132743&r1=132742&r2=132743&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=132743&r1=132742&r2=132743&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/include/clang/Config/config.h.cmake (original)<br>
+++ cfe/trunk/include/clang/Config/config.h.cmake Wed Jun  8 05:13:14 2011<br>
@@ -1,6 +1,18 @@<br>
 /* Relative directory for resource files */<br>
 #define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"<br>
<br>
+/* GCC install root */<br>
+#define CLANG_GCC_INSTALL_ROOT "${CLANG_GCC_INSTALL_ROOT}"<br>
+<br>
+/* GCC library directory, relative to the installation root */<br>
+#define CLANG_GCC_LIB_DIR "${CLANG_GCC_LIB_DIR}"<br>
+<br>
+/* GCC architecture */<br>
+#define CLANG_GCC_ARCH "${CLANG_GCC_ARCH}"<br>
+<br>
+/* GCC version */<br>
+#define CLANG_GCC_VERSION "${CLANG_GCC_VERSION}"<br>
+<br>
 /* 32 bit multilib directory. */<br>
 #define CXX_INCLUDE_32BIT_DIR "${CXX_INCLUDE_32BIT_DIR}"<br>
<br>
<br>
Modified: cfe/trunk/lib/Driver/ToolChains.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=132743&r1=132742&r2=132743&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=132743&r1=132742&r2=132743&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)<br>
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Jun  8 05:13:14 2011<br>
@@ -1334,31 +1334,27 @@<br>
 }<br>
<br>
 static std::string findGCCBaseLibDir(const std::string &GccTriple) {<br>
-  // FIXME: Using CXX_INCLUDE_ROOT is here is a bit of a hack, but<br>
-  // avoids adding yet another option to configure/cmake.<br>
-  // It would probably be cleaner to break it in two variables<br>
-  // CXX_GCC_ROOT with just /foo/bar<br>
-  // CXX_GCC_VER with 4.5.2<br>
-  // Then we would have<br>
-  // CXX_INCLUDE_ROOT = CXX_GCC_ROOT/include/c++/CXX_GCC_VER<br>
-  // and this function would return<br>
-  // CXX_GCC_ROOT/lib/gcc/CXX_INCLUDE_ARCH/CXX_GCC_VER<br>
-  llvm::SmallString<128> CxxIncludeRoot(CXX_INCLUDE_ROOT);<br>
-  if (CxxIncludeRoot != "") {<br>
-    // This is of the form /foo/bar/include/c++/4.5.2/<br>
-    if (CxxIncludeRoot.back() == '/')<br>
-      llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the /<br>
-    llvm::StringRef Version = llvm::sys::path::filename(CxxIncludeRoot);<br>
-    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the version<br>
-    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the c++<br>
-    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include<br>
-    std::string ret(CxxIncludeRoot.c_str());<br>
-    ret.append("/lib/gcc/");<br>
-    ret.append(CXX_INCLUDE_ARCH);<br>
-    ret.append("/");<br>
-    ret.append(Version);<br>
-    return ret;<br>
+  // Check for an explicit configure-time version of GCC.<br>
+  llvm::SmallString<32> GCCVersion(CLANG_GCC_VERSION);<br>
+  if (GCCVersion != "") {<br>
+    // Read the other variables if we have a specific GCC version requested at<br>
+    // configuration time. We provide defaults for them if missing though.<br>
+    llvm::SmallString<128> InstallRoot(CLANG_GCC_INSTALL_ROOT);<br>
+    if (InstallRoot == "") InstallRoot = "/usr";<br>
+    llvm::SmallString<32> GCCLibDir(CLANG_GCC_LIB_DIR);<br>
+    if (GCCLibDir == "") GCCLibDir = "/lib/gcc";<br>
+    llvm::SmallString<32> GCCArch(CLANG_GCC_ARCH);<br>
+    if (GCCArch == "") GCCArch = GccTriple;<br>
+<br>
+    InstallRoot += GCCLibDir;<br>
+    InstallRoot += "/";<br>
+    InstallRoot += GCCArch;<br>
+    InstallRoot += "/";<br>
+    InstallRoot += GCCVersion;<br>
+    return InstallRoot.str();<br>
   }<br>
+<br>
+  // Otherwise, attempt to detect a system GCC installation.<br>
   static const char* GccVersions[] = {"4.6.0", "4.6",<br>
                                       "4.5.2", "4.5.1", "4.5",<br>
                                       "4.4.5", "4.4.4", "4.4.3", "4.4",<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br>