Project:LLVM/Cross-package dependencies

From Gentoo Wiki
Jump to:navigation Jump to:search

Dependency graph

LLVM dependency graph

LLVM

LLVM is the core package in LLVM suite. It provides:

  • the libraries and toolchain for the LLVM IR,
  • support libraries,
  • CMake files reused by multiple packages,
  • additional test utilities.

Additionally, the source distribution includes:

  • lit testing tool (not installed at the moment since other packages implicitly use it from source anyway),
  • modified gtest sources.

LLVM does not depend on any other package in the LLVM suite.

TODO: potential implicit libunwind dependency

clang

clang is the C language frontend for LLVM. It provides a C/C++ compiler and code support libraries.

clang requires LLVM (at build- and run-time) for IR, support libraries and cmake files. Additionally, clang can use libcxx at run-time as the C++ library for compiled files.

Tests in clang require lit to run. Additionally, unit tests require gtest sources (could be modified to reuse a pre-compiled library).

compiler-rt

compiler-rt is the compiler runtime for clang.

compiler-rt requires LLVM at build-time for cmake files.

Tests in compiler-rt require installed clang (as compiler for tests) and LLVM sources for lit and gtest sources (gtest library is built multiple times with different flags than in LLVM).

libunwind

libunwind is the LLVM implementation of unwinder library.

libunwind requires LLVM at build-time for cmake files.

Tests in libunwind can't be run at the moment. A lit configuration file is most likely missing. Afterwards, lit will most likely be the only additional test dependency.

libcxx

libcxx is the standard C++ library for clang.

libcxx requires LLVM at build-time for cmake files, and an ABI library at build+run-time (libsupc++, libcxxabi or libcxxrt).

Tests in libcxx require installed lit, clang and the ABI library (TODO: does libsupc++ work?).

libcxxabi

libcxxabi is the C++ ABI library from LLVM project.

libcxxabi requires LLVM at build-time for cmake files, and libc++ headers (TODO: determine if there's a way around it).

Tests in libcxxabi require installed lit, clang and libc++ with matching ABI library.