================
Modularize Usage
================

``modularize [<modularize-options>] [<module-map>|<include-files-list>]*
[<front-end-options>...]``

``<modularize-options>`` is a place-holder for options
specific to modularize, which are described below in
`Modularize Command Line Options`.

``<module-map>`` specifies the path of a file name for an
existing module map.  The module map must be well-formed in
terms of syntax.  Modularize will extract the header file names
from the map.  Only normal headers are checked, assuming headers
marked "private", "textual", or "exclude" are not to be checked
as a top-level include, assuming they either are included by
other headers which are checked, or they are not suitable for
modules.

``<include-files-list>`` specifies the path of a file name for a
file containing the newline-separated list of headers to check
with respect to each other. Lines beginning with '#' and empty
lines are ignored. Header file names followed by a colon and
other space-separated file names will include those extra files
as dependencies. The file names can be relative or full paths,
but must be on the same line. For example::

  header1.h
  header2.h
  header3.h: header1.h header2.h

Note that unless a ``-prefix (header path)`` option is specified,
non-absolute file paths in the header list file will be relative
to the header list file directory.  Use -prefix to specify a different
directory.

``<front-end-options>`` is a place-holder for regular Clang
front-end arguments, which must follow the <include-files-list>.
Note that by default, modularize assumes .h files
contain C++ source, so if you are using a different language,
you might need to use a ``-x`` option to tell Clang that the
header contains another language, i.e.:  ``-x c``

Note also that because modularize does not use the clang driver,
you will likely need to pass in additional compiler front-end
arguments to match those passed in by default by the driver.

Modularize Command Line Options
===============================

.. option:: -prefix=<header-path>

  Prepend the given path to non-absolute file paths in the header list file.
  By default, headers are assumed to be relative to the header list file
  directory.  Use ``-prefix`` to specify a different directory.

.. option:: -module-map-path=<module-map-path>

  Generate a module map and output it to the given file.  See the description
  in :ref:`module-map-generation`.
  
.. option:: -problem-files-list=<problem-files-list-file-name>

  For use only with module map assistant.  Input list of files that
  have problems with respect to modules.  These will still be
  included in the generated module map, but will be marked as
  "excluded" headers.

.. option:: -root-module=<root-name>

  Put modules generated by the -module-map-path option in an enclosing
  module with the given name.  See the description in :ref:`module-map-generation`.

.. option:: -block-check-header-list-only

  Limit the #include-inside-extern-or-namespace-block
  check to only those headers explicitly listed in the header list.
  This is a work-around for avoiding error messages for private includes that
  purposefully get included inside blocks.

.. option:: -no-coverage-check

  Don't do the coverage check for a module map.

.. option:: -coverage-check-only

  Only do the coverage check for a module map.

.. option:: -display-file-lists

  Display lists of good files (no compile errors), problem files,
  and a combined list with problem files preceded by a '#'.
  This can be used to quickly determine which files have problems.
  The latter combined list might be useful in starting to modularize
  a set of headers.  You can start with a full list of headers,
  use -display-file-lists option, and then use the combined list as
  your intermediate list, uncommenting-out headers as you fix them.
