On Tuesday 27 October 2015 12:34:11 Ronald Oussoren wrote: > Op 27 okt. 2015 om 09:42 heeft Barry Scott <ba...@barrys-emacs.org> het volgende geschreven: > >> On 19 Oct 2015, at 16:25, Andrew Jaffe <a.h.ja...@gmail.com> wrote: > >> > >> [Also posted to general python list...] > >> > >> I use the python.org framework build of Python under recent versions of > >> OS X (i.e., 10.11 El Capitan). I need to build some extensions that rely > >> on recent versions of compilers (e.g., C++-11 features). However the > >> python.org python is built to work on older systems as well, for > >> backward compatibility. > >> > >> Hence, it has the environment variable MACOSX_DEPLOYMENT_TARGET=10.6. > >> This means that extensions are built by default with a toolchain that, I > >> think, mimics gcc-4.2, in particular in terms of what stdlib it searches. > >> > >> In the past, I have fixed this by installing more recent compilers with > >> homebrew and explicitly setting CC, CXX, etc before installation. > >> > >> However, I have tried just setting MACOSX_DEPLOYMENT_TARGET=10.11, and > >> that seems to work. Is this safe? Are there any downsides? (I don't need > >> to distribute these builds, just use them locally?) > > > > I built pysvn with MACOSX_DEPLOYMENT_TARGET being 10.9, 10.10 and 10.11 > > without issue. But I am not using c++11 features yet. > > > > I’m facing the problem that the SDK for 10.9 and 10.10 is missing from the > > latest Xcode release. It only has 10.11 SDK. I’m planning to use a VM > > running OS X 10.10 with the previous Xcode for public builds, which is > > not your problem. > > > > On windows I have seen issues with runtime API incompatibly between older > > and newer compiler. At least on Windows you must use the right compiler > > and > > runtime to match the python build you have. > > That is almost never aan issue on OS X although YMMV. The primary tricky > part is using system provided versions of 3th party libraries.
What I neglected to say and your comments reminded me of is that I use the SDK for the matching target to avoid issues with missing API. That has helped with compat with openssl and sqlite for example. > > Linux is trouble free as python is built with the distribution’s chosen > > compiler which is the one you use to build the extension. > > > >> Conversely, are there any upsides? Does a newer deployment target allow > >> more recent compilers and/or higher optimizations? > > > > The upside is indeed better compiler and access to newer/fixed APIs. > > Not really. The deployment target tells the compiler the lowest OS X version > you want to deploy to and doesn't affect which APIs you can use. APIs not > available on older OSX versions can still be used, but are weak linked and > that means C function pointers might be NULL. Interesting I did not know that. > In a small number of cases the deployment target affects the function > signature of UNIX APIs, but AFAIK that was only used with the introduction > of 64bit on OSX and shouldn't affect code running on OS X 10.5 or later. Barry > > Ronald > > > Barry > > > >> -Andrew > >> > >> _______________________________________________ > >> Pythonmac-SIG maillist - Pythonmac-SIG@python.org > >> https://mail.python.org/mailman/listinfo/pythonmac-sig > >> unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG > > > > _______________________________________________ > > Pythonmac-SIG maillist - Pythonmac-SIG@python.org > > https://mail.python.org/mailman/listinfo/pythonmac-sig > > unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG 1 _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org https://mail.python.org/mailman/listinfo/pythonmac-sig unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG