LLVM-3.5.1

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.

[Note]

Note

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 GCC-4.9.2 for gcc installation instructions.

This package is known to build and work properly using an LFS-7.7 platform.

Package Information

  • Download (HTTP): http://llvm.org/releases/3.5.1/llvm-3.5.1.src.tar.xz

  • Download MD5 sum: 2d3d8004f38852aa679e5945b8ce0b14

  • Download size: 12 MB

  • Estimated disk space required: 618 MB (1.2 GB with Clang) and 78 MB for the tests

  • Estimated build time: 6.5 SBU - using parallelism=4 (12 SBU with Clang - using parallelism=4) and 0.3 for tests

Optional Downloads

Clang

Compiler RT

LLVM Dependencies

Recommended

Optional

CMake-3.1.3, Doxygen-1.8.9.1, Graphviz-2.38.0, libxml2-2.9.2, texlive-20140525 (or install-tl-unx), Valgrind-3.10.1, Zip-3.0, OCaml, and Sphinx

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.5.1.src.tar.xz -C tools &&
tar -xf ../compiler-rt-3.5.1.src.tar.xz -C projects &&

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

Install LLVM by running the following commands:

sed -e "s:/docs/llvm:/share/doc/llvm-3.5.1:" \
    -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.9 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 ... 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 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), count, FileCheck, 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-profdata, llvm-ranlib (symlink), llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, not, opt, scan-build (symlink), and scan-view (symlink)
Installed Libraries: BugpointPasses.so, libclang.so, libLLVM-3.5.1.so, libLTO.so, LLVMHello.so and numerous static libraries in /usr/lib
Installed Directories: /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,clang-analyzer}, /usr/share/doc/llvm-3.5.1, and /usr/share/llvm

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

contains the LLVM API functions.

Last updated on 2015-02-21 20:09:10 -0800