| # Copyright 2023 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| cmake_minimum_required(VERSION 3.26...3.29) | |
| project(IREE_PJRT) | |
| cmake_policy(SET CMP0069 NEW) | |
| set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | |
| set(CMAKE_CXX_STANDARD 17) | |
| set(CMAKE_POSITION_INDEPENDENT_CODE ON) | |
| set(IREE_CXX_STANDARD ${CMAKE_CXX_STANDARD}) | |
| enable_testing() | |
| # This project uses explicit symbol visibility. | |
| set(CMAKE_C_VISIBILITY_PRESET "hidden") | |
| set(CMAKE_CXX_VISIBILITY_PRESET "hidden") | |
| # All python binaries go into one tree. | |
| set(IREE_PJRT_PYTHON_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/python") | |
| set(IREE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../..) | |
| # Enable LTO if supported. | |
| option(IREE_PJRT_ENABLE_LTO "Enable LTO (link time optimization) if supported" OFF) | |
| include(CheckIPOSupported) | |
| check_ipo_supported(RESULT _ireert_lto_supported OUTPUT error) | |
| if(IREE_PJRT_ENABLE_LTO) | |
| if(_ireert_lto_supported) | |
| message(STATUS "Enabling LTO") | |
| set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) | |
| else() | |
| message(WARNING "LTO not supported by toolchain bit requested (ignored)") | |
| endif() | |
| endif() | |
| # Customize defaults. | |
| # IREE_BUILD_COMPILER should be enabled to make target IREELLVMIncludeSetup available, | |
| # which is required by PJRT dylib targets | |
| option(IREE_BUILD_COMPILER "Enable compiler for runtime-library build" ON) | |
| option(IREE_BUILD_SAMPLES "Disable samples for runtime-library build" OFF) | |
| # Include IREE. | |
| message(STATUS "Including IREE from ${IREE_ROOT_DIR}") | |
| add_subdirectory("${IREE_ROOT_DIR}" "iree_core" EXCLUDE_FROM_ALL) | |
| # Include local sources. | |
| # Handle various global definitions that need to be set at the global | |
| # toolchain level. | |
| iree_setup_toolchain() | |
| # Setup protoc and protobuf library | |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") | |
| include(protobuf_cc_library) | |
| add_subdirectory(src) | |
| add_subdirectory(third_party/pjrt_c_api) | |
| #------------------------------------------------------------------------------- | |
| # Convenience test target. | |
| #------------------------------------------------------------------------------- | |
| add_custom_target(iree-pjrt-test-deps) | |
| set(IREE_PJRT_CTEST_ARGS "-L;^iree_pjrt.+") | |
| add_custom_target(iree-pjrt-run-tests | |
| COMMENT | |
| "Run IREE PJRT Tests" | |
| WORKING_DIRECTORY | |
| "${CMAKE_CURRENT_BINARY_DIR}" | |
| USES_TERMINAL | |
| VERBATIM | |
| COMMAND_EXPAND_LISTS | |
| COMMAND | |
| "${CMAKE_COMMAND}" -E echo | |
| "The 'iree-pjrt-run-tests' target is a helper for running ctest. For advanced" | |
| "options, build dependencies and invoke ctest independently as in:" | |
| COMMAND | |
| "${CMAKE_COMMAND}" -E echo | |
| " (cd ${CMAKE_CURRENT_BINARY_DIR} && cmake --build . --target iree-pjrt-run-tests && ctest ${IREE_PJRT_CTEST_ARGS} --output-on-failure)" | |
| COMMAND | |
| "${CMAKE_COMMAND}" -E echo | |
| "Run tests in parallel by setting a variable like CTEST_PARALLEL_LEVEL=25." | |
| COMMAND | |
| "${CMAKE_CTEST_COMMAND}" ${IREE_PJRT_CTEST_ARGS} --output-on-failure | |
| ) | |
| add_dependencies(iree-pjrt-run-tests iree-pjrt-test-deps) |