LLVM-3.4

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.5 platform.

Package Information

  • Download (HTTP): http://llvm.org/releases/3.4/llvm-3.4.src.tar.gz

  • Download MD5 sum: 46ed668a1ce38985120dbf6344cf6116

  • Download size: 16 MB

  • Estimated disk space required: 519 MB (1.1 GB with Clang)

  • Estimated build time: 11.4 SBU and 0.4 for tests (22.7 SBU with Clang)

Optional Downloads

Clang

Compiler RT

LLVM Dependencies

Recommended

Optional

Doxygen-1.8.6, Graphviz-2.36.0, libxml2-2.9.1, texlive-20130530, 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 ../clang-3.4.src.tar.gz -C tools &&
tar -xf ../compiler-rt-3.4.src.tar.gz -C projects &&

mv tools/clang-3.4 tools/clang &&
mv projects/compiler-rt-3.4 projects/compiler-rt

Install LLVM by running the following commands:

sed -e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm-3.4:' \
    -i Makefile.config.in &&
CC=gcc CXX=g++                         \
./configure --prefix=/usr              \
            --sysconfdir=/etc          \
            --enable-libffi            \
            --enable-optimized         \
            --enable-shared            \
            --disable-assertions       &&
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}*.a
do
  test -f $file && chmod -v 644 $file
done

If you had Python-2.7.6 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.

--disable-assertions: Disable some compile checks, not necessary on a production system.

Contents

Installed Programs: bugpoint, c-index-test, clang, clang++ (symlink), clang-check, clang-format, clang-tblgen, llc, lli, lli-child-target, 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-ranlib (symlink), llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, opt, scan-build (symlink) and scan-view (symlink)
Installed Libraries: BugpointPasses.so, libclang.so, libLLVM-3.4.so, libLTO.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, /usr/share/doc/html/clang, and /usr/share/doc/llvm-3.4

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-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.4.so

contains the LLVM API functions.

Last updated on 2014-02-18 12:55:40 -0800