Looks good to me.

And thank you for doing the verification.

-kto

On Feb 20, 2013, at 6:52 AM, Erik Joelsson 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/
> 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

Reply via email to