[Mesa-dev] [PATCH] mapi: Add better visibility checks

Alexander von Gluck IV kallisti5 at unixzen.com
Tue Nov 19 13:27:32 PST 2013


On Tue, Nov 19, 2013 at 2:55 PM, Emil Velikov 
<emil.l.velikov at gmail.com> wrote:
> On 17/11/13 18:11, Alexander von Gluck IV wrote:
>>  * gl.h ensures gcc is 4.x or later before using
>>    hidden visibility. This change matches that behaviour
>>    and ensures better compatibility for older gcc versions.
>> 
> Hi Alexander,
> 
> AFAICS there are, currently, 11 cases of such ifdef spaghetti in mesa.
> 
> IMHO we can easily compact all _but_ the following two into into a
> single header, in a similar fashion to the inline macro 
> (c99_compat.h).
> 
> include/GL/gl.h
> include/KHR/khrplatform.h -> bump the gcc version to 4?
> 
> The gcc manual[1] indicates that the "new C++ visibility support" is
> available as of gcc4[2]. Although for the sake of me I cannot find the
> source of the original C visibility support. Hmm the original
> khrplatform.h header does not have any of the GCC checks.
> 
> Chia-I Wu would you have any idea when C visibility support was added 
> to
> gcc? Would you have any comment on bumping the version to 4.0 ?
> 
> Would you mind ripping all this stuff out to a header rather than
> carrying it around any more ?
> 
> How do other devs feel on the subject ?
> 

Sounds good to me.  I understand Mesa defines a minimum gcc version, 
but
this would increase portability of Mesa while reducing cruft.

I went with the 4.0 version as gcc's own webpage shows a 4.0 check. [1]

> 
> 
> [1] http://gcc.gnu.org/wiki/Visibility
> [2] http://gcc.gnu.org/gcc-4.0/changes.html
> 
> 
>>  ---
>>   src/mapi/glapi/glapi.h |    2 +-
>>   src/mapi/u_compiler.h  |    2 +-
>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>  
>>  diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h
>>  index c764271..8e17dc7 100644
>>  --- a/src/mapi/glapi/glapi.h
>>  +++ b/src/mapi/glapi/glapi.h
>>  @@ -61,7 +61,7 @@ extern "C" {
>>   #    else
>>   #      define _GLAPI_EXPORT __declspec(dllimport)
>>   #    endif
>>  -#  elif defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C 
>> >= 0x590))
>>  +#  elif (defined(__GNUC__) && __GNUC__ >= 4) || 
>> (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
>>   #    define _GLAPI_EXPORT __attribute__((visibility("default")))
>>   #  else
>>   #    define _GLAPI_EXPORT
>>  diff --git a/src/mapi/u_compiler.h b/src/mapi/u_compiler.h
>>  index f376e97..66c961e 100644
>>  --- a/src/mapi/u_compiler.h
>>  +++ b/src/mapi/u_compiler.h
>>  @@ -11,7 +11,7 @@
>>   
>>   /* Function visibility */
>>   #ifndef PUBLIC
>>  -#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 
>> 0x590))
>>  +#  if (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) 
>> && (__SUNPRO_C >= 0x590))
>>   #    define PUBLIC __attribute__((visibility("default")))
>>   #  elif defined(_MSC_VER)
>>   #    define PUBLIC __declspec(dllexport)
>>  
>> 
> 



More information about the mesa-dev mailing list