gecko-dev/build/build-clang
David Major 0c76842459 Bug 1608460 - Redefine MIDL names to be unique to work around a clang-cl bug r=froydnj
This is an alternative to carrying a revert of the offending changeset, since the bug doesn't show hope of a fix anytime soon, or maybe ever. This way we don't have to keep rebasing the patch as we pick up new clangs, and developers don't have to remember to apply the patch when building a local compiler.

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

--HG--
extra : moz-landing-system : lando
2020-01-10 17:53:29 +00:00
..
android-mangling-error.patch
bug-1605181-isConstexpr.patch Bug 1605181 - 'if constexpr' wasn't supported in clang-tidy r=andi 2019-12-19 18:32:40 +00:00
bug-1606630-if_constexpr.patch Bug 1606630 - For clang-tidy fix checkers readability-misleading-indentation and readability-braces-around-statements. r=sylvestre 2020-01-06 21:42:58 +00:00
build-clang.py Bug 1601448 - The clang.tar.xz bootstrap artifact should contain the libclang_rt.builtins-wasm32.a archive r=froydnj 2019-12-09 16:59:49 +00:00
clang-5.0-linux64.json Bug 1579189 - raise the minimum clang version to 5; r=#build 2019-11-14 11:16:38 -04:00
clang-7-linux64.json Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
clang-9-mingw.json Bug 1590624 - Update the mingw-clang compiler to clang 9 r=dmajor 2019-12-12 07:43:53 +00:00
clang-android.json Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
clang-linux64-aarch64-cross.json Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
clang-linux64-cross.json Bug 1608460 - Redefine MIDL names to be unique to work around a clang-cl bug r=froydnj 2020-01-10 17:53:29 +00:00
clang-linux64.json Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
clang-macosx64.json Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
clang-tidy-ci.patch Bug 1589096 - add registerPPCallbacks to our version of clang-tidy due to a limitation in mozilla-must-override. r=sylvestre 2019-10-31 12:16:35 +00:00
clang-tidy-linux64.json Bug 1606630 - For clang-tidy fix checkers readability-misleading-indentation and readability-braces-around-statements. r=sylvestre 2020-01-06 21:42:58 +00:00
clang-tidy-macosx64.json Bug 1606630 - For clang-tidy fix checkers readability-misleading-indentation and readability-braces-around-statements. r=sylvestre 2020-01-06 21:42:58 +00:00
clang-tidy-no-errors.patch Bug 1600033 - for clang-tidy force the output diagnostic as warnings from errors.r=sylvestre 2019-11-28 21:15:01 +00:00
clang-tidy-win64.json Bug 1606630 - For clang-tidy fix checkers readability-misleading-indentation and readability-braces-around-statements. r=sylvestre 2020-01-06 21:42:58 +00:00
clang-win64.json Bug 1608460 - Redefine MIDL names to be unique to work around a clang-cl bug r=froydnj 2020-01-10 17:53:29 +00:00
compiler-rt-cross-compile.patch Bug 1551690 - be more specific about the LLVM target on OS X; r=nalexander 2019-05-21 17:53:44 +00:00
compiler-rt-no-codesign.patch Bug 1573211 - Update to clang 9.0.0 r=glandium 2019-09-21 16:26:53 +02:00
critical_section_on_gcov_flush-rG02ce9d8ef5a8.patch Bug 1603436 - Rename clang patch (critical_section_on_gcov_flush.patch) to make easier the switch to LLVM 10 r=dmajor 2019-12-12 22:13:04 +00:00
downgrade-mangling-error.patch Bug 1573211 - Update to clang 9.0.0 r=glandium 2019-09-21 16:26:53 +02:00
find_symbolizer_linux.patch
llvm-debug-frame.patch
loosen-msvc-detection.patch
mingwclang-llvm-objcopy-COFF-Add-support-for-removing-sections.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Clear-the-unwritten-tail-of-coff_s.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Error-out-on-use-of-unhandled-opti.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Fix-handling-of-aux-symbols-for-bi.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Implement-only-keep-debug.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Implement-only-section.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Implement-strip-debug.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Remove-a-superfluous-namespace-qua.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-COFF-Update-symbol-indices-in-weak-exte.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-Consistently-use-createStringError-inst.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-llvm-objcopy-Return-Error-from-Buffer-allocate-ELF-W.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
mingwclang-Reapply-llvm-objcopy-COFF-Implement-add-gnu-debuglin.patch Bug 1471698 - Switch the mingw clang compiler to the 8 branch r=froydnj 2019-05-17 19:21:15 +00:00
r277806.patch
r285657.patch
r289565-for-3.9.patch
r313872.patch
r322325.patch
r322401.patch
r325356.patch
r339636.patch
r350774.patch Bug 1541943 - Temporarily switch libFuzzer builds back to clang-7. r=froydnj 2019-04-04 16:47:57 +00:00
README Bug 1573769 - Update of the build-clang doc after the move to git r=glandium 2019-08-14 07:40:58 +00:00
rename_gcov_flush_7.patch Bug 1541943 - Temporarily switch libFuzzer builds back to clang-7. r=froydnj 2019-04-04 16:47:57 +00:00
rename_gcov_flush.patch Backed out changeset 870b38a3dc28 (bug 1602482) for as per dev's request. a=backout 2019-12-10 13:47:12 +02:00
revert-r362047-and-r362065.patch Bug 1573211 - Update to clang 9.0.0 r=glandium 2019-09-21 16:26:53 +02:00
rG7e18aeba5062.patch Bug 1597901 - Fix some sources of non-determinism in clang. r=dmajor 2019-12-05 22:28:01 +00:00
static-llvm-symbolizer.patch
unpoison-thread-stacks.patch Bug 1573211 - Update to clang 9.0.0 r=glandium 2019-09-21 16:26:53 +02:00

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, or 3 to select different compiler stages.  The default is 3.
* 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.

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.