visibility.m4 | visibility.m4 | |||
---|---|---|---|---|
# visibility.m4 serial 1 (gettext-0.15) | # visibility.m4 serial 3 (gettext-0.18) | |||
dnl Copyright (C) 2005 Free Software Foundation, Inc. | dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc. | |||
dnl This file is free software; the Free Software Foundation | dnl This file is free software; the Free Software Foundation | |||
dnl gives unlimited permission to copy and/or distribute it, | dnl gives unlimited permission to copy and/or distribute it, | |||
dnl with or without modifications, as long as this notice is preserved. | dnl with or without modifications, as long as this notice is preserved. | |||
dnl From Bruno Haible. | dnl From Bruno Haible. | |||
dnl Tests whether the compiler supports the command-line option | dnl Tests whether the compiler supports the command-line option | |||
dnl -fvisibility=hidden and the function and variable attributes | dnl -fvisibility=hidden and the function and variable attributes | |||
dnl __attribute__((__visibility__("hidden"))) and | dnl __attribute__((__visibility__("hidden"))) and | |||
dnl __attribute__((__visibility__("default"))). | dnl __attribute__((__visibility__("default"))). | |||
skipping to change at line 29 | skipping to change at line 29 | |||
dnl "really only recommended for legacy code". | dnl "really only recommended for legacy code". | |||
dnl Set the variable CFLAG_VISIBILITY. | dnl Set the variable CFLAG_VISIBILITY. | |||
dnl Defines and sets the variable HAVE_VISIBILITY. | dnl Defines and sets the variable HAVE_VISIBILITY. | |||
AC_DEFUN([gl_VISIBILITY], | AC_DEFUN([gl_VISIBILITY], | |||
[ | [ | |||
AC_REQUIRE([AC_PROG_CC]) | AC_REQUIRE([AC_PROG_CC]) | |||
CFLAG_VISIBILITY= | CFLAG_VISIBILITY= | |||
HAVE_VISIBILITY=0 | HAVE_VISIBILITY=0 | |||
if test -n "$GCC"; then | if test -n "$GCC"; then | |||
dnl First, check whether -Werror can be added to the command line, or | ||||
dnl whether it leads to an error because of some other option that the | ||||
dnl user has put into $CC $CFLAGS $CPPFLAGS. | ||||
AC_MSG_CHECKING([whether the -Werror option is usable]) | ||||
AC_CACHE_VAL([gl_cv_cc_vis_werror], [ | ||||
gl_save_CFLAGS="$CFLAGS" | ||||
CFLAGS="$CFLAGS -Werror" | ||||
AC_TRY_COMPILE([], [], | ||||
[gl_cv_cc_vis_werror=yes], | ||||
[gl_cv_cc_vis_werror=no]) | ||||
CFLAGS="$gl_save_CFLAGS"]) | ||||
AC_MSG_RESULT([$gl_cv_cc_vis_werror]) | ||||
dnl Now check whether visibility declarations are supported. | ||||
AC_MSG_CHECKING([for simple visibility declarations]) | AC_MSG_CHECKING([for simple visibility declarations]) | |||
AC_CACHE_VAL(gl_cv_cc_visibility, [ | AC_CACHE_VAL([gl_cv_cc_visibility], [ | |||
gl_save_CFLAGS="$CFLAGS" | gl_save_CFLAGS="$CFLAGS" | |||
CFLAGS="$CFLAGS -fvisibility=hidden" | CFLAGS="$CFLAGS -fvisibility=hidden" | |||
dnl We use the option -Werror and a function dummyfunc, because on so | ||||
me | ||||
dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning | ||||
dnl "visibility attribute not supported in this configuration; ignore | ||||
d" | ||||
dnl at the first function definition in every compilation unit, and w | ||||
e | ||||
dnl don't want to use the option in this case. | ||||
if test $gl_cv_cc_vis_werror = yes; then | ||||
CFLAGS="$CFLAGS -Werror" | ||||
fi | ||||
AC_TRY_COMPILE( | AC_TRY_COMPILE( | |||
[extern __attribute__((__visibility__("hidden"))) int hiddenvar; | [extern __attribute__((__visibility__("hidden"))) int hiddenvar; | |||
extern __attribute__((__visibility__("default"))) int exportedvar; | extern __attribute__((__visibility__("default"))) int exportedvar; | |||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (v oid); | extern __attribute__((__visibility__("hidden"))) int hiddenfunc (v oid); | |||
extern __attribute__((__visibility__("default"))) int exportedfunc | extern __attribute__((__visibility__("default"))) int exportedfunc | |||
(void);], | (void); | |||
void dummyfunc (void) {}], | ||||
[], | [], | |||
gl_cv_cc_visibility=yes, | [gl_cv_cc_visibility=yes], | |||
gl_cv_cc_visibility=no) | [gl_cv_cc_visibility=no]) | |||
CFLAGS="$gl_save_CFLAGS"]) | CFLAGS="$gl_save_CFLAGS"]) | |||
AC_MSG_RESULT([$gl_cv_cc_visibility]) | AC_MSG_RESULT([$gl_cv_cc_visibility]) | |||
if test $gl_cv_cc_visibility = yes; then | if test $gl_cv_cc_visibility = yes; then | |||
CFLAG_VISIBILITY="-fvisibility=hidden" | CFLAG_VISIBILITY="-fvisibility=hidden" | |||
HAVE_VISIBILITY=1 | HAVE_VISIBILITY=1 | |||
fi | fi | |||
fi | fi | |||
AC_SUBST([CFLAG_VISIBILITY]) | AC_SUBST([CFLAG_VISIBILITY]) | |||
AC_SUBST([HAVE_VISIBILITY]) | AC_SUBST([HAVE_VISIBILITY]) | |||
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], | AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], | |||
End of changes. 6 change blocks. | ||||
7 lines changed or deleted | 32 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |