summaryrefslogtreecommitdiff
path: root/libstdc++-v3/acinclude.m4
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-20 23:37:27 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-07-20 23:37:27 +0000
commit4ffa185bd44b3be13462e963e8cef33a7c3fcb56 (patch)
tree65e37e23e7c174d37c16abc3c6c9928ba202b8fd /libstdc++-v3/acinclude.m4
parentc62c86b934cb510653da768a29101a258ce7f6a3 (diff)
downloadgcc-4ffa185bd44b3be13462e963e8cef33a7c3fcb56.tar.gz
2006-07-20 Benjamin Kosnik <bkoz@redhat.com>
Jakub Jelinek <jakub@redhat.com> PR libstdc++/19664 round 1 * acinclude.m4 (GLIBCXX_ENABLE_VISIBILITY): Check it. * configure.ac: Use it. * configure: Regenerate. * docs/html/configopts.html: Document it. * include/Makefile.am: Slip in to c++config. * include/Makefile.in: Regenerate. * include/bits/c++config (_GLIBCXX_VISIBILITY): New. (_GLIBCXX_BEGIN_NAMESPACE): Use it. (_GLIBCXX_END_NAMESPACE): Use it. (_GLIBCXX_BEGIN_NESTED_NAMESPACE): Use it. (_GLIBCXX_END_NESTED_NAMESPACE): Use it. * src/debug.cc: Mark __gnu_internal namespace with hidden visibility attribute. * src/ext-inst.cc: Same. * src/globals_io.cc: Same. * src/globals_locale.cc: Same. * src/ios_init.cc: Same. * src/locale.cc: Same. * src/mt_allocator.cc: Same. * src/pool_allocator.cc: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115632 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/acinclude.m4')
-rw-r--r--libstdc++-v3/acinclude.m432
1 files changed, 32 insertions, 0 deletions
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index c160a1a3366..a15e351fc0c 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2101,6 +2101,38 @@ EOF
dnl
+dnl Allow visibility attributes to be used on namespaces, objects, etc.
+dnl
+dnl --enable-visibility enables attempt to use visibility attributes.
+dnl --disable-visibility turns off all use of visibility attributes.
+dnl + Usage: GLIBCXX_ENABLE_VISIBILITY[(DEFAULT)]
+dnl Where DEFAULT is 'yes'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_VISIBILITY], [
+GLIBCXX_ENABLE(visibility,$1,,[enables visibility safe usage])
+
+if test x$enable_visibility = xyes ; then
+ dnl all hail libgfortran
+ dnl Check whether the target supports hidden visibility.
+ AC_CACHE_CHECK([whether the target supports hidden visibility],
+ have_attribute_visibility, [
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ AC_TRY_COMPILE([void __attribute__((visibility("hidden"))) foo(void) { }],
+ [], have_attribute_visibility=yes,
+ have_attribute_visibility=no)
+ CFLAGS="$save_CFLAGS"])
+ if test $have_attribute_visibility = no; then
+ enable_visibility=no
+ fi
+fi
+
+GLIBCXX_CONDITIONAL(ENABLE_VISIBILITY, test $enable_visibility = yes)
+AC_MSG_NOTICE([visibility supported: $enable_visibility])
+])
+
+
+dnl
dnl Add version tags to symbols in shared library (or not), additionally
dnl marking other symbols as private/local (or not).
dnl