Getting Started on Windows with Bazel

This guide walks through building the core compiler and runtime parts of IREE from source. Auxiliary components like the Python bindings and Vulkan driver are documented separately, as they require further setup.

Prerequisites

Tip:
    You can simplify installation by using a package manager like Scoop or Chocolatey.

Install Bazel

Install Bazel version > 2.0.0 (see .bazelversion for the specific version IREE uses) by following the official docs.

Also install MSYS2 by following Bazel's documentation.

Install Python3

Instructions for installation can be found here.

Install Build Tools For Visual Studio

Install the full Visual Studio or “Build Tools For Visual Studio” from the downloads page.

Set a few environment variables. You are welcome to configure these however you choose. For example, you could set them as system or user level environment variables through your “System Properties” or you could use a shell such as PowerShell or cmder). Setting them through PowerShell would look like this:

> $env:BAZEL_VS = "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools"

Clone and Build

Clone

Using your shell of choice (such as PowerShell or cmder), clone the repository, initialize its submodules, and configure:

> git clone https://github.com/google/iree.git
> cd iree
> git submodule update --init
> python configure_bazel.py

Tip:
    Editors and other programs can also clone the repository, just make sure that they initialize the submodules.

Build

Run all core tests:

> bazel test -k iree/...

In general, build artifacts will be under the bazel-bin directory at the top level.

Recommended user.bazelrc

You can put a user.bazelrc at the root of the repository and it will be ignored by git. The recommended contents for Windows are:

build --disk_cache=c:/bazelcache
build:debug --compilation_mode=dbg --copt=/O2 --per_file_copt=iree@/Od --strip=never

What's next?

Take a Look Around

Build all of IREE's ‘tools’ directory:

> bazel build iree/tools/...

Check out what was built:

> dir bazel-bin\iree\tools\
> .\bazel-bin\iree\tools\iree-translate.exe --help

Translate a MLIR file and execute a function in the compiled module:

> .\bazel-bin\iree\tools\iree-run-mlir.exe .\iree\tools\test\simple.mlir -input-value="i32=-2" -iree-hal-target-backends=vmla -print-mlir

Further Reading