# SkCMS Bazel build This file provides instructions on how to build and test SkCMS using [Bazel](https://bazel.build). ## Linux ### Building and testing locally Open a terminal and `cd` into your SkCMS repository checkout, then run: ``` $ bazel build //... $ bazel test //... ``` ### Building and testing on RBE Same as above, but add `--config=linux-rbe` to your `bazel` invocation, e.g.: ``` $ bazel build //... --config=linux-rbe $ bazel test //... --config=linux-rbe ``` Note that you need to obtain RBE credentials for this to work (instructions below). ## macOS Ensure you have a local Xcode installation, then run: ``` $ bazel build //... $ bazel test //... ``` Our Bazel macOS build does not support RBE at this time. Note however that it is possible to use RBE from macOS to cross-compile for Linux and run tests on Linux RBE workers, e.g.: ``` $ bazel build //... --config=linux-rbe $ bazel test //... --config=linux-rbe ``` ## Windows SkCMS can be compiled with either [Microsoft Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) or [Clang](https://clang.llvm.org/). Before continuing, install Bazel by following the instructions [here](https://docs.bazel.build/versions/4.2.1/install-windows.html). Make sure to include `bazel` binary in your `PATH`. Note that Bazel requires symlink support to function properly. Enable symlink support by enabling [Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development), or by running Bazel as an administrator ([reference](https://docs.bazel.build/versions/main/windows.html#enable-symlink-support)). ### Building and testing locally The below instructions are based on the [Build on Windows](https://bazel.build/configure/windows#using) section of the Bazel documentation. #### With Build Tools for Visual Studio 2019 Download and install Build Tools for Visual Studio 2019 using this [link](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019). Select "Desktop development with C++" on the installation wizard, and leave all other items unchanged. Open `cmd.exe` and `cd` into your SkCMS repository checkout. Set the `BAZEL_VC` environment variable to point to your Build Tools for Visual Studio 2019 installation: ``` > set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC ``` Then run: ``` > bazel build //... > bazel test //... --enable_runfiles ``` Reference [here](https://docs.bazel.build/versions/main/windows.html#build-c-with-msvc). TODO(lovisolo): Consider adding `--enable_runfiles` to `//.bazelrc`. #### With Clang In order to build with Clang, you have to install **both** LLVM and Build Tools for Visual Studio 2019 (rationale [here](https://docs.bazel.build/versions/main/windows.html#build-c-with-clang)). Please install the latter by following the above instructions before proceeding. Download and install LLVM from this [link](https://github.com/llvm/llvm-project/releases/tag/llvmorg-13.0.0). Open `cmd.exe` and `cd` into your SkCMS repository checkout, then run: ``` > bazel build //... --compiler=clang-cl > bazel test //... --compiler=clang-cl --enable_runfiles ``` If the above commands fail because Bazel cannot find your LLVM installation, set the `BAZEL_LLVM` environment variable to point to your LLVM installation: ``` > set BAZEL_LLVM=C:\Program Files\LLVM ``` Reference [here](https://docs.bazel.build/versions/main/windows.html#build-c-with-clang). TODO(lovisolo): Investigate adding a platform target to the top-level `BUILD.bazel` file as per the instructions [here](https://docs.bazel.build/versions/main/windows.html#build-c-with-clang). ### Building and testing on RBE TODO(lovisolo) ## RBE Credentials ``` gcloud auth application-default login ``` Settings in .bazelrc should look to use those default Google cloud credentials.