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?