gecko-dev/build/build-clang
Mike Hommey 55896c33ae Bug 1488307 - Build the LLVM gold plugin. r=mshal
As much as it's tempting to use LLD for LTO, it still causes some
subtle problems with the build, and it's still better to keep using
BFD ld for the time being. Doing so requires the gold plugin, which
only requires to pass cmake the directory where the binutils headers
are, and they are part of the gcc toolchain headers.

Differential Revision: https://phabricator.services.mozilla.com/D4896
2018-09-05 09:36:42 +09:00
..
README Bug 1421404: Add lld to the build-clang task. r=glandium 2017-12-01 11:12:07 -05:00
build-clang.py Bug 1488307 - Build the LLVM gold plugin. r=mshal 2018-09-05 09:36:42 +09:00
clang-3.9-linux64.json Bug 1431314 - Update clang 3.9 and 5.0 toolchains. r=froydnj 2018-01-23 13:48:05 +09:00
clang-6-linux64.json Bug 1484888 - Apply upstream patch that fixes a clang crash with stack overflow on PGO + LTO on Linux. r=froydnj 2018-08-22 09:52:17 +09:00
clang-6-macosx64.json Bug 1483123 - Apply miscompilation fix from clang upstream. r=froydnj 2018-08-15 17:34:21 +09:00
clang-7-pre-linux64.json Bug 1485545 - Upgrade clang 7 toolchains to rc2. r=dmajor 2018-08-24 08:39:30 +09:00
clang-7-pre-mingw.json Bug 1485545 - Upgrade clang 7 toolchains to rc2. r=dmajor 2018-08-24 08:39:30 +09:00
clang-tidy-linux64.json Bug 1466427 - Migrate clang-tidy package from 5.0.1 to 7.0.0-rc2. r=glandium,janx 2018-08-24 12:39:58 +00:00
clang-tidy-macosx64.json Bug 1466427 - Migrate clang-tidy package from 5.0.1 to 7.0.0-rc2. r=glandium,janx 2018-08-24 12:39:58 +00:00
clang-tidy-win32.json Bug 1466427 - Migrate clang-tidy package from 5.0.1 to 7.0.0-rc2. r=glandium,janx 2018-08-24 12:39:58 +00:00
clang-tidy-win64.json Bug 1466427 - Migrate clang-tidy package from 5.0.1 to 7.0.0-rc2. r=glandium,janx 2018-08-24 12:39:58 +00:00
clang-win32-st-an.json Backed out changeset 4523372c4945 (bug 1462498) for Win build bustages on a CLOSED TREE 2018-05-19 02:19:22 +03:00
clang-win64-st-an.json Backed out 2 changesets (bug 1479800, bug 1483779)for frequent cgx and arm64 failures 2018-08-17 09:50:30 +03:00
clang-win64.json Bug 1484100 - No-op change to clang-win64.json to retrigger a clang-cl build from a decision task to make CoT happy again. r=me 2018-08-20 06:47:26 +09:00
compiler-rt-cross-compile.patch Bug 1331957 - Part 9: Upgrade cctools used for building clang on OS X for ld 264.3.102; r=froydnj 2017-02-03 10:19:33 -05:00
compiler-rt-no-codesign.patch Bug 1425406 - Add a linux64 clang 6 (pre) toolchain with the macosx64 native sanitizer dylibs. r=froydnj 2018-02-08 16:58:12 -05:00
fflush-before-unlocking.patch Backed out changeset 4523372c4945 (bug 1462498) for Win build bustages on a CLOSED TREE 2018-05-19 02:19:22 +03:00
find_symbolizer_linux.patch Bug 1415689 - Add Clang 6 (pre) and use it for ASan builds. r=froydnj 2017-11-10 10:14:26 +01:00
llvm-debug-frame.patch
loosen-msvc-detection.patch Bug 1412952 - Loosen clang's MSVC detection to accept our automation's fake paths. r=froydnj 2017-11-03 12:29:58 -04:00
msvc-host-x64.patch Bug 1412952: We want a HostX64 linker even with 32-bit clang-cl.exe. r=froydnj 2017-11-03 12:29:58 -04:00
r277806.patch Bug 1331957 - Part 6: Reapply LLVM r277806 since our clang-plugin depends on it; r=froydnj 2017-02-03 10:19:17 -05:00
r285657.patch Bug 1331957 - Part 7: Reapply LLVM r285657 to work around bug 1291397 on clang 3.9; r=froydnj 2017-02-03 10:19:23 -05:00
r289565-for-3.9.patch Bug 1410148 - Backport llvm r289565 to clang 3.9. r=gps 2017-12-28 14:54:51 +09:00
r313872.patch Bug 1410148 - Backport llvm r289565 to clang 3.9. r=gps 2017-12-28 14:54:51 +09:00
r318309.patch Backed out changeset 4523372c4945 (bug 1462498) for Win build bustages on a CLOSED TREE 2018-05-19 02:19:22 +03:00
r320462.patch Backed out changeset 4523372c4945 (bug 1462498) for Win build bustages on a CLOSED TREE 2018-05-19 02:19:22 +03:00
r322325.patch Bug 1484888 - Apply upstream patch that fixes a clang crash with stack overflow on PGO + LTO on Linux. r=froydnj 2018-08-22 09:52:17 +09:00
r322401.patch Bug 1478927 - Upgrade clang 6 to 6.0.1 and apply some miscompilation patches. r=dmajor 2018-07-27 15:53:02 +09:00
r325356.patch Bug 1478927 - Upgrade clang 6 to 6.0.1 and apply some miscompilation patches. r=dmajor 2018-07-27 15:53:02 +09:00
r327876.patch Backed out 2 changesets (bug 1479800, bug 1483779)for frequent cgx and arm64 failures 2018-08-17 09:50:30 +03:00
r339636.patch Bug 1483123 - Apply miscompilation fix from clang upstream. r=froydnj 2018-08-15 17:34:21 +09:00
rename_gcov_flush.patch Bug 1471339 - Rename LLVM's __gcov_flush function to __llvm_gcov_flush to avoid naming clashes with GCC profiling library. r=glandium 2018-07-10 12:53:03 +02:00
workaround-issue38586.patch Backed out 2 changesets (bug 1479800, bug 1483779)for frequent cgx and arm64 failures 2018-08-17 09:50:30 +03:00

README

build-clang.py
==============

A script to build clang from source.

```
usage: build-clang.py [-h] -c CONFIG [--clean]

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Clang configuration file
  --clean               Clean the build directory
```

Pre-requisites
--------------
* Working build toolchain.
* Subversion
* CMake
* Ninja
* Python 2.7

Please use the latest available CMake for your platform to avoid surprises.

Config file format
------------------

build-clang.py accepts a JSON config format with the following fields:

* llvm_revision: The LLVM SVN revision to build.
* stages: Use 1, 2, or 3 to select different compiler stages.  The default is 3.
* llvm_repo: SVN path to the LLVM repo.
* clang_repo: SVN path to the Clang repo.
* extra_repo: SVN path to the clang-tools-extra repo.
* lld_repo: SVN path to the lld repo.
* compiler_repo: SVN path to the compiler-rt repo.
* libcxx_repo: SVN path to the libcxx repo.
* libcxxabi_repo: SVN path to the libcxxabi repo.
* python_path: Path to the Python 2.7 installation on the machine building clang.
* gcc_dir: Path to the gcc toolchain installation, only required on Linux.
* cc: Path to the bootsraping C Compiler.
* cxx: Path to the bootsraping C++ Compiler.
* as: Path to the assembler tool.
* ar: Path to the library archiver tool.
* ranlib: Path to the ranlib tool (optional).
* libtool: Path to the libtool tool (optional).
* ld: Path to the linker.
* patches: Optional list of patches to apply.
* build_type: The type of build to make.  Supported types: Release, Debug, RelWithDebInfo or MinSizeRel.
* build_libcxx: Whether to build with libcxx.  The default is false.
* build_clang_tidy: Whether to build clang-tidy with the Mozilla checks imported.  The default is false.
* osx_cross_compile: Whether to invoke CMake for OS X cross compile builds.
* assertions: Whether to enable LLVM assertions.  The default is false.

Environment Variables
---------------------

The following environment variables are used for cross-compile builds targeting OS X on Linux.

* CROSS_CCTOOLS_PATH: Path to the cctools directory where the cross compiler toolchain is located.
* CROSS_SYSROOT: Path to the OS X SDK directory for cross compile builds.