> <\body> compiler> The basic procedure for compiling and running a program is very simple: first compile the program using <\shell-code> mmc toto.mmx This will create a binary which can be run using <\shell-code> ./toto This method still works if the program depends on many other files. In that case will automatically determine and compile all dependencies. Moreover, on modern computers the compiler will automatically compile as many of the dependencies as possible in parallel. Furthermore, if you modify one of the dependencies and recompile , then only those dependencies which were affected by your change will be recompiled. In order to monitor this process more precisely and get a rough idea about what the compiler is doing, you may compile using the option >|>: <\shell-code> mmc --verbose toto.mmx Whenever the user develops another program with an overlapping set of dependencies with , then compiling both programs and will compile the overlapping dependencies only once (or at most once, in case of recompilations). In order to avoid unnecessary recompilations, the compiler uses a cache, which is stored by default in the directory or >. Sometimes, you may wish to clean the cache and recompile all dependencies from scratch. This can be done using>|> <\shell-code> mmc --clean-cache This kind of cleaning may also be necessary whenever you replace your compiler by a newer development version. The compiler only supports few global flags to influence the compilation process. On the one hand, this is important in order to take optimal advantage out of the compiler cache, and thus make the compilation process as fast as possible. On the other hand this is part of the general design philosophy of , in which control is delegated to the programs themselves rather than to an external build system. General purpose compiler flags are the following: <\description> >>|>This flag is used for the generation of optimized (but possibly larger) code. >>|>This flag should be used in order to generate code which can be debugged using . >>|>This flag should be used for the creation of static binaries. The compiler supports a few other general purpose options: <\description> >>|>This option will print messages issued by the compiler using colors. >>|>Disable parallelism for the compilation process. >>>>|>Test the compilation of a list of >. >>>>|>Both compile and run a list of .> >>>>|>Compile using at most > threads or processes. For debugging purposes, it is sometimes useful to inspect the contents of intermediate files which are generated by the compiler. This can be done using the following options: <\description> >>|>Keep all public interfaces of the files. >>|>Keep all intermediate C++ files generated by the compiler. >>|>Keep all intermediate object files generated by the compiler. Any C++ files which are kept in this way may be edited by the user. In order to resume the compilation process from these modified versions, you may use the option >|>. Hackers may also want to experiment with various debugging options for the compiler itself. These options are all of the form >. Currently supported debugging options are: <\indent> <\with|par-mode|left> >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >. . If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.>