summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/boost
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-support/boost')
-rw-r--r--meta/recipes-support/boost/boost-36.inc149
-rw-r--r--meta/recipes-support/boost/boost-jam-native.inc31
-rw-r--r--meta/recipes-support/boost/boost-jam-native_3.1.18.bb4
-rw-r--r--meta/recipes-support/boost/boost_1.44.0.bb27
-rw-r--r--meta/recipes-support/boost/files/1.34.1-gcc43.patch224
-rw-r--r--meta/recipes-support/boost/files/arm-intrinsics.patch53
-rw-r--r--meta/recipes-support/boost/files/atomic_count_gcc_atomicity.patch13
-rw-r--r--meta/recipes-support/boost/files/gcc41.patch14
-rw-r--r--meta/recipes-support/boost/files/gcc43.patch256
-rw-r--r--meta/recipes-support/boost/files/linux-uclibc.patch10
-rw-r--r--meta/recipes-support/boost/files/unit_test_log10f.patch20
11 files changed, 801 insertions, 0 deletions
diff --git a/meta/recipes-support/boost/boost-36.inc b/meta/recipes-support/boost/boost-36.inc
new file mode 100644
index 0000000000..5d2d1280be
--- /dev/null
+++ b/meta/recipes-support/boost/boost-36.inc
@@ -0,0 +1,149 @@
1# The Boost web site provides free peer-reviewed portable
2# C++ source libraries. The emphasis is on libraries which
3# work well with the C++ Standard Library. The libraries are
4# intended to be widely useful, and are in regular use by
5# thousands of programmers across a broad spectrum of applications.
6DESCRIPTION = "Free peer-reviewed portable C++ source libraries"
7HOMEPAGE = "http://www.boost.org/"
8SECTION = "libs"
9DEPENDS = "boost-jam-native zlib"
10PRIORITY = "optional"
11LICENSE = "Boost Software License"
12PR = "r3"
13
14ARM_INSTRUCTION_SET = "arm"
15BOOST_VER = "${@"_".join(bb.data.getVar("PV",d,1).split("."))}"
16BOOST_MAJ = "${@"_".join(bb.data.getVar("PV",d,1).split(".")[0:2])}"
17BOOST_P = "boost_${BOOST_VER}"
18
19BOOST_LIBS = "\
20 date_time \
21 filesystem \
22 graph \
23 iostreams \
24 program_options \
25 regex \
26 signals \
27 system \
28 test \
29 thread \
30 "
31
32# FIXME: for some reason this fails on powerpc
33#BOOST_LIBS += "serialization"
34
35# To enable python, uncomment the following:
36#BOOST_LIBS += "python"
37#DEPENDS += "python"
38#PYTHON_ROOT = "${STAGING_DIR_HOST}/${prefix}"
39#PYTHON_VERSION = "2.5"
40
41S = "${WORKDIR}/${BOOST_P}"
42
43# Make a package for each library, plus -dev
44PACKAGES = "${PN}-dbg ${BOOST_PACKAGES}"
45python __anonymous () {
46 import bb
47
48 packages = []
49 extras = []
50 for lib in bb.data.getVar('BOOST_LIBS', d, 1).split( ):
51 pkg = "boost-%s" % lib.replace("_", "-")
52 extras.append("--with-%s" % lib)
53 packages.append(pkg)
54 if not bb.data.getVar("FILES_%s" % pkg, d, 1):
55 bb.data.setVar("FILES_%s" % pkg, "${libdir}/libboost_%s*.so.*" % lib, d)
56 bb.data.setVar("BOOST_PACKAGES", " ".join(packages), d)
57 bb.data.setVar("BJAM_EXTRA", " ".join(extras), d)
58}
59
60# Override the contents of specific packages
61FILES_boost-serialization = "${libdir}/libboost_serialization*.so.* \
62 ${libdir}/libboost_wserialization*.so.*"
63FILES_boost-test = "${libdir}/libboost_prg_exec_monitor*.so.* \
64 ${libdir}/libboost_unit_test_framework*.so.*"
65
66# -dev last to pick up the remaining stuff
67PACKAGES += "${PN}-dev"
68FILES_${PN}-dev = "${includedir} ${libdir}/libboost_*.so ${libdir}/libboost_*.a"
69
70# "boost" is a metapackage which pulls in all boost librabries
71PACKAGES += "${PN}"
72RRECOMMENDS_${PN} += "${BOOST_PACKAGES}"
73ALLOW_EMPTY_${PN} = "1"
74
75# to avoid GNU_HASH QA errors added LDFLAGS to ARCH; a little bit dirty but at least it works
76TARGET_CC_ARCH += " ${LDFLAGS}"
77
78# Oh yippee, a new build system, it's sooo cooool I could eat my own
79# foot. inlining=on lets the compiler choose, I think. At least this
80# stuff is documented...
81# NOTE: if you leave <debug-symbols>on then in a debug build the build sys
82# objcopy will be invoked, and that won't work. Building debug apparently
83# requires hacking gcc-tools.jam
84#
85# Sometimes I wake up screaming. Famous figures are gathered in the nightmare,
86# Steve Bourne, Larry Wall, the whole of the ANSI C committee. They're just
87# standing there, waiting, but the truely terrifying thing is what they carry
88# in their hands. At first sight each seems to bear the same thing, but it is
89# not so for the forms in their grasp are ever so slightly different one from
90# the other. Each is twisted in some grotesque way from the other to make each
91# an unspeakable perversion impossible to perceive without the onset of madness.
92# True insanity awaits anyone who perceives all of these horrors together.
93#
94# Quotation marks, there might be an easier way to do this, but I can't find
95# it. The problem is that the user.hpp configuration file must receive a
96# pre-processor macro defined as the appropriate string - complete with "'s
97# around it. (<> is a possibility here but the danger to that is that the
98# failure case interprets the < and > as shell redirections, creating
99# random files in the source tree.)
100#
101#bjam: '-DBOOST_PLATFORM_CONFIG=\"config\"'
102#do_compile: '-sGCC=... '"'-DBOOST_PLATFORM_CONFIG=\"config\"'"
103SQD = '"'
104EQD = '\"'
105#boost.bb: "... '-sGCC=... '${SQD}'-DBOOST_PLATFORM_CONFIG=${EQD}config${EQD}'${SQD} ..."
106BJAM_CONF = "${SQD}'-DBOOST_PLATFORM_CONFIG=${EQD}boost/config/platform/${TARGET_OS}.hpp${EQD}'${SQD}"
107
108# bzip2 and zip are disabled because... they're broken - the compilation simply
109# isn't working with bjam. I guess they will fix it, but who needs it? This
110# only affects the (new in 33) iostream library.
111BJAM_TOOLS = "-sTOOLS=gcc \
112 '-sGCC=${CC} '${BJAM_CONF} \
113 '-sGXX=${CXX} '${BJAM_CONF} \
114 '-sGCC_INCLUDE_DIRECTORY=${STAGING_INCDIR}' \
115 '-sGCC_STDLIB_DIRECTORY=${STAGING_LIBDIR}' \
116 '-sNO_BZIP2=1' \
117 '-sNO_ZLIB=1' \
118 '-sBUILD=release <optimization>space <inlining>on <debug-symbols>off' \
119 '-sPYTHON_VERSION=${PYTHON_VERSION}' \
120 '--layout=system' \
121 "
122
123BJAM_OPTS = '${BJAM_TOOLS} \
124 --builddir=${S}/${TARGET_SYS} \
125 --with-python-root=${PYTHON_ROOT} \
126 ${BJAM_EXTRA}'
127
128
129do_configure_prepend() {
130 cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
131
132 echo 'using gcc : 4.3.1 : ${CXX} : compileflags -DBOOST_SP_USE_PTHREADS -I${includedir} linkflags -L${libdir} ;' >> ${S}/tools/build/v2/user-config.jam
133}
134
135do_compile() {
136 set -ex
137 bjam ${BJAM_OPTS} --prefix=${prefix} \
138 --exec-prefix=${exec_prefix} \
139 --libdir=${libdir} \
140 --includedir=${includedir}
141}
142
143do_install() {
144 set -ex
145 bjam ${BJAM_OPTS} \
146 --libdir=${D}${libdir} \
147 --includedir=${D}${includedir} \
148 install
149}
diff --git a/meta/recipes-support/boost/boost-jam-native.inc b/meta/recipes-support/boost/boost-jam-native.inc
new file mode 100644
index 0000000000..fe181ad00f
--- /dev/null
+++ b/meta/recipes-support/boost/boost-jam-native.inc
@@ -0,0 +1,31 @@
1# The Boost web site provides free peer-reviewed portable
2# C++ source libraries. The emphasis is on libraries which
3# work well with the C++ Standard Library. The libraries are
4# intended to be widely useful, and are in regular use by
5# thousands of programmers across a broad spectrum of applications.
6DESCRIPTION = "Make system for boost (native)"
7HOMEPAGE = "http://www.boost.org/"
8SECTION = "devel"
9PRIORITY = "optional"
10LICENSE = "Boost Software License"
11PR = "r0"
12
13SRC_URI = "${SOURCEFORGE_MIRROR}/boost/boost-jam-${PV}.tgz"
14S = "${WORKDIR}/boost-jam-${PV}"
15
16inherit native
17
18do_compile() {
19 set -ex
20 rm -rf bin.*
21 ./build.sh gcc
22}
23
24# This is too terrible - the build script doesn't give any good
25# way I can see to find out where the binaries are placed, so
26# rely on only one bin.foo directory being created.
27do_install () {
28 set -ex
29 install -d ${D}${bindir}/
30 install -c -m 755 bin.*/bjam ${D}${bindir}/
31}
diff --git a/meta/recipes-support/boost/boost-jam-native_3.1.18.bb b/meta/recipes-support/boost/boost-jam-native_3.1.18.bb
new file mode 100644
index 0000000000..2e92146a83
--- /dev/null
+++ b/meta/recipes-support/boost/boost-jam-native_3.1.18.bb
@@ -0,0 +1,4 @@
1include boost-jam-native.inc
2
3SRC_URI = "${SOURCEFORGE_MIRROR}/boost/boost-jam-${PV}.tgz"
4
diff --git a/meta/recipes-support/boost/boost_1.44.0.bb b/meta/recipes-support/boost/boost_1.44.0.bb
new file mode 100644
index 0000000000..81a2e53ba3
--- /dev/null
+++ b/meta/recipes-support/boost/boost_1.44.0.bb
@@ -0,0 +1,27 @@
1include boost-36.inc
2
3LICENSE = "boost"
4LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
5
6PR = "r0"
7
8SRC_URI = "${SOURCEFORGE_MIRROR}/boost/${BOOST_P}.tar.bz2 \
9 file://arm-intrinsics.patch \
10 "
11
12BJAM_OPTS = '${BJAM_TOOLS} \
13 --builddir=${S}/${TARGET_SYS} \
14 ${BJAM_EXTRA}'
15
16# build only mt libraries and install symlinks for compatibility
17BJAM_EXTRA += "threading=multi"
18do_install_append() {
19 for lib in ${BOOST_LIBS}; do
20 if [ -e ${D}${libdir}/libboost_${lib}.a ]; then
21 ln -s libboost_${lib}.a ${D}${libdir}/libboost_${lib}-mt.a
22 fi
23 if [ -e ${D}${libdir}/libboost_${lib}.so ]; then
24 ln -s libboost_${lib}.so ${D}${libdir}/libboost_${lib}-mt.so
25 fi
26 done
27}
diff --git a/meta/recipes-support/boost/files/1.34.1-gcc43.patch b/meta/recipes-support/boost/files/1.34.1-gcc43.patch
new file mode 100644
index 0000000000..4670ac4295
--- /dev/null
+++ b/meta/recipes-support/boost/files/1.34.1-gcc43.patch
@@ -0,0 +1,224 @@
1Index: boost_1_34_1/boost/archive/polymorphic_iarchive.hpp
2===================================================================
3--- boost_1_34_1.orig/boost/archive/polymorphic_iarchive.hpp 2005-12-11 07:12:51.000000000 +0100
4+++ boost_1_34_1/boost/archive/polymorphic_iarchive.hpp 2008-09-20 20:55:21.000000000 +0200
5@@ -17,6 +17,7 @@
6 // See http://www.boost.org for updates, documentation, and revision history.
7
8 #include <cstddef> // std::size_t
9+#include <climits>
10 #include <boost/config.hpp>
11
12 #if defined(BOOST_NO_STDC_NAMESPACE)
13Index: boost_1_34_1/boost/archive/polymorphic_oarchive.hpp
14===================================================================
15--- boost_1_34_1.orig/boost/archive/polymorphic_oarchive.hpp 2006-02-12 06:43:06.000000000 +0100
16+++ boost_1_34_1/boost/archive/polymorphic_oarchive.hpp 2008-09-20 20:55:21.000000000 +0200
17@@ -17,6 +17,7 @@
18 // See http://www.boost.org for updates, documentation, and revision history.
19
20 #include <cstddef> // size_t
21+#include <climits>
22 #include <string>
23
24 #include <boost/config.hpp>
25Index: boost_1_34_1/boost/date_time/date_facet.hpp
26===================================================================
27--- boost_1_34_1.orig/boost/date_time/date_facet.hpp 2005-09-05 23:10:50.000000000 +0200
28+++ boost_1_34_1/boost/date_time/date_facet.hpp 2008-09-20 20:55:21.000000000 +0200
29@@ -429,7 +429,7 @@
30 typedef std::basic_string<CharT> string_type;
31 typedef CharT char_type;
32 typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
33- typedef special_values_parser<date_type,CharT> special_values_parser_type;
34+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
35 typedef std::vector<std::basic_string<CharT> > input_collection_type;
36 typedef format_date_parser<date_type, CharT> format_date_parser_type;
37 // date_generators stuff goes here
38Index: boost_1_34_1/boost/mpl/zip_view.hpp
39===================================================================
40--- boost_1_34_1.orig/boost/mpl/zip_view.hpp 2004-09-02 17:40:42.000000000 +0200
41+++ boost_1_34_1/boost/mpl/zip_view.hpp 2008-09-20 20:55:21.000000000 +0200
42@@ -37,7 +37,7 @@
43 typedef zip_iterator<
44 typename transform1<
45 IteratorSeq
46- , next<_1>
47+ , boost::mpl::next<_1>
48 >::type
49 > next;
50 };
51@@ -48,8 +48,8 @@
52 struct zip_view
53 {
54 private:
55- typedef typename transform1< Sequences, begin<_1> >::type first_ones_;
56- typedef typename transform1< Sequences, end<_1> >::type last_ones_;
57+ typedef typename transform1< Sequences, boost::mpl::begin<_1> >::type first_ones_;
58+ typedef typename transform1< Sequences, boost::mpl::end<_1> >::type last_ones_;
59
60 public:
61 typedef nested_begin_end_tag tag;
62Index: boost_1_34_1/boost/python/detail/def_helper.hpp
63===================================================================
64--- boost_1_34_1.orig/boost/python/detail/def_helper.hpp 2004-09-16 03:00:28.000000000 +0200
65+++ boost_1_34_1/boost/python/detail/def_helper.hpp 2008-09-20 20:55:21.000000000 +0200
66@@ -155,7 +155,7 @@
67 , T3 const&
68 , T4 const&
69 , default_call_policies
70- , keywords<0>
71+ , boost::python::detail::keywords<0>
72 , char const*
73 , void(not_specified::*)() // A function pointer type which is never an
74 // appropriate default implementation
75Index: boost_1_34_1/boost/regex/v4/basic_regex_creator.hpp
76===================================================================
77--- boost_1_34_1.orig/boost/regex/v4/basic_regex_creator.hpp 2006-07-16 18:06:38.000000000 +0200
78+++ boost_1_34_1/boost/regex/v4/basic_regex_creator.hpp 2008-09-20 20:55:21.000000000 +0200
79@@ -24,6 +24,8 @@
80 # include BOOST_ABI_PREFIX
81 #endif
82
83+#include <climits>
84+
85 namespace boost{
86
87 namespace re_detail{
88Index: boost_1_34_1/boost/regex/v4/basic_regex.hpp
89===================================================================
90--- boost_1_34_1.orig/boost/regex/v4/basic_regex.hpp 2007-06-05 19:28:18.000000000 +0200
91+++ boost_1_34_1/boost/regex/v4/basic_regex.hpp 2008-09-20 20:55:21.000000000 +0200
92@@ -23,6 +23,8 @@
93 # include BOOST_ABI_PREFIX
94 #endif
95
96+#include <climits>
97+
98 namespace boost{
99 #ifdef BOOST_MSVC
100 #pragma warning(push)
101Index: boost_1_34_1/boost/regex/v4/basic_regex_parser.hpp
102===================================================================
103--- boost_1_34_1.orig/boost/regex/v4/basic_regex_parser.hpp 2006-12-20 18:19:05.000000000 +0100
104+++ boost_1_34_1/boost/regex/v4/basic_regex_parser.hpp 2008-09-20 20:55:21.000000000 +0200
105@@ -23,6 +23,8 @@
106 # include BOOST_ABI_PREFIX
107 #endif
108
109+#include <climits>
110+
111 namespace boost{
112 namespace re_detail{
113
114Index: boost_1_34_1/boost/regex/v4/cpp_regex_traits.hpp
115===================================================================
116--- boost_1_34_1.orig/boost/regex/v4/cpp_regex_traits.hpp 2007-01-15 12:09:44.000000000 +0100
117+++ boost_1_34_1/boost/regex/v4/cpp_regex_traits.hpp 2008-09-20 20:55:21.000000000 +0200
118@@ -41,6 +41,7 @@
119
120 #include <istream>
121 #include <ios>
122+#include <climits>
123
124 #ifdef BOOST_HAS_ABI_HEADERS
125 # include BOOST_ABI_PREFIX
126Index: boost_1_34_1/boost/regex/v4/perl_matcher.hpp
127===================================================================
128--- boost_1_34_1.orig/boost/regex/v4/perl_matcher.hpp 2006-10-18 14:55:30.000000000 +0200
129+++ boost_1_34_1/boost/regex/v4/perl_matcher.hpp 2008-09-20 20:55:21.000000000 +0200
130@@ -18,6 +18,8 @@
131 # include BOOST_ABI_PREFIX
132 #endif
133
134+#include <climits>
135+
136 namespace boost{
137 namespace re_detail{
138
139Index: boost_1_34_1/boost/regex/v4/regex_split.hpp
140===================================================================
141--- boost_1_34_1.orig/boost/regex/v4/regex_split.hpp 2005-01-21 18:22:38.000000000 +0100
142+++ boost_1_34_1/boost/regex/v4/regex_split.hpp 2008-09-20 20:55:21.000000000 +0200
143@@ -21,6 +21,8 @@
144 #ifndef BOOST_REGEX_SPLIT_HPP
145 #define BOOST_REGEX_SPLIT_HPP
146
147+#include <climits>
148+
149 namespace boost{
150
151 #ifdef BOOST_HAS_ABI_HEADERS
152Index: boost_1_34_1/boost/regex/v4/states.hpp
153===================================================================
154--- boost_1_34_1.orig/boost/regex/v4/states.hpp 2005-09-20 14:01:25.000000000 +0200
155+++ boost_1_34_1/boost/regex/v4/states.hpp 2008-09-20 20:55:21.000000000 +0200
156@@ -23,6 +23,8 @@
157 # include BOOST_ABI_PREFIX
158 #endif
159
160+#include <climits>
161+
162 namespace boost{
163 namespace re_detail{
164
165Index: boost_1_34_1/boost/serialization/collection_traits.hpp
166===================================================================
167--- boost_1_34_1.orig/boost/serialization/collection_traits.hpp 2005-06-21 07:19:04.000000000 +0200
168+++ boost_1_34_1/boost/serialization/collection_traits.hpp 2008-09-20 20:55:21.000000000 +0200
169@@ -22,6 +22,7 @@
170 // compiles recognize the same set of primitive types, the possibility
171 // exists for archives to be non-portable if class information for primitive
172 // types is included. This is addressed by the following macros.
173+#include <climits>
174 #include <boost/config.hpp>
175 #include <boost/mpl/integral_c.hpp>
176 #include <boost/mpl/integral_c_tag.hpp>
177Index: boost_1_34_1/boost/spirit/phoenix/operators.hpp
178===================================================================
179--- boost_1_34_1.orig/boost/spirit/phoenix/operators.hpp 2006-08-25 18:27:30.000000000 +0200
180+++ boost_1_34_1/boost/spirit/phoenix/operators.hpp 2008-09-20 20:55:21.000000000 +0200
181@@ -24,6 +24,7 @@
182 #include <boost/spirit/phoenix/composite.hpp>
183 #include <boost/config.hpp>
184 #include <boost/mpl/if.hpp>
185+#include <climits>
186
187 ///////////////////////////////////////////////////////////////////////////////
188 namespace phoenix {
189Index: boost_1_34_1/boost/test/test_tools.hpp
190===================================================================
191--- boost_1_34_1.orig/boost/test/test_tools.hpp 2007-02-22 18:57:29.000000000 +0100
192+++ boost_1_34_1/boost/test/test_tools.hpp 2008-09-20 20:55:21.000000000 +0200
193@@ -42,6 +42,7 @@
194 #include <boost/mpl/or.hpp>
195
196 // STL
197+#include <climits>
198 #include <cstddef> // for std::size_t
199 #include <iosfwd>
200
201Index: boost_1_34_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
202===================================================================
203--- boost_1_34_1.orig/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2006-12-20 17:38:24.000000000 +0100
204+++ boost_1_34_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-09-20 20:55:21.000000000 +0200
205@@ -16,6 +16,7 @@
206 #include <string>
207 #include <cstdio>
208 #include <cstdarg>
209+#include <cstring>
210 #if defined(BOOST_SPIRIT_DEBUG)
211 #include <iostream>
212 #endif // defined(BOOST_SPIRIT_DEBUG)
213Index: boost_1_34_1/boost/wave/util/flex_string.hpp
214===================================================================
215--- boost_1_34_1.orig/boost/wave/util/flex_string.hpp 2006-04-25 19:21:01.000000000 +0200
216+++ boost_1_34_1/boost/wave/util/flex_string.hpp 2008-09-20 20:55:21.000000000 +0200
217@@ -94,6 +94,7 @@
218 #include <limits>
219 #include <stdexcept>
220 #include <cstddef>
221+#include <cstring>
222
223 // this must occur after all of the includes and before any code appears
224 #ifdef BOOST_HAS_ABI_HEADERS
diff --git a/meta/recipes-support/boost/files/arm-intrinsics.patch b/meta/recipes-support/boost/files/arm-intrinsics.patch
new file mode 100644
index 0000000000..3f9c620ebe
--- /dev/null
+++ b/meta/recipes-support/boost/files/arm-intrinsics.patch
@@ -0,0 +1,53 @@
18/17/2010 - rebased to 1.44 by Qing He <qing.he@intel.com>
2
3diff --git a/boost/smart_ptr/detail/atomic_count_sync.hpp b/boost/smart_ptr/detail/atomic_count_sync.hpp
4index b6359b5..78b1cc2 100644
5--- a/boost/smart_ptr/detail/atomic_count_sync.hpp
6+++ b/boost/smart_ptr/detail/atomic_count_sync.hpp
7@@ -33,17 +33,46 @@ public:
8
9 long operator++()
10 {
11+#ifdef __ARM_ARCH_7A__
12+ int v1, tmp;
13+ asm volatile ("1: \n\t"
14+ "ldrex %0, %1 \n\t"
15+ "add %0 ,%0, #1 \n\t"
16+ "strex %2, %0, %1 \n\t"
17+ "cmp %2, #0 \n\t"
18+ "bne 1b \n\t"
19+ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
20+ );
21+#else
22 return __sync_add_and_fetch( &value_, 1 );
23+#endif
24 }
25
26 long operator--()
27 {
28+#ifdef __ARM_ARCH_7A__
29+ int v1, tmp;
30+ asm volatile ("1: \n\t"
31+ "ldrex %0, %1 \n\t"
32+ "sub %0 ,%0, #1 \n\t"
33+ "strex %2, %0, %1 \n\t"
34+ "cmp %2, #0 \n\t"
35+ "bne 1b \n\t"
36+ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
37+ );
38+ return value_;
39+#else
40 return __sync_add_and_fetch( &value_, -1 );
41+#endif
42 }
43
44 operator long() const
45 {
46+#if __ARM_ARCH_7A__
47+ return value_;
48+#else
49 return __sync_fetch_and_add( &value_, 0 );
50+#endif
51 }
52
53 private:
diff --git a/meta/recipes-support/boost/files/atomic_count_gcc_atomicity.patch b/meta/recipes-support/boost/files/atomic_count_gcc_atomicity.patch
new file mode 100644
index 0000000000..7d08e73550
--- /dev/null
+++ b/meta/recipes-support/boost/files/atomic_count_gcc_atomicity.patch
@@ -0,0 +1,13 @@
1Index: boost_1_33_1/boost/detail/atomic_count_gcc.hpp
2===================================================================
3--- boost_1_33_1.orig/boost/detail/atomic_count_gcc.hpp 2008-05-01 20:43:45.000000000 +0200
4+++ boost_1_33_1/boost/detail/atomic_count_gcc.hpp 2008-05-01 20:43:55.000000000 +0200
5@@ -17,7 +17,7 @@
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8
9-#include <bits/atomicity.h>
10+#include <ext/atomicity.h>
11
12 namespace boost
13 {
diff --git a/meta/recipes-support/boost/files/gcc41.patch b/meta/recipes-support/boost/files/gcc41.patch
new file mode 100644
index 0000000000..f91d1adf2b
--- /dev/null
+++ b/meta/recipes-support/boost/files/gcc41.patch
@@ -0,0 +1,14 @@
1diff -ur boost_1_33_1.orig/boost/bind.hpp boost_1_33_1/boost/bind.hpp
2--- boost_1_33_1.orig/boost/bind.hpp 2008-10-11 10:30:03.000000000 +0200
3+++ boost_1_33_1/boost/bind.hpp 2008-10-11 10:41:25.000000000 +0200
4@@ -28,6 +28,10 @@
5 #include <boost/bind/arg.hpp>
6 #include <boost/detail/workaround.hpp>
7
8+#if __GNUC__ == 4 && __GNUC_MINOR__ == 1
9+# include <boost/visit_each.hpp>
10+#endif
11+
12 // Borland-specific bug, visit_each() silently fails to produce code
13
14 #if defined(__BORLANDC__)
diff --git a/meta/recipes-support/boost/files/gcc43.patch b/meta/recipes-support/boost/files/gcc43.patch
new file mode 100644
index 0000000000..aefe0800c3
--- /dev/null
+++ b/meta/recipes-support/boost/files/gcc43.patch
@@ -0,0 +1,256 @@
1diff -aNru boost_1_34_1-ORIGINAL/boost/archive/polymorphic_iarchive.hpp boost_1_34_1/boost/archive/polymorphic_iarchive.hpp
2--- boost_1_34_1-ORIGINAL/boost/archive/polymorphic_iarchive.hpp 2005-12-11 00:12:51.000000000 -0600
3+++ boost_1_34_1/boost/archive/polymorphic_iarchive.hpp 2008-03-03 03:08:59.000000000 -0600
4@@ -17,6 +17,7 @@
5 // See http://www.boost.org for updates, documentation, and revision history.
6
7 #include <cstddef> // std::size_t
8+#include <climits>
9 #include <boost/config.hpp>
10
11 #if defined(BOOST_NO_STDC_NAMESPACE)
12diff -aNru boost_1_34_1-ORIGINAL/boost/archive/polymorphic_oarchive.hpp boost_1_34_1/boost/archive/polymorphic_oarchive.hpp
13--- boost_1_34_1-ORIGINAL/boost/archive/polymorphic_oarchive.hpp 2006-02-11 23:43:06.000000000 -0600
14+++ boost_1_34_1/boost/archive/polymorphic_oarchive.hpp 2008-03-03 03:08:59.000000000 -0600
15@@ -17,6 +17,7 @@
16 // See http://www.boost.org for updates, documentation, and revision history.
17
18 #include <cstddef> // size_t
19+#include <climits>
20 #include <string>
21
22 #include <boost/config.hpp>
23diff -aNru boost_1_34_1-ORIGINAL/boost/date_time/date_facet.hpp boost_1_34_1/boost/date_time/date_facet.hpp
24--- boost_1_34_1-ORIGINAL/boost/date_time/date_facet.hpp 2005-09-05 16:10:50.000000000 -0500
25+++ boost_1_34_1/boost/date_time/date_facet.hpp 2008-03-03 03:08:59.000000000 -0600
26@@ -429,7 +429,7 @@
27 typedef std::basic_string<CharT> string_type;
28 typedef CharT char_type;
29 typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
30- typedef special_values_parser<date_type,CharT> special_values_parser_type;
31+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
32 typedef std::vector<std::basic_string<CharT> > input_collection_type;
33 typedef format_date_parser<date_type, CharT> format_date_parser_type;
34 // date_generators stuff goes here
35diff -aNru boost_1_34_1-ORIGINAL/boost/mpl/zip_view.hpp boost_1_34_1/boost/mpl/zip_view.hpp
36--- boost_1_34_1-ORIGINAL/boost/mpl/zip_view.hpp 2004-09-02 10:40:42.000000000 -0500
37+++ boost_1_34_1/boost/mpl/zip_view.hpp 2008-03-03 03:08:59.000000000 -0600
38@@ -37,7 +37,7 @@
39 typedef zip_iterator<
40 typename transform1<
41 IteratorSeq
42- , next<_1>
43+ , boost::mpl::next<_1>
44 >::type
45 > next;
46 };
47@@ -48,8 +48,8 @@
48 struct zip_view
49 {
50 private:
51- typedef typename transform1< Sequences, begin<_1> >::type first_ones_;
52- typedef typename transform1< Sequences, end<_1> >::type last_ones_;
53+ typedef typename transform1< Sequences, boost::mpl::begin<_1> >::type first_ones_;
54+ typedef typename transform1< Sequences, boost::mpl::end<_1> >::type last_ones_;
55
56 public:
57 typedef nested_begin_end_tag tag;
58diff -aNru boost_1_34_1-ORIGINAL/boost/python/detail/def_helper.hpp boost_1_34_1/boost/python/detail/def_helper.hpp
59--- boost_1_34_1-ORIGINAL/boost/python/detail/def_helper.hpp 2004-09-15 20:00:28.000000000 -0500
60+++ boost_1_34_1/boost/python/detail/def_helper.hpp 2008-03-03 03:08:59.000000000 -0600
61@@ -155,7 +155,7 @@
62 , T3 const&
63 , T4 const&
64 , default_call_policies
65- , keywords<0>
66+ , boost::python::detail::keywords<0>
67 , char const*
68 , void(not_specified::*)() // A function pointer type which is never an
69 // appropriate default implementation
70diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex_creator.hpp boost_1_34_1/boost/regex/v4/basic_regex_creator.hpp
71--- boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex_creator.hpp 2006-07-16 11:06:38.000000000 -0500
72+++ boost_1_34_1/boost/regex/v4/basic_regex_creator.hpp 2008-03-03 03:08:59.000000000 -0600
73@@ -24,6 +24,8 @@
74 # include BOOST_ABI_PREFIX
75 #endif
76
77+#include <climits>
78+
79 namespace boost{
80
81 namespace re_detail{
82diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex.hpp boost_1_34_1/boost/regex/v4/basic_regex.hpp
83--- boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex.hpp 2007-06-05 12:28:18.000000000 -0500
84+++ boost_1_34_1/boost/regex/v4/basic_regex.hpp 2008-03-03 03:08:59.000000000 -0600
85@@ -23,6 +23,8 @@
86 # include BOOST_ABI_PREFIX
87 #endif
88
89+#include <climits>
90+
91 namespace boost{
92 #ifdef BOOST_MSVC
93 #pragma warning(push)
94diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex_parser.hpp boost_1_34_1/boost/regex/v4/basic_regex_parser.hpp
95--- boost_1_34_1-ORIGINAL/boost/regex/v4/basic_regex_parser.hpp 2006-12-20 11:19:05.000000000 -0600
96+++ boost_1_34_1/boost/regex/v4/basic_regex_parser.hpp 2008-03-03 03:08:59.000000000 -0600
97@@ -23,6 +23,8 @@
98 # include BOOST_ABI_PREFIX
99 #endif
100
101+#include <climits>
102+
103 namespace boost{
104 namespace re_detail{
105
106diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/cpp_regex_traits.hpp boost_1_34_1/boost/regex/v4/cpp_regex_traits.hpp
107--- boost_1_34_1-ORIGINAL/boost/regex/v4/cpp_regex_traits.hpp 2007-01-15 05:09:44.000000000 -0600
108+++ boost_1_34_1/boost/regex/v4/cpp_regex_traits.hpp 2008-03-03 03:08:59.000000000 -0600
109@@ -41,6 +41,7 @@
110
111 #include <istream>
112 #include <ios>
113+#include <climits>
114
115 #ifdef BOOST_HAS_ABI_HEADERS
116 # include BOOST_ABI_PREFIX
117diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/perl_matcher.hpp boost_1_34_1/boost/regex/v4/perl_matcher.hpp
118--- boost_1_34_1-ORIGINAL/boost/regex/v4/perl_matcher.hpp 2006-10-18 07:55:30.000000000 -0500
119+++ boost_1_34_1/boost/regex/v4/perl_matcher.hpp 2008-03-03 03:08:59.000000000 -0600
120@@ -18,6 +18,8 @@
121 # include BOOST_ABI_PREFIX
122 #endif
123
124+#include <climits>
125+
126 namespace boost{
127 namespace re_detail{
128
129diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/regex_split.hpp boost_1_34_1/boost/regex/v4/regex_split.hpp
130--- boost_1_34_1-ORIGINAL/boost/regex/v4/regex_split.hpp 2005-01-21 11:22:38.000000000 -0600
131+++ boost_1_34_1/boost/regex/v4/regex_split.hpp 2008-03-03 03:08:59.000000000 -0600
132@@ -21,6 +21,8 @@
133 #ifndef BOOST_REGEX_SPLIT_HPP
134 #define BOOST_REGEX_SPLIT_HPP
135
136+#include <climits>
137+
138 namespace boost{
139
140 #ifdef BOOST_HAS_ABI_HEADERS
141diff -aNru boost_1_34_1-ORIGINAL/boost/regex/v4/states.hpp boost_1_34_1/boost/regex/v4/states.hpp
142--- boost_1_34_1-ORIGINAL/boost/regex/v4/states.hpp 2005-09-20 07:01:25.000000000 -0500
143+++ boost_1_34_1/boost/regex/v4/states.hpp 2008-03-03 03:08:59.000000000 -0600
144@@ -23,6 +23,8 @@
145 # include BOOST_ABI_PREFIX
146 #endif
147
148+#include <climits>
149+
150 namespace boost{
151 namespace re_detail{
152
153diff -aNru boost_1_34_1-ORIGINAL/boost/serialization/collection_traits.hpp boost_1_34_1/boost/serialization/collection_traits.hpp
154--- boost_1_34_1-ORIGINAL/boost/serialization/collection_traits.hpp 2005-06-21 00:19:04.000000000 -0500
155+++ boost_1_34_1/boost/serialization/collection_traits.hpp 2008-03-03 03:09:49.000000000 -0600
156@@ -22,6 +22,7 @@
157 // compiles recognize the same set of primitive types, the possibility
158 // exists for archives to be non-portable if class information for primitive
159 // types is included. This is addressed by the following macros.
160+#include <climits>
161 #include <boost/config.hpp>
162 #include <boost/mpl/integral_c.hpp>
163 #include <boost/mpl/integral_c_tag.hpp>
164diff -aNru boost_1_34_1-ORIGINAL/boost/spirit/phoenix/operators.hpp boost_1_34_1/boost/spirit/phoenix/operators.hpp
165--- boost_1_34_1-ORIGINAL/boost/spirit/phoenix/operators.hpp 2006-08-25 11:27:30.000000000 -0500
166+++ boost_1_34_1/boost/spirit/phoenix/operators.hpp 2008-03-03 03:08:59.000000000 -0600
167@@ -24,6 +24,7 @@
168 #include <boost/spirit/phoenix/composite.hpp>
169 #include <boost/config.hpp>
170 #include <boost/mpl/if.hpp>
171+#include <climits>
172
173 ///////////////////////////////////////////////////////////////////////////////
174 namespace phoenix {
175diff -aNru boost_1_34_1-ORIGINAL/boost/test/test_tools.hpp boost_1_34_1/boost/test/test_tools.hpp
176--- boost_1_34_1-ORIGINAL/boost/test/test_tools.hpp 2007-02-22 11:57:29.000000000 -0600
177+++ boost_1_34_1/boost/test/test_tools.hpp 2008-03-03 03:08:59.000000000 -0600
178@@ -42,6 +42,7 @@
179 #include <boost/mpl/or.hpp>
180
181 // STL
182+#include <climits>
183 #include <cstddef> // for std::size_t
184 #include <iosfwd>
185
186diff -aNru boost_1_34_1-ORIGINAL/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp boost_1_34_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
187--- boost_1_34_1-ORIGINAL/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2006-12-20 10:38:24.000000000 -0600
188+++ boost_1_34_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-03-03 03:08:59.000000000 -0600
189@@ -16,6 +16,7 @@
190 #include <string>
191 #include <cstdio>
192 #include <cstdarg>
193+#include <cstring>
194 #if defined(BOOST_SPIRIT_DEBUG)
195 #include <iostream>
196 #endif // defined(BOOST_SPIRIT_DEBUG)
197diff -aNru boost_1_34_1-ORIGINAL/boost/wave/util/flex_string.hpp boost_1_34_1/boost/wave/util/flex_string.hpp
198--- boost_1_34_1-ORIGINAL/boost/wave/util/flex_string.hpp 2006-04-25 12:21:01.000000000 -0500
199+++ boost_1_34_1/boost/wave/util/flex_string.hpp 2008-03-03 03:08:59.000000000 -0600
200@@ -94,6 +94,7 @@
201 #include <limits>
202 #include <stdexcept>
203 #include <cstddef>
204+#include <cstring>
205
206 // this must occur after all of the includes and before any code appears
207 #ifdef BOOST_HAS_ABI_HEADERS
208
209--- boost_1_33_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-07-05 01:50:04.000000000 +0200
210+++ boost_1_34_1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2006-12-20 17:38:24.000000000 +0100
211@@ -295,17 +325,20 @@
212
213 lex_functor(IteratorT const &first, IteratorT const &last,
214 PositionT const &pos, boost::wave::language_support language)
215- : lexer(first, last, pos, language)
216+ : re2c_lexer(first, last, pos, language)
217 {}
218 virtual ~lex_functor() {}
219
220 // get the next token from the input stream
221- token_type get() { return lexer.get(); }
222- void set_position(PositionT const &pos)
223- { lexer.set_position(pos); }
224+ token_type get() { return re2c_lexer.get(); }
225+ void set_position(PositionT const &pos) { re2c_lexer.set_position(pos); }
226+#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
227+ bool has_include_guards(std::string& guard_name) const
228+ { return re2c_lexer.has_include_guards(guard_name); }
229+#endif
230
231 private:
232- lexer<IteratorT, PositionT> lexer;
233+ lexer<IteratorT, PositionT> re2c_lexer;
234 };
235
236 ///////////////////////////////////////////////////////////////////////////////
237@@ -338,7 +371,7 @@
238 // It is coupled to the iterator type to allow to decouple the lexer/iterator
239 // configurations at compile time.
240 //
241-// This function is declared inside the cpp_slex_token.hpp file, which is
242+// This function is declared inside the cpp_lex_token.hpp file, which is
243 // referenced by the source file calling the lexer and the source file, which
244 // instantiates the lex_functor. But is is defined here, so it will be
245 // instantiated only while compiling the source file, which instantiates the
246@@ -356,8 +389,8 @@
247 IteratorT const &last, PositionT const &pos,
248 boost::wave::language_support language)
249 {
250- return new re2clex::lex_functor<IteratorT, PositionT>(first, last, pos,
251- language);
252+ using re2clex::lex_functor;
253+ return new lex_functor<IteratorT, PositionT>(first, last, pos, language);
254 }
255
256 #undef BOOST_WAVE_RE2C_NEW_LEXER_INLINE
diff --git a/meta/recipes-support/boost/files/linux-uclibc.patch b/meta/recipes-support/boost/files/linux-uclibc.patch
new file mode 100644
index 0000000000..79f14dea88
--- /dev/null
+++ b/meta/recipes-support/boost/files/linux-uclibc.patch
@@ -0,0 +1,10 @@
1--- /dev/null 1969-12-31 16:00:00.000000000 -0800
2+++ boost_1_32_0/boost/config/platform/linux-uclibc.hpp 2005-07-05 14:51:56.237294460 -0700
3@@ -0,0 +1,7 @@
4+// Modifications required to support uClibC libc implementation.
5+// Default to Linux...
6+#include "linux.hpp"
7+
8+// Override anything uClibC doesn't support.
9+// At present (0.9.27) the nl_types.h header exists but is not implemented
10+#undef BOOST_HAS_NL_TYPES_H
diff --git a/meta/recipes-support/boost/files/unit_test_log10f.patch b/meta/recipes-support/boost/files/unit_test_log10f.patch
new file mode 100644
index 0000000000..b235e12446
--- /dev/null
+++ b/meta/recipes-support/boost/files/unit_test_log10f.patch
@@ -0,0 +1,20 @@
1--- boost_1_32_0/libs/test/src/unit_test_result.cpp.orig 2005-07-05 11:00:53.887594850 -0700
2+++ boost_1_32_0/libs/test/src/unit_test_result.cpp 2005-07-05 11:01:20.683533034 -0700
3@@ -144,7 +144,7 @@
4 unit_test_counter num_passed, unit_test_counter num_failed )
5 {
6 unit_test_counter total_test_cases = num_passed + num_failed;
7- std::size_t width = static_cast<std::size_t>( std::log10( (float)(std::max)( num_passed, num_failed ) ) ) + 1;
8+ std::size_t width = static_cast<std::size_t>( std::log10( (double)(std::max)( num_passed, num_failed ) ) ) + 1;
9
10 where_to << std::setw( indent ) << "" << std::setw( width ) << num_passed
11 << " test " << ps_name( num_passed != 1, "case" ) << " out of " << total_test_cases << " passed\n"
12@@ -158,7 +158,7 @@
13 {
14 unit_test_counter total_assertions = num_passed + num_failed;
15 std::size_t width = total_assertions > 0
16- ? static_cast<std::size_t>( std::log10( (float)(std::max)( num_passed, num_failed ) ) ) + 1
17+ ? static_cast<std::size_t>( std::log10( (double)(std::max)( num_passed, num_failed ) ) ) + 1
18 : 1;
19
20 where_to << std::setw( indent ) << "" << std::setw( width ) << num_passed