Patch to fix detection of {bits,ext}/atomicity.h with gcc >=4.2.0

View: New views
1 Messages — Rating Filter:   Alert me  

Patch to fix detection of {bits,ext}/atomicity.h with gcc >=4.2.0

by Tiziano Müller-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi there,

Since the bits/atomicity.h has been moved to ext/atomicity.h for gcc
>=4.2.0, a couple applications depending on commoncpp2 show build errors
>when building.
One part of the patch updates m4/ost_pthread.m4 to check for
ext/atomicity.h as well, the other part adds HAVE_EXT_ATOMICITY.H to
config.h.in and adds a define switch to include the right header-file.

I'd not hardcode either bits/atomicity.h or ext/atomicity.h depending on
the configure-results in the config.h since someone might build/have
built commoncpp with gcc-4.1.0 and then build the app with gcc-4.2.2
(or vice versa).

Cheers,
Tiziano

--
Tiziano Müller
Gentoo Linux Developer
Areas of responsibility: Samba, PostgreSQL, cpp, Python
E-Mail     : dev-zero@...
GnuPG FP   : F327 283A E769 2E36 18D5  4DE2 1B05 6A63 AE9C 1E30

diff -Naur commoncpp2-1.6.1.orig/config.h.in commoncpp2-1.6.1/config.h.in
--- commoncpp2-1.6.1.orig/config.h.in 2007-12-24 09:45:11.000000000 +0100
+++ commoncpp2-1.6.1/config.h.in 2007-12-24 10:25:43.000000000 +0100
@@ -239,6 +239,9 @@
 /* Define to 1 if you have the <bits/atomicity.h> header file. */
 #undef HAVE_BITS_ATOMICITY_H
 
+/* Define to 1 if you have the <ext/atomicity.h> header file. */
+#undef HAVE_EXT_ATOMICITY_H
+
 /* Define to 1 if you have the <bits/wordsize.h> header file. */
 #undef HAVE_BITS_WORDSIZE_H
 
@@ -1088,7 +1091,11 @@
 
 #if defined(__cplusplus)
 #if defined(HAVE_GCC_BITS_ATOMIC) || defined(HAVE_GCC_CXX_BITS_ATOMIC)
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2))
+#include <ext/atomicity.h>
+#else
 #include <bits/atomicity.h>
+#endif
 #define HAVE_ATOMIC
 #endif
 #endif
diff -Naur commoncpp2-1.6.1.orig/m4/ost_pthread.m4 commoncpp2-1.6.1/m4/ost_pthread.m4
--- commoncpp2-1.6.1.orig/m4/ost_pthread.m4 2007-12-24 09:45:11.000000000 +0100
+++ commoncpp2-1.6.1/m4/ost_pthread.m4 2007-12-24 10:12:24.000000000 +0100
@@ -92,7 +92,9 @@
   dnl check for gcc's bits/atomicity and the atomic functions therein
   AC_CHECK_HEADERS([bits/atomicity.h],
  ost_cv_bits_atomicity=yes,
- ost_cv_bits_atomicity=no)
+ [AC_CHECK_HEADERS([ext/atomicity.h],
+ ost_cv_bits_atomicity=yes,
+ ost_cv_bits_atomicity=no)])
   if test $ost_cv_bits_atomicity = yes ; then
       AC_MSG_CHECKING([for _Atomic_word])
       AC_TRY_COMPILE([#include <bits/atomicity.h>],
@@ -103,7 +105,15 @@
     ],
     [ost_cv_gcc_atomic=yes
      AC_DEFINE(HAVE_GCC_BITS_ATOMIC, [1], [has gcc atomic functions])],
-    [ost_cv_gcc_atomic=no])
+    [AC_TRY_COMPILE([#include <ext/atomicity.h>],
+    [
+    _Atomic_word i = 0;
+    __atomic_add(&i, 1);
+    __exchange_and_add(&i, 1);
+    ],
+    [ost_cv_gcc_atomic=yes
+    AC_DEFINE(HAVE_GCC_BITS_ATOMIC, [1], [has gcc atomic functions])],
+    [ost_cv_gcc_atomic=no])])
       AC_MSG_RESULT($ost_cv_gcc_atomic)
 
       AC_MSG_CHECKING([for __gnu_cxx::_Atomic_word])
@@ -117,7 +127,17 @@
     [ost_cv_gcc_cxx_atomic=yes
      AC_DEFINE(HAVE_GCC_CXX_BITS_ATOMIC, [1],
  [has __gnu_cxx atomic functions])],
-    [ost_cv_gcc_cxx_atomic=no])
+    [AC_TRY_COMPILE([#include <ext/atomicity.h>],
+    [
+    using namespace __gnu_cxx;
+    _Atomic_word i = 0;
+    __atomic_add(&i, 1);
+    __exchange_and_add(&i, 1);
+    ],
+    [ost_cv_gcc_cxx_atomic=yes
+     AC_DEFINE(HAVE_GCC_CXX_BITS_ATOMIC, [1],
+ [has __gnu_cxx atomic functions])],
+    [ost_cv_gcc_cxx_atomic=no])])
       AC_MSG_RESULT($ost_cv_gcc_cxx_atomic)
   fi
 


_______________________________________________
Bug-commoncpp mailing list
Bug-commoncpp@...
http://lists.gnu.org/mailman/listinfo/bug-commoncpp

attachment0 (196 bytes) Download Attachment