Building Boost library failed with Clang 2.9

I tried building boost 1.45 release with clang 2.9 following instructions on

http://blog.llvm.org/2010/05/clang-builds-boost.html

but got the following result:

$ clang++ --version
clang version 2.9 (trunk 123420)
Target: x86_64-apple-darwin10
Thread model: posix

$ ./bjam toolset=clang

Building the Boost C++ Libraries.

Performing configuration checks

  • has_icu builds : no
    warning: Graph library does not contain MPI-based parallel components.
    note: to enable them, add “using mpi ;” to your user-config.jam
  • …/config//has_gcc_visibility builds : yes
  • …/config//has_long_double_support builds : yes
    warning: skipping optional Message Passing Interface (MPI) library.
    note: to enable MPI support, add “using mpi ;” to user-config.jam.
    note: to suppress this message, pass “–without-mpi” to bjam.
    note: otherwise, you can safely ignore this message.

Component configuration:

  • date_time : building
  • filesystem : building
  • graph : building
  • graph_parallel : building
  • iostreams : building
  • math : building
  • mpi : building
  • program_options : building
  • python : building
  • random : building
  • regex : building
  • serialization : building
  • signals : building
  • system : building
  • test : building
  • thread : building
  • wave : building

…patience…
…patience…
…patience…
…found 7481 targets…
…updating 6 targets…
clang-darwin.compile.c++ bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/threading-multi/mapped_file.o
In file included from libs/iostreams/src/mapped_file.cpp:18:
./boost/iostreams/device/mapped_file.hpp:416:5: error: call to member function ‘open’ is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:395:26: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file_source::open(const basic_mapped_file_params& p)
^
./boost/iostreams/device/mapped_file.hpp:410:26: note: candidate function [with Path = boost::iostreams::basic_mapped_file_paramsboost::iostreams::detail::path]
void mapped_file_source::open(
^
./boost/iostreams/device/mapped_file.hpp:450:5: error: call to member function ‘open’ is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_paramsboost::iostreams::detail::path]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:462:5: error: call to member function ‘open’ is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_paramsboost::iostreams::detail::path]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:492:18: error: call to member function ‘open’ is ambiguous
mapped_file::open(params);

./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:504:5: error: call to member function 'open' is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:481:24: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file_sink::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:496:24: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void mapped_file_sink::open(
^
5 errors generated.

"clang++" -x c++ -O3 -O3 -finline-functions -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_DYN_LINK=1 -DBOOST_IOSTREAMS_USE_DEPRECATED -DNDEBUG -I"." -c -o "bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/threading-multi/mapped_file.o" "libs/iostreams/src/mapped_file.cpp"

...failed clang-darwin.compile.c++ bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/threading-multi/mapped_file.o...
...skipped <pstage/lib>libboost_iostreams.dylib for lack of <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/threading-multi>mapped_file.o...
clang-darwin.compile.c++ bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi/mapped_file.o
In file included from libs/iostreams/src/mapped_file.cpp:18:
./boost/iostreams/device/mapped_file.hpp:416:5: error: call to member function 'open' is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:395:26: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file_source::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:410:26: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void mapped_file_source::open(
^
./boost/iostreams/device/mapped_file.hpp:450:5: error: call to member function 'open' is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:462:5: error: call to member function 'open' is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:492:18: error: call to member function 'open' is ambiguous
mapped_file::open(params);
~~~~~~~~~~~~~^~~~
./boost/iostreams/device/mapped_file.hpp:289:10: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void open( const Path& path,
^
./boost/iostreams/device/mapped_file.hpp:438:19: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:442:19: note: candidate function template not viable: requires at least 2 arguments, but 1 was provided
void mapped_file::open(
^
./boost/iostreams/device/mapped_file.hpp:504:5: error: call to member function 'open' is ambiguous
open(p);
^~~~
./boost/iostreams/device/mapped_file.hpp:481:24: note: candidate function [with Path = boost::iostreams::detail::path]
void mapped_file_sink::open(const basic_mapped_file_params<Path>& p)
^
./boost/iostreams/device/mapped_file.hpp:496:24: note: candidate function [with Path = boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path>]
void mapped_file_sink::open(
^
5 errors generated.

"clang++" -x c++ -O3 -O3 -finline-functions -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_USE_DEPRECATED -DNDEBUG -I"." -c -o "bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi/mapped_file.o" "libs/iostreams/src/mapped_file.cpp"

...failed clang-darwin.compile.c++ bin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi/mapped_file.o...
...skipped <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi>libboost_iostreams.a(clean) for lack of <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi>mapped_file.o...
...skipped <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi>libboost_iostreams.a for lack of <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi>mapped_file.o...
...skipped <pstage/lib>libboost_iostreams.a for lack of <pbin.v2/libs/iostreams/build/clang-darwin-4.2.1/release/link-static/threading-multi>libboost_iostreams.a...
...failed updating 2 targets...
...skipped 4 targets...

Am I missing something here?

Cheers,

Chia-Wei

Clang has a few outstanding regressions with Boost. On Linux it's a chore, on
darwin, I'd advise using prebuilt binaries.