File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srcm4 / visibility.m4
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 9 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: # visibility.m4 serial 6
    2: dnl Copyright (C) 2005, 2008, 2010-2019 Free Software Foundation, Inc.
    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
   15: dnl Mac OS X.
   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
   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.
   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:       ])
   42:     dnl Now check whether visibility declarations are supported.
   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:       ])
   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>