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