| # 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.21...3.24) |
| |
| 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) |