| # Getting Started on macOS with CMake | |
| <!-- | |
| Notes to those updating this guide: | |
| * This document should be __simple__ and cover essential items only. | |
| Notes for optional components should go in separate files. | |
| * This document parallels getting_started_linux_cmake.md and | |
| getting_started_windows_cmake.md | |
| Please keep them in sync. | |
| --> | |
| 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 | |
| not documented for macOS at this time. | |
| IREE is not officially supported on macOS at this time. It may work, but it is | |
| not a part of our open source CI, and may be intermittently broken. | |
| Contributions related to macOS support and documentation are welcome however. | |
| ## Prerequisites | |
| ### Install Homebrew | |
| This guide uses [Homebrew](https://brew.sh/) to install IREE's dependencies. | |
| ```shell | |
| $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" | |
| ``` | |
| ### Install CMake | |
| IREE uses [CMake](https://cmake.org/) version `>= 3.13.4`. Brew ships the latest | |
| release. | |
| ```shell | |
| $ brew install cmake | |
| $ cmake --version # >= 3.13.4 | |
| ``` | |
| ### Install Ninja | |
| [Ninja](https://ninja-build.org/) is a fast build system that you can use as a | |
| CMake generator. | |
| ```shell | |
| $ brew install ninja | |
| ``` | |
| ## Clone and Build | |
| ### Clone | |
| Clone the repository and initialize its submodules: | |
| ```shell | |
| $ git clone https://github.com/google/iree.git | |
| $ cd iree | |
| $ git submodule update --init | |
| ``` | |
| > Tip:<br> | |
| > Editors and other programs can also clone the | |
| > repository, just make sure that they initialize the submodules. | |
| ### Build | |
| Configure: | |
| ```shell | |
| $ cmake -G Ninja -B ../iree-build/ . | |
| ``` | |
| Note: this should use `Clang` by default on macOS. `GCC` is not fully supported | |
| by IREE. | |
| > Tip:<br> | |
| > The root | |
| > [CMakeLists.txt](https://github.com/google/iree/blob/main/CMakeLists.txt) | |
| > file has options for configuring which parts of the project to enable.<br> | |
| > These are further documented in [CMake Options and Variables](cmake_options_and_variables.md). | |
| Build all targets: | |
| ```shell | |
| $ cmake --build ../iree-build/ | |
| ``` | |
| ## What's next? | |
| ### Take a Look Around | |
| Check out the contents of the 'tools' build directory: | |
| ```shell | |
| $ ls ../iree-build/iree/tools | |
| $ ../iree-build/iree/tools/iree-translate --help | |
| ``` | |
| Translate a | |
| [MLIR file](https://github.com/google/iree/blob/main/iree/samples/models/simple_abs.mlir) | |
| and execute a function in the compiled module: | |
| ```shell | |
| $ ../iree-build/iree/tools/iree-run-mlir $PWD/iree/samples/models/simple_abs.mlir \ | |
| -function-input="f32=-2" -iree-hal-target-backends=vmvx -print-mlir | |
| ``` | |
| ### Further Reading | |
| * For an introduction to IREE's project structure and developer tools, see | |
| [Developer Overview](../developing_iree/developer_overview.md). | |
| * To understand how IREE implements a HAL driver using Metal, see | |
| [Metal HAL Driver](../design_docs/metal_hal_driver.md). <!-- TODO: Link to | |
| macOS versions of these guides once they are developed. | |
| * To use IREE's Python bindings, see | |
| [Getting Started with Python](getting_started_python.md) --> |