I asked on IRC and it turns out that there's a new build step required that
hasn't made its way into the documentation yet - after executing
'bootstrap.sh' and before executing 'b2', you need to run 'b2 headers' to
fix up the boost/ dir.
On Sun, Nov 30, 2014 at 9:15 PM, Ted Middleton
I'm trying to build boost 1.56.0 for OSX 10.10 with Xcode 5.1.1 (clang-503.0.40).
Xcode 5.1.1 Build version 5B1008 Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) Target: x86_64-apple-darwin14.0.0 Thread model: posix
When I try to build boost thread, the compile fails building thread.cpp on the command:
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -gdwarf-2 -fexceptions -Wno-long-long -Wextra -Wno-long-long -Wno-variadic-macros -Wunused-function -fpermissive -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_STATIC_LINK=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2/libs/thread/build/darwin-4.2.1/release/link-static/threading-multi/pthread/thread.o" "libs/thread/src/pthread/thread.cpp"
The error is:
In file included from libs/thread/src/pthread/thread.cpp:19: In file included from ./boost/thread/future.hpp:22: In file included from ./boost/thread/detail/invoker.hpp:28: In file included from ./boost/utility/result_of.hpp:202: ./boost/preprocessor/iteration/detail/iter/forward1.hpp:47:18: fatal error: 'boost/utility/detail/result_of_iterate.hpp' file not found ./boost/preprocessor/iteration/detail/iter/forward1.hpp:27:56: note: expanded from macro 'BOOST_PP_FILENAME_1' # define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1) ^ ./boost/utility/result_of.hpp:201:68: note: expanded from macro 'BOOST_PP_ITERATION_PARAMS_1' #define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,
)) ^ ./boost/preprocessor/array/elem.hpp:23:114: note: expanded from macro 'BOOST_PP_ARRAY_ELEM' # define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array)) ^ note: (skipping 10 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) ./boost/preprocessor/tuple/rem.hpp:23:31: note: expanded from macro 'BOOST_PP_REM' # define BOOST_PP_REM(...) __VA_ARGS__ ^ ./boost/preprocessor/variadic/elem.hpp:26:89: note: expanded from macro 'BOOST_PP_VARIADIC_ELEM' # define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
^ ./boost/preprocessor/variadic/elem.hpp:30:55: note: expanded from macro 'BOOST_PP_VARIADIC_ELEM_2' # define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
Sure enough, boost/utility/detail/result_of_iterate.hpp doesn't exist from the base of the project. It does if you start at libs/utlility/include/boost/utility/detail, though. Most of what's in boost/ is a symlink to directories in libs (I guess this is how modulization works), and if boost/utility were a symlink libs/utility/include/boost/utility, I think this code in forward1.hpp would work. But boost/utility isn't a symlink - boost/utility is an actual directory with a few symlinks to files in it, but none of them leads to result_of_iterate.hpp.
There's an email (http://lists.boost.org/Archives/boost/2014/07/215233.php) to the developers list from back in July discussing this build break in the 1.56.0 beta 1, but I'm seeing this at the tag boost-1.56.0 for the 1.56.0 release in git.I don't seem to be able to build 1.57.0 either. Boost 1.56.0 wouldn't have shipped with a broken boost thread compile on OSX 64-bit, so I'm certain that its something bad that I've done. Can anyone figure out what I'm doing wrong from that command line or the error printout?