gecko-dev/build/build-clang
Nathan Froyd a892fb7aa8 Bug 1306650 - part 11 - use a relative path for the build directory on windows; r=ehsan
In a taskcluster world, we cannot used fixed directories, since we don't
know the absolute path of the directory we're building in ahead of time.
(We could pass it in to the build script, or discover it in the script
itself, but that wouldn't really solve the next problem.)  This change
does make the builds not reproducible, but as we're using clang-cl
purely for secondary purposes on Windows, rather than for shipping
Firefox binaries (as we would on Mac, say), I don't feel bad about
punting the reproducibility issue down the road a bit.
2016-10-26 16:18:23 -04:00
..
build-clang.py Bug 1306650 - part 11 - use a relative path for the build directory on windows; r=ehsan 2016-10-26 16:18:23 -04:00
clang-static-analysis-linux64.json Bug 1273981 part 1: Add libc++ to clang. r=glandium 2016-08-05 10:46:38 -03:00
clang-static-analysis-macosx64.json Bug 1262781 - Update to clang 3.8 final. r=froydnj 2016-04-13 06:54:22 +09:00
clang-static-analysis-win32.json Bug 1306650 - part 5 - modify clang-cl toolchain config to look for just cl.exe; r=ehsan 2016-10-26 16:18:24 -04:00
clang-static-analysis-win64.json
disable-mac-tsan.patch Bug 1262781 - Update to clang 3.8 final. r=froydnj 2016-04-13 06:54:22 +09:00
llvm-debug-frame.patch
query-selector-visibility.patch Bug 1262735 - Change the clang paths in patches added in bug 1210154. r=ehsan 2016-04-13 06:54:22 +09:00
README Bug 1273981 part 1: Add libc++ to clang. r=glandium 2016-08-05 10:46:38 -03:00
return-empty-string-non-mangled.patch Bug 1262781 - Update to clang 3.8 final. r=froydnj 2016-04-13 06:54:22 +09: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.
* 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.
* 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.
* patches: Optional list of patches to apply per platform.  Supported platforms: macosx64, linux32, linux64.  The default is Release.
* 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.
* assertions: Whether to enable LLVM assertions.  The default is false.