xref: /aosp_15_r20/external/executorch/extension/android_test/setup.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#!/bin/bash
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Workerset -eu
9*523fa7a6SAndroid Build Coastguard Worker
10*523fa7a6SAndroid Build Coastguard WorkerBUILD_AAR_DIR="$(mktemp -d)"
11*523fa7a6SAndroid Build Coastguard Workerexport BUILD_AAR_DIR
12*523fa7a6SAndroid Build Coastguard Worker
13*523fa7a6SAndroid Build Coastguard WorkerBASEDIR=$(dirname "$0")
14*523fa7a6SAndroid Build Coastguard Workersource "$BASEDIR"/../../build/build_android_llm_demo.sh
15*523fa7a6SAndroid Build Coastguard Worker
16*523fa7a6SAndroid Build Coastguard Workerbuild_native_library() {
17*523fa7a6SAndroid Build Coastguard Worker  ANDROID_ABI="$1"
18*523fa7a6SAndroid Build Coastguard Worker  CMAKE_OUT="cmake-out-android-${ANDROID_ABI}"
19*523fa7a6SAndroid Build Coastguard Worker  ANDROID_NDK="${ANDROID_NDK:-/opt/ndk}"
20*523fa7a6SAndroid Build Coastguard Worker  EXECUTORCH_CMAKE_BUILD_TYPE="${EXECUTORCH_CMAKE_BUILD_TYPE:-Release}"
21*523fa7a6SAndroid Build Coastguard Worker  cmake . -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \
22*523fa7a6SAndroid Build Coastguard Worker    -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \
23*523fa7a6SAndroid Build Coastguard Worker    -DANDROID_ABI="${ANDROID_ABI}" \
24*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_XNNPACK=ON \
25*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \
26*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \
27*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \
28*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \
29*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \
30*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \
31*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
32*523fa7a6SAndroid Build Coastguard Worker    -B"${CMAKE_OUT}"
33*523fa7a6SAndroid Build Coastguard Worker
34*523fa7a6SAndroid Build Coastguard Worker  cmake --build "${CMAKE_OUT}" -j16 --target install
35*523fa7a6SAndroid Build Coastguard Worker
36*523fa7a6SAndroid Build Coastguard Worker  cmake extension/android \
37*523fa7a6SAndroid Build Coastguard Worker    -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}"/build/cmake/android.toolchain.cmake \
38*523fa7a6SAndroid Build Coastguard Worker    -DANDROID_ABI="${ANDROID_ABI}" \
39*523fa7a6SAndroid Build Coastguard Worker    -DCMAKE_INSTALL_PREFIX=c"${CMAKE_OUT}" \
40*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
41*523fa7a6SAndroid Build Coastguard Worker    -DEXECUTORCH_BUILD_LLAMA_JNI=ON \
42*523fa7a6SAndroid Build Coastguard Worker    -B"${CMAKE_OUT}"/extension/android
43*523fa7a6SAndroid Build Coastguard Worker
44*523fa7a6SAndroid Build Coastguard Worker  cmake --build "${CMAKE_OUT}"/extension/android -j16
45*523fa7a6SAndroid Build Coastguard Worker
46*523fa7a6SAndroid Build Coastguard Worker  # Copy artifacts to ABI specific directory
47*523fa7a6SAndroid Build Coastguard Worker  mkdir -p "${BUILD_AAR_DIR}/jni/${ANDROID_ABI}"
48*523fa7a6SAndroid Build Coastguard Worker  cp "${CMAKE_OUT}"/extension/android/*.so "${BUILD_AAR_DIR}/jni/${ANDROID_ABI}/"
49*523fa7a6SAndroid Build Coastguard Worker}
50*523fa7a6SAndroid Build Coastguard Worker
51*523fa7a6SAndroid Build Coastguard Workerpushd "$BASEDIR"/../../
52*523fa7a6SAndroid Build Coastguard Workerbuild_jar
53*523fa7a6SAndroid Build Coastguard Workerbuild_native_library "arm64-v8a"
54*523fa7a6SAndroid Build Coastguard Workerbuild_native_library "x86_64"
55*523fa7a6SAndroid Build Coastguard Workerbuild_aar
56*523fa7a6SAndroid Build Coastguard Workerbash examples/models/llama/install_requirements.sh
57*523fa7a6SAndroid Build Coastguard Workersource ".ci/scripts/test_llama.sh" -model stories110M -build_tool cmake -dtype fp16 -mode portable -upload ${BUILD_AAR_DIR}
58*523fa7a6SAndroid Build Coastguard Workerpopd
59*523fa7a6SAndroid Build Coastguard Workermkdir -p "$BASEDIR"/src/libs
60*523fa7a6SAndroid Build Coastguard Workercp "$BUILD_AAR_DIR/executorch.aar" "$BASEDIR"/src/libs/executorch.aar
61*523fa7a6SAndroid Build Coastguard Workerpython add_model.py
62*523fa7a6SAndroid Build Coastguard Workermv "add.pte" "$BASEDIR"/src/androidTest/resources/add.pte
63*523fa7a6SAndroid Build Coastguard Workerunzip -o "$BUILD_AAR_DIR"/model.zip -d "$BASEDIR"/src/androidTest/resources
64