blob: f8775de2ccf2061be4e8cd01cdbed89f75d8d2d1 [file] [log] [blame]
#!/bin/bash
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# 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?}"