[oe] [PATCH] boost: more elaborate and correct usage of GCC atomicity.

Przemyslaw Wesolek przemyslaw.wesolek at cs.put.poznan.pl
Thu Nov 5 14:58:22 UTC 2009


This patch is based on upstream corrections spotted in 1.40 version.
They allow to properly compile Boost on both <4.2 and >=4.2 GCC, for
ARM machines.

First, correct include is made on ARM machines, atomic_count_gcc.hpp
instead of atomic_count_sync.hpp.

Second, with GCC 4.2 some headers were changed (see [1]). This patch
uses appropriate header based on GCC version, so allows compilation
on both versions of GCC API. This change also affects -- in a good
way -- boost 1.33 recipe. Version 1.34 had hard-coded change to the
new header so this patch don't apply.

Applicable to both devel and stable.

[1] http://gcc.gnu.org/onlinedocs/libstdc++/manual/api.html#api.rel_420

Signed-off-by: Przemyslaw Wesolek <przemyslaw.wesolek at cs.put.poznan.pl>
---
 recipes/boost/boost_1.36.0.bb                      |    4 +++-
 recipes/boost/files/atomic_count_arm.patch         |   11 +++++++++++
 .../boost/files/atomic_count_gcc_atomicity.patch   |    7 +++++--
 3 files changed, 19 insertions(+), 3 deletions(-)
 create mode 100644 recipes/boost/files/atomic_count_arm.patch

diff --git a/recipes/boost/boost_1.36.0.bb b/recipes/boost/boost_1.36.0.bb
index 140ab29..276ca9b 100644
--- a/recipes/boost/boost_1.36.0.bb
+++ b/recipes/boost/boost_1.36.0.bb
@@ -1,9 +1,11 @@
 include boost-36.inc
 
-PR = "r6"
+PR = "r8"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2 \
            file://arm-intrinsics.patch;patch=1 \
+           file://atomic_count_gcc_atomicity.patch;patch=1 \
+           file://atomic_count_arm.patch;patch=1 \
           "
 
 BJAM_OPTS    = '${BJAM_TOOLS} \
diff --git a/recipes/boost/files/atomic_count_arm.patch b/recipes/boost/files/atomic_count_arm.patch
new file mode 100644
index 0000000..1017ebc
--- /dev/null
+++ b/recipes/boost/files/atomic_count_arm.patch
@@ -0,0 +1,11 @@
+--- boost_1_36_0/boost/detail/atomic_count.hpp.orig	2007-11-23 18:03:14.000000000 +0100
++++ boost_1_36_0/boost/detail/atomic_count.hpp	2009-09-25 18:17:12.602907541 +0200
+@@ -101,7 +101,7 @@
+
+ #  include <boost/detail/atomic_count_win32.hpp>
+
+-#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
++#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __armel__ )
+
+ #  include <boost/detail/atomic_count_sync.hpp>
+
diff --git a/recipes/boost/files/atomic_count_gcc_atomicity.patch b/recipes/boost/files/atomic_count_gcc_atomicity.patch
index 7d08e73..3b09a8a 100644
--- a/recipes/boost/files/atomic_count_gcc_atomicity.patch
+++ b/recipes/boost/files/atomic_count_gcc_atomicity.patch
@@ -2,12 +2,15 @@ Index: boost_1_33_1/boost/detail/atomic_count_gcc.hpp
 ===================================================================
 --- boost_1_33_1.orig/boost/detail/atomic_count_gcc.hpp	2008-05-01 20:43:45.000000000 +0200
 +++ boost_1_33_1/boost/detail/atomic_count_gcc.hpp	2008-05-01 20:43:55.000000000 +0200
-@@ -17,7 +17,7 @@
+@@ -17,7 +17,11 @@
  //  http://www.boost.org/LICENSE_1_0.txt)
  //
  
--#include <bits/atomicity.h>
++#if __GNUC__ * 100 + __GNUC_MINOR__ >= 402
 +#include <ext/atomicity.h>
++#else
+ #include <bits/atomicity.h>
++#endif
  
  namespace boost
  {
-- 
1.6.3.3





More information about the Openembedded-devel mailing list