* ``make check-all`` --- This run the regression tests to ensure everything
is in working order.
- * It is also possible to use CMake instead of the makefiles. With CMake it is
- possible to generate project files for several IDEs: Xcode, Eclipse CDT4,
- CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3.
+ * It is also possible to use `CMake <CMake.html>`_ instead of the makefiles.
+ With CMake it is possible to generate project files for several IDEs:
+ Xcode, Eclipse CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks
+ generator), KDevelop3.
* If you get an "internal compiler error (ICE)" or test failures, see
`below`.
================== ===================== =============
OS Arch Compilers
================== ===================== =============
-AuroraUX x86\ :sup:`1` GCC
Linux x86\ :sup:`1` GCC, Clang
Linux amd64 GCC, Clang
Linux ARM\ :sup:`4` GCC, Clang
=========================================================== ============ ==========================================
`GNU Make <http://savannah.gnu.org/projects/make>`_ 3.79, 3.79.1 Makefile/build processor
`GCC <http://gcc.gnu.org/>`_ >=4.7.0 C/C++ compiler\ :sup:`1`
-`python <http://www.python.org/>`_ >=2.5 Automated test suite\ :sup:`2`
+`python <http://www.python.org/>`_ >=2.7 Automated test suite\ :sup:`2`
`GNU M4 <http://savannah.gnu.org/projects/m4>`_ 1.4 Macro processor for configuration\ :sup:`3`
`GNU Autoconf <http://www.gnu.org/software/autoconf/>`_ 2.60 Configuration script builder\ :sup:`3`
`GNU Automake <http://www.gnu.org/software/automake/>`_ 1.9.6 aclocal macro generator\ :sup:`3`
.. _GCC wiki entry:
http://gcc.gnu.org/wiki/InstallingGCC
-Once you have a GCC toolchain, use it as your host compiler. Things should
-generally "just work". You may need to pass a special linker flag,
-``-Wl,-rpath,$HOME/toolchains/lib`` or some variant thereof to get things to
-find the libstdc++ DSO in this toolchain.
+Once you have a GCC toolchain, configure your build of LLVM to use the new
+toolchain for your host compiler and C++ standard library. Because the new
+version of libstdc++ is not on the system library search path, you need to pass
+extra linker flags so that it can be found at link time (``-L``) and at runtime
+(``-rpath``). If you are using CMake, this invocation should produce working
+binaries:
+
+.. code-block:: console
+
+ % mkdir build
+ % cd build
+ % CC=$HOME/toolchains/bin/gcc CXX=$HOME/toolchains/bin/g++ \
+ cmake .. -DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/toolchains/lib64 -L$HOME/toolchains/lib64"
+
+If you fail to set rpath, most LLVM binaries will fail on startup with a message
+from the loader similar to ``libstdc++.so.6: version `GLIBCXX_3.4.20' not
+found``. This means you need to tweak the -rpath linker flag.
When you build Clang, you will need to give *it* access to modern C++11
standard library in order to use it as your new host in part of a bootstrap.
Enables optimized compilation (debugging symbols are removed and GCC
optimization flags are enabled). Note that this is the default setting if you
- are using the LLVM distribution. The default behavior of an Subversion
+ are using the LLVM distribution. The default behavior of a Subversion
checkout is to use an unoptimized build (also known as a debug build).
``--enable-debug-runtime``
Controls which targets will be built and linked into llc. The default value
for ``target_options`` is "all" which builds and links all available targets.
- The value "host-only" can be specified to build only a native compiler (no
- cross-compiler targets available). The "native" target is selected as the
- target of the build host. You can also specify a comma separated list of
- target names that you want available in llc. The target names use all lower
- case. The current set of targets is:
+ The "host" target is selected as the target of the build host. You can also
+ specify a comma separated list of target names that you want available in llc.
+ The target names use all lower case. The current set of targets is:
- ``arm, cpp, hexagon, mips, mipsel, msp430, powerpc, ptx, sparc, spu,
- systemz, x86, x86_64, xcore``.
+ ``aarch64, arm, arm64, cpp, hexagon, mips, mipsel, mips64, mips64el, msp430,
+ powerpc, nvptx, r600, sparc, systemz, x86, x86_64, xcore``.
``--enable-doxygen``
generating the documentation can take a long time and producess 100s of
megabytes of output.
-``--with-udis86``
-
- LLVM can use external disassembler library for various purposes (now it's used
- only for examining code produced by JIT). This option will enable usage of
- `udis86 <http://udis86.sourceforge.net/>`_ x86 (both 32 and 64 bits)
- disassembler library.
-
To configure LLVM, follow these steps:
#. Change directory into the object root directory:
Debug Builds
- These builds are the default when one is using an Subversion checkout and
+ These builds are the default when one is using a Subversion checkout and
types ``gmake`` (unless the ``--enable-optimized`` option was used during
configuration). The build system will compile the tools and libraries with
debugging information. To get a Debug Build using the LLVM distribution the
almost all code exists in libraries, making it very easy to share code among the
different `tools`_.
-``llvm/lib/VMCore/``
+``llvm/lib/IR/``
This directory holds the core LLVM source files that implement core classes
like Instruction and BasicBlock.