LLVM-3.3

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 is known to build and work properly using an LFS-7.4 platform.

Package Information

Optional Downloads

Clang

Compiler RT

LLVM Dependencies

Recommended

Optional

Doxygen-1.8.5, Graphviz-2.34.0, libxml2-2.9.1, Zip-3.0, OCaml, Sphinx and Valgrind

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/llvm

Installation of LLVM

If you have downloaded the optional packages, install them into the source tree by running the following commands:

tar -xf ../cfe-3.3.src.tar.gz -C tools &&
tar -xf ../compiler-rt-3.3.src.tar.gz -C projects &&

mv tools/cfe-3.3.src tools/clang &&
mv projects/compiler-rt-3.3.src projects/compiler-rt

Install LLVM by running the following commands:

sed -e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm-3.3:' \
    -i Makefile.config.in &&
CC=gcc CXX=g++                         \
./configure --prefix=/usr              \
            --sysconfdir=/etc          \
            --enable-libffi            \
            --enable-optimized         \
            --enable-shared            \
            --enable-targets=all       \
            --disable-assertions       \
            --disable-debug-runtime    \
            --disable-expensive-checks \
            --enable-experimental-targets=R600 &&
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 check.

Now, as the root user:

make install &&
for file in /usr/lib/lib{clang,LLVM,LTO,profile_rt}*.a
do
  test -f $file && chmod -v 644 $file
done

If you had Python-2.7.5 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 &&
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 ...: 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 static libraries linked into single library.

--enable-targets=all: This switch ensures that all LLVM targets are built.

--disable-*: These switches disable features which are used for debugging and are not necessary on a production system.

--enable-experimental-targets=R600: This switch enables R600 target which is required by Mesa to build the radeonsi 3D driver. It can be used for R600 LLVM backend and OpenCL state tracker in Mesa.

Contents

Installed Programs: bugpoint, c-index-test, clang, clang++, clang-check, clang-format, clang-tblgen, llc, lli, llvm-ar, llvm-as, llvm-bcanalyzer, llvm-config, llvm-cov, llvm-diff, llvm-dis, llvm-dwarfdump, llvm-extract, llvm-link, llvm-mc, llvm-mcmarkup, llvm-nm, llvm-objdump, llvm-prof, llvm-ranlib, llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, opt, scan-build and scan-view
Installed Libraries: BugpointPasses.so, libclang.so, libLLVM-3.3.so, libLTO.so, libprofile_rt.so, LLVMHello.so and numerous static libraries in /usr/lib
Installed Directories: /usr/include/clang, /usr/include/clang-c, /usr/include/llvm, /usr/include/llvm-c, /usr/lib/clang, /usr/lib/clang-analyzer and /usr/share/doc/llvm-3.3

Short Descriptions

bugpoint

is the automatic test case reduction tool.

clang

is the Clang C, C++, and Objective-C compiler.

llc

is the LLVM static compiler.

lli

is used to directly execute programs from LLVM bitcode.

llvm-ar

is the LLVM archiver.

llvm-as

is the LLVM assembler.

llvm-bcanalyzer

is the LLVM bitcode analyzer.

llvm-config

Prints LLVM compilation options.

llvm-cov

is used to emit coverage information.

llvm-diff

is the LLVM structural 'diff'.

llvm-dis

is the LLVM disassembler.

llvm-extract

is used to extract a function from an LLVM module.

llvm-link

is the LLVM linker.

llvm-nm

is used to list LLVM bitcode and object file's symbol table.

llvm-prof

is used to print execution profile of LLVM program.

llvm-ranlib

is used to generate index for LLVM archive.

llvm-stress

is used to generate random .ll files.

llvm-tblgen

is the LLVM Target Description To C++ Code Generator.

opt

is the LLVM optimizer.

scan-build

is a Perl script that invokes the Clang static analyzer.

libLLVM-3.3.so

contains the LLVM API functions.

libprofile_rt.so

is the C, C++ and Objective-C runtime library for Clang.

Last updated on 2013-08-18 14:52:29 -0700