[m-rev.] diff: fix problems in user's guide

Julien Fischer jfischer at opturion.com
Tue Jan 7 16:45:02 AEDT 2014


Branches: master, 14.01

------------------------

Fix some problems with the User's guide.

doc/user_guide.texi:
 	Delete a reference to `:' as a module qualifier.

 	Comments in texinfo begin with "@c", not "%".

 	Fix an ordering mismatch between the menu and the sectioning:
 	``Build options'' and ``Miscellaneous options'' should
 	occur *after* ``Link options''.

Julien.

diff --git a/doc/user_guide.texi b/doc/user_guide.texi
index 2073f72..70a7c2f 100644
--- a/doc/user_guide.texi
+++ b/doc/user_guide.texi
@@ -6374,7 +6374,7 @@ mmc [@var{options}] @var{arguments}
  Arguments can be either module names or file names.
  Arguments ending in @samp{.m} are assumed to be file names,
  while other arguments are assumed to be module names, with
- at samp{.} (rather than @samp{__} or @samp{:}) as module qualifier.
+ at samp{.} (rather than @samp{__}) as module qualifier.
  If you specify a module name such as @samp{foo.bar.baz},
  the compiler will look for the source in files @file{foo.bar.baz.m},
  @file{bar.baz.m}, and @file{baz.m}, in that order.
@@ -6416,13 +6416,13 @@ This option causes the compiler to halt immediately
  after syntax checking and not do any semantic checking
  if it finds any syntax errors in the program.

-% @sp 1
-% @item --halt-at-auto-parallel-failure
-% @findex --halt-at-auto-parallel-failure
-% @cindex Automatic parallelism
-% @cindex Profiler feedback
-% This option causes the compiler to halt if it cannot perform
-% an auto-parallelization requested by a feedback file.
+ at c @sp 1
+ at c @item --halt-at-auto-parallel-failure
+ at c @findex --halt-at-auto-parallel-failure
+ at c @cindex Automatic parallelism
+ at c @cindex Profiler feedback
+ at c This option causes the compiler to halt if it cannot perform
+ at c an auto-parallelization requested by a feedback file.

  @sp 1
  @item --inhibit-accumulator-warnings
@@ -8400,19 +8400,19 @@ The special value 0 indicates the table size is unlimited.
  This option can be useful to avoid exceeding fixed limits
  imposed by some C compilers.

-% @sp 1
-% @item "--compare-specialization @var{n}
-% @findex --compare-specialization @var{n}
-% Generate quadratic instead of linear compare predicates for types
-% with up to n function symbols. Higher values of n lead to faster
-% but also bigger compare predicates.
+ at c @sp 1
+ at c @item "--compare-specialization @var{n}
+ at c @findex --compare-specialization @var{n}
+ at c Generate quadratic instead of linear compare predicates for types
+ at c with up to n function symbols. Higher values of n lead to faster
+ at c but also bigger compare predicates.

-% @sp 1
-% @item --no-should-pretest-equality
-% @findex --no-should-pretest-equality
-% @findex --should-pretest-equality
-% If specified, do not add a test for the two values being equal as words
-% to the starts of potentially expensive unify and compare predicates.
+ at c @sp 1
+ at c @item --no-should-pretest-equality
+ at c @findex --no-should-pretest-equality
+ at c @findex --should-pretest-equality
+ at c If specified, do not add a test for the two values being equal as words
+ at c to the starts of potentially expensive unify and compare predicates.

  @sp 1
  @item --fact-table-max-array-size @var{size}
@@ -9282,858 +9282,859 @@ extension.

  @end table

- at node Build system options
- at section Build system options
- at table @code
- at item -m
- at itemx --make
- at findex -m
- at findex --make
-Treat the non-option arguments to @samp{mmc} as files to
-make, rather than source files.  Create the specified files,
-if they are not already up-to-date.
-(Note that this option also enables @samp{--use-subdirs}.)

- at sp 1
- at item -r
- at itemx --rebuild
- at findex -r
- at findex --rebuild
-Same as @samp{--make}, but always rebuild the target files
-even if they are up to date.
+ at node Target code compilation options
+ at section Target code compilation options
+ at cindex Target code compilation options

- at sp 1
- at item -k
- at itemx --keep-going
- at findex -k
- at findex --keep-going
-With @samp{--make} keep going as far as
-possible even if an error is detected.
+If you are using Mmake, you need to pass these options
+to the target code compiler (e.g.@: @samp{mgnuc}) rather
+than to @samp{mmc}.

+ at table @code
  @sp 1
- at item -j <n>
- at item --jobs <n>
- at findex -j <n>
- at findex --jobs
-With @samp{--make}, attempt to perform up to @samp{<n>} jobs
-concurrently for some tasks.
-
-In low-level C grades with parallelism support,
-the number of threads is also limited by
-the @samp{-P} option in the @samp{MERCURY_OPTIONS} environment variable
-(see @ref{Environment}).
+ at item @code{--target-debug}
+ at findex @code{--target-debug}
+ at findex @code{--c-debug}
+ at findex @code{/debug}
+Enable debugging of the generated target code.
+If the target language is C, this has the same effect as
+ at samp{--c-debug} (see below).
+If the target language is IL or C#, this causes the compiler to
+pass @samp{/debug} to the IL assembler or C# compiler.

  @sp 1
- at item --track-flags
- at findex -track-flags
-With @samp{--make}, keep track of the options used when compiling
-each module.  If an option for a module is added or removed,
- at samp{mmc --make} will then know to recompile the module even if the
-timestamp on the file itself has not changed.  Warning,
-verbosity and build system options are not tracked.
+ at item --cc @var{compiler-name}
+ at findex --cc
+ at cindex C compiler
+Specify which C compiler to use.

  @sp 1
- at item --pre-link-command @var{command}
- at findex --pre-link-command
-Specify a command to run before linking with @samp{mmc --make}.
-This can be used to compile C source files which rely on
-header files generated by the Mercury compiler.
-The command will be passed the names of all of the source files in
-the program or library, with the source file containing the main
-module given first.
+ at item --c-include-directory @var{dir}
+ at item --c-include-dir @var{dir}
+ at findex --c-include-directory
+ at findex --c-include-dir
+ at cindex Include directories
+ at cindex Directories
+Append @var{dir} to the list of directories to be searched for
+C header files.  Note that if you want to override this list, rather than
+append to it, then you can set the @samp{MERCURY_MC_ALL_C_INCL_DIRS}
+environment variable to a sequence of @samp{--c-include-directory} options.

  @sp 1
- at item --extra-init-command @var{command}
- at findex --extra-init-command
-Specify a command to produce extra entries in the @file{.init}
-file for a library.
-The command will be passed the names of all of the source files in
-the program or library, with the source file containing the main
-module given first.
+ at item @code{--c-debug}
+ at findex --c-debug
+ at cindex C debugging
+ at cindex Debugging the generated C code
+Pass the @samp{-g} flag to the C compiler, to enable debugging
+of the generated C code, and also disable stripping of C debugging
+information from the executable.
+Since the generated C code is very low-level, this option is not likely
+to be useful to anyone except the Mercury implementors, except perhaps
+for debugging code that uses Mercury's C interface extensively.

  @sp 1
- at item --install-prefix @var{dir}
- at findex --install-prefix
-Specify the directory under which to install Mercury libraries.
+ at item --no-c-optimize
+ at findex --no-c-optimize
+Don't enable the C compiler's optimizations.

  @sp 1
- at item --install-command @var{command}
- at findex --install-command
-Specify the command to use to install the files in Mercury
-libraries. The given command will be invoked as
- at code{@var{command} @var{source} @var{target}}
-to install each file in a Mercury library.
-The default command is @samp{cp}.
+ at item --no-ansi-c
+ at findex --no-ansi-c
+Don't specify to the C compiler that the ANSI dialect
+of C should be used.  Use the full contents of system
+headers, rather than the ANSI subset.

  @sp 1
- at item --install-command-dir-option @var{option}
- at findex --install-command-dir-command
-Specify the flag to pass to the install command to install
-a directory. The given command will be invoked as
- at code{@var{command} @var{option} @var{source} @var{target}}
-to install each directory. The default option is @samp{-R}.
+ at item --inline-alloc
+ at findex --inline-alloc
+Inline calls to @samp{GC_malloc()}.
+This can improve performance a fair bit,
+but may significantly increase code size.
+This option has no effect if @samp{--gc boehm}
+is not set or if the C compiler is not GNU C.

  @sp 1
- at item --no-detect-libgrades
- at findex --no-detect-libgrades
-Do not scan the installation direcotry to determine which
-standard library grades are available.
+ at item --cflags @var{options}
+ at item --cflag @var{option}
+ at findex --cflags
+ at findex --cflag
+ at cindex C compiler options
+Specify options to be passed to the C compiler.
+ at samp{--cflag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --libgrade @var{grade}
- at findex --libgrade
-Add @var{grade} to the list of compilation grades in
-which a library to be installed should be built.
+ at item --javac @var{compiler-name}
+ at item --java-compiler @var{compiler-name}
+ at findex --javac
+ at findex --java-compiler
+ at cindex Java compiler
+Specify which Java compiler to use.  The default is @samp{javac}.

  @sp 1
- at item --no-libgrade
- at findex --no-libgrade
-Clear the list of compilation grades in which a library
-to be installed should be built.  The main use of this is to avoid
-building and installing the default set of grades.
+ at item --java-interpreter @var{interpreter-name}
+ at findex --java-interpreter
+ at cindex Java interpreter
+Specify which Java interpreter to use.  The default is @samp{java}.

  @sp 1
- at item --libgrades-include-component @var{component}
- at itemx --libgrades-include @var{component}
- at findex --libgrade-include-component
- at findex --libgrades-include
-Remove grades that do not contain the specified component from the
-set of library grades to be installed.
-(This option does not work with Mmake, only @samp{mmc --make}.)
+ at item --java-flags @var{options}
+ at itemx --java-flag @var{option}
+ at findex --java-flags
+ at findex --java-flag
+ at cindex Java compiler options
+Specify options to be passed to the Java compiler.
+ at samp{--java-flag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --libgrades-exclude-component @var{component}
- at itemx --libgrade-exclude @var{component}
- at findex --libgrades-exclude-component
- at findex --libgrade-exclude
-Remove grades that contain the specified component from the set of
-library grades to be installed.
-(This option does not work with Mmake, only @samp{mmc --make}.)
+ at item --java-classpath @var{dir}
+ at findex --java-classpath
+ at cindex classpath
+ at cindex Directories
+Set the classpath for the Java compiler.

  @sp 1
- at item --lib-linkage @{shared,static@}
- at findex --lib-linkage
-Specify whether libraries should be installed for shared
-or static linking.  This option can be specified multiple
-times.  By default libraries will be installed for
-both shared and static linking.
+ at item --java-object-file-extension @var{extension}
+ at findex --java-object-file-extension
+ at cindex File extensions
+Specify an extension for Java object (bytecode) files.  By default this
+is @samp{.class}.

- at sp 1
- at item --flags @var{file}
- at itemx --flags-file @var{file}
- at findex --flags
- at findex --flags-file
-Take options from the specified file, and handle them
-as if they were specified on the command line.

  @sp 1
- at item --options-file @var{file}
- at findex --options-file
- at cindex Options files
- at cindex Mercury.options
-Add @var{file} to the list of options files to be processed.
-If @var{file} is @samp{-}, an options file will be read from the
-standard input.  By default the file @file{Mercury.options}
-in the current directory will be read.
-See @ref{Using Mmake} for a description of the syntax of options files.
+ at item --csharp-compiler @var{compiler-name}
+ at findex --csharp-compiler
+ at cindex C# compiler
+Specify which C# compiler to use.  The default is @samp{csc}.

- at item --config-file @var{file}
- at findex --config-file
- at cindex Options files
-Read the Mercury compiler's configuration information from @var{file}.
-If the @samp{--config-file} option is not set, a default configuration
-will be used, unless @samp{--no-mercury-stdlib-dir} is passed to @samp{mmc}.
-The configuration file is just an options file (@pxref{Using Mmake}).
+ at sp 1
+ at item --csharp-flags @var{options}
+ at itemx --csharp-flag @var{option}
+ at findex --csharp-flags
+ at findex --csharp-flag
+ at cindex C# compiler options
+Specify options to be passed to the C# compiler.
+ at samp{--csharp-flag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --options-search-directory @var{dir}
- at findex --options-search-directory
-Add @var{dir} to the list of directories to be searched for
-options files.
+ at item --cil-interpreter @var{interpreter-name}
+ at findex --cil-interpreter
+ at cindex CIL interpreter
+Specify the program that implements the Common Language
+Infrastructure (CLI) execution environment, e.g. @samp{mono}.

  @sp 1
- at item --mercury-configuration-directory @var{dir}
- at itemx --mercury-config-dir @var{dir}
- at findex --mercury-configuration-directory
- at findex --mercury-config-dir
-Search @var{dir} for Mercury system's configuration files.
+ at item --erlang-compiler @var{compiler-name}
+ at findex --erlang-compiler
+ at cindex Erlang compiler
+Specify which Erlang compiler to use.  The default is @samp{erlc}.

  @sp 1
- at item -I @var{dir}
- at itemx --search-directory @var{dir}
- at findex -I
- at findex --search-directory
- at cindex Directories
- at cindex Search path
-Append @var{dir} to the list of directories to be searched for
-imported modules.
+ at item --erlang-interpreter @var{interpreter-name}
+ at findex --erlang-interpreter
+ at cindex Erlang interpreter
+Specify which Erlang interpreter to use.  The default is @samp{erl}.

  @sp 1
- at item --intermod-directory @var{dir}
- at findex --intermod-directory
- at cindex Directories
- at cindex Search path
-Append @var{dir} to the list of directories to be searched for
- at samp{.opt} files.
+ at item --erlang-flags @var{options}
+ at itemx --erlang-flag @var{option}
+ at findex --erlang-flags
+ at findex --erlang-flag
+ at cindex Erlang compiler options
+Specify options to be passed to the Erlang compiler.
+ at samp{--erlang-flag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --use-search-directories-for-intermod
- at findex --use-search-directories-for-intermod
+ at item --erlang-include-directory @var{dir}
+ at itemx --erlang-include-dir @var{dir}
+ at findex --erlang-include-directory
+ at findex --erlang-include-dir
+ at cindex Include directories
  @cindex Directories
- at cindex Search path
-Append the arguments of all -I options to the list of directories
-to be searched for @samp{.opt} files.
+Append @var{dir} to the list of directories to be searched for
+Erlang header files (.hrl).

  @sp 1
- at item --no-libgrade-install-check
- at findex --no-libgrade-install-check
-Do not check that libraries have been installed before attempting
-to use them.  (This option is only meaningful with `mmc --make'.)
+ at item --erlang-native-code
+ at findex --erlang-native-code
+ at cindex Erlang compiler options
+Add @samp{+native} to the start of flags passed to the Erlang compiler.
+Cancelled out by @samp{--no-erlang-native-code} so it's useful when you
+wish to enable native code generation for all modules except for
+a select few.

  @sp 1
- at item --use-subdirs
- at findex --use-subdirs
- at cindex File names
- at cindex Directories
- at cindex Subdirectories
- at cindex @file{Mercury} subdirectory
-Create intermediate files in a @file{Mercury} subdirectory,
-rather than in the current directory.
+ at item --no-erlang-inhibit-trivial-warnings
+ at findex --no-erlang-inhibit-trivial-warnings
+ at cindex Erlang compiler options
+Do not add @samp{+nowarn_unused_vars +nowarn_unused_function} to the
+list of flags passed to the Erlang compiler.

- at sp 1
- at item --use-grade-subdirs
- at findex --use-grade-subdirs
- at cindex File names
- at cindex Directories
- at cindex Subdirectories
- at cindex @file{Mercury} subdirectory
- at cindex Grades
-Generate intermediate files in a @file{Mercury} subdirectory,
-laid out so that multiple grades can be built simultaneously.
-Executables and libraries will be symlinked or copied into the
-current directory.
- at samp{--use-grade-subdirs} does not work with Mmake (it does
-work with @samp{mmc --make}).
+ at c This option is not fully implemented and not very useful.
+ at c @sp 1
+ at c @item --erlang-object-file-extension @var{extension}
+ at c @findex --erlang-object-file-extension
+ at c @cindex File extensions
+ at c Specify an extension for Erlang object (bytecode) files.  By default this
+ at c is @samp{.beam}.

- at sp 1
- at item --order-make-by-timestamp
- at findex --order-make-by-timestamp
-Make @samp{mmc --make} compile more recently modified source files first.
+ at end table

+ at node Link options
+ at section Link options
+ at cindex Link options
+ at cindex Linker options
+ at table @code
  @sp 1
- at item --show-make-times
- at findex --show-make-times
-Report run times for commands executed by @samp{mmc --make}.
+ at item -o @var{filename}
+ at itemx --output-file @var{filename}
+ at findex -o
+ at findex --output-file
+Specify the name of the final executable.
+(The default executable name is the same as the name of the
+first module on the command line, but without the @samp{.m} extension.)
+This option is ignored by @samp{mmc --make}.

  @sp 1
- at item --extra-library-header @var{file}
- at item --extra-lib-header @var{file}
- at findex --extra-library-header
- at findex --extra-lib-header
-Install the specified C header file along with a Mercury library.
-(This option is only supported by @samp{mmc --make})
+ at item --ld-flags @var{options}
+ at item --ld-flags @var{option}
+ at findex --ld-flags
+ at findex --ld-flag
+Specify options to be passed to the command
+invoked by @samp{mmc} to link an executable.
+Use @code{mmc --output-link-command} to find out
+which command is used.
+ at samp{--ld-flag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --restricted-command-line
- at findex --restricted-command-line
-Enable this option if your shell doesn't support long command lines.
-This option uses temporary files to pass arguments to sub-commands.
-(This option is only supported by @samp{mmc --make})
+ at item --ld-libflags @var{options}
+ at item --ld-libflag @var{option}
+ at findex --ld-libflags
+ at findex --ld-libflag
+Specify options to be passed to the command
+invoked by @samp{mmc} to link a shared library.
+Use @code{mmc --output-shared-lib-link-command}
+to find out which command is used.
+ at samp{--ld-libflag} should be used for single words which need
+to be quoted when passed to the shell.

  @sp 1
- at item --env-type @var{type}
- at findex --env-type
-Specify the environment type in which the compiler and generated
-programs will be invoked.
-The environment type controls how the compiler and generated programs
-interact with the shell and other system tools.
-The @var{type} should be one of @samp{posix}, @samp{cygwin}, @samp{msys},
-or @samp{windows}.
-This option is equivalent to setting all of @samp{--host-env-type},
- at samp{--system-env-type} and @samp{--target-env-type} to @var{type}.
+ at item -L @var{directory}
+ at itemx --library-directory @var{directory}
+ at findex -L
+ at findex --library-directory
+ at cindex Directories for libraries
+ at cindex Search path for libraries
+Append @var{directory} to the list of directories in which
+to search for libraries.

  @sp 1
- at item --host-env-type @var{type}
- at findex --host-env-type
-Specify the environment type in which the compiler will be invoked.
-(See above for a list of supported environment types.)
+ at item -R @var{directory}
+ at itemx --runtime-library-directory @var{directory}
+ at findex -R
+ at findex --runtime-library-directory
+Append @var{directory} to the list of directories in which
+to search for shared libraries at runtime.

  @sp 1
- at item --system-env-type @var{type}
- at findex --system-env-type
-Specify the environment type in which external programs invoked by the
-compiler will run.
-If not specified, this defaults to the value given by @samp{--host-env-type}.
+ at item --shlib-linker-install-name-path @var{directory}
+ at findex --shlib-linker-install-name-path
+ at cindex Mac OS X, Darwin, Install name
+Specify the path where a shared library will be installed.
+This option is useful on systems where the runtime search
+path is obtained from the shared library and not via the
+-R option (such as Mac OS X).

  @sp 1
- at item --target-env-type @var{type}
- at findex --target-env-type
-Specify the environment type in which generated programs will be invoked.
-(See above for a list of supported environment types.)
+ at item -l @var{library}
+ at itemx --library @var{library}
+ at findex -l
+ at findex --library
+ at cindex Libraries, linking with
+Link with the specified library.

- at end table
+ at sp 1
+ at item --link-object @var{object}
+ at findex --link-object
+ at cindex Object files, linking with
+Link with the specified object file.

- at node Miscellaneous options
- at section Miscellaneous options
- at table @code
+ at sp 1
+ at item --search-lib-files-dir @var{directory}
+ at itemx --search-library-files-directory @var{directory}
+ at findex --search-lib-files-dir
+ at findex --search-library-files-directory
+ at cindex Directories for libraries
+ at cindex Search path for libraries
+Search @var{directory} for Mercury library files have not yet been
+installed.  Similar to adding @var{directory} using all of the
+ at samp{--search-directory}, @samp{--intermod-directory},
+ at samp{--library-directory}, @samp{--init-file-directory},
+ at samp{--c-include-directory} and @samp{--erlang-include-directory}
+options, but does the right thing when @samp{--use-subdirs} or
+ at samp{--use-grade-subdirs} options are used.

  @sp 1
- at item -?
- at itemx -h
- at itemx --help
- at findex -?
- at findex -h
- at findex --help
- at cindex Help option
-Print a usage message.
+ at item --mld @var{directory}
+ at itemx --mercury-library-directory @var{directory}
+ at findex --mld
+ at findex --mercury-library-directory
+ at cindex Directories for libraries
+ at cindex Search path for libraries
+Append @var{directory} to the list of directories to
+be searched for Mercury libraries.
+This will add @samp{--search-directory}, @samp{--library-directory},
+ at samp{--init-file-directory}, @samp{--c-include-directory}
+and @samp{--erlang-include-directory}
+options as needed.  @xref{Using installed libraries with mmc --make}.

  @sp 1
- at item --filenames-from-stdin
- at findex --filenames-from-stdin
-Read then compile a newline terminated module name or file name from the
-standard input. Repeat this until EOF is reached. (This allows a program
-or user to interactively compile several modules without the overhead of
-process creation for each one.)
+ at item --ml @var{library}
+ at itemx --mercury-library @var{library}
+ at findex --ml
+ at findex --mercury-library
+ at cindex Libraries, linking with
+Link with the specified Mercury library.
+  @xref{Using installed libraries with mmc --make}.

  @sp 1
- at item --typecheck-ambiguity-warn-limit @var{n}
- at findex typecheck-ambiguity-warn-limit
-Set the number of type assignments required to generate a warning
-about highly ambiguous overloading to @var{n}.
+ at item --mercury-standard-library-directory @var{directory}
+ at itemx --mercury-stdlib-dir @var{directory}
+ at findex --mercury-standard-library-directory
+ at findex --mercury-stdlib-dir
+Search @var{directory} for the Mercury standard library.
+Implies @samp{--mercury-library-directory @var{directory}}
+and @samp{--mercury-configuration-directory @var{directory}}.

  @sp 1
- at item --typecheck-ambiguity-error-limit @var{n}
- at findex typecheck-ambiguity-error-limit
-Set the number of type assignments required to generate an error
-excessively ambiguous overloading to @var{n}.
-If this limit is reached,
-the typechecker will not process the predicate or function any further.
-
- at c @sp 1
- at c @item --ignore-par-conjunctions
- at c @findex --ignore-par-conjunctions
- at c Replace parallel conjunctions with plain ones.
- at c This can help developers benchmark their code.
- at c This does not affect implicit parallelism.
-
- at sp 1
- at item --control-granularity
- at findex --control-granularity
-Don't try to generate more parallelism than the machine can handle,
-which may be specified at runtime or detected automatically.
-(see the @samp{-P} option in the @samp{MERCURY_OPTIONS} environment variable.)
+ at item --no-mercury-standard-library-directory
+ at itemx --no-mercury-stdlib-dir
+ at findex --no-mercury-standard-library-directory
+ at findex --no-mercury-stdlib-dir
+Don't use the Mercury standard library.
+Implies @samp{--no-mercury-configuration-directory}.

  @sp 1
- at item --distance-granularity @var{distance_value}
- at findex --distance-granularity
-Control the granularity of parallel execution
-using the specified distance value.
-
- at c Maybe this options *should* exist, but at the moment, it doesn't.
- at c @sp 1
- at c @item --parallelism-target @var{num_cpus}
- at c @findex --parallelism-target
- at c Specifies the number of CPUs of the target machine,
- at c for use by --control-granularity option.
+ at item --init-file-directory @var{directory}
+ at findex --init-file-directory
+Append @var{directory} to the list of directories to
+be searched for @samp{.init} files by @samp{c2init}.

  @sp 1
- at item --implicit-parallelism
- at findex --implicit-parallelism
- at cindex Automatic parallelism
- at cindex Profiler feedback
-Introduce parallel conjunctions where it could be worthwhile (implicit
-parallelism) using deep profiling feedback information generated by
-mdprof_create_feedback. The profiling feedback file can be specified using the
---feedback-file option.
+ at item --init-file @var{file}
+ at findex --init-file
+Append @var{file} to the list of @samp{.init} files
+to be passed to @samp{c2init}.

  @sp 1
- at item --feedback-file
- at findex --feedback-file
- at cindex Automatic parallelism
- at cindex Profiler feedback
-Use the specified profiling feedback file
-which may currently only be processed for automatic parallelism.
-
- at c @sp 1
- at c @item --loop-control
- at c @findex --loop-control
- at c Enable the loop control transformation for parallel conjunctions.
- at c This causes right-recursive parallel conjunctions to use fewer contexts while
- at c maintaining parallelism.
- at c This transformation is under development, when it is ready it will
- at c probably be enabled by default.
- at c
- at c @sp 1
- at c @item --no-loop-control-preserve-tail-recursion
- at c @findex --no-loop-control-preserve-tail-recursion
- at c Do not attempt to preserve tail recursion in the loop control transformation.
- at c This option causes all code spawned off using loop control to access it's
- at c parent stack frame through the parent stack pointer.
- at c Rather than copying (parts) of the stack frame into the child's stack frame and
- at c reading it from there.
- at c This allows us to compare the cost of copying the stack frame with the cost of
- at c non tail recursive code.
- at c It is intended for developers only.
-
- at end table
-
- at node Target code compilation options
- at section Target code compilation options
- at cindex Target code compilation options
-
-If you are using Mmake, you need to pass these options
-to the target code compiler (e.g.@: @samp{mgnuc}) rather
-than to @samp{mmc}.
+ at item --trace-init-file @var{file}
+ at findex --trace-init-file
+Append @var{file} to the list of @samp{.init} files
+to be passed to @samp{c2init} when tracing is enabled.

- at table @code
  @sp 1
- at item @code{--target-debug}
- at findex @code{--target-debug}
- at findex @code{--c-debug}
- at findex @code{/debug}
-Enable debugging of the generated target code.
-If the target language is C, this has the same effect as
- at samp{--c-debug} (see below).
-If the target language is IL or C#, this causes the compiler to
-pass @samp{/debug} to the IL assembler or C# compiler.
+ at item --linkage @{shared,static@}
+ at findex --linkage
+Specify whether to use shared or static linking for executables.
+Shared libraries are always linked with @samp{--linkage shared}.

  @sp 1
- at item --cc @var{compiler-name}
- at findex --cc
- at cindex C compiler
-Specify which C compiler to use.
+ at item --mercury-linkage @{shared,static@}
+ at findex --mercury-linkage
+Specify whether to use shared or static linking when
+linking an executable with Mercury libraries.
+Shared libraries are always linked with @samp{--mercury-linkage shared}.

  @sp 1
- at item --c-include-directory @var{dir}
- at item --c-include-dir @var{dir}
- at findex --c-include-directory
- at findex --c-include-dir
- at cindex Include directories
- at cindex Directories
-Append @var{dir} to the list of directories to be searched for
-C header files.  Note that if you want to override this list, rather than
-append to it, then you can set the @samp{MERCURY_MC_ALL_C_INCL_DIRS}
-environment variable to a sequence of @samp{--c-include-directory} options.
+ at item --no-strip
+ at findex --no-strip
+Don't strip executables.

  @sp 1
- at item @code{--c-debug}
- at findex --c-debug
- at cindex C debugging
- at cindex Debugging the generated C code
-Pass the @samp{-g} flag to the C compiler, to enable debugging
-of the generated C code, and also disable stripping of C debugging
-information from the executable.
-Since the generated C code is very low-level, this option is not likely
-to be useful to anyone except the Mercury implementors, except perhaps
-for debugging code that uses Mercury's C interface extensively.
+ at item --no-demangle
+ at findex --no-demangle
+Don't pipe link errors through the Mercury demangler.

  @sp 1
- at item --no-c-optimize
- at findex --no-c-optimize
-Don't enable the C compiler's optimizations.
+ at item --no-main
+ at findex --no-main
+Don't generate a C main() function.  The user's code must
+provide a main() function.

  @sp 1
- at item --no-ansi-c
- at findex --no-ansi-c
-Don't specify to the C compiler that the ANSI dialect
-of C should be used.  Use the full contents of system
-headers, rather than the ANSI subset.
+ at item --no-allow-undefined
+ at findex --no-allow-undefined
+Do not allow undefined symbols in shared libraries.

  @sp 1
- at item --inline-alloc
- at findex --inline-alloc
-Inline calls to @samp{GC_malloc()}.
-This can improve performance a fair bit,
-but may significantly increase code size.
-This option has no effect if @samp{--gc boehm}
-is not set or if the C compiler is not GNU C.
+ at item --no-use-readline
+ at findex --no-use-readline
+Disable use of the readline library in the debugger.

  @sp 1
- at item --cflags @var{options}
- at item --cflag @var{option}
- at findex --cflags
- at findex --cflag
- at cindex C compiler options
-Specify options to be passed to the C compiler.
- at samp{--cflag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item --runtime-flags @var{flags}
+ at findex --runtime-flags
+Specify flags to pass to the Mercury runtime.

  @sp 1
- at item --javac @var{compiler-name}
- at item --java-compiler @var{compiler-name}
- at findex --javac
- at findex --java-compiler
- at cindex Java compiler
-Specify which Java compiler to use.  The default is @samp{javac}.
+ at item --extra-initialization-functions
+ at itemx --extra-inits
+ at findex --extra-initialization-functions
+ at findex --extra-inits
+Search @samp{.c} files for extra initialization functions.
+(This may be necessary if the C files contain
+hand-coded C code with @samp{INIT} comments, rather than
+containing only C code that was automatically generated
+by the Mercury compiler.)

  @sp 1
- at item --java-interpreter @var{interpreter-name}
- at findex --java-interpreter
- at cindex Java interpreter
-Specify which Java interpreter to use.  The default is @samp{java}.
+ at item --link-executable-command @var{command}
+ at findex --link-executable-command
+Specify the command used to invoke the linker when linking an executable.

  @sp 1
- at item --java-flags @var{options}
- at itemx --java-flag @var{option}
- at findex --java-flags
- at findex --java-flag
- at cindex Java compiler options
-Specify options to be passed to the Java compiler.
- at samp{--java-flag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item --link-shared-lib-command @var{command}
+ at findex --link-shared-lib-command
+Specify the command used to invoke the linker when linking a shared library.

  @sp 1
- at item --java-classpath @var{dir}
- at findex --java-classpath
- at cindex classpath
- at cindex Directories
-Set the classpath for the Java compiler.
+ at item --java-archive-command @var{command}
+ at findex --java-archive-command
+Specify the command used to produce Java archive (JAR) files.

  @sp 1
- at item --java-object-file-extension @var{extension}
- at findex --java-object-file-extension
- at cindex File extensions
-Specify an extension for Java object (bytecode) files.  By default this
-is @samp{.class}.
-
+ at item --framework @var{framework}
+ at findex --framework
+ at cindex Mac OS X, Using Frameworks
+Build and link against the specified framework.
+(Mac OS X only.)

  @sp 1
- at item --csharp-compiler @var{compiler-name}
- at findex --csharp-compiler
- at cindex C# compiler
-Specify which C# compiler to use.  The default is @samp{csc}.
+ at item -F @var{directory}
+ at itemx --framework-directory @var{directory}
+ at findex -F
+ at findex --framework-directory
+ at cindex Directories for libraries
+ at cindex Search path for libraries
+ at cindex Mac OS X, Using Frameworks
+Append the specified directory to the framework search path.
+(Mac OS X only.)

  @sp 1
- at item --csharp-flags @var{options}
- at itemx --csharp-flag @var{option}
- at findex --csharp-flags
- at findex --csharp-flag
- at cindex C# compiler options
-Specify options to be passed to the C# compiler.
- at samp{--csharp-flag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item --sign-assembly @var{keyfile}
+ at findex --sign-assembly
+Sign the current assembly with the strong name contained in the
+specified key file.
+(This option is only meaningful when generating library assemblies
+with the C# backend.)

  @sp 1
- at item --cil-interpreter @var{interpreter-name}
- at findex --cil-interpreter
- at cindex CIL interpreter
-Specify the program that implements the Common Language
-Infrastructure (CLI) execution environment, e.g. @samp{mono}.
+ at item --cstack-reserve-size @var{size}
+ at findex --cstack-reserve-size
+Set the total size of the C stack in virtual memory for executables.
+The stack size is given in bytes.
+This option is only supported (and indeed only necessary) on systems running
+Microsoft Windows.
+
+ at end table
+
+ at node Build system options
+ at section Build system options
+ at table @code
+ at item -m
+ at itemx --make
+ at findex -m
+ at findex --make
+Treat the non-option arguments to @samp{mmc} as files to
+make, rather than source files.  Create the specified files,
+if they are not already up-to-date.
+(Note that this option also enables @samp{--use-subdirs}.)

  @sp 1
- at item --erlang-compiler @var{compiler-name}
- at findex --erlang-compiler
- at cindex Erlang compiler
-Specify which Erlang compiler to use.  The default is @samp{erlc}.
+ at item -r
+ at itemx --rebuild
+ at findex -r
+ at findex --rebuild
+Same as @samp{--make}, but always rebuild the target files
+even if they are up to date.

  @sp 1
- at item --erlang-interpreter @var{interpreter-name}
- at findex --erlang-interpreter
- at cindex Erlang interpreter
-Specify which Erlang interpreter to use.  The default is @samp{erl}.
+ at item -k
+ at itemx --keep-going
+ at findex -k
+ at findex --keep-going
+With @samp{--make} keep going as far as
+possible even if an error is detected.

  @sp 1
- at item --erlang-flags @var{options}
- at itemx --erlang-flag @var{option}
- at findex --erlang-flags
- at findex --erlang-flag
- at cindex Erlang compiler options
-Specify options to be passed to the Erlang compiler.
- at samp{--erlang-flag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item -j <n>
+ at item --jobs <n>
+ at findex -j <n>
+ at findex --jobs
+With @samp{--make}, attempt to perform up to @samp{<n>} jobs
+concurrently for some tasks.
+
+In low-level C grades with parallelism support,
+the number of threads is also limited by
+the @samp{-P} option in the @samp{MERCURY_OPTIONS} environment variable
+(see @ref{Environment}).

  @sp 1
- at item --erlang-include-directory @var{dir}
- at itemx --erlang-include-dir @var{dir}
- at findex --erlang-include-directory
- at findex --erlang-include-dir
- at cindex Include directories
- at cindex Directories
-Append @var{dir} to the list of directories to be searched for
-Erlang header files (.hrl).
+ at item --track-flags
+ at findex -track-flags
+With @samp{--make}, keep track of the options used when compiling
+each module.  If an option for a module is added or removed,
+ at samp{mmc --make} will then know to recompile the module even if the
+timestamp on the file itself has not changed.  Warning,
+verbosity and build system options are not tracked.

  @sp 1
- at item --erlang-native-code
- at findex --erlang-native-code
- at cindex Erlang compiler options
-Add @samp{+native} to the start of flags passed to the Erlang compiler.
-Cancelled out by @samp{--no-erlang-native-code} so it's useful when you
-wish to enable native code generation for all modules except for
-a select few.
+ at item --pre-link-command @var{command}
+ at findex --pre-link-command
+Specify a command to run before linking with @samp{mmc --make}.
+This can be used to compile C source files which rely on
+header files generated by the Mercury compiler.
+The command will be passed the names of all of the source files in
+the program or library, with the source file containing the main
+module given first.

  @sp 1
- at item --no-erlang-inhibit-trivial-warnings
- at findex --no-erlang-inhibit-trivial-warnings
- at cindex Erlang compiler options
-Do not add @samp{+nowarn_unused_vars +nowarn_unused_function} to the
-list of flags passed to the Erlang compiler.
+ at item --extra-init-command @var{command}
+ at findex --extra-init-command
+Specify a command to produce extra entries in the @file{.init}
+file for a library.
+The command will be passed the names of all of the source files in
+the program or library, with the source file containing the main
+module given first.

- at c This option is not fully implemented and not very useful.
- at c @sp 1
- at c @item --erlang-object-file-extension @var{extension}
- at c @findex --erlang-object-file-extension
- at c @cindex File extensions
- at c Specify an extension for Erlang object (bytecode) files.  By default this
- at c is @samp{.beam}.
+ at sp 1
+ at item --install-prefix @var{dir}
+ at findex --install-prefix
+Specify the directory under which to install Mercury libraries.

- at end table
+ at sp 1
+ at item --install-command @var{command}
+ at findex --install-command
+Specify the command to use to install the files in Mercury
+libraries. The given command will be invoked as
+ at code{@var{command} @var{source} @var{target}}
+to install each file in a Mercury library.
+The default command is @samp{cp}.

- at node Link options
- at section Link options
- at cindex Link options
- at cindex Linker options
- at table @code
  @sp 1
- at item -o @var{filename}
- at itemx --output-file @var{filename}
- at findex -o
- at findex --output-file
-Specify the name of the final executable.
-(The default executable name is the same as the name of the
-first module on the command line, but without the @samp{.m} extension.)
-This option is ignored by @samp{mmc --make}.
+ at item --install-command-dir-option @var{option}
+ at findex --install-command-dir-command
+Specify the flag to pass to the install command to install
+a directory. The given command will be invoked as
+ at code{@var{command} @var{option} @var{source} @var{target}}
+to install each directory. The default option is @samp{-R}.

  @sp 1
- at item --ld-flags @var{options}
- at item --ld-flags @var{option}
- at findex --ld-flags
- at findex --ld-flag
-Specify options to be passed to the command
-invoked by @samp{mmc} to link an executable.
-Use @code{mmc --output-link-command} to find out
-which command is used.
- at samp{--ld-flag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item --no-detect-libgrades
+ at findex --no-detect-libgrades
+Do not scan the installation direcotry to determine which
+standard library grades are available.

  @sp 1
- at item --ld-libflags @var{options}
- at item --ld-libflag @var{option}
- at findex --ld-libflags
- at findex --ld-libflag
-Specify options to be passed to the command
-invoked by @samp{mmc} to link a shared library.
-Use @code{mmc --output-shared-lib-link-command}
-to find out which command is used.
- at samp{--ld-libflag} should be used for single words which need
-to be quoted when passed to the shell.
+ at item --libgrade @var{grade}
+ at findex --libgrade
+Add @var{grade} to the list of compilation grades in
+which a library to be installed should be built.

  @sp 1
- at item -L @var{directory}
- at itemx --library-directory @var{directory}
- at findex -L
- at findex --library-directory
- at cindex Directories for libraries
- at cindex Search path for libraries
-Append @var{directory} to the list of directories in which
-to search for libraries.
+ at item --no-libgrade
+ at findex --no-libgrade
+Clear the list of compilation grades in which a library
+to be installed should be built.  The main use of this is to avoid
+building and installing the default set of grades.

  @sp 1
- at item -R @var{directory}
- at itemx --runtime-library-directory @var{directory}
- at findex -R
- at findex --runtime-library-directory
-Append @var{directory} to the list of directories in which
-to search for shared libraries at runtime.
+ at item --libgrades-include-component @var{component}
+ at itemx --libgrades-include @var{component}
+ at findex --libgrade-include-component
+ at findex --libgrades-include
+Remove grades that do not contain the specified component from the
+set of library grades to be installed.
+(This option does not work with Mmake, only @samp{mmc --make}.)

  @sp 1
- at item --shlib-linker-install-name-path @var{directory}
- at findex --shlib-linker-install-name-path
- at cindex Mac OS X, Darwin, Install name
-Specify the path where a shared library will be installed.
-This option is useful on systems where the runtime search
-path is obtained from the shared library and not via the
--R option (such as Mac OS X).
+ at item --libgrades-exclude-component @var{component}
+ at itemx --libgrade-exclude @var{component}
+ at findex --libgrades-exclude-component
+ at findex --libgrade-exclude
+Remove grades that contain the specified component from the set of
+library grades to be installed.
+(This option does not work with Mmake, only @samp{mmc --make}.)

  @sp 1
- at item -l @var{library}
- at itemx --library @var{library}
- at findex -l
- at findex --library
- at cindex Libraries, linking with
-Link with the specified library.
+ at item --lib-linkage @{shared,static@}
+ at findex --lib-linkage
+Specify whether libraries should be installed for shared
+or static linking.  This option can be specified multiple
+times.  By default libraries will be installed for
+both shared and static linking.

  @sp 1
- at item --link-object @var{object}
- at findex --link-object
- at cindex Object files, linking with
-Link with the specified object file.
+ at item --flags @var{file}
+ at itemx --flags-file @var{file}
+ at findex --flags
+ at findex --flags-file
+Take options from the specified file, and handle them
+as if they were specified on the command line.

  @sp 1
- at item --search-lib-files-dir @var{directory}
- at itemx --search-library-files-directory @var{directory}
- at findex --search-lib-files-dir
- at findex --search-library-files-directory
- at cindex Directories for libraries
- at cindex Search path for libraries
-Search @var{directory} for Mercury library files have not yet been
-installed.  Similar to adding @var{directory} using all of the
- at samp{--search-directory}, @samp{--intermod-directory},
- at samp{--library-directory}, @samp{--init-file-directory},
- at samp{--c-include-directory} and @samp{--erlang-include-directory}
-options, but does the right thing when @samp{--use-subdirs} or
- at samp{--use-grade-subdirs} options are used.
+ at item --options-file @var{file}
+ at findex --options-file
+ at cindex Options files
+ at cindex Mercury.options
+Add @var{file} to the list of options files to be processed.
+If @var{file} is @samp{-}, an options file will be read from the
+standard input.  By default the file @file{Mercury.options}
+in the current directory will be read.
+See @ref{Using Mmake} for a description of the syntax of options files.
+
+ at item --config-file @var{file}
+ at findex --config-file
+ at cindex Options files
+Read the Mercury compiler's configuration information from @var{file}.
+If the @samp{--config-file} option is not set, a default configuration
+will be used, unless @samp{--no-mercury-stdlib-dir} is passed to @samp{mmc}.
+The configuration file is just an options file (@pxref{Using Mmake}).

  @sp 1
- at item --mld @var{directory}
- at itemx --mercury-library-directory @var{directory}
- at findex --mld
- at findex --mercury-library-directory
- at cindex Directories for libraries
- at cindex Search path for libraries
-Append @var{directory} to the list of directories to
-be searched for Mercury libraries.
-This will add @samp{--search-directory}, @samp{--library-directory},
- at samp{--init-file-directory}, @samp{--c-include-directory}
-and @samp{--erlang-include-directory}
-options as needed.  @xref{Using installed libraries with mmc --make}.
+ at item --options-search-directory @var{dir}
+ at findex --options-search-directory
+Add @var{dir} to the list of directories to be searched for
+options files.

  @sp 1
- at item --ml @var{library}
- at itemx --mercury-library @var{library}
- at findex --ml
- at findex --mercury-library
- at cindex Libraries, linking with
-Link with the specified Mercury library.
-  @xref{Using installed libraries with mmc --make}.
+ at item --mercury-configuration-directory @var{dir}
+ at itemx --mercury-config-dir @var{dir}
+ at findex --mercury-configuration-directory
+ at findex --mercury-config-dir
+Search @var{dir} for Mercury system's configuration files.
+
+ at sp 1
+ at item -I @var{dir}
+ at itemx --search-directory @var{dir}
+ at findex -I
+ at findex --search-directory
+ at cindex Directories
+ at cindex Search path
+Append @var{dir} to the list of directories to be searched for
+imported modules.
+
+ at sp 1
+ at item --intermod-directory @var{dir}
+ at findex --intermod-directory
+ at cindex Directories
+ at cindex Search path
+Append @var{dir} to the list of directories to be searched for
+ at samp{.opt} files.

  @sp 1
- at item --mercury-standard-library-directory @var{directory}
- at itemx --mercury-stdlib-dir @var{directory}
- at findex --mercury-standard-library-directory
- at findex --mercury-stdlib-dir
-Search @var{directory} for the Mercury standard library.
-Implies @samp{--mercury-library-directory @var{directory}}
-and @samp{--mercury-configuration-directory @var{directory}}.
+ at item --use-search-directories-for-intermod
+ at findex --use-search-directories-for-intermod
+ at cindex Directories
+ at cindex Search path
+Append the arguments of all -I options to the list of directories
+to be searched for @samp{.opt} files.

  @sp 1
- at item --no-mercury-standard-library-directory
- at itemx --no-mercury-stdlib-dir
- at findex --no-mercury-standard-library-directory
- at findex --no-mercury-stdlib-dir
-Don't use the Mercury standard library.
-Implies @samp{--no-mercury-configuration-directory}.
+ at item --no-libgrade-install-check
+ at findex --no-libgrade-install-check
+Do not check that libraries have been installed before attempting
+to use them.  (This option is only meaningful with `mmc --make'.)

  @sp 1
- at item --init-file-directory @var{directory}
- at findex --init-file-directory
-Append @var{directory} to the list of directories to
-be searched for @samp{.init} files by @samp{c2init}.
+ at item --use-subdirs
+ at findex --use-subdirs
+ at cindex File names
+ at cindex Directories
+ at cindex Subdirectories
+ at cindex @file{Mercury} subdirectory
+Create intermediate files in a @file{Mercury} subdirectory,
+rather than in the current directory.

  @sp 1
- at item --init-file @var{file}
- at findex --init-file
-Append @var{file} to the list of @samp{.init} files
-to be passed to @samp{c2init}.
+ at item --use-grade-subdirs
+ at findex --use-grade-subdirs
+ at cindex File names
+ at cindex Directories
+ at cindex Subdirectories
+ at cindex @file{Mercury} subdirectory
+ at cindex Grades
+Generate intermediate files in a @file{Mercury} subdirectory,
+laid out so that multiple grades can be built simultaneously.
+Executables and libraries will be symlinked or copied into the
+current directory.
+ at samp{--use-grade-subdirs} does not work with Mmake (it does
+work with @samp{mmc --make}).

  @sp 1
- at item --trace-init-file @var{file}
- at findex --trace-init-file
-Append @var{file} to the list of @samp{.init} files
-to be passed to @samp{c2init} when tracing is enabled.
+ at item --order-make-by-timestamp
+ at findex --order-make-by-timestamp
+Make @samp{mmc --make} compile more recently modified source files first.

  @sp 1
- at item --linkage @{shared,static@}
- at findex --linkage
-Specify whether to use shared or static linking for executables.
-Shared libraries are always linked with @samp{--linkage shared}.
+ at item --show-make-times
+ at findex --show-make-times
+Report run times for commands executed by @samp{mmc --make}.

  @sp 1
- at item --mercury-linkage @{shared,static@}
- at findex --mercury-linkage
-Specify whether to use shared or static linking when
-linking an executable with Mercury libraries.
-Shared libraries are always linked with @samp{--mercury-linkage shared}.
+ at item --extra-library-header @var{file}
+ at item --extra-lib-header @var{file}
+ at findex --extra-library-header
+ at findex --extra-lib-header
+Install the specified C header file along with a Mercury library.
+(This option is only supported by @samp{mmc --make})

  @sp 1
- at item --no-strip
- at findex --no-strip
-Don't strip executables.
+ at item --restricted-command-line
+ at findex --restricted-command-line
+Enable this option if your shell doesn't support long command lines.
+This option uses temporary files to pass arguments to sub-commands.
+(This option is only supported by @samp{mmc --make})

  @sp 1
- at item --no-demangle
- at findex --no-demangle
-Don't pipe link errors through the Mercury demangler.
+ at item --env-type @var{type}
+ at findex --env-type
+Specify the environment type in which the compiler and generated
+programs will be invoked.
+The environment type controls how the compiler and generated programs
+interact with the shell and other system tools.
+The @var{type} should be one of @samp{posix}, @samp{cygwin}, @samp{msys},
+or @samp{windows}.
+This option is equivalent to setting all of @samp{--host-env-type},
+ at samp{--system-env-type} and @samp{--target-env-type} to @var{type}.

  @sp 1
- at item --no-main
- at findex --no-main
-Don't generate a C main() function.  The user's code must
-provide a main() function.
+ at item --host-env-type @var{type}
+ at findex --host-env-type
+Specify the environment type in which the compiler will be invoked.
+(See above for a list of supported environment types.)

  @sp 1
- at item --no-allow-undefined
- at findex --no-allow-undefined
-Do not allow undefined symbols in shared libraries.
+ at item --system-env-type @var{type}
+ at findex --system-env-type
+Specify the environment type in which external programs invoked by the
+compiler will run.
+If not specified, this defaults to the value given by @samp{--host-env-type}.

  @sp 1
- at item --no-use-readline
- at findex --no-use-readline
-Disable use of the readline library in the debugger.
+ at item --target-env-type @var{type}
+ at findex --target-env-type
+Specify the environment type in which generated programs will be invoked.
+(See above for a list of supported environment types.)

- at sp 1
- at item --runtime-flags @var{flags}
- at findex --runtime-flags
-Specify flags to pass to the Mercury runtime.
+ at end table
+
+ at node Miscellaneous options
+ at section Miscellaneous options
+ at table @code

  @sp 1
- at item --extra-initialization-functions
- at itemx --extra-inits
- at findex --extra-initialization-functions
- at findex --extra-inits
-Search @samp{.c} files for extra initialization functions.
-(This may be necessary if the C files contain
-hand-coded C code with @samp{INIT} comments, rather than
-containing only C code that was automatically generated
-by the Mercury compiler.)
+ at item -?
+ at itemx -h
+ at itemx --help
+ at findex -?
+ at findex -h
+ at findex --help
+ at cindex Help option
+Print a usage message.

  @sp 1
- at item --link-executable-command @var{command}
- at findex --link-executable-command
-Specify the command used to invoke the linker when linking an executable.
+ at item --filenames-from-stdin
+ at findex --filenames-from-stdin
+Read then compile a newline terminated module name or file name from the
+standard input. Repeat this until EOF is reached. (This allows a program
+or user to interactively compile several modules without the overhead of
+process creation for each one.)

  @sp 1
- at item --link-shared-lib-command @var{command}
- at findex --link-shared-lib-command
-Specify the command used to invoke the linker when linking a shared library.
+ at item --typecheck-ambiguity-warn-limit @var{n}
+ at findex typecheck-ambiguity-warn-limit
+Set the number of type assignments required to generate a warning
+about highly ambiguous overloading to @var{n}.

  @sp 1
- at item --java-archive-command @var{command}
- at findex --java-archive-command
-Specify the command used to produce Java archive (JAR) files.
+ at item --typecheck-ambiguity-error-limit @var{n}
+ at findex typecheck-ambiguity-error-limit
+Set the number of type assignments required to generate an error
+excessively ambiguous overloading to @var{n}.
+If this limit is reached,
+the typechecker will not process the predicate or function any further.
+
+ at c @sp 1
+ at c @item --ignore-par-conjunctions
+ at c @findex --ignore-par-conjunctions
+ at c Replace parallel conjunctions with plain ones.
+ at c This can help developers benchmark their code.
+ at c This does not affect implicit parallelism.

  @sp 1
- at item --framework @var{framework}
- at findex --framework
- at cindex Mac OS X, Using Frameworks
-Build and link against the specified framework.
-(Mac OS X only.)
+ at item --control-granularity
+ at findex --control-granularity
+Don't try to generate more parallelism than the machine can handle,
+which may be specified at runtime or detected automatically.
+(see the @samp{-P} option in the @samp{MERCURY_OPTIONS} environment variable.)

  @sp 1
- at item -F @var{directory}
- at itemx --framework-directory @var{directory}
- at findex -F
- at findex --framework-directory
- at cindex Directories for libraries
- at cindex Search path for libraries
- at cindex Mac OS X, Using Frameworks
-Append the specified directory to the framework search path.
-(Mac OS X only.)
+ at item --distance-granularity @var{distance_value}
+ at findex --distance-granularity
+Control the granularity of parallel execution
+using the specified distance value.
+
+ at c Maybe this options *should* exist, but at the moment, it doesn't.
+ at c @sp 1
+ at c @item --parallelism-target @var{num_cpus}
+ at c @findex --parallelism-target
+ at c Specifies the number of CPUs of the target machine,
+ at c for use by --control-granularity option.

  @sp 1
- at item --sign-assembly @var{keyfile}
- at findex --sign-assembly
-Sign the current assembly with the strong name contained in the
-specified key file.
-(This option is only meaningful when generating library assemblies
-with the C# backend.)
+ at item --implicit-parallelism
+ at findex --implicit-parallelism
+ at cindex Automatic parallelism
+ at cindex Profiler feedback
+Introduce parallel conjunctions where it could be worthwhile (implicit
+parallelism) using deep profiling feedback information generated by
+mdprof_create_feedback. The profiling feedback file can be specified using the
+--feedback-file option.

  @sp 1
- at item --cstack-reserve-size @var{size}
- at findex --cstack-reserve-size
-Set the total size of the C stack in virtual memory for executables.
-The stack size is given in bytes.
-This option is only supported (and indeed only necessary) on systems running
-Microsoft Windows.
+ at item --feedback-file
+ at findex --feedback-file
+ at cindex Automatic parallelism
+ at cindex Profiler feedback
+Use the specified profiling feedback file
+which may currently only be processed for automatic parallelism.
+
+ at c @sp 1
+ at c @item --loop-control
+ at c @findex --loop-control
+ at c Enable the loop control transformation for parallel conjunctions.
+ at c This causes right-recursive parallel conjunctions to use fewer contexts while
+ at c maintaining parallelism.
+ at c This transformation is under development, when it is ready it will
+ at c probably be enabled by default.
+ at c
+ at c @sp 1
+ at c @item --no-loop-control-preserve-tail-recursion
+ at c @findex --no-loop-control-preserve-tail-recursion
+ at c Do not attempt to preserve tail recursion in the loop control transformation.
+ at c This option causes all code spawned off using loop control to access it's
+ at c parent stack frame through the parent stack pointer.
+ at c Rather than copying (parts) of the stack frame into the child's stack frame and
+ at c reading it from there.
+ at c This allows us to compare the cost of copying the stack frame with the cost of
+ at c non tail recursive code.
+ at c It is intended for developers only.

  @end table




More information about the reviews mailing list