Annotation of embedaddon/pcre/m4/pcre_visibility.m4, revision 1.1
1.1 ! misho 1: # visibility.m4 serial 4 (gettext-0.18.2)
! 2: dnl Copyright (C) 2005, 2008, 2010-2011 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 MacOS 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: dnl Modified to fit with PCRE build environment by Cristian RodrÃguez.
! 24:
! 25: AC_DEFUN([PCRE_VISIBILITY],
! 26: [
! 27: AC_REQUIRE([AC_PROG_CC])
! 28: VISIBILITY_CFLAGS=
! 29: VISIBILITY_CXXFLAGS=
! 30: HAVE_VISIBILITY=0
! 31: if test -n "$GCC"; then
! 32: dnl First, check whether -Werror can be added to the command line, or
! 33: dnl whether it leads to an error because of some other option that the
! 34: dnl user has put into $CC $CFLAGS $CPPFLAGS.
! 35: AC_MSG_CHECKING([whether the -Werror option is usable])
! 36: AC_CACHE_VAL([pcre_cv_cc_vis_werror], [
! 37: pcre_save_CFLAGS="$CFLAGS"
! 38: CFLAGS="$CFLAGS -Werror"
! 39: AC_COMPILE_IFELSE(
! 40: [AC_LANG_PROGRAM([[]], [[]])],
! 41: [pcre_cv_cc_vis_werror=yes],
! 42: [pcre_cv_cc_vis_werror=no])
! 43: CFLAGS="$pcre_save_CFLAGS"])
! 44: AC_MSG_RESULT([$pcre_cv_cc_vis_werror])
! 45: dnl Now check whether visibility declarations are supported.
! 46: AC_MSG_CHECKING([for simple visibility declarations])
! 47: AC_CACHE_VAL([pcre_cv_cc_visibility], [
! 48: pcre_save_CFLAGS="$CFLAGS"
! 49: CFLAGS="$CFLAGS -fvisibility=hidden"
! 50: dnl We use the option -Werror and a function dummyfunc, because on some
! 51: dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
! 52: dnl "visibility attribute not supported in this configuration; ignored"
! 53: dnl at the first function definition in every compilation unit, and we
! 54: dnl don't want to use the option in this case.
! 55: if test $pcre_cv_cc_vis_werror = yes; then
! 56: CFLAGS="$CFLAGS -Werror"
! 57: fi
! 58: AC_COMPILE_IFELSE(
! 59: [AC_LANG_PROGRAM(
! 60: [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
! 61: extern __attribute__((__visibility__("default"))) int exportedvar;
! 62: extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
! 63: extern __attribute__((__visibility__("default"))) int exportedfunc (void);
! 64: void dummyfunc (void) {}
! 65: ]],
! 66: [[]])],
! 67: [pcre_cv_cc_visibility=yes],
! 68: [pcre_cv_cc_visibility=no])
! 69: CFLAGS="$pcre_save_CFLAGS"])
! 70: AC_MSG_RESULT([$pcre_cv_cc_visibility])
! 71: if test $pcre_cv_cc_visibility = yes; then
! 72: VISIBILITY_CFLAGS="-fvisibility=hidden"
! 73: VISIBILITY_CXXFLAGS="-fvisibility=hidden -fvisibility-inlines-hidden"
! 74: HAVE_VISIBILITY=1
! 75: AC_DEFINE(PCRE_EXP_DECL, [extern __attribute__ ((visibility ("default")))], [to make a symbol visible])
! 76: AC_DEFINE(PCRE_EXP_DEFN, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
! 77: AC_DEFINE(PCRE_EXP_DATA_DEFN, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
! 78: AC_DEFINE(PCREPOSIX_EXP_DECL, [extern __attribute__ ((visibility ("default")))], [to make a symbol visible])
! 79: AC_DEFINE(PCREPOSIX_EXP_DEFN, [extern __attribute__ ((visibility ("default")))], [to make a symbol visible])
! 80: AC_DEFINE(PCRECPP_EXP_DECL, [extern __attribute__ ((visibility ("default")))], [to make a symbol visible])
! 81: AC_DEFINE(PCRECPP_EXP_DEFN, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
! 82: fi
! 83: fi
! 84: AC_SUBST([VISIBILITY_CFLAGS])
! 85: AC_SUBST([VISIBILITY_CXXFLAGS])
! 86: AC_SUBST([HAVE_VISIBILITY])
! 87: AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
! 88: [Define to 1 if the compiler supports simple visibility declarations.])
! 89: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>