• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Compiling for 10.9 through 10.12
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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).
Since the SDK marks functions for availability and deprecation, I expected the compiler to complain. But it seems you need to mark it as strict, otherwise, the compiler accepts it, and the linker links it as a weak symbol. http://clang.llvm.org/docs/AttributeReference.html#availability

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.

--
Charles Francoise
Lead Mac Developer @ Lima
email@hidden


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

  • Follow-Ups:
    • Re: Compiling for 10.9 through 10.12
      • From: Jens Alfke <email@hidden>
    • RE: Compiling for 10.9 through 10.12
      • From: "Dallman, John" <email@hidden>
References: 
 >Re: Compiling for 10.9 through 10.12 (From: Rich Siegel <email@hidden>)

  • Prev by Date: Re: Compiling for 10.9 through 10.12
  • Next by Date: RE: Compiling for 10.9 through 10.12
  • Previous by thread: Re: Compiling for 10.9 through 10.12
  • Next by thread: RE: Compiling for 10.9 through 10.12
  • Index(es):
    • Date
    • Thread