Review Request: 8008451: Make mac builds on 10.8 work on 10.7
John.Coomes at oracle.com
Wed Feb 20 11:53:22 PST 2013
Erik Joelsson (erik.joelsson at 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.
The hotspot changes look good to me.
> 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
More information about the hotspot-runtime-dev