%general-entities; ]> $LastChangedBy$ $Date$ LLVM-&llvm-version; LLVM Introduction to LLVM The LLVM package contains a collection of modular and reusable compiler and toolchain technologies. The Low Level Virtual Machine (LLVM) Core libraries provide a modern source and target-independent optimizer, along with code generation support for many popular CPUs (as well as some less common ones!). These libraries are built around a well specified code representation known as the LLVM intermediate representation ("LLVM IR"). The optional Clang and Compiler RT packages provide new C, C++, Objective C and Objective C++ front-ends and runtime libraries for the LLVM. &lfs81_checked; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &llvm-md5sum; Download size: &llvm-size; Estimated disk space required: &llvm-buildsize; Estimated build time: &llvm-time; Optional Downloads Clang Download: Download MD5 sum: &clang-md5sum; Download size: &clang-size; Compiler RT Download: Download MD5 sum: &compiler-rt-md5sum; Download size: &compiler-rt-size; LLVM Dependencies Required Recommended Optional , , , (or ), , , OCaml, and Sphinx User Notes: Installation of LLVM If you have downloaded the optional packages, install them into the source tree by running the following commands: tar -xf ../cfe-&llvm-version;.src.tar.xz -C tools && tar -xf ../compiler-rt-&rt-version;.src.tar.xz -C projects && mv tools/cfe-&llvm-version;.src tools/clang && mv projects/compiler-rt-&rt-version;.src projects/compiler-rt Install LLVM by running the following commands: mkdir -v build && cd build && CC=gcc CXX=g++ \ cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DLLVM_ENABLE_FFI=ON \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_BUILD_LLVM_DYLIB=ON \ -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \ -Wno-dev .. && make If you have installed Sphinx and wish to generate the html documentation and manual pages, issue the following commands: cmake -DLLVM_ENABLE_SPHINX=ON \ -DSPHINX_WARNINGS_AS_ERRORS=OFF \ -Wno-dev .. && make docs-llvm-html docs-llvm-man If you have downloaded the optional packages, the clang documentation can be built too: make docs-clang-html docs-clang-man To test the results, issue: make check-all. Tests are run using the maximum number of processors/threads available. Note that the Address Sanitizer tests are known to fail. Now, as the root user: make install If you have built the documentation, install it by running the following command as the root user: install -v -m644 docs/man/* /usr/share/man/man1 && install -v -d -m755 /usr/share/doc/llvm-&llvm-version;/llvm-html && cp -Rv docs/html/* /usr/share/doc/llvm-&llvm-version;/llvm-html The clang documentation can be installed in the same way (again as the root user): install -v -m644 tools/clang/docs/man/* /usr/share/man/man1 && install -v -d -m755 /usr/share/doc/llvm-&llvm-version;/clang-html && cp -Rv tools/clang/docs/html/* /usr/share/doc/llvm-&llvm-version;/clang-html Command Explanations -DLLVM_ENABLE_FFI=ON: This switch enables LLVM to use libffi. Remove if you did not install libffi. -DLLVM_BUILD_LLVM_DYLIB=ON: builds libraries as static and links all of them into an unique shared one. This is the recommended way of building a shared library. -DCMAKE_BUILD_TYPE=Release: This switch enables compiler optimizations in order to speed up the code and reduce its size. It also disables some compile checks, not necessary on a production system. -DLLVM_TARGETS_TO_BUILD="host;AMDGPU": This switch enables building for the same target as the host, and also for the r600 AMD GPU used by the Mesa r600 and radeonsi drivers. Default is all. You can use a semicolon separated list. Valid targets are: host, X86, Sparc, PowerPC, ARM, AArch64, Mips, Hexagon, Xcore, MSP430, NVPTX, SystemZ, AMDGPU, BPF, CppBackend, or all. : Used in conjunction with -DLLVM_BUILD_LLVM_DYLIB=ON, this switch enables linking the tools against the shared library instead of the static ones. : if used instead of -DLLVM_BUILD_LLVM_DYLIB=ON, builds all the LLVM libraries (about 60) as shared libraries instead of static. : Enables the generation of browsable HTML documentation if you have installed . You should run make doxygen-html afterwards, and install the generated documentation manually. Contents Installed Programs Installed Libraries Installed Directories bugpoint, c-index-test, clang, clang++ (symlinks to clang-<version>), clang-<version>, clang-check, clang-cl, clang-cppi (last two symlinks to clang), clang-format, clang-import-test, clang-offload-bundler, clang-rename, git-clang-format, llc, lli, llvm-ar, llvm-as, llvm-bcanalyzer, llvm-cat, llvm-config, llvm-cov, llvm-c-test, llvm-cvtres, llvm-cxxdump, llvm-cxxfilt, llvm-diff, llvm-dis, llvm-dlltool (symlink to llvm-ar), llvm-dsymutil, llvm-dwarfdump, llvm-dwp, llvm-extract, llvm-lib (symlink to llvm-ar), llvm-link, llvm-lto, llvm-lto2, llvm-mc, llvm-mcmarkup, llvm-modextract, llvm-mt, llvm-nm, llvm-objdump, llvm-opt-report, llvm-pdbutil, llvm-profdata, llvm-ranlib (symlink to llvm-ar), llvm-readelf (symlink to llvm-readobj), llvm-readobj, llvm-rtdyld, llvm-size, llvm-split, llvm-stress, llvm-strings, llvm-symbolizer, llvm-tblgen, llvm-xray, obj2yaml, opt, sancov, sanstats, scan-build, scan-view, verify-uselistorder, and yaml2obj BugpointPasses.so, LLVMHello.so, libLLVM.so, libLLVM*.a (63 libraries), libLTO.so, libclang.so and libclang*.a (25 libraries) /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,cmake/{clang,llvm}}, /usr/share/{clang,opt-viewer,scan-build,scan-view}, and /usr/share/doc/llvm-&llvm-version;} Short Descriptions bugpoint is the automatic test case reduction tool. bugpoint c-index-test is used to test the libclang API and demonstrate its usage. c-index-test clang is the Clang C, C++, and Objective-C compiler. clang clang-check is a tool to perform static code analysis and display Abstract Syntax Trees (AST). clang-check clang-format is a tool to format C/C++/Java/JavaScript/Objective-C/Protobuf code. clang-format clang-offload-bundler is a tool to bundle/unbundle openMP offloaded files associated with a common source file. clang-offload-bundler clang-rename is a tool to rename symbols in C/C++ programs. clang-rename git-clang-format runs clang-format on git generated patches (requires ) git-clang-format llc is the LLVM static compiler. llc lli is used to directly execute programs from LLVM bitcode. lli llvm-ar is the LLVM archiver. llvm-ar llvm-as is the LLVM assembler. llvm-as llvm-bcanalyzer is the LLVM bitcode analyzer. llvm-bcanalyzer llvm-cat is a tool to concatenate llvm modules. llvm-cat llvm-config Prints LLVM compilation options. llvm-config llvm-cov is used to emit coverage information. llvm-cov llvm-c-test is a bytecode disassembler. llvm-c-test llvm-cvtres is a tool to convert Microsoft resource files to COFF. llvm-cvtres llvm-cxxdump is used as a C++ ABI Data Dumper. llvm-cxxdump llvm-cxxfilt is used to demangle C++ symbols in llvm code. llvm-cxxfilt llvm-diff is the LLVM structural 'diff'. llvm-diff llvm-dis is the LLVM disassembler. llvm-dis llvm-dsymutil is a tool used to manipulate archived DWARF debug symbol files, compatible with the Darwin command dsymutil. llvm-dsymutil llvm-dwarfdump prints the content of DWARF sections in object files. llvm-dwarfdump llvm-dwp merges split DWARF files. llvm-dwp llvm-extract is used to extract a function from an LLVM module. llvm-extract llvm-link is the LLVM linker. llvm-link llvm-lto is the LLVM LTO (link time optimization) linker. llvm-lto llvm-lto2 is a test harness for the resolution based LTO interface. llvm-lto2 llvm-mc is a standalone machine code assembler/disassembler. llvm-mc llvm-mcmarkup is a parser for machine code markup. llvm-mcmarkup llvm-modextract is a tool to extract one module from multimodule bitcode files. llvm-modextract llvm-mt is a tool to generate signed files and catalogs from a side-by-side assembly manifest (used for Microsoft SDK). llvm-mt llvm-nm is used to list LLVM bitcode and object file's symbol table. llvm-nm llvm-objdump is an LLVM object file dumper. llvm-objdump llvm-opt-report is a tool to generate an optimization report from YAML optimization record files. llvm-opt-report llvm-pdbutil is a PDB (Program Database) dumper. PDB is a Microsoft format. llvm-pdbutil llvm-profdata is a small tool to manipulate and print profile data files. llvm-profdata llvm-ranlib is used to generate an index for a LLVM archive. llvm-ranlib llvm-readobj displays low-level format-specific information about object files. llvm-readobj llvm-rtdyld is the LLVM MC-JIT tool. llvm-rtdyld llvm-size is the LLVM object size dumper. llvm-size llvm-split is the LLVM module splitter. llvm-split llvm-stress is used to generate random .ll files. llvm-stress llvm-strings print strings found in a binary (object file, executable, or archive library). llvm-strings llvm-symbolizer converts adresses into source code locations. llvm-symbolizer llvm-tblgen is the LLVM Target Description To C++ Code Generator. llvm-tblgen llvm-xray is an implementation of Google's XRay function call tracing system. llvm-xray obj2yaml takes an object file, and produces a YAML representation of the file. obj2yaml opt is the LLVM optimizer. opt sancov is the sanitizer coverage processing tool. sancov sanstats is the sanitizer statistics processing tool. sanstats scan-build is a Perl script that invokes the Clang static analyzer. scan-build scan-view is a viewer for Clang static analyzer results. scan-view verify-uselistorder is the LLVM tool to verify use-list order. verify-uselistorder yaml2obj takes a YAML representation of an object file and converts it to a binary file. yaml2obj