blob: b58dfac737dbcff5c77b7d26244fe1569f5e8eb6 [file] [log] [blame]
Micah Villmowdaa1c742012-09-27 22:14:10 +00001===================================================================
2How To Build On ARM
3===================================================================
4
Micah Villmowdaa1c742012-09-27 22:14:10 +00005Introduction
6============
7
8This document contains information about building/testing LLVM and
Renato Golin9e3c6782013-09-27 21:14:54 +00009Clang on an ARM machine.
10
11This document is *NOT* tailored to help you cross-compile LLVM/Clang
12to ARM on another architecture, for example an x86_64 machine. To find
13out more about cross-compiling, please check :doc:`HowToCrossCompileLLVM`.
Micah Villmowdaa1c742012-09-27 22:14:10 +000014
15Notes On Building LLVM/Clang on ARM
16=====================================
17Here are some notes on building/testing LLVM/Clang on ARM. Note that
18ARM encompasses a wide variety of CPUs; this advice is primarily based
19on the ARMv6 and ARMv7 architectures and may be inapplicable to older chips.
20
21#. If you are building LLVM/Clang on an ARM board with 1G of memory or less,
22 please use ``gold`` rather then GNU ``ld``.
23 Building LLVM/Clang with ``--enable-optimized``
Benjamin Kramer3b32b2f2013-10-29 17:53:27 +000024 is preferred since it consumes less memory. Otherwise, the building
Micah Villmowdaa1c742012-09-27 22:14:10 +000025 process will very likely fail due to insufficient memory. In any
26 case it is probably a good idea to set up a swap partition.
27
28#. If you want to run ``make
29 check-all`` after building LLVM/Clang, to avoid false alarms (eg, ARCMT
David Tweedfd2cf7f2012-10-26 12:09:47 +000030 failure) please use at least the following configuration:
Micah Villmowdaa1c742012-09-27 22:14:10 +000031
32 .. code-block:: bash
33
David Tweedfd2cf7f2012-10-26 12:09:47 +000034 $ ../$LLVM_SRC_DIR/configure --with-abi=aapcs-vfp
35
36#. The most popular linaro/ubuntu OS's for ARM boards, eg, the
37 Pandaboard, have become hard-float platforms. The following set
38 of configuration options appears to be a good choice for this
39 platform:
40
41 .. code-block:: bash
42
Renato Golin8b905112013-02-25 18:25:58 +000043 ./configure --build=armv7l-unknown-linux-gnueabihf \
44 --host=armv7l-unknown-linux-gnueabihf \
45 --target=armv7l-unknown-linux-gnueabihf --with-cpu=cortex-a9 \
46 --with-float=hard --with-abi=aapcs-vfp --with-fpu=neon \
47 --enable-targets=arm --enable-optimized --enable-assertions