- <table style="text-align:left">
- <tr><th>Variable Name</th><th>Variable Description</th></tr>
- <tr>
- <td><a href="#BUILD_ARCHIVE"><tt>BUILD_ARCHIVE</tt></a></td>
- <td>If set to any value, causes an archive (.a) library to be built.</td>
- </tr><tr><td><a href="#BUILT_SOURCES"><tt>BUILT_SOURCES</tt></a></td>
- <td>Specifies a set of source files that are generated. These will be
- built before any other target processing to ensure they are present.</td>
- </tr><tr><td><a href="#BYTECODE_LIBRARY"><tt>BUILT_SOURCES</tt></a></td>
- <td>If set to any value, causes a bytecode library (.bc) to be built.</td>
- </tr><tr><td><a href="#CONFIG_FILES"><tt>BUILT_SOURCES</tt></a></td>
- <td>Specivies a set of configuration files to be installed.</td>
- </tr><tr><td><a href="#DIRS"><tt>DIRS</tt></a></td>
- <td>Specifies a set of directories that should also be made using the
- same goal. These directories will be built serially.</td>
- </tr><tr><td><a href="#DONT_BUILD_RELINKED"><tt>DONT_BUILD_RELINKED</tt></a></td>
- <td>If set to any value, causes a relinked library (.o) not to be built.</td>
- </tr><tr><td><a href="#EXPORTED_SYMBOL_FILE"><tt>EXPORTED_SYMBOL_FILE</tt></a></td>
- <td>Specifies the name of a single file that contains a list of the
- symbols to be exported by the linker. One symbol per line.</td>
- </tr><tr><td><a href="#LEVEL"><tt>LEVEL</tt></a></td>
- <td>Specify the level of nesting from the top level. (Required)</td>
- </tr><tr><td><a href="#LIBRARYNAME"><tt>LIBRARYNAME</tt></a></td>
- <td>Specify the name of the library to be built. (Required For Libraries)</td>
- </tr><tr><td><a href="#LLVMLIBS"><tt>LLVMLIBS</tt></a></td>
- <td>Specify the set of libraries from the LLVM $(OBJDIR) that will be
- linked into the tool or library.</td>
- </tr><tr><td><a href="#OPTIONAL_DIRS"><tt>OPTIONAL_DIRS</tt></a></td>
- <td>Specify a set of directories that may be built, but if they don't
- build, the recursive make doesn't stop.</td>
- </tr><tr><td><a href="#PARALLEL_DIRS"><tt>PARALLEL_DIRS</tt></a></td>
- <td>Specify a set of directories to build recursively and in parallel if
- the -j option was used with <tt>make</tt>.</td>
- </tr><tr><td><a href="#SHARED_LIBRARY"><tt>SHARED_LIBRARY</tt></a></td>
- <td>If set to any value, causes a shared library (.so) to be built.
- (Optional)</td>
- </tr><tr><td><a href="#SOURCES"><tt>SOURCES</tt></a></td>
- <td>Specifies the list of source files in the current directory to be
- acted upon. Source files of any type may be specified (programs,
- documentation, config files, etc.)</td>
- </tr><tr><td><a href="#TARGET"><tt>TARGET</tt></a></td>
- <td>Specifies the name of the LLVM code generation target that the
- current directory builds.</td>
- </tr><tr><td><a href="#TOOLNAME"><tt>TOOLNAME</tt></a></td>
- <td>Specifies the name of the tool to build. (Required For Tools)</td>
- </tr><tr><td><a href="#USEDLIBS"><tt>USEDLIBS</tt></a></td>
- <td>Specifies the list of project libraries that will be linked into the
- tool or library.</td>
- </tr>
- </table>
+ <dl>
+ <dt><a name="BUILD_ARCHIVE"><tt>BUILD_ARCHIVE</tt></a></dt>
+ <dd>If set to any value, causes an archive (.a) library to be built.</dd>
+ <dt><a name="BUILT_SOURCES"><tt>BUILT_SOURCES</tt></a></dt>
+ <dd>Specifies a set of source files that are generated from other source
+ files. These sources will be built before any other target processing to
+ ensure they are present.</dd>
+ <dt><a name="BYTECODE_LIBRARY"><tt>BYTECODE_LIBRARY</tt></a></dt>
+ <dd>If set to any value, causes a bitcode library (.bc) to be built.</dd>
+ <dt><a name="CONFIG_FILES"><tt>CONFIG_FILES</tt></a></dt>
+ <dd>Specifies a set of configuration files to be installed.</dd>
+ <dt><a name="DIRS"><tt>DIRS</tt></a></dt>
+ <dd>Specifies a set of directories, usually children of the current
+ directory, that should also be made using the same goal. These directories
+ will be built serially.</dd>
+ <dt><a name="DISABLE_AUTO_DEPENDENCIES"><tt>DISABLE_AUTO_DEPENDENCIES</tt></a></dt>
+ <dd>If set to any value, causes the makefiles to <b>not</b> automatically
+ generate dependencies when running the compiler. Use of this feature is
+ discouraged and it may be removed at a later date.</dd>
+ <dt><a name="DONT_BUILD_RELINKED"><tt>DONT_BUILD_RELINKED</tt></a></dt>
+ <dd>If set to any value, causes a relinked library (.o) not to be built. By
+ default, libraries are built as re-linked since most LLVM libraries are
+ needed in their entirety and re-linked libraries will be linked more quickly
+ than equivalent archive libraries.</dd>
+ <dt><a name="ENABLE_OPTIMIZED"><tt>ENABLE_OPTIMIZED</tt></a></dt>
+ <dd>If set to any value, causes the build to generate optimized objects,
+ libraries and executables. This alters the flags specified to the compilers
+ and linkers. Generally debugging won't be a fun experience with an optimized
+ build.</dd>
+ <dt><a name="ENABLE_PROFILING"><tt>ENABLE_PROFILING</tt></a></dt>
+ <dd>If set to any value, causes the build to generate both optimized and
+ profiled objects, libraries and executables. This alters the flags specified
+ to the compilers and linkers to ensure that profile data can be collected
+ from the tools built. Use the <tt>gprof</tt> tool to analyze the output from
+ the profiled tools (<tt>gmon.out</tt>).</dd>
+ <dt><a name="DISABLE_ASSERTIONS"><tt>DISABLE_ASSERTIONS</tt></a></dt>
+ <dd>If set to any value, causes the build to disable assertions, even if
+ building a release or profile build. This will exclude all assertion check
+ code from the build. LLVM will execute faster, but with little help when
+ things go wrong.</dd>
+ <dt><a name="EXPERIMENTAL_DIRS"><tt>EXPERIMENTAL_DIRS</tt></a></dt>
+ <dd>Specify a set of directories that should be built, but if they fail, it
+ should not cause the build to fail. Note that this should only be used
+ temporarily while code is being written.</dd>
+ <dt><a name="EXPORTED_SYMBOL_FILE"><tt>EXPORTED_SYMBOL_FILE</tt></a></dt>
+ <dd>Specifies the name of a single file that contains a list of the
+ symbols to be exported by the linker. One symbol per line.</dd>
+ <dt><a name="EXPORTED_SYMBOL_LIST"><tt>EXPORTED_SYMBOL_LIST</tt></a></dt>
+ <dd>Specifies a set of symbols to be exported by the linker.</dd>
+ <dt><a name="EXTRA_DIST"><tt>EXTRA_DIST</tt></a></dt>
+ <dd>Specifies additional files that should be distributed with LLVM. All
+ source files, all built sources, all Makefiles, and most documentation files
+ will be automatically distributed. Use this variable to distribute any
+ files that are not automatically distributed.</dd>
+ <dt><a name="KEEP_SYMBOLS"><tt>KEEP_SYMBOLS</tt></a></dt>
+ <dd>If set to any value, specifies that when linking executables the
+ makefiles should retain debug symbols in the executable. Normally, symbols
+ are stripped from the executable.</dd>
+ <dt><a name="LEVEL"><tt>LEVEL</tt></a><small>(required)</small></dt>
+ <dd>Specify the level of nesting from the top level. This variable must be
+ set in each makefile as it is used to find the top level and thus the other
+ makefiles.</dd>
+ <dt><a name="LIBRARYNAME"><tt>LIBRARYNAME</tt></a></dt>
+ <dd>Specify the name of the library to be built. (Required For
+ Libraries)</dd>
+ <dt><a name="LINK_COMPONENTS"><tt>LINK_COMPONENTS</tt></a></dt>
+ <dd>When specified for building a tool, the value of this variable will be
+ passed to the <tt>llvm-config</tt> tool to generate a link line for the
+ tool. Unlike <tt>USEDLIBS</tt> and <tt>LLVMLIBS</tt>, not all libraries need
+ to be specified. The <tt>llvm-config</tt> tool will figure out the library
+ dependencies and add any libraries that are needed. The <tt>USEDLIBS</tt>
+ variable can still be used in conjunction with <tt>LINK_COMPONENTS</tt> so
+ that additional project-specific libraries can be linked with the LLVM
+ libraries specified by <tt>LINK_COMPONENTS</tt></dd>
+ <dt><a name="LINK_LIBS_IN_SHARED"><tt>LINK_LIBS_IN_SHARED</tt></a></dt>
+ <dd>By default, shared library linking will ignore any libraries specified
+ with the <a href="LLVMLIBS">LLVMLIBS</a> or <a href="USEDLIBS">USEDLIBS</a>.
+ This prevents shared libs from including things that will be in the LLVM
+ tool the shared library will be loaded into. However, sometimes it is useful
+ to link certain libraries into your shared library and this option enables
+ that feature.</dd>
+ <dt><a name="LLVMLIBS"><tt>LLVMLIBS</tt></a></dt>
+ <dd>Specifies the set of libraries from the LLVM $(ObjDir) that will be
+ linked into the tool or library.</dd>
+ <dt><a name="LOADABLE_MODULE"><tt>LOADABLE_MODULE</tt></a></dt>
+ <dd>If set to any value, causes the shared library being built to also be
+ a loadable module. Loadable modules can be opened with the dlopen() function
+ and searched with dlsym (or the operating system's equivalent). Note that
+ setting this variable without also setting <tt>SHARED_LIBRARY</tt> will have
+ no effect.</dd>
+ <dt><a name="MODULE_NAME"><tt>MODULE_NAME</tt></a></dt>
+ <dd>Specifies the name of a bitcode module to be created. A bitcode
+ module can be specified in conjunction with other kinds of library builds
+ or by itself. It constructs from the sources a single linked bitcode
+ file.</dd>
+ <dt><a name="NO_INSTALL"><tt>NO_INSTALL</tt></a></dt>
+ <dd>Specifies that the build products of the directory should not be
+ installed but should be built even if the <tt>install</tt> target is given.
+ This is handy for directories that build libraries or tools that are only
+ used as part of the build process, such as code generators (e.g.
+ <tt>tblgen</tt>).</dd>
+ <dt><a name="OPTIONAL_DIRS"><tt>OPTIONAL_DIRS</tt></a></dt>
+ <dd>Specify a set of directories that may be built, if they exist, but its
+ not an error for them not to exist.</dd>
+ <dt><a name="PARALLEL_DIRS"><tt>PARALLEL_DIRS</tt></a></dt>
+ <dd>Specify a set of directories to build recursively and in parallel if
+ the -j option was used with <tt>make</tt>.</dd>
+ <dt><a name="SHARED_LIBRARY"><tt>SHARED_LIBRARY</tt></a></dt>
+ <dd>If set to any value, causes a shared library (.so) to be built in
+ addition to any other kinds of libraries. Note that this option will cause
+ all source files to be built twice: once with options for position
+ independent code and once without. Use it only where you really need a
+ shared library.</dd>
+ <dt><a name="SOURCES"><tt>SOURCES</tt><small>(optional)</small></a></dt>
+ <dd>Specifies the list of source files in the current directory to be
+ built. Source files of any type may be specified (programs, documentation,
+ config files, etc.). If not specified, the makefile system will infer the
+ set of source files from the files present in the current directory.</dd>
+ <dt><a name="SUFFIXES"><tt>SUFFIXES</tt></a></dt>
+ <dd>Specifies a set of filename suffixes that occur in suffix match rules.
+ Only set this if your local <tt>Makefile</tt> specifies additional suffix
+ match rules.</dd>
+ <dt><a name="TARGET"><tt>TARGET</tt></a></dt>
+ <dd>Specifies the name of the LLVM code generation target that the
+ current directory builds. Setting this variable enables additional rules to
+ build <tt>.inc</tt> files from <tt>.td</tt> files. </dd>
+ <dt><a name="TESTSUITE"><tt>TESTSUITE</tt></a></dt>
+ <dd>Specifies the directory of tests to run in <tt>llvm/test</tt>.</dd>
+ <dt><a name="TOOLNAME"><tt>TOOLNAME</tt></a></dt>
+ <dd>Specifies the name of the tool that the current directory should
+ build.</dd>
+ <dt><a name="TOOL_VERBOSE"><tt>TOOL_VERBOSE</tt></a></dt>
+ <dd>Implies VERBOSE and also tells each tool invoked to be verbose. This is
+ handy when you're trying to see the sub-tools invoked by each tool invoked
+ by the makefile. For example, this will pass <tt>-v</tt> to the GCC
+ compilers which causes it to print out the command lines it uses to invoke
+ sub-tools (compiler, assembler, linker).</dd>
+ <dt><a name="USEDLIBS"><tt>USEDLIBS</tt></a></dt>
+ <dd>Specifies the list of project libraries that will be linked into the
+ tool or library.</dd>
+ <dt><a name="VERBOSE"><tt>VERBOSE</tt></a></dt>
+ <dd>Tells the Makefile system to produce detailed output of what it is doing
+ instead of just summary comments. This will generate a LOT of output.</dd>
+ </dl>