gecko-dev/build/build-clang
Cosmin Sabou f42947acdf Backed out 6 changesets (bug 1451104) for causing build bustages on OS X Cross Compiled. CLOSED TREE
Backed out changeset 8984f6868e57 (bug 1451104)
Backed out changeset ae7ccb8c938d (bug 1451104)
Backed out changeset 52d37e70b6f1 (bug 1451104)
Backed out changeset 47405e33747c (bug 1451104)
Backed out changeset b4ebc9a500f4 (bug 1451104)
Backed out changeset b93c29157feb (bug 1451104)
2018-07-21 03:18:37 +03:00
..
bug38105.patch Bug 1448976: Pick up two LLVM fixes for ThinLTO undefined symbols on Windows. r=froydnj 2018-07-16 12:24:57 -04:00
bug38139.patch Bug 1448976: Pick up two LLVM fixes for ThinLTO undefined symbols on Windows. r=froydnj 2018-07-16 12:24:57 -04:00
build-clang.py Backed out 6 changesets (bug 1451104) for causing build bustages on OS X Cross Compiled. CLOSED TREE 2018-07-21 03:18:37 +03: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-5-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 1462498 - Update clang 6 pre to clang 6 final on linux and mac. r=gps 2018-06-08 09:25:49 +09:00
clang-6-macosx64.json Bug 1471491 - Add lld to the mac clang toolchain. r=froydnj 2018-06-27 13:33:23 +09:00
clang-7-pre-linux64.json Bug 1471339 - Introduce clang 7 toolchain build. r=glandium 2018-07-11 10:44:39 +02:00
clang-tidy-cxx14.patch Bug 1447904 - for clang-tidy toolchains set default cxx dialect cxx14. r=froydnj 2018-03-28 18:48:57 +03:00
clang-tidy-linux64.json Bug 1447904 - for clang-tidy toolchains set default cxx dialect cxx14. r=froydnj 2018-03-28 18:48:57 +03:00
clang-tidy-macosx64.json Bug 1447904 - for clang-tidy toolchains set default cxx dialect cxx14. r=froydnj 2018-03-28 18:48:57 +03:00
clang-tidy-win32.json Bug 1447904 - for clang-tidy toolchains set default cxx dialect cxx14. r=froydnj 2018-03-28 18:48:57 +03:00
clang-tidy-win64.json Bug 1447904 - for clang-tidy toolchains set default cxx dialect cxx14. r=froydnj 2018-03-28 18:48:57 +03: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 changeset 4523372c4945 (bug 1462498) for Win build bustages on a CLOSED TREE 2018-05-19 02:19:22 +03:00
clang-win64.json Bug 1448976: Pick up two LLVM fixes for ThinLTO undefined symbols on Windows. r=froydnj 2018-07-16 12:24:57 -04:00
compiler-rt-cross-compile.patch
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
hide-gcda-profiling-symbols.patch Bug 1401230 - Apply compiler-rt patch to avoid crashes on shutdown when unloading shared libraries. r=glandium 2017-09-20 22:52:15 +02:00
llvm-debug-frame-for-5.patch Bug 1408277 - Add a toolchain job for clang 5.0. r=froydnj 2017-10-13 13:22:41 +09: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
pr_set_ptracer.patch Bug 1409267 - Patch compiler-rt to always use prctl(PR_SET_PTRACER). r=froydnj 2017-11-07 15:07:30 +09:00
r277806.patch
r285657.patch
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
README Bug 1421404: Add lld to the build-clang task. r=glandium 2017-12-01 11:12:07 -05: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
return-empty-string-non-mangled.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.
* 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.