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