Introduce IREE_{HAL_DRIVERS,TARGET_BACKENDS}_TO_BUILD to CMake configuration
* Introduces `IREE_HAL_DRIVERS_TO_BUILD` and `IREE_TARGET_BACKENDS_TO_BUILD`
* Generates `IREE_HAL_DRIVER_*` variables based on configuration
* Generates `IREE_TARGET_BACKEND_*` variables based on configuration
Closes https://github.com/google/iree/pull/1831
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/iree/pull/1831 from iml130:cmake-iree-backends e6e28433cace64e59962e7499ee7c97667f4ab91
PiperOrigin-RevId: 310616379
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c646e8..ddca5cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,12 @@
option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" OFF)
option(IREE_BUILD_EXPERIMENTAL "Builds experimental projects." OFF)
+#TODO: Make this functional!
+set(IREE_HAL_DRIVERS_TO_BUILD "all"
+ CACHE STRING "Semicolon-separated list of HAL drivers to build, or \"all\"." FORCE)
+set(IREE_TARGET_BACKENDS_TO_BUILD "all"
+ CACHE STRING "Semicolon-separated list of target backends to build, or \"all\"." FORCE)
+
if(${IREE_BUILD_SAMPLES} OR ${IREE_BUILD_EXPERIMENTAL})
set(IREE_BUILD_COMPILER ON CACHE BOOL "Build the IREE compiler for sample projects." FORCE)
endif()
@@ -55,6 +61,56 @@
# IREE-specific CMake configuration
#-------------------------------------------------------------------------------
+# List of all HAL drivers to be built by default:
+set(IREE_ALL_HAL_DRIVERS
+ LLVM
+ Vulkan
+ VMLA
+)
+
+if( IREE_HAL_DRIVERS_TO_BUILD STREQUAL "all" )
+ set( IREE_HAL_DRIVERS_TO_BUILD ${IREE_ALL_HAL_DRIVERS} )
+endif()
+message(STATUS "Building HAL drivers ${IREE_HAL_DRIVERS_TO_BUILD}")
+
+# Default every IREE_HAL_DRIVER_* to OFF
+foreach(_backend ${IREE_ALL_HAL_DRIVERS})
+ string(TOUPPER "${_backend}" uppercase_backend)
+ set(IREE_HAL_DRIVER_${uppercase_backend} OFF CACHE BOOL "" FORCE)
+endforeach()
+
+# Set IREE_HAL_DRIVER_* based on configuration
+foreach(_backend ${IREE_HAL_DRIVERS_TO_BUILD})
+ string(TOUPPER "${_backend}" uppercase_backend)
+ set(IREE_HAL_DRIVER_${uppercase_backend} ON CACHE BOOL "" FORCE)
+endforeach()
+
+
+# List of all target backends to be built by default:
+set(IREE_ALL_TARGET_BACKENDS
+ LLVMIR
+ Vulkan_SPIRV
+ VMLA
+)
+
+if( IREE_TARGET_BACKENDS_TO_BUILD STREQUAL "all" )
+ set( IREE_TARGET_BACKENDS_TO_BUILD ${IREE_ALL_TARGET_BACKENDS} )
+endif()
+message(STATUS "Building target backends ${IREE_TARGET_BACKENDS_TO_BUILD}")
+
+# Default every IREE_TARGET_BACKEND_* to OFF
+foreach(_backend ${IREE_ALL_TARGET_BACKENDS})
+ string(TOUPPER "${_backend}" uppercase_backend)
+ set(IREE_TARGET_BACKEND_${uppercase_backend} OFF CACHE BOOL "" FORCE)
+endforeach()
+
+# Set IREE_TARGET_BACKEND_* based on configuration
+foreach(_backend ${IREE_TARGET_BACKENDS_TO_BUILD})
+ string(TOUPPER "${_backend}" uppercase_backend)
+ set(IREE_TARGET_BACKEND_${uppercase_backend} ON CACHE BOOL "" FORCE)
+endforeach()
+
+
list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_LIST_DIR}/build_tools/cmake/
${CMAKE_CURRENT_LIST_DIR}/bindings/python/build_tools/cmake/