boost: fix build problem by always building a threaded version
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 15 Jan 2013 00:45:26 +0000 (00:45 +0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Tue, 15 Jan 2013 10:50:26 +0000 (11:50 +0100)
Boost normally allows to build a non-threaded variant by passing
threading=single or a multi-threaded variant by passing
threading=multi.

Unfortunately, the build of threading=single doesn't seem to work any
more, due to bizarre things in the build system. We get "duplicate
target" errors, that according to
http://lists.boost.org/boost-build/2012/11/26582.php should appear if
we ask for both threading=single,multi. But it seems to happen even in
the threading=single case.

Since Boost is such a big C++ beast, it probably doesn't make much
sense to try to support it on toolchains that don't have thread
support. So, we make the boost package depend on thread support. If
someone cares enough in getting Boost to work in a non-threaded
environment, then we can always revert back.

Note that the boost package has no reverse dependencies in Buildroot,
so we don't need to propagate this new dependency anywhere.

Fixes:

  http://autobuild.buildroot.org/results/439e72ac74c8058f30977e6abc39acd6379a17d3/build-end.log

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/boost/Config.in
package/boost/boost.mk

index fb5360ecf4c19081585f75302f458e722ec5cbb9..19dcc6044b3295a0b47a5b8eaaf48d0982ee66f2 100644 (file)
@@ -1,10 +1,14 @@
-comment "boost requires a toolchain with C++ and large file support enabled"
-       depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE
+comment "boost requires a toolchain with C++, large file and thread support enabled"
+       depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
 
 config BR2_PACKAGE_BOOST
        bool "boost"
        depends on BR2_INSTALL_LIBSTDCPP
        depends on BR2_LARGEFILE
+       # Boost could theorically be built with threading=single, but
+       # that unfortunately doesn't work. Until someone fixes that,
+       # let's depend on threads.
+       depends on BR2_TOOLCHAIN_HAS_THREADS
        select BR2_PACKAGE_BZIP2
        select BR2_PACKAGE_ZLIB
        help
@@ -14,12 +18,6 @@ config BR2_PACKAGE_BOOST
 
 if BR2_PACKAGE_BOOST
 
-config BR2_PACKAGE_BOOST_MULTITHREADED
-       depends on BR2_TOOLCHAIN_HAS_THREADS
-       bool "boost-multithreaded"
-       help
-         Build the boost libraries as multithreaded
-
 config BR2_PACKAGE_BOOST_CHRONO
        bool "boost-chrono"
 
@@ -76,7 +74,6 @@ config BR2_PACKAGE_BOOST_TEST
        bool "boost-test"
 
 config BR2_PACKAGE_BOOST_THREAD
-       depends on BR2_TOOLCHAIN_HAS_THREADS
        bool "boost-thread"
 
 config BR2_PACKAGE_BOOST_TIMER
index 005c7ca7542f1597fb340766e9e6c4ba4a70e1f0..62226ba2276c444627117aec2bb6b49bfba4199d 100644 (file)
@@ -46,10 +46,10 @@ BOOST_FLAGS += --without-icu
 endif
 
 BOOST_OPT += toolset=gcc \
+            threading=multi \
             variant=$(if $(BR2_ENABLE_DEBUG),debug,release) \
             link=$(if $(BR2_PREFER_STATIC_LIB),static,shared) \
-            runtime-link=$(if $(BR2_PREFER_STATIC_LIB),static,shared) \
-            threading=$(if $(BR2_PACKAGE_BOOST_MULTITHREADED),multi,single)
+            runtime-link=$(if $(BR2_PREFER_STATIC_LIB),static,shared)
 
 ifeq ($(BR2_PACKAGE_BOOST_LOCALE),y)
 ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_CTNG_uClibc),y)