[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kde-common/admin
From: Dirk Mueller <mueller () kde ! org>
Date: 2005-03-08 13:41:26
Message-ID: 20050308134126.5652A103CB () office ! kde ! org
[Download RAW message or body]
CVS commit by mueller:
detect and workaround gcc bug with visibility
M +48 -1 acinclude.m4.in 2.501
--- kde-common/admin/acinclude.m4.in #2.500:2.501
@@ -3195,4 +3195,49 @@
])
+AC_DEFUN([KDE_CHECK_VISIBILITY_GCC_BUG],
+ [
+ AC_CACHE_CHECK([for gcc -fvisibility-inlines-hidden bug], \
kde_cv_val_gcc_visibility_bug, + [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ safe_CXXFLAGS=$CXXFLAGS
+ safe_LDFLAGS=$LDFLAGS
+ CXXFLAGS="$CXXFLAGS -fPIC -fvisibility-inlines-hidden -O0"
+ LDFLAGS="$LDFLAGS -shared -fPIC"
+
+ AC_TRY_LINK(
+ [
+ /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19664 */
+ template<typename CharT>
+ struct VisTest
+ {
+ inline VisTest ();
+ };
+ template<typename CharT>
+ inline VisTest<CharT>::VisTest()
+ {}
+ extern template class VisTest<char>; // It works if we drop \
that line + int some_function( int do_something ) __attribute__ \
((visibility("default"))); + int some_function( int )
+ {
+ VisTest<char> a;
+ return 0;
+ }
+ ], [/* elvis is alive */],
+ kde_cv_val_gcc_visibility_bug=no, \
kde_cv_val_gcc_visibility_bug=yes) +
+ CXXFLAGS=$safe_CXXFLAGS
+ LDFLAGS=$safe_LDFLAGS
+ AC_LANG_RESTORE
+ ]
+ )
+
+ if test x$kde_cv_val_gcc_visibility_bug = xno; then
+ CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden"
+ fi
+ ]
+)
+
AC_DEFUN([KDE_CHECK_AND_ADD_HIDDEN_VISIBILITY],
[
@@ -3203,5 +3248,7 @@
KDE_CHECK_COMPILER_FLAG(fvisibility=hidden,
[
- CXXFLAGS="$CXXFLAGS -fvisibility=hidden \
-fvisibility-inlines-hidden" + CXXFLAGS="$CXXFLAGS \
-fvisibility=hidden" + KDE_CHECK_VISIBILITY_GCC_BUG
+
HAVE_GCC_VISIBILITY=1
AC_DEFINE_UNQUOTED(__KDE_HAVE_GCC_VISIBILITY, \
"$HAVE_GCC_VISIBILITY", [define to 1 if -fvisibility is supported])
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic