The redo toolset is is known to build, run, and work on FreeBSD 10, PC-BSD 10, Debian Linux version 13, and NetBSD 10. It should similarly build, run, and work on any modern BSD and on any modern Linux flavour.
The source is structured as a slashpackage-style package.
It doesn't rely upon any other build system to build itself.
In particular, it doesn't require make to build.
Rather, it bootstraps itself by building a minimal version of itself and then using that to rebuild itself.
It builds with the g++ and clang++ compilers. The build system attempts to autodetect the available compiler, as well as various operating-system-dependant features. The way that it autodetects features was in some of Daniel J. Bernstein's softwares: a short test program that references the desired features, and a header that defines a preprocessor macro according to whether the build system can successfully compile and link the test program. (People who absolutely must can override the compiler autodetection with an environment variable.)
It makes use of various …at() system calls from POSIX.1:2008, for safety.
To just build the toolset from source, without packaging the binaries:
package/compile
This gives you:
command/, which you can just add to your PATH environment variable or symbolically link to;
manual/, which you can just add to your MANPATH environment variable or symbolically link to; and
guide/.
The build process updates files in these directories atomically. It doesn't create part-written executables or other files at their final names. So you can run things straight out of these directories whilst rebuilding.
To clean the build run
package/clean
or just rm -r build/
To clean the build, packaging, and built files run
package/distclean
or just rm -r build/ command/ manual/ guide/
To build installable binary packages on FreeBSD, PC-BSD, NetBSD, or OpenBSD run
package/bsd/prepare && pkg-buildpackage
On FreeBSD and PC-BSD this requires pkg version 1.2 or later in order to avoid segmentation faults and other bugs. So ensure that pkg is up to that version in your ports tree.
To build the binary packages on Debian Linux run
package/debian/prepare && dpkg-buildpackage -b -uc