r346675 - Revert "Make clang-based tools find libc++ on MacOS"

Jonas Devlieghere via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 12 08:59:50 PST 2018


Author: jdevlieghere
Date: Mon Nov 12 08:59:50 2018
New Revision: 346675

URL: http://llvm.org/viewvc/llvm-project?rev=346675&view=rev
Log:
Revert "Make clang-based tools find libc++ on MacOS"

This breaks the LLDB bots.

Removed:
    cfe/trunk/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector
    cfe/trunk/test/Tooling/clang-check-mac-libcxx-abspath.cpp
    cfe/trunk/test/Tooling/clang-check-mac-libcxx-relpath.cpp
Modified:
    cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
    cfe/trunk/lib/Frontend/CreateInvocationFromCommandLine.cpp
    cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
    cfe/trunk/lib/Tooling/Tooling.cpp

Modified: cfe/trunk/include/clang/Lex/HeaderSearchOptions.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearchOptions.h?rev=346675&r1=346674&r2=346675&view=diff
==============================================================================
--- cfe/trunk/include/clang/Lex/HeaderSearchOptions.h (original)
+++ cfe/trunk/include/clang/Lex/HeaderSearchOptions.h Mon Nov 12 08:59:50 2018
@@ -108,13 +108,6 @@ public:
   /// etc.).
   std::string ResourceDir;
 
-  /// Compiler install dir as detected by the Driver.
-  /// This is typically the directory that contains the clang executable, i.e.
-  /// the 'bin/' subdir of a clang distribution.
-  /// Only used to add include dirs for libc++ on Darwin. Please avoid relying
-  /// on this field for other purposes.
-  std::string InstallDir;
-
   /// The directory used for the module cache.
   std::string ModuleCachePath;
 

Modified: cfe/trunk/lib/Frontend/CreateInvocationFromCommandLine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CreateInvocationFromCommandLine.cpp?rev=346675&r1=346674&r2=346675&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/CreateInvocationFromCommandLine.cpp (original)
+++ cfe/trunk/lib/Frontend/CreateInvocationFromCommandLine.cpp Mon Nov 12 08:59:50 2018
@@ -11,18 +11,17 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "clang/Frontend/Utils.h"
 #include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Driver/Action.h"
 #include "clang/Driver/Compilation.h"
 #include "clang/Driver/Driver.h"
+#include "clang/Driver/Action.h"
 #include "clang/Driver/Options.h"
 #include "clang/Driver/Tool.h"
 #include "clang/Frontend/CompilerInstance.h"
 #include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Frontend/Utils.h"
 #include "llvm/Option/ArgList.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/Path.h"
 using namespace clang;
 using namespace llvm::opt;
 
@@ -103,8 +102,5 @@ std::unique_ptr<CompilerInvocation> clan
                                      CCArgs.size(),
                                      *Diags))
     return nullptr;
-  // Patch up the install dir, so we find the same standard library as the
-  // original compiler on MacOS.
-  CI->getHeaderSearchOpts().InstallDir = TheDriver.getInstalledDir();
   return CI;
 }

Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=346675&r1=346674&r2=346675&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original)
+++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Mon Nov 12 08:59:50 2018
@@ -476,9 +476,14 @@ void InitHeaderSearch::AddDefaultInclude
       if (triple.isOSDarwin()) {
         // On Darwin, libc++ may be installed alongside the compiler in
         // include/c++/v1.
-        if (!HSOpts.InstallDir.empty()) {
-          // Get from foo/bin to foo.
-          SmallString<128> P(llvm::sys::path::parent_path(HSOpts.InstallDir));
+        if (!HSOpts.ResourceDir.empty()) {
+          // Remove version from foo/lib/clang/version
+          StringRef NoVer = llvm::sys::path::parent_path(HSOpts.ResourceDir);
+          // Remove clang from foo/lib/clang
+          StringRef Lib = llvm::sys::path::parent_path(NoVer);
+          // Remove lib from foo/lib
+          SmallString<128> P = llvm::sys::path::parent_path(Lib);
+
           // Get foo/include/c++/v1
           llvm::sys::path::append(P, "include", "c++", "v1");
           AddUnmappedPath(P, CXXSystem, false);

Modified: cfe/trunk/lib/Tooling/Tooling.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Tooling.cpp?rev=346675&r1=346674&r2=346675&view=diff
==============================================================================
--- cfe/trunk/lib/Tooling/Tooling.cpp (original)
+++ cfe/trunk/lib/Tooling/Tooling.cpp Mon Nov 12 08:59:50 2018
@@ -327,9 +327,6 @@ bool ToolInvocation::run() {
     Invocation->getPreprocessorOpts().addRemappedFile(It.getKey(),
                                                       Input.release());
   }
-  // Patch up the install dir, so we find the same standard library as the
-  // original compiler on MacOS.
-  Invocation->getHeaderSearchOpts().InstallDir = Driver->getInstalledDir();
   return runInvocation(BinaryName, Compilation.get(), std::move(Invocation),
                        std::move(PCHContainerOps));
 }

Removed: cfe/trunk/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/Inputs/mock-libcxx/include/c%2B%2B/v1/mock_vector?rev=346674&view=auto
==============================================================================
--- cfe/trunk/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector (original)
+++ cfe/trunk/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector (removed)
@@ -1 +0,0 @@
-class vector {};

Removed: cfe/trunk/test/Tooling/clang-check-mac-libcxx-abspath.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/clang-check-mac-libcxx-abspath.cpp?rev=346674&view=auto
==============================================================================
--- cfe/trunk/test/Tooling/clang-check-mac-libcxx-abspath.cpp (original)
+++ cfe/trunk/test/Tooling/clang-check-mac-libcxx-abspath.cpp (removed)
@@ -1,17 +0,0 @@
-// Clang on MacOS can find libc++ living beside the installed compiler.
-// This test makes sure our libTooling-based tools emulate this properly.
-//
-// RUN: rm -rf %t
-// RUN: mkdir %t
-//
-// Install the mock libc++ (simulates the libc++ directory structure).
-// RUN: cp -r %S/Inputs/mock-libcxx %t/
-//
-// Pretend clang is installed beside the mock library that we provided.
-// RUN: echo '[{"directory":"%t","command":"%t/mock-libcxx/bin/clang++ -stdlib=libc++ -target x86_64-apple-darwin -c test.cpp","file":"test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// clang-check will produce an error code if the mock library is not found.
-// RUN: clang-check -p "%t" "%t/test.cpp"
-
-#include <mock_vector>
-vector v;

Removed: cfe/trunk/test/Tooling/clang-check-mac-libcxx-relpath.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/clang-check-mac-libcxx-relpath.cpp?rev=346674&view=auto
==============================================================================
--- cfe/trunk/test/Tooling/clang-check-mac-libcxx-relpath.cpp (original)
+++ cfe/trunk/test/Tooling/clang-check-mac-libcxx-relpath.cpp (removed)
@@ -1,17 +0,0 @@
-// Clang on MacOS can find libc++ living beside the installed compiler.
-// This test makes sure our libTooling-based tools emulate this properly.
-//
-// RUN: rm -rf %t
-// RUN: mkdir %t
-//
-// Install the mock libc++ (simulates the libc++ directory structure).
-// RUN: cp -r %S/Inputs/mock-libcxx %t/
-//
-// Pretend clang is installed beside the mock library that we provided.
-// RUN: echo '[{"directory":"%t","command":"mock-libcxx/bin/clang++ -stdlib=libc++ -target x86_64-apple-darwin -c test.cpp","file":"test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// clang-check will produce an error code if the mock library is not found.
-// RUN: clang-check -p "%t" "%t/test.cpp"
-
-#include <mock_vector>
-vector v;




More information about the cfe-commits mailing list