Re: Compiling for 10.9 through 10.12
Re: Compiling for 10.9 through 10.12
- Subject: Re: Compiling for 10.9 through 10.12
- From: Charles Francoise <email@hidden>
- Date: Thu, 21 Jul 2016 16:03:49 +0000
Hi Rich,
Thanks for the feedback.
I do set the deployment target to 10.9 (using
-mmacosx-version-min=10.9 for clang, and
-macosx_version_min 10.9 for ld).
The problem is that a lot of 3rd-party libraries (libevent, among others) use GNU autotools, which can perform checks for clock_gettime (or getentropy, in another case) and use it if it finds it. A lot of my 3rd-party open-source libraries are breaking retro-compatibility when built with the new SDK because of this. If I could "undefine" clock_gettime for building these libraries, I think it would all be OK. Quite a number of open-source libraries are breaking because of this, it seems... https://github.com/Homebrew/homebrew-core/issues/1957
I'll keep looking into it, but introducing POSIX standard syscalls without protecting backwards compatibility is going to cause quite some havoc in multi-platform code, and call for a lot of platform-specific fixes.
On Thu, Jul 21, 2016 at 3:45 PM Rich Siegel <
email@hidden> wrote:
On Thursday, July 21, 2016, Charles Francoise
<email@hidden> wrote:
>I’m trying to find a way to either build for 10.12 from
>10.11, or build from 10.12 and run for lower versions.
There are two relevant settings: the SDK and the "Deployment
Target". There used to be multiple options for the SDK, but
lately Xcode has started putting the SDK and the OS version in
lock step, so that Xcode 7 includes only the 10.11 SDK and (I
presume) Xcode 8 includes only the 10.12 SDK. This can be
annoying sometimes, but is not a serious problem in most cases.
The "Deployment Target" setting is more relevant here, I think.
That setting should be set to the lowest OS version which you
plan to support. (In this case, 10.9.)
Even with all of this, you still have to code to the minimum
supported OS. If you have to run on 10.9, you can't call APIs
that don't exist there. Neither the OS nor the tool chain will
stop you from doing so.
In the specific case, I see that clock_gettime() doesn't exist
on 10.11, which means it probably doesn't exist on prior OS
versions either, and that means that you can't call it unless
you do a runtime test to see if it's there. (The address of a
weak-linked function is NULL if the function is unavailable at runtime.)
Good luck,
R.
--
Rich Siegel Bare Bones Software, Inc.
<email@hidden> <http://www.barebones.com/>
Someday I'll look back on all this and laugh... until they
sedate me.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden