%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 a new C, C++, Objective C and Objective C++ front-ends and runtime libraries for the LLVM. This package hits a bug in GCC-4.9.0 or an unpatched GCC-4.9.1. To build this package, GCC needs to be updated if you have one of these versions. See for gcc installation instructions. &lfs79_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 Recommended and 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 The run-time library needs to be fixed for 32 bit installations: sed -r "/ifeq.*CompilerTargetArch/s#i386#i686#g" \ -i projects/compiler-rt/make/platform/clang_linux.mk Install LLVM by running the following commands: sed -e "s:/docs/llvm:/share/doc/llvm-&llvm-version;:" \ -i Makefile.config.in && mkdir -v build && cd build && CC=gcc CXX=g++ \ ../configure --prefix=/usr \ --datarootdir=/usr/share \ --sysconfdir=/etc \ --enable-libffi \ --enable-optimized \ --enable-shared \ --enable-targets=host,r600 \ --disable-assertions \ --docdir=/usr/share/doc/llvm-&llvm-version; && make If you have installed Sphinx and wish to generate manual pages, issue the following command: make -C ../docs -f Makefile.sphinx man To test the results, issue: make -k check-all. Some tests may fail for unknown reasons. Now, as the root user: make install && for file in /usr/lib/lib{clang,LLVM,LTO}*.a do test -f $file && chmod -v 644 $file done unset file If you had installed and you have built Clang, install the Clang Analyzer by running the following command as the root user: install -v -dm755 /usr/lib/clang-analyzer && for prog in scan-build scan-view do cp -rfv ../tools/clang/tools/$prog /usr/lib/clang-analyzer/ && ln -sfv ../lib/clang-analyzer/$prog/$prog /usr/bin/ done unset prog && ln -sfv /usr/bin/clang \ /usr/lib/clang-analyzer/scan-build/ && mv -v /usr/lib/clang-analyzer/scan-build/scan-build.1 \ /usr/share/man/man1/ If you have built manual pages, install them by running the following command as the root user: install -v -m644 ../docs/_build/man/* /usr/share/man/man1/ Command Explanations sed -e ... Makefile.config.in: This sed fixes location of the installed documentation. --enable-libffi: This switch enables LLVM to use libffi. Remove if you did not install libffi. --enable-optimized: This switch enables compiler optimizations in order to speed up the code and reduce its size. --enable-shared: This switch enables building of the LLVM shared library which contains all of the static libraries linked into a single library. --enable-targets=host,r600: 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 comma separated list. Valid targets are: host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon, xcore, msp430, nvptx, systemz, r600, amdgpu (equivalent to r600), bpf, wasm, and cpp. --disable-assertions: Disable some compile checks, not necessary on a production system. Contents Installed Programs Installed Libraries Installed Directories bugpoint, c-index-test, clang, clang++ (symlink), count, FileCheck, clang-check, clang-format, clang-tblgen, llc, lli, lli-child-target, llvm-ar, llvm-as, llvm-bcanalyzer, llvm-config, llvm-cov, llvm-cxxdump, llvm-diff, llvm-dis, llvm-dsymutil, llvm-dwarfdump, llvm-extract, llvm-link, llvm-mc, llvm-mcmarkup, llvm-nm, llvm-objdump, llvm-pdbdump, llvm-profdata, llvm-ranlib (symlink), llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, not, obj2yaml, opt, scan-build (symlink), scan-view (symlink), verify-uselistorder, and yaml2obj BugpointPasses.so, libclang.so, libLLVM-&llvm-version;.so, libLTO.so, LLVMHello.so and numerous static libraries in /usr/lib /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,clang-analyzer}, and /usr/share/{doc/llvm-&llvm-version;,llvm} Short Descriptions bugpoint is the automatic test case reduction tool. bugpoint clang is the Clang C, C++, and Objective-C compiler. clang 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-config Prints LLVM compilation options. llvm-config llvm-cov is used to emit coverage information. llvm-cov llvm-cxxdump is used for C++ ABI Data Dumper. llvm-cxxdump llvm-diff is the LLVM structural 'diff'. llvm-diff llvm-dis is the LLVM disassembler. llvm-dis llvm-dsymutil tool used to manipulate archived DWARF debug symbol files, compatible with the Darwin command dsymutil. llvm-dsymutil llvm-extract is used to extract a function from an LLVM module. llvm-extract llvm-link is the LLVM linker. llvm-link llvm-nm is used to list LLVM bitcode and object file's symbol table. llvm-nm llvm-pdbdump is used as PDB Dumper. llvm-pdbdump llvm-ranlib is used to generate index for LLVM archive. llvm-ranlib llvm-stress is used to generate random .ll files. llvm-stress llvm-tblgen is the LLVM Target Description To C++ Code Generator. llvm-tblgen obj2yaml takes an object file,and produces a YAML representation of the file. obj2yaml opt is the LLVM optimizer. opt scan-build is a Perl script that invokes the Clang static analyzer. scan-build yaml2obj takes a YAML representation of an object file and converts it to an binary file. yaml2obj libLLVM-&llvm-version;.so contains the LLVM API functions. libLLVM-&llvm-version;.so