Difference between revisions of "Building LDC from source"

From D Wiki
Jump to: navigation, search
(Prerequesites)
Line 5: Line 5:
 
* Git (for fetching the source code, if not using a tarball)
 
* Git (for fetching the source code, if not using a tarball)
 
* a C++ toolchain (GCC, Clang, …)
 
* a C++ toolchain (GCC, Clang, …)
* CMake 2.6+
+
* CMake 2.8+
* LLVM 3.1 (preferred) or 3.0
+
* LLVM 3.2 (preferred), 3.1 or 3.0
 
* libconfig++ and its header files (the <tt>-devel</tt> or <tt>-dev</tt> package, for some Linux distributions)
 
* libconfig++ and its header files (the <tt>-devel</tt> or <tt>-dev</tt> package, for some Linux distributions)
 
* libcurl-dev for building the D2 standard library and tests (various versions available, e.g. libcurl4-gnutls-dev on Ubuntu)
 
* libcurl-dev for building the D2 standard library and tests (various versions available, e.g. libcurl4-gnutls-dev on Ubuntu)

Revision as of 00:10, 13 December 2012

This page gives an overview of what is required to build and install LDC on most Posix-like systems such as Linux or OS X. For building LDC on Windows, please see the dedicated page.

Prerequesites

  • Git (for fetching the source code, if not using a tarball)
  • a C++ toolchain (GCC, Clang, …)
  • CMake 2.8+
  • LLVM 3.2 (preferred), 3.1 or 3.0
  • libconfig++ and its header files (the -devel or -dev package, for some Linux distributions)
  • libcurl-dev for building the D2 standard library and tests (various versions available, e.g. libcurl4-gnutls-dev on Ubuntu)

Please check the LLVM page on broken versions of GCC and other tools to make sure your toolchain is not known to be bad.

LLVM

Most Linux distributions already provide reasonably recent binary LLVM packages. You might prefer to use these if available, as LLVM is a rather big project to build.

Building LLVM manually

Download LLVM 3.1 with $ wget http://www.llvm.org/releases/3.1/llvm-3.1.src.tar.gz, extract the archive, and then run:

$ ./configure --enable-optimized --disable-assertions
$ make   # add -j<n> as appropriate depending on your system
$ sudo make install

If you are planning to work on LDC itself, you might want to install a debug build of LLVM instead by using ./configure --enable-assertions. Warning: This leads to a heavy slowdown!

LDC

Now, your system should be ready to build and install LDC from source. First, clone the LDC GitHub repository:

$ git clone --recursive http://github.com/ldc-developers/ldc.git

If you already have a local clone of the LDC repository, don’t forget to make sure your submodules are up to date by running git submodule update --init.

Then, just run the following commands as usual (see the list of useful CMake switches below):

cd ldc
mkdir build && cd build   # arbitrary working directory
cmake .. 
make   # -j<n> as appropriate
sudo make install

The last step is optional; instead of installing it to the system, you can also choose to run LDC from the bin/ directory in your CMake working tree.

Useful variables

  • LIB_SUFFIX: Some Linux distributions, such as Fedora, expect 64 bit libraries in /usr/lib64 instead of /usr/lib. In this case, the installation directory can be adjusted using -DLIB_SUFFIX=64.
  • CMAKE_INSTALL_PREFIX: The installation prefix, /usr/local by default (e.g. -DCMAKE_INSTALL_PREFIX=/opt/ldc).
  • BUILD_SHARED_LIBS: Allows building of druntime/Phobos as shared libraries.
  • INCLUDE_INSTALL_DIR: The location the D modules for druntime and Phobos are installed to.
  • D_VERSION: Controls the D version the built compiler will support. Defaults to 2, use -DD_VERSION=1 to build the D1 compiler.
  • RUNTIME_DIR, PHOBOS2_DIR: By default, druntime and Phobos are expected in runtime/ as Git submodules. Should circumstances require it, these paths can be changed by setting the variables accordingly.

Tips

The Makefiles generated by CMake respect the DESTDIR variable for the install target. It is prepended to all the file installation targets. This can be useful for building packages: $ make install DESTDIR=<your root directory>