|  | #!/bin/bash | 
|  |  | 
|  | # Copyright 2021 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 | 
|  |  | 
|  | # Cross-compile the IREE project towards RISCV with CMake. Designed for CI, | 
|  | # but can be run manually. This uses previously cached build results and does | 
|  | # not clear build directories. | 
|  | # | 
|  | # Host binaries (e.g. compiler tools) will be built and installed in build-host/ | 
|  | # RISCV binaries (e.g. tests) will be built in build-riscv/. | 
|  |  | 
|  | set -x | 
|  | set -e | 
|  |  | 
|  | ROOT_DIR="${ROOT_DIR:-$(git rev-parse --show-toplevel)}" | 
|  | CMAKE_BIN="${CMAKE_BIN:-$(which cmake)}" | 
|  |  | 
|  | "${CMAKE_BIN?}" --version | 
|  | ninja --version | 
|  |  | 
|  | cd "${ROOT_DIR?}" | 
|  |  | 
|  | # --------------------------------------------------------------------------- # | 
|  | # Build for the host. | 
|  | BUILD_HOST_DIR="${BUILD_HOST_DIR:-$ROOT_DIR/build-host}" | 
|  | if [[ -d "${BUILD_HOST_DIR?}" ]]; then | 
|  | echo "build-host directory already exists. Will use cached results there." | 
|  | else | 
|  | echo "build-host directory does not already exist. Creating a new one." | 
|  | mkdir -p "${BUILD_HOST_DIR?}" | 
|  | fi | 
|  |  | 
|  | # Configure, build, install. | 
|  | "${CMAKE_BIN?}" -G Ninja -B "${BUILD_HOST_DIR?}" \ | 
|  | -DCMAKE_INSTALL_PREFIX="${BUILD_HOST_DIR?}/install" \ | 
|  | -DIREE_BUILD_COMPILER=ON \ | 
|  | -DIREE_BUILD_TESTS=OFF \ | 
|  | -DIREE_BUILD_SAMPLES=OFF \ | 
|  | "${ROOT_DIR?}" | 
|  | "${CMAKE_BIN?}" --build "${BUILD_HOST_DIR?}" --target install | 
|  | # --------------------------------------------------------------------------- # | 
|  |  | 
|  |  | 
|  | # --------------------------------------------------------------------------- # | 
|  | # Build for the target (riscv64). | 
|  | BUILD_RISCV_DIR="${BUILD_RISCV_DIR:-$ROOT_DIR/build-riscv}" | 
|  | if [[ -d "${BUILD_RISCV_DIR?}" ]]; then | 
|  | echo "build-riscv directory already exists. Will use cached results there." | 
|  | else | 
|  | echo "build-riscv directory does not already exist. Creating a new one." | 
|  | mkdir -p "${BUILD_RISCV_DIR?}" | 
|  | fi | 
|  |  | 
|  | # Configure riscv, then build. | 
|  | "${CMAKE_BIN?}" -G Ninja -B "${BUILD_RISCV_DIR?}" \ | 
|  | -DCMAKE_TOOLCHAIN_FILE="$(realpath ${ROOT_DIR?}/build_tools/cmake/riscv.toolchain.cmake)" \ | 
|  | -DIREE_HOST_BINARY_ROOT="$(realpath ${BUILD_HOST_DIR?}/install)" \ | 
|  | -DIREE_BUILD_COMPILER=OFF \ | 
|  | -DIREE_ENABLE_MLIR=OFF \ | 
|  | -DIREE_BUILD_TESTS=ON \ | 
|  | -DIREE_BUILD_SAMPLES=OFF \ | 
|  | -DIREE_BUILD_EMBEDDING_SAMPLES=ON \ | 
|  | -DRISCV_TOOLCHAIN_ROOT="${RISCV_TOOLCHAIN_ROOT?}" \ | 
|  | "${ROOT_DIR?}" | 
|  | "${CMAKE_BIN?}" --build "${BUILD_RISCV_DIR?}" |