Annotation of embedaddon/libiconv/srcm4/visibility.m4, revision 1.1.1.3

1.1.1.3 ! misho       1: # visibility.m4 serial 6
        !             2: dnl Copyright (C) 2005, 2008, 2010-2019 Free Software Foundation, Inc.
1.1       misho       3: dnl This file is free software; the Free Software Foundation
                      4: dnl gives unlimited permission to copy and/or distribute it,
                      5: dnl with or without modifications, as long as this notice is preserved.
                      6: 
                      7: dnl From Bruno Haible.
                      8: 
                      9: dnl Tests whether the compiler supports the command-line option
                     10: dnl -fvisibility=hidden and the function and variable attributes
                     11: dnl __attribute__((__visibility__("hidden"))) and
                     12: dnl __attribute__((__visibility__("default"))).
                     13: dnl Does *not* test for __visibility__("protected") - which has tricky
                     14: dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
1.1.1.3 ! misho      15: dnl Mac OS X.
1.1       misho      16: dnl Does *not* test for __visibility__("internal") - which has processor
                     17: dnl dependent semantics.
                     18: dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
                     19: dnl "really only recommended for legacy code".
                     20: dnl Set the variable CFLAG_VISIBILITY.
                     21: dnl Defines and sets the variable HAVE_VISIBILITY.
                     22: 
                     23: AC_DEFUN([gl_VISIBILITY],
                     24: [
                     25:   AC_REQUIRE([AC_PROG_CC])
                     26:   CFLAG_VISIBILITY=
                     27:   HAVE_VISIBILITY=0
                     28:   if test -n "$GCC"; then
1.1.1.2   misho      29:     dnl First, check whether -Werror can be added to the command line, or
                     30:     dnl whether it leads to an error because of some other option that the
                     31:     dnl user has put into $CC $CFLAGS $CPPFLAGS.
1.1.1.3 ! misho      32:     AC_CACHE_CHECK([whether the -Werror option is usable],
        !            33:       [gl_cv_cc_vis_werror],
        !            34:       [gl_save_CFLAGS="$CFLAGS"
        !            35:        CFLAGS="$CFLAGS -Werror"
        !            36:        AC_COMPILE_IFELSE(
        !            37:          [AC_LANG_PROGRAM([[]], [[]])],
        !            38:          [gl_cv_cc_vis_werror=yes],
        !            39:          [gl_cv_cc_vis_werror=no])
        !            40:        CFLAGS="$gl_save_CFLAGS"
        !            41:       ])
1.1.1.2   misho      42:     dnl Now check whether visibility declarations are supported.
1.1.1.3 ! misho      43:     AC_CACHE_CHECK([for simple visibility declarations],
        !            44:       [gl_cv_cc_visibility],
        !            45:       [gl_save_CFLAGS="$CFLAGS"
        !            46:        CFLAGS="$CFLAGS -fvisibility=hidden"
        !            47:        dnl We use the option -Werror and a function dummyfunc, because on some
        !            48:        dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
        !            49:        dnl "visibility attribute not supported in this configuration; ignored"
        !            50:        dnl at the first function definition in every compilation unit, and we
        !            51:        dnl don't want to use the option in this case.
        !            52:        if test $gl_cv_cc_vis_werror = yes; then
        !            53:          CFLAGS="$CFLAGS -Werror"
        !            54:        fi
        !            55:        AC_COMPILE_IFELSE(
        !            56:          [AC_LANG_PROGRAM(
        !            57:             [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
        !            58:               extern __attribute__((__visibility__("default"))) int exportedvar;
        !            59:               extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
        !            60:               extern __attribute__((__visibility__("default"))) int exportedfunc (void);
        !            61:               void dummyfunc (void) {}
        !            62:             ]],
        !            63:             [[]])],
        !            64:          [gl_cv_cc_visibility=yes],
        !            65:          [gl_cv_cc_visibility=no])
        !            66:        CFLAGS="$gl_save_CFLAGS"
        !            67:       ])
1.1       misho      68:     if test $gl_cv_cc_visibility = yes; then
                     69:       CFLAG_VISIBILITY="-fvisibility=hidden"
                     70:       HAVE_VISIBILITY=1
                     71:     fi
                     72:   fi
                     73:   AC_SUBST([CFLAG_VISIBILITY])
                     74:   AC_SUBST([HAVE_VISIBILITY])
                     75:   AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
                     76:     [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
                     77: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>