| Building Bazel on Windows |
| ========================= |
| |
| TODO(bazel-team): Publish this file when Windows support is mature enough. |
| |
| Warning: Windows support on Bazel is still at a very early stage, many things |
| will not work. |
| |
| Since Bazel is written in Java, you will need a recent |
| [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). |
| |
| The Windows build process uses MSYS2, a POSIX-like environment on Windows. Grab |
| the [installer](http://sourceforge.net/projects/msys2/files/Base/x86_64/) |
| or an archived version and install. |
| |
| Next, open an MSYS2 shell (not the mingw32 or the mingw64 shell) either through |
| a shortcut or by running the `msys2_shell.bat`. Install the dependencies: |
| |
| pacman -S libarchive-devel gcc mingw-w64-x86_64-gcc zip unzip git |
| |
| The msys2 gcc will be used for building Bazel itself, the mingw-w64 gcc will |
| be used by Bazel for building C++. |
| |
| Grab the Bazel source code: |
| |
| git clone https://github.com/google/bazel.git |
| |
| Then, to build: |
| |
| cd bazel && ./compile.sh |
| |
| If all goes well, you should find the binary in `output/bazel`. |
| |
| |
| Running Bazel on Windows |
| ======================== |
| |
| Running Bazel on Windows requires a few additional steps due to the differences |
| between the native POSIX environment and the Windows environment. |
| |
| First, since Blaze uses symlinks, the current Windows user needs to have the |
| permission to create symlinks. This permission is off by default for |
| non-administrator users. The easiest workaround is to run the msys2 shell |
| as administrator (right click shortcut -> Run As Administrator). |
| |
| Second, you need to set some environment variables: |
| |
| export MSYS=winsymlinks:nativestrict # Enable symlink support in msys2. |
| export BAZEL_SH="C:/msys64/usr/bin/bash" |
| export JAVA_HOME="$(ls -d C:/Program\ Files/Java/jdk* | sort | tail -n 1)" |
| |
| Third, you need to set some Bazel options. It's easiest to put them into your |
| `.bazelrc`: |
| |
| cat > ~/.bazelrc << EOF |
| startup --batch # Server mode is not yet supported on Windows |
| build --compiler=windows_msys64_mingw64 |
| build --nobuild_runfile_links # Not ported to Windows yet. |
| EOF |
| |
| This should be enough to run Bazel: |
| |
| cd base_workspace && |
| ../output/bazel build //cpp:hello-world |