[Mesa-dev] [PATCH 1/2 v3] configure: add visibility macro detection to configure

Sedat Dilek sedat.dilek at gmail.com
Tue Feb 17 21:12:39 PST 2015


On Wed, Feb 18, 2015 at 6:03 AM, Sedat Dilek <sedat.dilek at gmail.com> wrote:
> On Tue, Feb 17, 2015 at 11:00 AM, Sedat Dilek <sedat.dilek at gmail.com> wrote:
>> On Tue, Feb 17, 2015 at 10:40 AM, Marc Dietrich <marvin24 at gmx.de> wrote:
>>> This adds clang/gcc visibility macro detection to configure and util/macros.h.
>>> This is can be used to conveniently add e.g. a "HIDDEN" attribute to a function.
>>>
>>> Signed-off-by: Marc Dietrich <marvin24 at gmx.de>
>>> ---
>>> v2: use VISIBILITY_*FLAGS instead of *FLAGS directly
>>> v3: no change
>>>
>>>  configure.ac      | 28 ++++++----------------------
>>>  src/util/macros.h |  6 ++++++
>>>  2 files changed, 12 insertions(+), 22 deletions(-)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 351027b..266764a 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -189,6 +189,7 @@ AX_GCC_FUNC_ATTRIBUTE([flatten])
>>>  AX_GCC_FUNC_ATTRIBUTE([format])
>>>  AX_GCC_FUNC_ATTRIBUTE([malloc])
>>>  AX_GCC_FUNC_ATTRIBUTE([packed])
>>> +AX_GCC_FUNC_ATTRIBUTE([visibility])
>>>
>>>  AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
>>>
>>> @@ -245,17 +246,13 @@ if test "x$GCC" = xyes; then
>>>                    AC_MSG_RESULT([yes]),
>>>                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
>>>                     AC_MSG_RESULT([no])]);
>>> +    CFLAGS=$save_CFLAGS
>>>
>>>      # Enable -fvisibility=hidden if using a gcc that supports it
>>
>> Can you restore this comment with a general pointer to "...compiler
>> that support it".
>>
>> BTW, what is the compiler option called for clang to suppress
>> visibility(-hiden) feature - ... -fvisibility=no ?
>> I would like to test w/o your patches.
>>
>> - Sedat -
>>
>>> -    save_CFLAGS="$CFLAGS"
>>> -    AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
>>> -    VISIBILITY_CFLAGS="-fvisibility=hidden"
>>> -    CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
>>> -    AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
>>> -                  [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
>>> -
>>> -    # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
>>> -    CFLAGS=$save_CFLAGS
>>> +    if test "x${ax_cv_have_func_attribute_visibility}" = xyes; then
>>> +       VISIBILITY_CFLAGS="-fvisibility=hidden"
>>> +       VISIBILITY_CXXFLAGS="-fvisibility=hidden"
>>> +    fi
>>>
>>>      # Work around aliasing bugs - developers should comment this out
>>>      CFLAGS="$CFLAGS -fno-strict-aliasing"
>>> @@ -267,19 +264,6 @@ fi
>>>  if test "x$GXX" = xyes; then
>>>      CXXFLAGS="$CXXFLAGS -Wall"
>>>
>>> -    # Enable -fvisibility=hidden if using a gcc that supports it
>>> -    save_CXXFLAGS="$CXXFLAGS"
>>> -    AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
>>> -    VISIBILITY_CXXFLAGS="-fvisibility=hidden"
>>> -    CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
>>> -    AC_LANG_PUSH([C++])
>>> -    AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
>>> -                  [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
>>> -    AC_LANG_POP([C++])
>>> -
>>> -    # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
>>> -    CXXFLAGS=$save_CXXFLAGS
>>> -
>>>      # Work around aliasing bugs - developers should comment this out
>>>      CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
>>>
>>> diff --git a/src/util/macros.h b/src/util/macros.h
>>> index eec8b93..7682511 100644
>>> --- a/src/util/macros.h
>>> +++ b/src/util/macros.h
>>> @@ -117,6 +117,12 @@ do {                       \
>>>  #define PRINTFLIKE(f, a)
>>>  #endif
>>>
>>> +#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
>>> +#define HIDDEN __attribute__((visibility("hidden")))
>>> +#else
>>> +#define HIDDEN
>>> +#endif
>>> +
>>>  #ifdef HAVE_FUNC_ATTRIBUTE_MALLOC
>>>  #define MALLOCLIKE __attribute__((__malloc__))
>>>  #else
>>> --
>>> 2.2.2
>>>
>
> Here the fix for the comment in visibility macro detection.
>
> - Sedat -

BTW, I would change the subject to something like...

   "configure: add visibility macro detection" (or s/add/introduce)

Can you send a v4 of your patchset, please?
With appropriate credits (Reported-by/Tested-by of mine)?

Thanks!

- Sedat -


More information about the mesa-dev mailing list