forked from OSchip/llvm-project
Support LIBRARY_PATH on all Darwin targets.
r197490 changed the behavior of LIBRARY_PATH to try to match GCC's behavior for cross compilers and make clang work better on "bare metal" targets. Unfortunately that change is breaking a number of MacPorts projects because the LIBRARY_PATH environment variable is being ignored when compiling on a 64-bit host for a 32-bit target. Because the host and target architectures differ, isCrossCompiling returns true. This does not make sense for Darwin, where multiple architectures are supported natively via "fat" Mach-O slices and where development is generally done against SDKs regardless. This patch fixes the problem by overriding isCrossCompiling to return false for Darwin toolchains. llvm-svn: 214208
This commit is contained in:
parent
82625d3a5f
commit
9e6e0751b3
|
@ -116,9 +116,6 @@ public:
|
|||
StringRef getPlatform() const { return Triple.getVendorName(); }
|
||||
StringRef getOS() const { return Triple.getOSName(); }
|
||||
|
||||
/// \brief Returns true if the toolchain is targeting a non-native architecture.
|
||||
bool isCrossCompiling() const;
|
||||
|
||||
/// \brief Provide the default architecture name (as expected by -arch) for
|
||||
/// this toolchain. Note t
|
||||
StringRef getDefaultUniversalArchName() const;
|
||||
|
@ -171,6 +168,10 @@ public:
|
|||
|
||||
// Platform defaults information
|
||||
|
||||
/// \brief Returns true if the toolchain is targeting a non-native
|
||||
/// architecture.
|
||||
virtual bool isCrossCompiling() const;
|
||||
|
||||
/// HasNativeLTOLinker - Check whether the linker and related tools have
|
||||
/// native LLVM support.
|
||||
virtual bool HasNativeLLVMSupport() const;
|
||||
|
|
|
@ -427,6 +427,11 @@ public:
|
|||
/// @name ToolChain Implementation
|
||||
/// {
|
||||
|
||||
// Darwin tools support multiple architecture (e.g., i386 and x86_64) and
|
||||
// most development is done against SDKs, so compiling for a different
|
||||
// architecture should not get any special treatment.
|
||||
bool isCrossCompiling() const override { return false; }
|
||||
|
||||
llvm::opt::DerivedArgList *
|
||||
TranslateArgs(const llvm::opt::DerivedArgList &Args,
|
||||
const char *BoundArch) const override;
|
||||
|
|
|
@ -5,3 +5,7 @@
|
|||
// XFAIL: win32
|
||||
// REQUIRES: clang-driver
|
||||
// REQUIRES: native
|
||||
|
||||
// Make sure that LIBRARY_PATH works for both i386 and x86_64 on Darwin.
|
||||
// RUN: env LIBRARY_PATH=%T/test1 %clang -target x86_64-apple-darwin %s -### 2>&1 | FileCheck %s
|
||||
// RUN: env LIBRARY_PATH=%T/test1 %clang -target i386-apple-darwin %s -### 2>&1 | FileCheck %s
|
||||
|
|
Loading…
Reference in New Issue