From 1ffc27173576589191b037d111ecb59d94631de0 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Thu, 14 Nov 2013 14:41:21 +0000 Subject: boost: Add patch to avoid undefined references to boost::atomic::lockpool::get_lock_for() Boost::thread uses functions from boost::atomic but doesn't actually link with libboost_atomic. This works fine on platforms where BOOST_ATOMIC_FLAG_LOCK_FREE is true but will lead to undefined symbol references otherwise. Fix this by applying a patch from the upstream bug tracker to add the missing library linkage. Signed-off-by: Phil Blundell Signed-off-by: Saul Wold --- meta/recipes-support/boost/boost_1.54.0.bb | 1 + .../files/boost-1.54.0-thread-link_atomic.patch | 59 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch diff --git a/meta/recipes-support/boost/boost_1.54.0.bb b/meta/recipes-support/boost/boost_1.54.0.bb index 3cf88fa3c1..9e7a60a805 100644 --- a/meta/recipes-support/boost/boost_1.54.0.bb +++ b/meta/recipes-support/boost/boost_1.54.0.bb @@ -3,4 +3,5 @@ include boost.inc SRC_URI += "file://arm-intrinsics.patch \ file://glibc.patch \ + file://boost-1.54.0-thread-link_atomic.patch \ " diff --git a/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch b/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch new file mode 100644 index 0000000000..62af3d1aa3 --- /dev/null +++ b/meta/recipes-support/boost/files/boost-1.54.0-thread-link_atomic.patch @@ -0,0 +1,59 @@ +Link boost_thread with boost_atomic to avoid undefined references to +boost::atomic::detail::lock_pool::get_lock_for(). + +From https://svn.boost.org/trac/boost/ticket/9041 + +Phil Blundell +Upstream-Status: Backport + +diff -Nurp boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp +--- boost_1_54_0/libs/thread/build/has_atomic_flag_lockfree_test.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ boost_1_54_0.pm/libs/thread/build/has_atomic_flag_lockfree_test.cpp 2013-08-23 19:51:52.706329968 +0200 +@@ -0,0 +1,14 @@ ++// Copyright (c) 2013, Petr Machata, Red Hat Inc. ++// ++// Use modification and distribution are subject to the boost Software ++// License, Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). ++ ++#include "../../../boost/atomic.hpp" ++#include "../../../boost/static_assert.hpp" ++ ++int ++main(int argc, char *argv[]) ++{ ++ BOOST_STATIC_ASSERT(BOOST_ATOMIC_FLAG_LOCK_FREE); ++ return 0; ++} +diff -Nurp boost_1_54_0/libs/thread/build/Jamfile.v2 boost_1_54_0.pm/libs/thread/build/Jamfile.v2 +--- boost_1_54_0/libs/thread/build/Jamfile.v2 2013-06-15 12:35:45.000000000 +0200 ++++ boost_1_54_0.pm/libs/thread/build/Jamfile.v2 2013-08-23 19:52:30.018613408 +0200 +@@ -36,6 +36,7 @@ import os ; + import feature ; + import indirect ; + import path ; ++import configure ; + + project boost/thread + : source-location ../src +@@ -140,6 +141,8 @@ local rule default_threadapi ( ) + feature.feature threadapi : pthread win32 : propagated ; + feature.set-default threadapi : [ default_threadapi ] ; + ++exe has_atomic_flag_lockfree : ../build/has_atomic_flag_lockfree_test.cpp ; ++ + rule tag ( name : type ? : property-set ) + { + local result = $(name) ; +@@ -248,6 +251,12 @@ rule requirements ( properties * ) + { + local result ; + ++ if ! [ configure.builds has_atomic_flag_lockfree ++ : $(properties) : "lockfree boost::atomic_flag" ] ++ { ++ result += /boost/atomic//boost_atomic ; ++ } ++ + if pthread in $(properties) + { + result += BOOST_THREAD_POSIX ; -- cgit 1.2.3-korg