|
7 | 7 |
|
8 | 8 | set -eu |
9 | 9 |
|
10 | | -CMAKE_OUT="${CMAKE_OUT:-cmake-out-android}" |
11 | | -# Note: Set up ANDROID_NDK and ANDROID_ABI |
12 | | -cmake . -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \ |
13 | | - -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \ |
14 | | - -DANDROID_ABI="${ANDROID_ABI}" \ |
15 | | - -DEXECUTORCH_BUILD_XNNPACK=ON \ |
16 | | - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ |
17 | | - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ |
18 | | - -DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \ |
19 | | - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ |
20 | | - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \ |
21 | | - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \ |
22 | | - -DEXECUTORCH_BUILD_QNN=ON \ |
23 | | - -DQNN_SDK_ROOT="${QNN_SDK_ROOT}" \ |
24 | | - -DCMAKE_BUILD_TYPE=Release \ |
25 | | - -B"${CMAKE_OUT}" |
26 | | - |
27 | | -if [ "$(uname)" == "Darwin" ]; then |
28 | | - CMAKE_JOBS=$(( $(sysctl -n hw.ncpu) - 1 )) |
29 | | -else |
30 | | - CMAKE_JOBS=$(( $(nproc) - 1 )) |
| 10 | +if [ -z "$QNN_SDK_ROOT" ]; then |
| 11 | + echo "You must specify QNN_SDK_ROOT" |
| 12 | + exit 1 |
31 | 13 | fi |
32 | | -cmake --build "${CMAKE_OUT}" -j "${CMAKE_JOBS}" --target install --config Release |
33 | | - |
34 | | -cmake extension/android \ |
35 | | - -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ |
36 | | - -DANDROID_ABI="${ANDROID_ABI}" \ |
37 | | - -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \ |
38 | | - -DEXECUTORCH_BUILD_LLAMA_JNI=ON \ |
39 | | - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ |
40 | | - -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \ |
41 | | - -DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \ |
42 | | - -DCMAKE_BUILD_TYPE=Release \ |
43 | | - -B"${CMAKE_OUT}"/extension/android |
44 | 14 |
|
45 | | -cmake --build "${CMAKE_OUT}"/extension/android -j "${CMAKE_JOBS}" --config Release |
46 | | - |
47 | | -JNI_LIBS_PATH="examples/demo-apps/android/LlamaDemo/app/src/main/jniLibs" |
48 | | -mkdir -p "${JNI_LIBS_PATH}/${ANDROID_ABI}" |
| 15 | +BASEDIR=$(dirname "$0") |
| 16 | +source "$BASEDIR"/../../../../build/build_android_llm_demo.sh |
49 | 17 |
|
50 | 18 | BUILD_AAR_DIR="$(mktemp -d)" |
51 | | -mkdir -p "${BUILD_AAR_DIR}/jni/${ANDROID_ABI}" "${BUILD_AAR_DIR}/libs" |
52 | | -JNI_LIBS_PATH="${BUILD_AAR_DIR}/jni" |
53 | | -cp "${CMAKE_OUT}"/extension/android/libexecutorch_jni.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/libexecutorch.so" |
54 | | -cp "${CMAKE_OUT}"/lib/libqnn_executorch_backend.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
55 | | -cp "${QNN_SDK_ROOT}"/lib/aarch64-android/libQnnHtp.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
56 | | -cp "${QNN_SDK_ROOT}"/lib/aarch64-android/libQnnSystem.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
57 | | -cp "${QNN_SDK_ROOT}"/lib/aarch64-android/libQnnHtpV69Stub.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
58 | | -cp "${QNN_SDK_ROOT}"/lib/aarch64-android/libQnnHtpV73Stub.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
59 | | -cp "${QNN_SDK_ROOT}"/lib/aarch64-android/libQnnHtpV75Stub.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
60 | | -cp "${QNN_SDK_ROOT}"/lib/hexagon-v69/unsigned/libQnnHtpV69Skel.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
61 | | -cp "${QNN_SDK_ROOT}"/lib/hexagon-v73/unsigned/libQnnHtpV73Skel.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
62 | | -cp "${QNN_SDK_ROOT}"/lib/hexagon-v75/unsigned/libQnnHtpV75Skel.so "${JNI_LIBS_PATH}/${ANDROID_ABI}/" |
63 | | -cp extension/android/build/libs/executorch.jar "${BUILD_AAR_DIR}/libs" |
64 | | -echo \<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" \ |
65 | | - package=\"org.pytorch.executorch\"\> \ |
66 | | - \<uses-sdk android:minSdkVersion=\"19\" /\> \ |
67 | | - \</manifest\> > "${BUILD_AAR_DIR}/AndroidManifest.xml" |
68 | | -pushd "${BUILD_AAR_DIR}" |
69 | | -zip -r executorch-llama.aar libs jni/${ANDROID_ABI} AndroidManifest.xml |
70 | | -popd |
71 | | -mkdir -p examples/demo-apps/android/LlamaDemo/app/libs |
72 | | -mv "${BUILD_AAR_DIR}/executorch-llama.aar" examples/demo-apps/android/LlamaDemo/app/libs |
| 19 | +export BUILD_AAR_DIR |
| 20 | + |
| 21 | +build_jar |
| 22 | +build_android_native_library "arm64-v8a" |
| 23 | +build_aar |
| 24 | +mkdir -p "$BASEDIR"/app/libs |
| 25 | +cp "$BUILD_AAR_DIR/executorch.aar" "$BASEDIR"/app/libs/executorch-llama.aar |
0 commit comments