blob: b7c4b65c09ee0eda3e622c673703d0a9f5f4847d [file] [log] [blame]
John Thompson02bad9f2013-09-23 17:57:00 +00001================
John Thompson26ecaf92013-10-16 13:44:21 +00002Modularize Usage
John Thompson02bad9f2013-09-23 17:57:00 +00003================
John Thompson2d2d45e2013-09-20 14:40:52 +00004
John Thompson9cb79642015-02-18 16:14:32 +00005``modularize [<modularize-options>] [<module-map>|<include-files-list>]*
John Thompson469bbc02015-02-12 16:22:09 +00006[<front-end-options>...]``
John Thompson2d2d45e2013-09-20 14:40:52 +00007
8``<modularize-options>`` is a place-holder for options
9specific to modularize, which are described below in
10`Modularize Command Line Options`.
11
John Thompson9cb79642015-02-18 16:14:32 +000012``<module-map>`` specifies the path of a file name for an
13existing module map. The module map must be well-formed in
14terms of syntax. Modularize will extract the header file names
15from the map. Only normal headers are checked, assuming headers
16marked "private", "textual", or "exclude" are not to be checked
17as a top-level include, assuming they either are included by
18other headers which are checked, or they are not suitable for
19modules.
20
John Thompson2d2d45e2013-09-20 14:40:52 +000021``<include-files-list>`` specifies the path of a file name for a
22file containing the newline-separated list of headers to check
23with respect to each other. Lines beginning with '#' and empty
24lines are ignored. Header file names followed by a colon and
25other space-separated file names will include those extra files
26as dependencies. The file names can be relative or full paths,
John Thompson02bad9f2013-09-23 17:57:00 +000027but must be on the same line. For example::
John Thompson2d2d45e2013-09-20 14:40:52 +000028
John Thompson02bad9f2013-09-23 17:57:00 +000029 header1.h
30 header2.h
31 header3.h: header1.h header2.h
John Thompson2d2d45e2013-09-20 14:40:52 +000032
John Thompson26ecaf92013-10-16 13:44:21 +000033Note that unless a ``-prefix (header path)`` option is specified,
John Thompson2d2d45e2013-09-20 14:40:52 +000034non-absolute file paths in the header list file will be relative
35to the header list file directory. Use -prefix to specify a different
36directory.
37
38``<front-end-options>`` is a place-holder for regular Clang
39front-end arguments, which must follow the <include-files-list>.
John Thompsonf9f62b12015-05-06 18:43:01 +000040Note that by default, modularize assumes .h files
41contain C++ source, so if you are using a different language,
42you might need to use a ``-x`` option to tell Clang that the
43header contains another language, i.e.: ``-x c``
John Thompson2d2d45e2013-09-20 14:40:52 +000044
John Thompson8eb8d932015-02-19 16:47:27 +000045Note also that because modularize does not use the clang driver,
46you will likely need to pass in additional compiler front-end
47arguments to match those passed in by default by the driver.
48
John Thompson2d2d45e2013-09-20 14:40:52 +000049Modularize Command Line Options
John Thompson02bad9f2013-09-23 17:57:00 +000050===============================
John Thompson2d2d45e2013-09-20 14:40:52 +000051
John Thompson81cf1e82015-06-04 01:12:56 +000052.. option:: -prefix=<header-path>
John Thompson2d2d45e2013-09-20 14:40:52 +000053
54 Prepend the given path to non-absolute file paths in the header list file.
55 By default, headers are assumed to be relative to the header list file
John Thompson26ecaf92013-10-16 13:44:21 +000056 directory. Use ``-prefix`` to specify a different directory.
57
58.. option:: -module-map-path=<module-map-path>
59
60 Generate a module map and output it to the given file. See the description
61 in :ref:`module-map-generation`.
John Thompson4018c622015-07-10 00:37:25 +000062
63.. option:: -problem-files-list=<problem-files-list-file-name>
64
65 For use only with module map assistant. Input list of files that
66 have problems with respect to modules. These will still be
67 included in the generated module map, but will be marked as
68 "excluded" headers.
John Thompson26ecaf92013-10-16 13:44:21 +000069
70.. option:: -root-module=<root-name>
71
72 Put modules generated by the -module-map-path option in an enclosing
73 module with the given name. See the description in :ref:`module-map-generation`.
John Thompsonecd3b042015-02-11 16:58:36 +000074
75.. option:: -block-check-header-list-only
76
77 Limit the #include-inside-extern-or-namespace-block
78 check to only those headers explicitly listed in the header list.
79 This is a work-around for avoiding error messages for private includes that
80 purposefully get included inside blocks.
John Thompson8eb8d932015-02-19 16:47:27 +000081
82.. option:: -no-coverage-check
83
84 Don't do the coverage check for a module map.
85
86.. option:: -coverage-check-only
87
88 Only do the coverage check for a module map.
John Thompson4018c622015-07-10 00:37:25 +000089
90.. option:: -display-file-lists
91
92 Display lists of good files (no compile errors), problem files,
93 and a combined list with problem files preceded by a '#'.
94 This can be used to quickly determine which files have problems.
95 The latter combined list might be useful in starting to modularize
96 a set of headers. You can start with a full list of headers,
97 use -display-file-lists option, and then use the combined list as
98 your intermediate list, uncommenting-out headers as you fix them.