Common compilation flags¶
Usual flags like -O, -O1, -O2, -O3, -D, -c, -o, … are recognized by Mercurium.
Almost every Mercurium-specific flag is of the form --xxx.
Mercurium drivers are deliberately compatible with gcc. This means that flags
of the form -fXXX, -mXXX and -Wxxx are accepted and passed onto the backend
compiler without interpretation by Mercurium drivers.
Warning
In GCC a flag of the form -fXXX is equivalent to a flag of the form --XXX. This is not the case in Mercurium.
Getting command line help¶
You can get a summary of all the flags accepted by Mercurium using --help with any of the drivers:
$ mcc --help
Usage: mcc options file [file..]
Options:
-h, --help Shows this help and quits
--version Shows version and quits
--v, --verbose Runs verbosely, displaying the programs
invoked by the compiler
...
Passing vendor-specific flags¶
While almost every gcc of the form -fXXX or -mXXX can be passed
directly to a Mercurium driver, some other vendor-specific flags may not be
well known or be misunderstood by Mercurium. When this happens, Mercurium has a
generic way to pass parameters to the backend compiler and linker.
--Wn,<comma-separated-list-of-flags>Passes comma-separated flags to the native compiler. These flags are used when Mercurium invokes the backend compiler to generate the object file (
.o)--Wl,<comma-separated-list-of-flags>Passes comma-separated-flags to the linker. These flags are used when Mercurium invokes the linker
--Wp,<comma-separated-list-of-flags>Passes comma-separated flags to the C/Fortran preprocessor. These flags are used when Mercurium invokes the preprocessor on a C or Fortran file.
These flags can be combined. Flags --Wp,a --Wp,b are equivalent to
--Wp,a,b. Flag --Wnp,a is equivalent to --Wn,a --Wp,a
Important
Do not confuse --Wl and --Wp with the gcc similar flags -Wl
and -Wp (note that gcc ones have a single -). The latter can be
used with the former, as in --Wl,-Wl,muldefs. That said, Mercurium
supports -Wl and -Wp directly, so -Wl,muldefs should be enough.