blob: 8f54ed62dc7de2a92799362fa3fabe0b76a67bc7 [file] [log] [blame]
# 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)