|Using the Mathemagix
The basic procedure for compiling and running a Mathemagix
program toto.mmx is very simple: first compile the
This will create a binary toto which can be run using
This method still works if the program toto.mmx
depends on many other files. In that case Mathemagix
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 toto.mmx, 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 toto.mmx using the option –verbose:
Whenever the user develops another program booh.mmx
with an overlapping set of dependencies with toto.mmx,
then compiling both programs toto.mmx and booh.mmx
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 ~/.mathemagix/mmc or ~/.mathemagix/mmc-version.
Sometimes, you may wish to clean the cache and
recompile all dependencies from scratch. This can be done using
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 Mathemagix,
in which control is delegated to the programs themselves rather than
to an external build system.
General purpose compiler flags are the following:
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 Gdb.
This flag should be used for the creation
of static binaries.
3.Other compiler options
The compiler supports a few other general purpose options:
This option will print messages issued by
the compiler using colors.
Disable parallelism for the compilation
Test the compilation of a list of files.
Both compile and run a list of files.
Compile using at most max
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:
Keep all public interfaces of the Mathemagix 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 –from-cpp.
Hackers may also want to experiment with various debugging options for
the compiler itself. These options are all of the form –debug-feature.
Currently supported debugging options are:
© 2012 Joris van der Hoeven
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License
. If you
don't have this file, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.