MAF (Monoid Automata Factory): Project Web Hosting - Open Source Software

Building MAF

General Points

If you want to build your own version of MAF you may like to note the following important point:


The make file for the Windows version is maf.mak. You also need one of the tools.ini file included, assuming you will be using Microsoft nmake. There is no Visual Studio project file. The program will build with Visual Studio 98 compiler or the 2002 or 2003 .NET compilers, or the Intel C++ compiler (possibly only older versions). Copy tools.c12 over tools.ini if you are using the first of these compilers. MAF cannot currently be built with later versions of Microsoft C++, because MAF uses libc.lib which is not provided with later versions of the compiler, and because Microsoft have made changes to their implementation of CRT which cause problems for MAF. Support will be added for later compiler when time permits. There are two tools.ini files for the 2003 compiler tools.c13opt uses link time code generation. This was used for the released binaries. This makes maf.dll somewhat bigger than it would otherwise be, but improves performance. It also makes building MAF much slower, so you may prefer to use tools.c13 instead.

If you want to build MAF using a GNU/Cygwin environment you should start from the Unix makefile.

Max OS X

The make file for the Mac is mafu.mak to build a 32-bit MAF, or mafu64.mak if you want to build the program 64-bit. (These two make files are the same apart from the substitution of -m64 for -m32 in a few places in the latter).

Other Unix/Linux versions

The author has only built MAF on Windows and Mac machines so far. However, it should be easy to adapt the Mac make file for any other Unix/Linux platform where GNU is used. The Mac executables are built using a Mac dynamic library as this makes the download about 60* smaller than it would be otherwise. If your platform does not support this, then simply link against maf.a instead. This should be a two line change in the make file. You may also need to adjust some of the flags passed to the compiler for other platforms.