r214208 - Support LIBRARY_PATH on all Darwin targets.
Bob Wilson
bob.wilson at apple.com
Tue Jul 29 14:06:02 PDT 2014
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 <bob.wilson at apple.com> 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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list