[Mesa-dev] [PATCH 1/6] c11: add c11 compatibility wrapper around stdlib.h

Jose Fonseca jfonseca at vmware.com
Fri Mar 6 23:23:00 PST 2015


On 06/03/15 18:26, Brian Paul wrote:
> On Fri, Mar 6, 2015 at 9:32 AM, Emil Velikov <emil.l.velikov at gmail.com
> <mailto:emil.l.velikov at gmail.com>> wrote:
>
>     Used for aligned_alloc and other C11 functions missing from the header.
>
>     Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com
>     <mailto:emil.l.velikov at gmail.com>>
>     ---
>       include/c11_stdlib.h | 118 ++++++++++++++++++++++++++++++
>
>
> I wonder if this should be include/c11/stdlib.h instead.
>
> I also wonder if I should have put c99_math.h in c99/math.h  Jose
> followed my pattern with c99_alloca.h
>
> We should probably be more consistent about this.  What do you think?

No, {c11,c99}_foo.h are really different from {c11,c99}/foo.h


include/c99 is added to the include path.  It is meant to have 
_complete_ header replacements (stdint.h, inttypes) for compilers that 
don't provide these C99 headers -- MSVC prior to 2013.  This way the C 
include can always just have

   #include <stdint.h>

regardless of the compiler.

If c99_math.h is moved to c99/math.h then it will make it impossible to 
ever include the real MSVC's math.h whenever include/c99 is added to the 
path.

This is also why c11/threads.h is in  c11.  It too is an complete 
implementation of C11'S threads.h.  And in fact we could just add 
include/c11 to the include path and drop the "c11/" prefix.  But the 
fact that GLIB started implement C11 threads.h, and because we still 
didn't eliminate the use of non-portable _MTX_INITIALIZER_NP from Mesa 
tree gave me pause.


Now, things like c11_math.h c11_stdlib.h are a different beast -- 
they're not complete replacement for the headers, but just wrappers 
around the headers which fixup missing things.  They can't ever be put 
in the include path.


We can can consider move the c99_foo.h/c11_foo.h them somewhere else 
(another subdirectory, or util) or renaming them (like u_foo.h).  But 
the distinction between the stuff in c99/ and c11/ must be preserved 
somehow.


Jose





More information about the mesa-dev mailing list