include(ExternalProject)
ExternalProject_Add(Boost
${source_dir}
- PATCH_COMMAND patch -d <SOURCE_DIR> -p1 < ${CMAKE_MODULE_PATH}/boost_context_asm_arm_syntax_unified.patch
+ PATCH_COMMAND
+ patch -d <SOURCE_DIR> -p1 < ${CMAKE_MODULE_PATH}/boost_context_asm_arm_syntax_unified.patch &&
+ patch -d <SOURCE_DIR> -p1 < ${CMAKE_MODULE_PATH}/boost_lockfree_queue_valgrind_error.patch
CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${configure_command}
BUILD_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${build_command}
BUILD_IN_SOURCE 1
--- /dev/null
+--- a/boost/lockfree/queue.hpp
++++ b/boost/lockfree/queue.hpp
+@@ -108,7 +108,7 @@
+ typedef typename detail::select_tagged_handle<node, node_based>::handle_type handle_type;
+
+ node(T const & v, handle_type null_handle):
+- data(v)//, next(tagged_node_handle(0, 0))
++ next(tagged_node_handle(null_handle, 0)), data(v)
+ {
+ /* increment tag to avoid ABA problem */
+ tagged_node_handle old_next = next.load(memory_order_relaxed);