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: Richard Frith-Macdonald
Subject: Re: MAC_OS_X_VERSION macros
Date: Mon, 1 Jul 2013 08:13:29 +0100

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?


reply via email to

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