.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  | will give a
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "LLVM-CONFIG 1"
.TH LLVM-CONFIG 1 "2006-08-01" "CVS" "LLVM Command Guide"
.SH "NAME"
llvm\-config \- Print LLVM compilation options
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBllvm-config\fR \fIoption\fR [\fIcomponents\fR...]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBllvm-config\fR makes it easier to build applications that use \s-1LLVM\s0.  It can
print the compiler flags, linker flags and object libraries needed to link
against \s-1LLVM\s0.
.SH "EXAMPLES"
.IX Header "EXAMPLES"
To link against the \s-1JIT:\s0
.PP
.Vb 3
\&  g++ `llvm-config --cxxflags` -o HowToUseJIT.o -c HowToUseJIT.cpp
\&  g++ `llvm-config --ldflags` -o HowToUseJIT HowToUseJIT.o \e
\&      `llvm-config --libs engine bcreader scalaropts`
.Ve
.SH "OPTIONS"
.IX Header "OPTIONS"
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
Print the version number of \s-1LLVM\s0.
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
Print a summary of \fBllvm-config\fR arguments.
.IP "\fB\-\-prefix\fR" 4
.IX Item "--prefix"
Print the installation prefix for \s-1LLVM\s0.
.IP "\fB\-\-src\-root\fR" 4
.IX Item "--src-root"
Print the source root from which \s-1LLVM\s0 was built.
.IP "\fB\-\-obj\-root\fR" 4
.IX Item "--obj-root"
Print the object root used to build \s-1LLVM\s0.
.IP "\fB\-\-bindir\fR" 4
.IX Item "--bindir"
Print the installation directory for \s-1LLVM\s0 binaries.
.IP "\fB\-\-includedir\fR" 4
.IX Item "--includedir"
Print the installation directory for \s-1LLVM\s0 headers.
.IP "\fB\-\-libdir\fR" 4
.IX Item "--libdir"
Print the installation directory for \s-1LLVM\s0 libraries.
.IP "\fB\-\-cxxflags\fR" 4
.IX Item "--cxxflags"
Print the \*(C+ compiler flags needed to use \s-1LLVM\s0 headers.
.IP "\fB\-\-ldflags\fR" 4
.IX Item "--ldflags"
Print the flags needed to link against \s-1LLVM\s0 libraries.
.IP "\fB\-\-libs\fR" 4
.IX Item "--libs"
Print all the libraries needed to link against the specified \s-1LLVM\s0
\&\fIcomponents\fR, including any dependencies.
.IP "\fB\-\-libnames\fR" 4
.IX Item "--libnames"
Similar to \fB\-\-libs\fR, but prints the bare filenames of the libraries
without \fB\-l\fR or pathnames.  Useful for linking against a not-yet-installed
copy of \s-1LLVM\s0.
.IP "\fB\-\-libfiles\fR" 4
.IX Item "--libfiles"
Similar to \fB\-\-libs\fR, but print the full path to each library file.  This is
useful when creating makefile dependencies, to ensure that a tool is relinked if
any library it uses changes.
.IP "\fB\-\-components\fR" 4
.IX Item "--components"
Print all valid component names.
.IP "\fB\-\-targets\-built\fR" 4
.IX Item "--targets-built"
Print the component names for all targets supported by this copy of \s-1LLVM\s0.
.IP "\fB\-\-build\-mode\fR" 4
.IX Item "--build-mode"
Print the build mode used when \s-1LLVM\s0 was built (e.g. Debug or Release)
.SH "COMPONENTS"
.IX Header "COMPONENTS"
To print a list of all available components, run \fBllvm-config
\&\-\-components\fR.  In most cases, components correspond directly to \s-1LLVM\s0
libraries.  Useful \*(L"virtual\*(R" components include:
.IP "\fBall\fR" 4
.IX Item "all"
Includes all \s-1LLVM\s0 libaries.  The default if no components are specified.
.IP "\fBbackend\fR" 4
.IX Item "backend"
Includes either a native backend or the C backend.
.IP "\fBengine\fR" 4
.IX Item "engine"
Includes either a native \s-1JIT\s0 or the bytecode interpreter.
.SH "EXIT STATUS"
.IX Header "EXIT STATUS"
If \fBllvm-config\fR succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value.
.SH "AUTHORS"
.IX Header "AUTHORS"
Maintained by the \s-1LLVM\s0 Team (<http://llvm.org>).
