On Mon, Aug 05, 2013 at 09:46:58AM -0700, Chad Versace wrote: > 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 <j...@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.
The various _SOURCE macros control the visibility of definitions in headers and have to be defined by the program being compiled so I think you're a bit confused there, see http://linux.die.net/man/7/feature_test_macros The ifdef test is more about trying to spot systems that don't have c99 functions (msvc and ?). The impression I get from the glibc man page is you'll have to compile with --std=c99 (which mesa already does) or define _ISOC99_SOURCE before the relevant include. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev