Home | History | Annotate | Download | only in tools
      1 =pod
      2 
      3 =head1 NAME
      4 
      5 clang - the Clang C, C++, and Objective-C compiler
      6 
      7 =head1 SYNOPSIS
      8 
      9 B<clang> [B<-c>|B<-S>|B<-E>] B<-std=>I<standard> B<-g>
     10   [B<-O0>|B<-O1>|B<-O2>|B<-Os>|B<-O3>|B<-O4>]
     11   B<-W>I<warnings...> B<-pedantic>
     12   B<-I>I<dir...> B<-L>I<dir...>
     13   B<-D>I<macro[=defn]>
     14   B<-f>I<feature-option...>
     15   B<-m>I<machine-option...>
     16   B<-o> I<output-file>
     17   B<-stdlib=>I<library> 
     18   I<input-filenames>
     19 
     20 =head1 DESCRIPTION
     21 
     22 B<clang> is a C, C++, and Objective-C compiler which encompasses preprocessing,
     23 parsing, optimization, code generation, assembly, and linking.  Depending on
     24 which high-level mode setting is passed, Clang will stop before doing a full
     25 link.  While Clang is highly integrated, it is important to understand the
     26 stages of compilation, to understand how to invoke it.  These stages are:
     27 
     28 =over
     29 
     30 =item B<Driver>
     31 
     32 The B<clang> executable is actually a small driver which controls the overall
     33 execution of other tools such as the compiler, assembler and linker.  Typically
     34 you do not need to interact with the driver, but you transparently use it to run
     35 the other tools.
     36 
     37 =item B<Preprocessing>
     38 
     39 This stage handles tokenization of the input source file, macro expansion,
     40 #include expansion and handling of other preprocessor directives.  The output of
     41 this stage is typically called a ".i" (for C), ".ii" (for C++), ".mi" (for 
     42 Objective-C) , or ".mii" (for Objective-C++) file.
     43 
     44 =item B<Parsing and Semantic Analysis>
     45 
     46 This stage parses the input file, translating preprocessor tokens into a parse
     47 tree.  Once in the form of a parser tree, it applies semantic analysis to compute
     48 types for expressions as well and determine whether the code is well formed. This
     49 stage is responsible for generating most of the compiler warnings as well as
     50 parse errors.  The output of this stage is an "Abstract Syntax Tree" (AST).
     51 
     52 =item B<Code Generation and Optimization>
     53 
     54 This stage translates an AST into low-level intermediate code (known as "LLVM
     55 IR") and ultimately to machine code.  This phase is responsible for optimizing
     56 the generated code and handling target-specific code generation.  The output of
     57 this stage is typically called a ".s" file or "assembly" file.
     58 
     59 Clang also supports the use of an integrated assembler, in which the code
     60 generator produces object files directly. This avoids the overhead of generating
     61 the ".s" file and of calling the target assembler.
     62 
     63 =item B<Assembler>
     64 
     65 This stage runs the target assembler to translate the output of the compiler
     66 into a target object file.  The output of this stage is typically called a ".o"
     67 file or "object" file.
     68 
     69 =item B<Linker>
     70 
     71 This stage runs the target linker to merge multiple object files into an
     72 executable or dynamic library.  The output of this stage is typically called an
     73 "a.out", ".dylib" or ".so" file.
     74 
     75 =back
     76 
     77 The Clang compiler supports a large number of options to control each of these
     78 stages.  In addition to compilation of code, Clang also supports other tools:
     79 
     80 B<Clang Static Analyzer>
     81 
     82 The Clang Static Analyzer is a tool that scans source code to try to find bugs
     83 through code analysis.  This tool uses many parts of Clang and is built into the
     84 same driver.
     85 
     86 
     87 =head1 OPTIONS
     88 
     89 =head2 Stage Selection Options
     90 
     91 =over
     92 
     93 =item B<-E>
     94 
     95 Run the preprocessor stage.
     96 
     97 =item B<-fsyntax-only>
     98 
     99 Run the preprocessor, parser and type checking stages.
    100 
    101 =item B<-S>
    102 
    103 Run the previous stages as well as LLVM generation and optimization stages and
    104 target-specific code generation, producing an assembly file.
    105 
    106 =item B<-c>
    107 
    108 Run all of the above, plus the assembler, generating a target ".o" object file.
    109 
    110 =item B<no stage selection option>
    111 
    112 If no stage selection option is specified, all stages above are run, and the
    113 linker is run to combine the results into an executable or shared library.
    114 
    115 =item B<--analyze>
    116 
    117 Run the Clang Static Analyzer.
    118 
    119 =back
    120 
    121 
    122 
    123 =head2 Language Selection and Mode Options
    124 
    125 =over
    126 
    127 =item B<-x> I<language>
    128 
    129 Treat subsequent input files as having type I<language>.
    130 
    131 =item B<-std>=I<language>
    132 
    133 Specify the language standard to compile for.
    134 
    135 =item B<-stdlib>=I<language>
    136 
    137 Specify the C++ standard library to use; supported options are libstdc++ and
    138 libc++.
    139 
    140 =item B<-ansi>
    141 
    142 Same as B<-std=c89>.
    143 
    144 =item B<-ObjC++>
    145 
    146 Treat source input files as Objective-C++ inputs.
    147 
    148 =item B<-ObjC>
    149 
    150 Treat source input files as Objective-C inputs.
    151 
    152 =item B<-trigraphs>
    153 
    154 Enable trigraphs.
    155 
    156 =item B<-ffreestanding>
    157 
    158 Indicate that the file should be compiled for a freestanding, not a hosted,
    159 environment.
    160 
    161 =item B<-fno-builtin>
    162 
    163 Disable special handling and optimizations of builtin functions like strlen and
    164 malloc.
    165 
    166 =item B<-fmath-errno>
    167 
    168 Indicate that math functions should be treated as updating errno.
    169 
    170 =item B<-fpascal-strings>
    171 
    172 Enable support for Pascal-style strings with "\pfoo".
    173 
    174 =item B<-fms-extensions>
    175 
    176 Enable support for Microsoft extensions.
    177 
    178 =item B<-fmsc-version=>
    179 
    180 Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise.
    181 
    182 =item B<-fborland-extensions>
    183 
    184 Enable support for Borland extensions.
    185 
    186 =item B<-fwritable-strings>
    187 
    188 Make all string literals default to writable.  This disables uniquing of
    189 strings and other optimizations.
    190 
    191 =item B<-flax-vector-conversions>
    192 
    193 Allow loose type checking rules for implicit vector conversions.
    194 
    195 =item B<-fblocks>
    196 
    197 Enable the "Blocks" language feature.
    198 
    199 =item B<-fobjc-gc-only>
    200 
    201 Indicate that Objective-C code should be compiled in GC-only mode, which only
    202 works when Objective-C Garbage Collection is enabled.
    203 
    204 =item B<-fobjc-gc>
    205 
    206 Indicate that Objective-C code should be compiled in hybrid-GC mode, which works
    207 with both GC and non-GC mode.
    208 
    209 =item B<-fobjc-abi-version>=I<version>
    210 
    211 Select the Objective-C ABI version to use. Available versions are 1 (legacy
    212 "fragile" ABI), 2 (non-fragile ABI 1), and 3 (non-fragile ABI 2).
    213 
    214 =item B<-fobjc-nonfragile-abi-version>=I<version>
    215 
    216 Select the Objective-C non-fragile ABI version to use by default. This will only
    217 be used as the Objective-C ABI when the non-fragile ABI is enabled (either via
    218 -fobjc-nonfragile-abi, or because it is the platform default).
    219 
    220 =item B<-fobjc-nonfragile-abi>
    221 
    222 Enable use of the Objective-C non-fragile ABI. On platforms for which this is
    223 the default ABI, it can be disabled with B<-fno-objc-nonfragile-abi>.
    224 
    225 =back
    226 
    227 
    228 
    229 =head2 Target Selection Options
    230 
    231 Clang fully supports cross compilation as an inherent part of its design.
    232 Depending on how your version of Clang is configured, it may have support for
    233 a number of cross compilers, or may only support a native target.
    234 
    235 =over
    236 
    237 =item B<-arch> I<architecture>
    238 
    239 Specify the architecture to build for.
    240 
    241 =item B<-mmacosx-version-min>=I<version>
    242 
    243 When building for Mac OS/X, specify the minimum version supported by your
    244 application.
    245 
    246 =item B<-miphoneos-version-min>
    247 
    248 When building for iPhone OS, specify the minimum version supported by your
    249 application.
    250 
    251 
    252 =item B<-march>=I<cpu>
    253 
    254 Specify that Clang should generate code for a specific processor family member
    255 and later.  For example, if you specify -march=i486, the compiler is allowed to
    256 generate instructions that are valid on i486 and later processors, but which
    257 may not exist on earlier ones.
    258 
    259 =back
    260 
    261 
    262 =head2 Code Generation Options
    263 
    264 =over
    265 
    266 =item B<-O0> B<-O1> B<-O2> B<-Os> B<-O3> B<-O4>
    267 
    268 Specify which optimization level to use.  B<-O0> means "no optimization": this
    269 level compiles the fastest and generates the most debuggable code.  B<-O2> is a
    270 moderate level of optimization which enables most optimizations.  B<-Os> is like
    271 B<-O2> with extra optimizations to reduce code size.  B<-O3> is like B<-O2>,
    272 except that it enables optimizations that take longer to perform or that may
    273 generate larger code (in an attempt to make the program run faster).  On
    274 supported platforms, B<-O4> enables link-time optimization; object files are
    275 stored in the LLVM bitcode file format and whole program optimization is done at
    276 link time. B<-O1> is somewhere between B<-O0> and B<-O2>.
    277 
    278 =item B<-g>
    279 
    280 Generate debug information.  Note that Clang debug information works best at
    281 B<-O0>.  At higher optimization levels, only line number information is
    282 currently available.
    283 
    284 =item B<-fexceptions>
    285 
    286 Enable generation of unwind information, this allows exceptions to be thrown
    287 through Clang compiled stack frames.  This is on by default in x86-64.
    288 
    289 =item B<-ftrapv>
    290 
    291 Generate code to catch integer overflow errors.  Signed integer overflow is
    292 undefined in C, with this flag, extra code is generated to detect this and abort
    293 when it happens.
    294 
    295 
    296 =item B<-fvisibility>
    297 
    298 This flag sets the default visibility level.
    299 
    300 =item B<-fcommon>
    301 
    302 This flag specifies that variables without initializers get common linkage.  It
    303 can be disabled with B<-fno-common>.
    304 
    305 =item B<-ftls-model>
    306 
    307 Set the default thread-local storage (TLS) model to use for thread-local
    308 variables. Valid values are: "global-dynamic", "local-dynamic", "initial-exec"
    309 and "local-exec". The default is "global-dynamic". The default model can be
    310 overridden with the tls_model attribute. The compiler will try to choose a more
    311 efficient model if possible.
    312 
    313 =item B<-flto> B<-emit-llvm>
    314 
    315 Generate output files in LLVM formats, suitable for link time optimization. When
    316 used with B<-S> this generates LLVM intermediate language assembly files,
    317 otherwise this generates LLVM bitcode format object files (which may be passed
    318 to the linker depending on the stage selection options).
    319 
    320 =cut
    321 
    322 ##=item B<-fnext-runtime> B<-fobjc-nonfragile-abi> B<-fgnu-runtime>
    323 ##These options specify which Objective-C runtime the code generator should
    324 ##target.  FIXME: we don't want people poking these generally.
    325 
    326 =pod
    327 
    328 =back
    329 
    330 
    331 =head2 Driver Options
    332 
    333 =over
    334 
    335 =item B<-###>
    336 
    337 Print the commands to run for this compilation.
    338 
    339 =item B<--help>
    340 
    341 Display available options.
    342 
    343 =item B<-Qunused-arguments>
    344 
    345 Don't emit warning for unused driver arguments.
    346 
    347 =item B<-Wa,>I<args>
    348 
    349 Pass the comma separated arguments in I<args> to the assembler.
    350 
    351 =item B<-Wl,>I<args>
    352 
    353 Pass the comma separated arguments in I<args> to the linker.
    354 
    355 =item B<-Wp,>I<args>
    356 
    357 Pass the comma separated arguments in I<args> to the preprocessor.
    358 
    359 =item B<-Xanalyzer> I<arg>
    360 
    361 Pass I<arg> to the static analyzer.
    362 
    363 =item B<-Xassembler> I<arg>
    364 
    365 Pass I<arg> to the assembler.
    366 
    367 =item B<-Xlinker> I<arg>
    368 
    369 Pass I<arg> to the linker.
    370 
    371 =item B<-Xpreprocessor> I<arg>
    372 
    373 Pass I<arg> to the preprocessor.
    374 
    375 =item B<-o> I<file>
    376 
    377 Write output to I<file>.
    378 
    379 =item B<-print-file-name>=I<file>
    380 
    381 Print the full library path of I<file>.
    382 
    383 =item B<-print-libgcc-file-name>
    384 
    385 Print the library path for "libgcc.a".
    386 
    387 =item B<-print-prog-name>=I<name>
    388 
    389 Print the full program path of I<name>.
    390 
    391 =item B<-print-search-dirs>
    392 
    393 Print the paths used for finding libraries and programs.
    394 
    395 =item B<-save-temps>
    396 
    397 Save intermediate compilation results.
    398 
    399 =item B<-integrated-as> B<-no-integrated-as>
    400 
    401 Used to enable and disable, respectively, the use of the integrated
    402 assembler. Whether the integrated assembler is on by default is target
    403 dependent.
    404 
    405 =item B<-time>
    406 
    407 Time individual commands.
    408 
    409 =item B<-ftime-report>
    410 
    411 Print timing summary of each stage of compilation.
    412 
    413 =item B<-v>
    414 
    415 Show commands to run and use verbose output.
    416 
    417 =back
    418 
    419 
    420 =head2 Diagnostics Options
    421 
    422 =over
    423 
    424 =item B<-fshow-column>
    425 B<-fshow-source-location>
    426 B<-fcaret-diagnostics>
    427 B<-fdiagnostics-fixit-info>
    428 B<-fdiagnostics-parseable-fixits>
    429 B<-fdiagnostics-print-source-range-info>
    430 B<-fprint-source-range-info>
    431 B<-fdiagnostics-show-option>
    432 B<-fmessage-length>
    433 
    434 These options control how Clang prints out information about diagnostics (errors
    435 and warnings).  Please see the Clang User's Manual for more information.
    436 
    437 =back
    438 
    439 
    440 =head2 Preprocessor Options
    441 
    442 =over
    443 
    444 =item B<-D>I<macroname=value>
    445 
    446 Adds an implicit #define into the predefines buffer which is read before the
    447 source file is preprocessed.
    448 
    449 =item B<-U>I<macroname>
    450 
    451 Adds an implicit #undef into the predefines buffer which is read before the
    452 source file is preprocessed.
    453 
    454 =item B<-include> I<filename>
    455 
    456 Adds an implicit #include into the predefines buffer which is read before the
    457 source file is preprocessed.
    458 
    459 =item B<-I>I<directory>
    460 
    461 Add the specified directory to the search path for include files.
    462 
    463 =item B<-F>I<directory>
    464 
    465 Add the specified directory to the search path for framework include files.
    466 
    467 =item B<-nostdinc>
    468 
    469 Do not search the standard system directories or compiler builtin directories
    470 for include files.
    471 
    472 =item B<-nostdlibinc>
    473 
    474 Do not search the standard system directories for include files, but do search
    475 compiler builtin include directories.
    476 
    477 =item B<-nobuiltininc>
    478 
    479 Do not search clang's builtin directory for include files.
    480 
    481 =cut
    482 
    483 ## TODO, but do we really want people using this stuff?
    484 #=item B<-idirafter>I<directory>
    485 #=item B<-iquote>I<directory>
    486 #=item B<-isystem>I<directory>
    487 #=item B<-iprefix>I<directory>
    488 #=item B<-iwithprefix>I<directory>
    489 #=item B<-iwithprefixbefore>I<directory>
    490 #=item B<-isysroot>
    491 
    492 =pod
    493 
    494 
    495 =back
    496 
    497 
    498 
    499 =cut
    500 
    501 ### TODO someday.
    502 #=head2 Warning Control Options
    503 #=over
    504 #=back
    505 #=head2 Code Generation and Optimization Options
    506 #=over
    507 #=back
    508 #=head2 Assembler Options
    509 #=over
    510 #=back
    511 #=head2 Linker Options
    512 #=over
    513 #=back
    514 #=head2 Static Analyzer Options
    515 #=over
    516 #=back
    517 
    518 =pod
    519 
    520 
    521 =head1 ENVIRONMENT
    522 
    523 =over
    524 
    525 =item B<TMPDIR>, B<TEMP>, B<TMP>
    526 
    527 These environment variables are checked, in order, for the location to
    528 write temporary files used during the compilation process.
    529 
    530 =item B<CPATH>
    531 
    532 If this environment variable is present, it is treated as a delimited
    533 list of paths to be added to the default system include path list. The
    534 delimiter is the platform dependent delimitor, as used in the I<PATH>
    535 environment variable.
    536 
    537 Empty components in the environment variable are ignored.
    538 
    539 =item B<C_INCLUDE_PATH>, B<OBJC_INCLUDE_PATH>, B<CPLUS_INCLUDE_PATH>,
    540 B<OBJCPLUS_INCLUDE_PATH>
    541 
    542 These environment variables specify additional paths, as for CPATH,
    543 which are only used when processing the appropriate language.
    544 
    545 =item B<MACOSX_DEPLOYMENT_TARGET>
    546 
    547 If -mmacosx-version-min is unspecified, the default deployment target
    548 is read from this environment variable.  This option only affects darwin
    549 targets.
    550 
    551 =back
    552 
    553 =head1 BUGS
    554 
    555 To report bugs, please visit L<http://llvm.org/bugs/>.  Most bug reports should
    556 include preprocessed source files (use the B<-E> option) and the full output of 
    557 the compiler, along with information to reproduce.
    558 
    559 =head1 SEE ALSO
    560 
    561  as(1), ld(1)
    562 
    563 =head1 AUTHOR
    564 
    565 Maintained by the Clang / LLVM Team (L<http://clang.llvm.org>).
    566 
    567 =cut
    568