blob: dfaaa1e48c65bf69518ce95ef5ea7e054e77b51d [file] [log] [blame]
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -07001#!/bin/bash
2
3# Copyright 2022 The IREE Authors
4#
5# Licensed under the Apache License v2.0 with LLVM Exceptions.
6# See https://llvm.org/LICENSE.txt for license information.
7# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -08009# Cross-compile the runtime using CMake targeting Android
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070010#
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080011# The required IREE_HOST_BINARY_ROOT environment variable indicates the location
Jerry Wu85ff57f2022-12-12 21:39:26 +000012# of the precompiled IREE binaries. Also requires that IREE_TARGET_ABI and
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080013# ANDROID_NDK variables be set. The BUILD_PRESET environment variable indicates
14# how the project should be configured: "test", "benchmark",
15# "benchmark-with-tracing", or "benchmark-suite-test". Defaults to "test".
16#
17# The desired build directory can be passed as the first argument. Otherwise, it
Jerry Wu85ff57f2022-12-12 21:39:26 +000018# uses the environment variable IREE_TARGET_BUILD_DIR, defaulting to
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080019# "build-android". Designed for CI, but can be run manually. It reuses the build
20# directory if it already exists. Expects to be run from the root of the IREE
21# repository.
22
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070023
24set -xeuo pipefail
25
Jerry Wu85ff57f2022-12-12 21:39:26 +000026BUILD_DIR="${1:-${IREE_TARGET_BUILD_DIR:-build-android}}"
27ANDROID_ABI="${IREE_TARGET_ABI}"
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070028IREE_HOST_BINARY_ROOT="$(realpath ${IREE_HOST_BINARY_ROOT})"
Jerry Wu94841422022-12-01 21:14:50 +000029E2E_TEST_ARTIFACTS_DIR="${E2E_TEST_ARTIFACTS_DIR:-build-e2e-test-artifacts/e2e_test_artifacts}"
CindyLiub593bbd2022-10-17 22:03:34 -070030BUILD_PRESET="${BUILD_PRESET:-test}"
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070031
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080032source build_tools/cmake/setup_build.sh
Geoffrey Martin-Noble46e47e32022-11-29 16:39:45 -080033source build_tools/cmake/setup_ccache.sh
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070034
35declare -a args=(
36 -G Ninja
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080037 -B "${BUILD_DIR}"
Jerry Wu56d65bf2023-01-04 20:44:09 -050038 -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}"
39 -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}"
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070040 -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake"
41 -DANDROID_ABI="${ANDROID_ABI}"
42 -DANDROID_PLATFORM=android-29
43 -DIREE_HOST_BINARY_ROOT="${IREE_HOST_BINARY_ROOT}"
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070044 -DIREE_BUILD_COMPILER=OFF
45 -DIREE_BUILD_TESTS=ON
46 -DIREE_BUILD_SAMPLES=OFF
47)
48
CindyLiub593bbd2022-10-17 22:03:34 -070049case "${BUILD_PRESET}" in
50 test)
51 args+=(
52 -DIREE_ENABLE_ASSERTIONS=ON
53 )
54 ;;
55 benchmark)
56 args+=(
57 -DIREE_ENABLE_ASSERTIONS=OFF
58 -DIREE_BUILD_TESTS=OFF
59 )
60 ;;
61 benchmark-with-tracing)
62 args+=(
63 -DIREE_ENABLE_ASSERTIONS=OFF
64 -DIREE_BUILD_TESTS=OFF
65 -DIREE_ENABLE_RUNTIME_TRACING=ON
66 )
67 ;;
68 benchmark-suite-test)
Jerry Wu94841422022-12-01 21:14:50 +000069 E2E_TEST_ARTIFACTS_DIR="$(realpath ${E2E_TEST_ARTIFACTS_DIR})"
CindyLiub593bbd2022-10-17 22:03:34 -070070 args+=(
71 -DIREE_ENABLE_ASSERTIONS=ON
Jerry Wu94841422022-12-01 21:14:50 +000072 -DIREE_E2E_TEST_ARTIFACTS_DIR="${E2E_TEST_ARTIFACTS_DIR}"
CindyLiub593bbd2022-10-17 22:03:34 -070073 )
74 ;;
75 *)
76 echo "Unknown build preset: ${BUILD_PRESET}"
77 exit 1
78 ;;
79esac
80
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070081# Configure towards 64-bit Android 10, then build.
82"${CMAKE_BIN}" "${args[@]}"
83
84
85echo "Building all for device"
86echo "------------"
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080087"${CMAKE_BIN}" --build "${BUILD_DIR}" -- -k 0
Geoffrey Martin-Noble93c50892022-08-08 18:32:33 -070088
89echo "Building test deps for device"
90echo "------------------"
Geoffrey Martin-Noble971cd4b2022-11-29 14:02:31 -080091"${CMAKE_BIN}" --build "${BUILD_DIR}" --target iree-test-deps -- -k 0
Geoffrey Martin-Noble46e47e32022-11-29 16:39:45 -080092
Ben Vanikb4bf5f72022-12-05 19:28:57 -080093echo "Building sample deps for device"
94echo "------------------"
95"${CMAKE_BIN}" --build "${BUILD_DIR}" --target iree-sample-deps -- -k 0
96
Geoffrey Martin-Noble46e47e32022-11-29 16:39:45 -080097if (( IREE_READ_REMOTE_CCACHE == 1 )); then
98 ccache --show-stats
99fi