gecko-dev/build/build-clang
Mike Hommey 6a42db4b68 Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi
Clang >= 11 ignores PYTHON_EXECUTABLE entirely (and uses python3, which
is not even what we pass, but that's actually fine), and all the build
tasks we have on older versions find the python executable they need on
their own.

Differential Revision: https://phabricator.services.mozilla.com/D120049
2021-07-17 04:29:10 +00:00
..
README Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
android-mangling-error.patch
android-mangling-error_clang_12.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
bug47258-extract-symbols-mbcs.patch Bug 1661129 - Add toolchain tasks for clang 11.0.0 rc2 (not yet used) r=nalexander 2020-08-25 22:22:12 +00:00
build-clang.py Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-5.0-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-7-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-10-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-11-android.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-11-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-11-macosx64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-11-win64-2stage.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-11-win64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-android.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-macosx64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-mingw.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-win64-2stage.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-12-win64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-tidy-ci.patch Bug 1666550 - Update `clang-tools` to `clang-11`. r=dmajor 2020-11-17 15:04:14 +00:00
clang-tidy-external-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-tidy-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-tidy-macosx64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-tidy-win64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
clang-trunk-linux64.json Bug 1720820 - Remove python executable configuration from clang build script. r=firefox-build-system-reviewers,andi 2021-07-17 04:29:10 +00:00
compiler-rt-cross-compile.patch Bug 1692944 - Add a clang toolchain for arm64 mac. r=firefox-build-system-reviewers,andi,dmajor 2021-02-22 21:38:34 +00:00
compiler-rt-no-codesign.patch
downgrade-mangling-error.patch Bug 1676669 - Trim some context on downgrade-mangling-error.patch for clang-12 r=firefox-build-system-reviewers,rstewart 2020-11-11 16:19:25 +00:00
downgrade-mangling-error_clang_12.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
find_symbolizer_linux.patch
find_symbolizer_linux_clang_10.patch
fuzzing_ccov_build_clang_12.patch Bug 1705641 - Don't flush ccov counters when process is dying when env var MOZ_FUZZING_CCOV is defined r=andi 2021-04-28 18:30:35 +00:00
llvmorg-11-init-4265-g2dcbdba8540.patch
llvmorg-11-init-4265-g2dcbdba8540_clang_10.patch
llvmorg-11-init-15486-gfc937806efd-dont-jump-to-landing-pads.patch Bug 1650419 - Backport the tail merge fix to our version of Clang 9.0.1. r=dmajor 2020-07-07 22:03:46 +00:00
llvmorg-12-init-10926-gb79e990f401-LTO-new-pass-manager.patch Bug 1675600 - Use the new pass manager during LTO r=firefox-build-system-reviewers,glandium 2020-11-17 04:07:54 +00:00
loosen-msvc-detection.patch
r350774.patch
rG7e18aeba5062.patch
rG7e18aeba5062_clang_10.patch
revert-llvmorg-12-init-7827-g2a078c307204-trunk.patch Bug 1720606 - Fix for clang-trunk build after IR commit broken the attributes patch. r=firefox-build-system-reviewers,glandium 2021-07-15 08:25:41 +00:00
revert-llvmorg-12-init-7827-g2a078c307204.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
revert-llvmorg-12-init-16421-gb688c5875d08.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
revert-r362047-and-r362065.patch Bug 1667841 - Update revert-r362047-and-r362065.patch for clang-12 r=firefox-build-system-reviewers,rstewart 2020-09-28 19:03:18 +00:00
revert-r362047-and-r362065_clang_12.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
static-llvm-symbolizer.patch
static-llvm-symbolizer_clang_12.patch Bug 1694280 - Add clang 12.0.0 rc2 toolchains (not yet used) r=firefox-build-system-reviewers,glandium 2021-03-03 16:53:28 +00:00
tsan-D101154.patch Bug 1644147 - Fix a deadlock in TSan. r=andi 2021-04-26 15:10:13 +00:00
tsan-hang-be41a98ac222.patch
tsan-hang-be41a98ac222_clang_10.patch
unpoison-thread-stacks.patch
unpoison-thread-stacks_clang_10.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.
* git
* CMake
* Ninja
* Python 2.7 and 3

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:

* stages: Use 1, 2, 3 or 4 to select different compiler stages.  The default is 3.
* 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.
* pgo: Whether to build with PGO (requires stages == 4).  The default is false.

The revisions are defined in taskcluster/ci/fetch/toolchains.yml. They are usually commit sha1s corresponding to upstream tags.

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.