CMAKE_BUILD_TYPE:STRINGSets the build type. Possible values are Release, Debug, RelWithDebInfo/FastBuild and MinSizeRel. If unset, build type is set to Release.
CMAKE_<LANG>_COMPILER:STRINGThis is the command that will be used as the <LANG> compiler, which are C and CXX in IREE. These variables are set to compile IREE with clang or rather clang++. Once set, these variables can not be changed.
This gives a brief explanation of IREE specific CMake options and variables.
IREE_ENABLE_RUNTIME_TRACING:BOOLEnables instrumented runtime tracing. Defaults to OFF.
IREE_ENABLE_MLIR:BOOLEnables MLIR/LLVM dependencies. Defaults to ON. MLIR/LLVM dependencies are required when building the IREE compiler components. Therefore, the option is automatically set to ON if IREE_BUILD_COMPILER is set to ON.
IREE_ENABLE_EMITC:BOOLEnables the build of the out-of-tree MLIR dialect EmitC. Defaults to OFF. To build the EmitC dialect, IREE_ENABLE_MLIR must be set to ON.
IREE_BUILD_COMPILER:BOOLBuilds the IREE compiler. Defaults to ON.
IREE_BUILD_TESTS:BOOLBuilds IREE unit tests. Defaults to ON.
IREE_BUILD_DOCS:BOOLBuilds IREE documentation. Defaults to OFF.
IREE_BUILD_SAMPLES:BOOLBuilds IREE sample projects. Defaults to ON.
IREE_BUILD_DEBUGGER:BOOLBuilds the IREE debugger app. Defaults to OFF.
IREE_BUILD_PYTHON_BINDINGS:BOOLBuilds the IREE python bindings. Defaults to OFF.
IREE_BUILD_EXPERIMENTAL:BOOLBuilds experimental projects. Defaults to OFF.
IREE_HAL_DRIVERS_TO_BUILD:STRINGThis does not have any effect at the moment, but will be supported in the future! Semicolon-separated list of HAL drivers to build, or all for building all HAL drivers. Case-insensitive. Defaults to all. Example: -DIREE_HAL_DRIVERS_TO_BUILD="Vulkan;VMLA".
IREE_TARGET_BACKENDS_TO_BUILD:STRINGThis does not have any effect at the moment, but will be supported in the future! Semicolon-separated list of HAL drivers to build, or all for building all HAL drivers. Case-insensitive. Defaults to all. Example: -DIREE_HAL_DRIVERS_TO_BUILD="Vulkan_SPIRV;VMLA".
IREE_ENABLE_LLD:BOOLUse lld when linking. Defaults to OFF. This option is equivalent to -DIREE_USE_LINKER=lld. The option IREE_ENABLE_LLD and IREE_USE_LINKER can not be set at the same time.
IREE_MLIR_DEP_MODE:STRINGDefines the MLIR dependency mode. Case-sensitive. Can be BUNDLED, DISABLED or INSTALLED. Defaults to BUNDLED. If set to INSTALLED, the variable MLIR_DIR needs to be passed and that LLVM needs to be compiled with LLVM_ENABLE_RTTI set to ON.
MLIR_DIR:STRINGSpecifies the path where to look for the installed MLIR/LLVM packages. Required if IREE_MLIR_DEP_MODE is set to INSTALLED.
Cross-compilation involves both a host platform and a target platform. One invokes compiler toolchains on the host platform to generate libraries and executables that can be run on the target platform.
IREE uses tools to programmatically generate C/C++ source code from some domain-specific descriptions. For example, flatc is used to generate C/C++ code from FlatBuffer schemas. These tools should be compiled for the host platform so that we can invoke them during build process. This requires cross-compilation for IREE to (conceptually) happen in two stages: first compile build tools under host platform, and then use these host tools together with cross-compiling toolchains to generate artifacts for the target platform. (The build system dependency graph may not have such clear two-stage separation.)
CMake cannot handle multiple compiler toolchains in one CMake invocation. So the above conceptual two-stage compilation happens in two separate CMake invocations.
IREE_HOST_BINARY_ROOT:FILEPATHSpecifies the root directory for containing all host CMake invocation artifacts. This defaults to CMAKE_BINARY_DIR/host if missing.
IREE_HOST_C_COMPILER:STRINGSpecifies the C compiler for host compilation.
IREE_HOST_CXX_COMPILER:STRINGSpecifies the C++ compiler for host compilation.
IREE_HOST_<option>:BOOLFor each option described in “IREE-specific CMake Options and Variables”, you can use the IREE_HOST_<option> counterpart to control the feature when compiling under host configuration. For example, IREE_HOST_BUILD_TESTS will enables all tests for the host configuration.