Improve docs on CMake variables and options
* Improve description of IREE-specific CMake Options and Variables
* Add section on Frequently-used CMake Variables
* Add links from building with CMake docs
* Revise style (use sections instead of bullet points)
Closes https://github.com/google/iree/pull/2260
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/iree/pull/2260 from iml130:docs 4f191f0627d1f827f7f0887ad38b086e183a3504
PiperOrigin-RevId: 317737818
diff --git a/docs/GetStarted/cmake_options_and_variables.md b/docs/GetStarted/cmake_options_and_variables.md
index 899fa19..2676efe 100644
--- a/docs/GetStarted/cmake_options_and_variables.md
+++ b/docs/GetStarted/cmake_options_and_variables.md
@@ -1,74 +1,96 @@
-# IREE-specific CMake Options and Variables
+# CMake Options and Variables
+
+## Frequently-used CMake Variables
+
+#### `CMAKE_BUILD_TYPE`:STRING
+
+Sets the build type. Possible values are `Release`, `Debug`,
+`RelWithDebInfo`/`FastBuild` and `MinSizeRel`. If unset, build type is set to
+`Release`.
+
+#### `CMAKE_<LANG>_COMPILER`:STRING
+
+This 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.
+
+## IREE-specific CMake Options and Variables
This gives a brief explanation of IREE specific CMake options and variables.
-* `IREE_ENABLE_RUNTIME_TRACING`:BOOL
+#### `IREE_ENABLE_RUNTIME_TRACING`:BOOL
- Enables instrumented runtime tracing. Defaults to `OFF`.
+Enables instrumented runtime tracing. Defaults to `OFF`.
-* `IREE_ENABLE_MLIR`:BOOL
+#### `IREE_ENABLE_MLIR`:BOOL
- Enables MLIR/LLVM dependencies. Defaults to `ON`.
+Enables 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`:BOOL
+#### `IREE_ENABLE_EMITC`:BOOL
- Enables MLIR EmitC dependencies. Defaults to OFF. Requires that
- `IREE_ENABLE_MLIR` is set to `ON`.
+Enables 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`:BOOL
+#### `IREE_BUILD_COMPILER`:BOOL
- Builds the IREE compiler. Defaults to `ON`.
+Builds the IREE compiler. Defaults to `ON`.
-* `IREE_BUILD_TESTS`:BOOL
+#### `IREE_BUILD_TESTS`:BOOL
- Builds IREE unit tests. Defaults to `ON`.
+Builds IREE unit tests. Defaults to `ON`.
-* `IREE_BUILD_DOCS`:BOOL
+#### `IREE_BUILD_DOCS`:BOOL
- Builds IREE documentation. Defaults to `OFF`.
+Builds IREE documentation. Defaults to `OFF`.
-* `IREE_BUILD_SAMPLES`:BOOL
+#### `IREE_BUILD_SAMPLES`:BOOL
- Builds IREE sample projects. Defaults to `ON`.
+Builds IREE sample projects. Defaults to `ON`.
-* `IREE_BUILD_DEBUGGER`:BOOL
+#### `IREE_BUILD_DEBUGGER`:BOOL
- Builds the IREE debugger app. Defaults to `OFF`.
+Builds the IREE debugger app. Defaults to `OFF`.
-* `IREE_BUILD_PYTHON_BINDINGS`:BOOL
+#### `IREE_BUILD_PYTHON_BINDINGS`:BOOL
- Builds the IREE python bindings Defaults to `OFF`.
+Builds the IREE python bindings. Defaults to `OFF`.
-* `IREE_BUILD_EXPERIMENTAL`:BOOL
+#### `IREE_BUILD_EXPERIMENTAL`:BOOL
- Builds experimental projects. Defaults to `OFF`.
+Builds experimental projects. Defaults to `OFF`.
-* `IREE_HAL_DRIVERS_TO_BUILD`:STRING
+#### `IREE_HAL_DRIVERS_TO_BUILD`:STRING
- *This 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"`.
+*This 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`:STRING
+#### `IREE_TARGET_BACKENDS_TO_BUILD`:STRING
- *This 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"`.
+*This 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`:BOOL
+#### `IREE_ENABLE_LLD`:BOOL
- Use lld when linking. Defaults to `OFF`.
+Use 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`:STRING
+#### `IREE_MLIR_DEP_MODE`:STRING
- Defines 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`.
+Defines 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`:STRING
+## MLIR-specific CMake Options and Variables
- Specifies the path where to look for the installed MLIR/LLVM packages.
- Required if `IREE_MLIR_DEP_MODE` is set to `INSTALLED`.
+#### `MLIR_DIR`:STRING
+
+Specifies the path where to look for the installed MLIR/LLVM packages. Required
+if `IREE_MLIR_DEP_MODE` is set to `INSTALLED`.