aboutsummaryrefslogtreecommitdiffhomepage
path: root/README.windows
blob: b237f58b6eb7ee58d63365755e598f1983724aca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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