Erik Joelsson (erik.joels...@oracle.com) wrote: > I was wrong, just setting the macros below did not generate 10.7 > compatible bits when built on 10.8. Since I already pushed the old > solution (except for hotspot), I created a new bug. Here is a new set of > patches, combining -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 and > -mmacosx-version-min=10.7.0 and also setting the latter on the link > command line. This combination both generates compatible binaries and > treats newer API calls as errors, all verified. > > Sine the two parameters take their argument in different formats, the > handling of defaults is a bit more complicated. The variable being sent > around and that you can override on the command line is now > MACOSX_VERSION_MIN=10.7.0, matching the parameter to the compiler/linker. > > It would be good if someone from hotspot could review the hotspot changes. > > http://cr.openjdk.java.net/~erikj/8008451/webrev.hotspot.01/
The hotspot changes look good to me. -John > http://cr.openjdk.java.net/~erikj/8008451/webrev.root.01/ > http://cr.openjdk.java.net/~erikj/8008451/webrev.jdk.01/ > > /Erik > > On 2013-02-15 10:49, Erik Joelsson wrote: > > > > > > On 2013-02-15 09:43, Erik Joelsson wrote: > >> > >> On 2013-02-14 18:04, David DeHaven wrote: > >>>> Here are a series of patches that adds the following to all native > >>>> compile lines on macosx: > >>>> > >>>> -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 > >>>> -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 > >>> I know I'm not a reviewer, but I have an opinion anyways :) > >>> > >>> Using "-mmacosx-version-min=10.7" seems more appropriate for the > >>> latter, this is passed to the linker as well which I believe sets > >>> version information in the Mach-O headers (in the form of a load > >>> command) to prevent it from being loaded on older systems. The > >>> MIN_REQUIRED macro is set to a value that matches what's passed to > >>> the -mmacosx-version-min argument, so it doesn't need to be provided. > >>> > >>> > >> The effect of the -mmacosx-version-min=10.7 when sent to the linker > >> is to make any calls to newer APIs "softlinked". This means the > >> library will still load fine on the older OS, but the application is > >> responsible for only actually making the newer calls if they are > >> available. This is a good feature if you knowingly want to support > >> multiple versions of the OS and still use features in the newer OS > >> when available. I do not believe we have the need for that and if we > >> ever do, then these parameters will need to change. > >> > > It's true -mmacosx-version-min= also sets the macro > > MAC_OS_X_VERSION_MIN_REQUIRED=, but I see no gain in changing just one > > of them to something else just because it works. The format of the > > parameter is also different (10.7 vs 1070) which would require us to > > add logic for converting between the two. > > > > /Erik