fune/build/build-clang
Mike Hommey a6e466b943 Bug 1731175 - Build clang-mingw off clang-12 rather than from scratch. r=firefox-build-system-reviewers,andi
The build-clang step in the clang-mingw toolchains just replicates what
we already do for clang, except with no patched applied, which could
arguably seen as an issue. Instead of rebuilding what we essentially
already have as a result of the clang-12 toolchain, we use the clang-12
toolchain directly instead.

Differential Revision: https://phabricator.services.mozilla.com/D125912
2021-09-17 08:26:33 +00:00
..
android-mangling-error.patch
android-mangling-error_clang_12.patch
bug47258-extract-symbols-mbcs.patch
build-clang.py Bug 1730078 - Only use the sysroot for the final stage of the clang compilation. r=firefox-build-system-reviewers,andi 2021-09-15 02:39:53 +00:00
clang-5.0-linux64.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-7-linux64.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-10-linux64.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-11-android.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-11-linux64.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-11-macosx64.json Bug 1724522 - Only build clang-12 and clang-trunk with wasi-sysroot. r=firefox-build-system-reviewers,mhentges 2021-08-13 07:07:45 +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 1724522 - Only build clang-12 and clang-trunk with wasi-sysroot. r=firefox-build-system-reviewers,mhentges 2021-08-13 07:07:45 +00:00
clang-12-android.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-12-linux64.json Bug 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
clang-12-macosx64.json Bug 1724522 - Split wasi-sysroot in two separate toolchains. r=firefox-build-system-reviewers,mhentges 2021-08-13 07:07:45 +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 1724522 - Split wasi-sysroot in two separate toolchains. r=firefox-build-system-reviewers,mhentges 2021-08-13 07:07:45 +00:00
clang-tidy-ci.patch
clang-tidy-external-linux64.json Bug 1730078 - Build clang-tidy with clang. r=firefox-build-system-reviewers,andi 2021-09-15 02:39:52 +00:00
clang-tidy-linux64.json Bug 1730078 - Build clang-tidy with clang. r=firefox-build-system-reviewers,andi 2021-09-15 02:39:52 +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 1730078 - Build clang stage 1 with system gcc. r=firefox-build-system-reviewers,mhentges 2021-09-15 02:39:53 +00:00
compiler-rt-cross-compile.patch
compiler-rt-no-codesign.patch
downgrade-mangling-error.patch
downgrade-mangling-error_clang_12.patch
find_symbolizer_linux.patch
find_symbolizer_linux_clang_10.patch
fuzzing_ccov_build_clang_12.patch
llvmorg-11-init-4265-g2dcbdba8540_clang_10.patch
llvmorg-12-init-10926-gb79e990f401-LTO-new-pass-manager.patch
loosen-msvc-detection.patch
profile-g4a10504e1f70c.patch Bug 1730078 - Don't build some things during early stages of the clang compilation. r=firefox-build-system-reviewers,andi,mhentges 2021-09-15 02:39:52 +00:00
r350774.patch
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
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
revert-llvmorg-12-init-16421-gb688c5875d08.patch
revert-r362047-and-r362065.patch
revert-r362047-and-r362065_clang_12.patch
rG7e18aeba5062_clang_10.patch
static-llvm-symbolizer.patch
static-llvm-symbolizer_clang_12.patch
tsan-D101154.patch
tsan-hang-be41a98ac222_clang_10.patch
unpoison-thread-stacks_clang_10.patch

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.