#49273: clang-mp-3.7 and MACOSX_DEPLOYMENT_TARGET=10.3 do not mix ----------------------+------------------------ Reporter: jhi@… | Owner: jeremyhu@… Type: defect | Status: closed Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: invalid | Keywords: Port: clang | ----------------------+------------------------ Comment (by jeremyhu@…): Replying to [comment:3 jhi@…]:
This has nothing to do with the deployment target. This has to do with the text based stubs support.
Well, the deployment target is how the error became visible, as you can see from my example. Are you saying the clang-mp-3.7 was just lucky to work (to compile and link) when being compiled without the deployment target?
No, it doesn't have to do with luck. It has to do with how the compiler runtime was delivered in older OS versions. Setting the older deployment target causes a link against libgcc_s.10.4. It's that linking that is the problem, because the linker doesn't know how to use the tbd.
Use the +ld64_xcode variant of ld64 to get this to link for now. +ld64_latest will support text based stubs once opensource.apple.com drops an updated ld64 from Xcode 7 which we can pull in.
Umm, thanks, never heard of this ld64 thing. ld64_xcode? ld64_latest? Is there some documentation for the use of these options? (I'd like to amend the Perl build instructions, if there is).
ld64 is the linker. You can use variants to choose what the default linker is. +ld64_latest should be preferred in most cases, but there is lag after Apple releases Xcode versions before we can update ld64-latest to the newest version, so ld64-xcode may be newer during that period.
For example, from the above it sounds like one should normally use +ld64_xcode ... exactly when? Always?
Preferibly never. It was added specifically for this exact problem to give users of Xcode 7 a workaround.
But you are also saying that this is a transient failure, that +ld64_latest will eventually understand XCode 7?
Yes.
But why are you setting MACOSX_DEPLOYMENT_TARGET to 10.3 when you're compiling for Intel? There were never any Intel Macs running Mac OS X 10.3.
Why are you using such an old deployment target. We didn't even have intel support until 10.4.x
This is actually an open question in the Perl project, if you have feedback/opinions on that, it would be great.
We know that the 10.3 target is getting a little bit old... but we are a little bit cautious over dropping the support for older OS X-es. That is, if a Perl would be compiled now without a deployment target (defaulting to the compiling OS X), how bad would it be if run in older OS X-es?
If you really want to support all systems, setting it 10.4 should suffice. If you want to cover the 99.9% case, setting it to 10.6 should suffice. 10.8 and 10.9 as minimum requirements are starting to be come more popular as well, but the reasons for that probably don't impact perl too much. You may, however, want to consider 10.7 because I brought in a good portion of SUSv4 updates, some Libc API extensions from FreeBSD, NetBSD RBTrees, and other various Libc niceties. -- Ticket URL: <https://trac.macports.org/ticket/49273#comment:4> MacPorts <https://www.macports.org/> Ports system for OS X