[Mesa-dev] [PATCH] mesa: use c99 functions on non-linux platforms if supported

Chad Versace chad.versace at linux.intel.com
Mon Aug 5 09:46:58 PDT 2013


On 08/01/2013 03:52 PM, Jonathan Gray wrote:
> On Thu, Aug 01, 2013 at 11:21:57AM -0700, Ian Romanick wrote:
>> On 08/01/2013 09:54 AM, Chad Versace wrote:
>>> On 08/01/2013 09:48 AM, Chad Versace wrote:
>>>> On 08/01/2013 12:27 AM, Jonathan Gray wrote:
>>>>> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
>>>>> ---
>>>>>   src/mesa/main/imports.h | 2 +-
>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git src/mesa/main/imports.h src/mesa/main/imports.h
>>>>> index 53e40b4..aa7dc49 100644
>>>>> --- src/mesa/main/imports.h
>>>>> +++ src/mesa/main/imports.h
>>>>> @@ -230,7 +230,7 @@ static inline int IS_INF_OR_NAN( float x )
>>>>>    *** LDEXPF: multiply value by an integral power of two
>>>>>    *** FREXPF: extract mantissa and exponent from value
>>>>>    ***/
>>>>> -#if defined(__gnu_linux__)
>>>>> +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
>>>>>   /* C99 functions */
>>>>>   #define CEILF(x)   ceilf(x)
>>>>>   #define FLOORF(x)  floorf(x)
>>>>
>>>> This patch looks good to me, but I'm unable to test it.
>>>> On what platform did you test it?
>>>
>
> OpenBSD.
>
>>> I retract the "looks good". These functions are also available
>>> when compiling with `gcc -std=gnu89`, yet gnu89 does not
>>> define __STDC_VERSION__.
>>
>> This is the sort of issue I had in mind in my reply to this patch.
>> That's why autoconf (and other build systems) can figure out what
>> library functions are available and generate HAVE_CEILF, etc. macros
>> for them.
>
> There are already checks along the lines of what I'm adding
> as configure.ac makes gcc compile with -std=c99
>
>>
>>> So, use
>>> #if defined(__gnu_linux) || (your_new_c99_checks)
>
> It doesn't really make sense to do that, especially as the
> rest of the file is different.


I see your point. The #ifdefs throughout the rest of the file have
sensible conditions. This is the only #ifdef that uses __gnu_linux__.

I checked the Linux manpages for all functions in this #ifdef block.
According to the manpages, at least for glibc, all the functions have
the same feature macro requirement.

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L

Do you see any problem with using this as the #ifdef condition? It seems
that this condition will be safe to use on BSD as well as Linux.




More information about the mesa-dev mailing list