gecko-dev/build/build-clang
Emilio Cobos Álvarez da05bafa94 Bug 1394825 - Update minimum clang version to 4.0. r=glandium
libclang 3.9 has a bug that makes bindgen unable to distinguish some typedefs
from the underlying type, which matters for bug 1523071.

We have had quite a few workarounds for this bug and I don't really want to add
more, since in this case it is non-trivial. I think requiring libclang 4.0+ is
reasonable at this point.

Of the distros that can't build Firefox out of the box with clang, dropping support
for clang 3.9 would only break Ubuntu 14.04 LTS, which support ends April 2019,
right before we release 67.

Differential Revision: https://phabricator.services.mozilla.com/D18889

--HG--
rename : build/build-clang/clang-3.9-linux64.json => build/build-clang/clang-4.0-linux64.json
rename : taskcluster/scripts/misc/build-clang-3.9-linux.sh => taskcluster/scripts/misc/build-clang-4.0-linux.sh
extra : moz-landing-system : lando
2019-02-10 02:56:13 +00:00
..
D57636.diff Bug 1525196 - Apply https://reviews.llvm.org/D57636 to clang r=dmajor 2019-02-07 13:58:43 +00:00
README
build-clang.py Bug 1518630 - Build compiler-rt profiling library for android x86 and aarch64. r=froydnj 2019-01-18 01:55:41 +00:00
clang-4.0-linux64.json Bug 1394825 - Update minimum clang version to 4.0. r=glandium 2019-02-10 02:56:13 +00:00
clang-7-android.json Bug 1518630 - Build compiler-rt profiling library for android x86 and aarch64. r=froydnj 2019-01-18 01:55:41 +00:00
clang-7-linux64.json Bug 1518726 - Apply https://reviews.llvm.org/D56475 to clang. r=froydnj 2019-01-10 00:18:28 +00:00
clang-7-macosx64.json Bug 1518726 - Apply https://reviews.llvm.org/D56475 to clang. r=froydnj 2019-01-10 00:18:28 +00:00
clang-tidy-linux64.json Bug 1516374 - Upgrade clang to 7.0.1. r=dmajor 2019-01-09 23:01:46 +00:00
clang-tidy-macosx64.json Bug 1516374 - Upgrade clang to 7.0.1. r=dmajor 2019-01-09 23:01:46 +00:00
clang-tidy-win32.json Bug 1516374 - Upgrade clang to 7.0.1. r=dmajor 2019-01-09 23:01:46 +00:00
clang-tidy-win64.json Bug 1516374 - Upgrade clang to 7.0.1. r=dmajor 2019-01-09 23:01:46 +00:00
clang-trunk-mingw.json Bug 1518726 - Apply https://reviews.llvm.org/D56475 to clang. r=froydnj 2019-01-10 00:18:28 +00:00
clang-win64.json Bug 1525957 - Bump clang-cl to 8.0.0rc2 r=glandium 2019-02-08 09:03:30 +00:00
compiler-rt-cross-compile.patch
compiler-rt-no-codesign.patch
downgrade-mangling-error.patch
find_symbolizer_linux.patch
llvm-debug-frame.patch
loosen-msvc-detection.patch
r277806.patch
r285657.patch
r289565-for-3.9.patch
r313872.patch
r322325.patch
r322401.patch
r325356.patch
r339636.patch
r350774.patch Bug 1518726 - Apply https://reviews.llvm.org/D56475 to clang. r=froydnj 2019-01-10 00:18:28 +00:00
rename_gcov_flush_.patch
static-llvm-symbolizer.patch
unpoison-thread-stacks.patch Bug 1521129 - Bump clang-cl to 8.0.0 rc1 r=glandium 2019-01-24 15:03:52 +00:00
workaround-issue38586.patch

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.