llvmc - The LLVM Compiler Driver (WIP)
llvmc [options] filenames...
llvmc is a configurable driver for invoking other LLVM (and non-LLVM) tools
in order to compile, optimize and link software for multiple languages. For
those familiar with FSF's gcc tool, it is very similar. Please note that
llvmc is considered an experimental tool.
LLVMC has some built-in options that can't be overridden in the
configuration libraries.
- -o filename
-
Output file name.
- -x language
-
Specify the language of the following input files until the next -x
option.
- -load plugin_name
-
Load the specified plugin DLL. Example:
-load $LLVM_DIR/Release/lib/LLVMCSimple.so.
- -v or --verbose
-
Enable verbose mode, i.e. print out all executed commands.
- --check-graph
-
Check the compilation for common errors like mismatched output/input language
names, multiple default edges and cycles. Because of plugins, these checks can't
be performed at compile-time. Exit with code zero if no errors were found, and
return the number of found errors otherwise. Hidden option, useful for debugging
LLVMC plugins.
- --view-graph
-
Show a graphical representation of the compilation graph and exit. Requires that
you have dot and gv programs installed. Hidden option, useful for
debugging LLVMC plugins.
- --write-graph
-
Write a compilation-graph.dot file in the current directory with the
compilation graph description in Graphviz format (identical to the file used by
the --view-graph option). The -o option can be used to set the output file
name. Hidden option, useful for debugging LLVMC plugins.
- --save-temps
-
Write temporary files to the current directory and do not delete them on
exit. This option can also take an argument: the --save-temps=obj switch will
write files into the directory specified with the -o option. The
--save-temps=cwd and --save-temps switches are both synonyms for the
default behaviour.
- --temp-dir directory
-
Store temporary files in the given directory. This directory is deleted on exit
unless --save-temps is specified. If --save-temps=obj is also specified,
--temp-dir is given the precedence.
- --help
-
Print a summary of command-line options and exit.
- --help-hidden
-
Print a summary of command-line options and exit. Print help even for
options intended for developers.
- --version
-
Print version information and exit.
- @file
-
Read command-line options from file. The options read are inserted
in place of the original @file option. If file does not exist, or
cannot be read, then the option will be treated literally, and not
removed.
-
Options in file are separated by whitespace. A whitespace character
may be included in an option by surrounding the entire option in
either single or double quotes. Any character (including a backslash)
may be included by prefixing the character to be included with a
backslash. The file may itself contain additional @file options;
any such options will be processed recursively.
By default, LLVMC is built with some standard configuration libraries
that define the following options:
- -clang
-
Use Clang instead of llvm-gcc.
- -opt
-
Enable optimization passes with opt. To pass options to the opt program
use the -Wo, option.
- -I directory
-
Add a directory to the header file search path. This option can be
repeated.
- -L directory
-
Add directory to the library search path. This option can be
repeated.
- -lname
-
Link in the library libname.[bc | a | so]. This library should
be a bitcode library.
- -emit-llvm
-
Make the output be LLVM bitcode (with -c) or assembly (with -S) instead
of native object (or assembly). If -emit-llvm is given without either -c
or -S it has no effect.
- -Wa
-
Pass options to assembler.
- -Wl
-
Pass options to linker.
- -Wo
-
Pass options to opt.
If llvmc succeeds, it will exit with code 0. Otherwise, if an
error occurs, it will exit with a non-zero value. If one of the
compilation tools returns a non-zero status, pending actions will be
discarded and llvmc will return the same result code as the failing
compilation tool.
llvm-gcc, llvm-g++, llvm-as,
llvm-dis, llc, llvm-link
Maintained by the LLVM Team (http://llvm.org).