gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MAC_OS_X_VERSION macros


From: Wolfgang Lux
Subject: Re: MAC_OS_X_VERSION macros
Date: Mon, 1 Jul 2013 09:34:03 +0200

Richard Frith-Macdonald wrote:

> On 30 Jun 2013, at 16:22, Richard Frith-Macdonald <address@hidden> wrote:
> 
>> 
>> On 26 Jun 2013, at 10:33, Wolfgang Lux <address@hidden> wrote:
>> 
>>> Ivan Vučica wrote:
>>> 
>>>> How about:
>>>> 
>>>> #ifdef __APPLE__
>>>> #include <WhateverHeaderDefinesMacOSXVersionMacros.h>
>>>> #else
>>>> // GNUstep's definitions
>>>> #endif
>>>> 
>>>> This would only be helpful if OS X's macro definitions exist in a 
>>>> standalone header, by themselves. However, it sounds better than 
>>>> undefining, avoiding inclusion, or renaming or removing the macros.
>>> 
>>> That would indeed be better. However, to do that we first need to fix all 
>>> places where the numeric values of the version macros are used. This, of 
>>> course, should be done anyway, and my code is just meant as a workaround 
>>> (call it a hack) until this is done.
>> 
>> I'm not sure exactly what the consequences of all this are, as I don't build 
>> gnustep (apart from the testsuite) on OSX, and don't use Apple's version 
>> macros.
>> But the GNUstep ones are based around the major, minor, and subminor version 
>> number stuff, and if I understand correctly, OSX uses completely different 
>> numeric values ... so the above idea of including one or the other makes no 
>> sense unless we change everything in GNUstep versioning to copy OSX exactly 
>> (ie change the headers, and the documentation generation code, and makefiles 
>>  etc).
>> 
>> Now, there may be some sufficviently good reason to change everything, but 
>> if so, I don't think anyone's bothered explaining it.  So I think your first 
>> solution (checking for OSX macros and undefining/redefining them if 
>> necessary) is probably the best ... its a straightforward, localised change 
>> and as far as I cvan see the only downside would be that if you include, on 
>> OSX, a header which depends on the OSX macro versions, after including a 
>> GNUstep header, it could cause some confusion.  However, the simple fix to 
>> that would be to include such headers before including GNUstep headers.
>> 
>> In short, I like your fist solution.
> 
> But, after sleeping on it and thinking some more, I tried another approach 
> ... simply to convert the 4 digit Apple version number to a 6 digit GNUstep 
> version number by multiplying by 100.
> This should mean we can adopt smething like ivan's idea above without 
> breaking any existing stuff in GNUstep, because we can import the apple 
> versions and just have a single macro convert them to the format we currently 
> use.
> Are there problems I haven't spotted with this?

Yes. The value of MAC_OS_X_VERSION_10_1 on Mac OS X is 1010. Multiplying that 
by 100 gives 101000 and not 100100. As this value is even greater than 100700 
(i.e,. MAC_OS_X_VERSION_10_7) your idea is likely to yield wrong results.
On the other hand, something more complicated like (version)/10*100 + 
(version)%10*10 would work.
But then I don't see any difference to my hack of undefining all those macros. 
But maybe it's just too early in the morning.

Wolfgang




reply via email to

[Prev in Thread] Current Thread [Next in Thread]