[Mesa-dev] [PATCH 1/2 v3] configure: add visibility macro detection to configure
Sedat Dilek
sedat.dilek at gmail.com
Tue Feb 17 02:00:57 PST 2015
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
>
More information about the mesa-dev
mailing list