I am really excited about the upcoming C++ standard, nicknamed C++0x. It would be great to have a compiler that supports some of the proposed features, instead of just reading about them. So I set out to build the C++0x version of gcc.
Here is a quick description that worked for me (OS X 10.4):
$ svn -q checkout svn://gcc.gnu.org/svn/gcc/branches/cxx0x-branch gcc0x
$ cd gcc0x
This gave me the following error message:
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.2.1+.
which I fixed by porting mpfr and gmp.
$ sudo port install mpfr gmp gmp-cxx-wrappers
and then I could configure, make and install like this (compilation takes about an hour):
$ ./configure --enable-languages=c++ --with-gmp=/opt/local --with-mpfr=/opt/local
$ sudo make install
$ /usr/local/bin/g++ --version
g++ (GCC) 4.3.0 20070628 (experimental)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Now I can write C++ programs and play around with new language features, such as static assertions, variadic templates, delegating constructors and decltype. I can also use some of the new library stuff, such as <regex>, <tuple>, <type_traits> and more… Cool!
Note, for some reason I get a warning during linking. It says:
/usr/bin/ld: warning can't open dynamic library: /libgcc_s.1.dylib ...
The code links and run so you can perhaps just ignore the warning, but here is a workaround that silence the linker:
g++ -Wl,-dylib_file,/libgcc_s.1.dylib:/usr/local/lib/libgcc_s.1.dylib foo.cpp