I’m going to merge this to the 3.5 branch, since it is breaking MacPorts projects.
> On Jul 29, 2014, at 1:17 PM, Bob Wilson <[email protected]> wrote: > > Author: bwilson > Date: Tue Jul 29 15:17:52 2014 > New Revision: 214208 > > URL: http://llvm.org/viewvc/llvm-project?rev=214208&view=rev > Log: > 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. > > Modified: > cfe/trunk/include/clang/Driver/ToolChain.h > cfe/trunk/lib/Driver/ToolChains.h > cfe/trunk/test/Driver/linker-opts.c > > Modified: cfe/trunk/include/clang/Driver/ToolChain.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/ToolChain.h?rev=214208&r1=214207&r2=214208&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Driver/ToolChain.h (original) > +++ cfe/trunk/include/clang/Driver/ToolChain.h Tue Jul 29 15:17:52 2014 > @@ -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; > > Modified: cfe/trunk/lib/Driver/ToolChains.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=214208&r1=214207&r2=214208&view=diff > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains.h (original) > +++ cfe/trunk/lib/Driver/ToolChains.h Tue Jul 29 15:17:52 2014 > @@ -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; > > Modified: cfe/trunk/test/Driver/linker-opts.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linker-opts.c?rev=214208&r1=214207&r2=214208&view=diff > ============================================================================== > --- cfe/trunk/test/Driver/linker-opts.c (original) > +++ cfe/trunk/test/Driver/linker-opts.c Tue Jul 29 15:17:52 2014 > @@ -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 > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
