Revert "hack in my new variables for GCC"

Very sorry for the accidental commit of WIP code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132745 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dd33f81..aa89823 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -54,18 +54,6 @@
 set(CLANG_RESOURCE_DIR "" CACHE STRING
   "Relative directory from the Clang binary to its resource files.")
 
-set(CLANG_GCC_INSTALL_ROOT "" CACHE STRING
-  "The GCC install root to use for headers and libraries.")
-
-set(CLANG_GCC_LIB_DIR "/lib/gcc" CACHE STRING
-  "The directory relative to the install root for GCC libraries.")
-
-set(CLANG_GCC_ARCH "" CACHE STRING
-  "The architecture string of the GCC installation.")
-
-set(CLANG_GCC_VERSION "" CACHE STRING
-  "The version of the GCC installation.")
-
 set(C_INCLUDE_DIRS "" CACHE STRING
   "Colon separated list of directories clang will search for headers.")
 
diff --git a/include/clang/Config/config.h.cmake b/include/clang/Config/config.h.cmake
index 993bbc9..5f13d2f 100644
--- a/include/clang/Config/config.h.cmake
+++ b/include/clang/Config/config.h.cmake
@@ -1,18 +1,6 @@
 /* Relative directory for resource files */
 #define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"
 
-/* GCC install root */
-#define CLANG_GCC_INSTALL_ROOT "${CLANG_GCC_INSTALL_ROOT}"
-
-/* GCC library directory, relative to the installation root */
-#define CLANG_GCC_LIB_DIR "${CLANG_GCC_LIB_DIR}"
-
-/* GCC architecture */
-#define CLANG_GCC_ARCH "${CLANG_GCC_ARCH}"
-
-/* GCC version */
-#define CLANG_GCC_VERSION "${CLANG_GCC_VERSION}"
-
 /* 32 bit multilib directory. */
 #define CXX_INCLUDE_32BIT_DIR "${CXX_INCLUDE_32BIT_DIR}"
 
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 5266f6a..ca613e3 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -1334,27 +1334,31 @@
 }
 
 static std::string findGCCBaseLibDir(const std::string &GccTriple) {
-  // Check for an explicit configure-time version of GCC.
-  llvm::SmallString<32> GCCVersion(CLANG_GCC_VERSION);
-  if (GCCVersion != "") {
-    // Read the other variables if we have a specific GCC version requested at
-    // configuration time. We provide defaults for them if missing though.
-    llvm::SmallString<128> InstallRoot(CLANG_GCC_INSTALL_ROOT);
-    if (InstallRoot == "") InstallRoot = "/usr";
-    llvm::SmallString<32> GCCLibDir(CLANG_GCC_LIB_DIR);
-    if (GCCLibDir == "") GCCLibDir = "/lib/gcc";
-    llvm::SmallString<32> GCCArch(CLANG_GCC_ARCH);
-    if (GCCArch == "") GCCArch = GccTriple;
-
-    InstallRoot += GCCLibDir;
-    InstallRoot += "/";
-    InstallRoot += GCCArch;
-    InstallRoot += "/";
-    InstallRoot += GCCVersion;
-    return InstallRoot.str();
+  // FIXME: Using CXX_INCLUDE_ROOT is here is a bit of a hack, but
+  // avoids adding yet another option to configure/cmake.
+  // It would probably be cleaner to break it in two variables
+  // CXX_GCC_ROOT with just /foo/bar
+  // CXX_GCC_VER with 4.5.2
+  // Then we would have
+  // CXX_INCLUDE_ROOT = CXX_GCC_ROOT/include/c++/CXX_GCC_VER
+  // and this function would return
+  // CXX_GCC_ROOT/lib/gcc/CXX_INCLUDE_ARCH/CXX_GCC_VER
+  llvm::SmallString<128> CxxIncludeRoot(CXX_INCLUDE_ROOT);
+  if (CxxIncludeRoot != "") {
+    // This is of the form /foo/bar/include/c++/4.5.2/
+    if (CxxIncludeRoot.back() == '/')
+      llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the /
+    llvm::StringRef Version = llvm::sys::path::filename(CxxIncludeRoot);
+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the version
+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the c++
+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include
+    std::string ret(CxxIncludeRoot.c_str());
+    ret.append("/lib/gcc/");
+    ret.append(CXX_INCLUDE_ARCH);
+    ret.append("/");
+    ret.append(Version);
+    return ret;
   }
-
-  // Otherwise, attempt to detect a system GCC installation.
   static const char* GccVersions[] = {"4.6.0", "4.6",
                                       "4.5.2", "4.5.1", "4.5",
                                       "4.4.5", "4.4.4", "4.4.3", "4.4",