Skip to content

Commit 7b3439e

Browse files
kirklandsignfacebook-github-bot
authored andcommitted
Use a common sh to build android llama app related stuff (#6034)
Summary: Pull Request resolved: #6034 Reviewed By: cccclai Differential Revision: D64080537 Pulled By: kirklandsign fbshipit-source-id: 2ca9961d0d5a9d936615e53d6346e92b86d3ebbe
1 parent 4357230 commit 7b3439e

File tree

3 files changed

+44
-122
lines changed

3 files changed

+44
-122
lines changed

build/build_android_llm_demo.sh

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ build_android_native_library() {
2626
EXECUTORCH_BUILD_QNN=OFF
2727
fi
2828

29-
3029
cmake . -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \
3130
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \
3231
-DANDROID_ABI="${ANDROID_ABI}" \
@@ -150,19 +149,27 @@ collect_artifacts_to_be_uploaded() {
150149
cp extension/benchmark/android/benchmark/app/build/outputs/apk/androidTest/debug/*.apk "${MINIBENCH_APP_DIR}"
151150
}
152151

153-
BUILD_AAR_DIR="$(mktemp -d)"
154-
export BUILD_AAR_DIR
155-
if [ -z "$ANDROID_ABIS" ]; then
156-
ANDROID_ABIS=("arm64-v8a" "x86_64")
157-
fi
158-
export ANDROID_ABIS
152+
main() {
153+
BUILD_AAR_DIR="$(mktemp -d)"
154+
export BUILD_AAR_DIR
155+
if [ -z "$ANDROID_ABIS" ]; then
156+
ANDROID_ABIS=("arm64-v8a" "x86_64")
157+
fi
158+
export ANDROID_ABIS
159+
160+
ARTIFACTS_DIR_NAME="$1"
159161

160-
ARTIFACTS_DIR_NAME="$1"
162+
build_jar
163+
for ANDROID_ABI in "${ANDROID_ABIS[@]}"; do
164+
build_android_native_library ${ANDROID_ABI}
165+
done
166+
build_aar
167+
build_android_demo_apps
168+
if [ -n "$ARTIFACTS_DIR_NAME" ]; then
169+
collect_artifacts_to_be_uploaded ${ARTIFACTS_DIR_NAME}
170+
fi
171+
}
161172

162-
build_jar
163-
for ANDROID_ABI in "${ANDROID_ABIS[@]}"; do
164-
build_android_native_library ${ANDROID_ABI}
165-
done
166-
build_aar
167-
build_android_demo_apps
168-
collect_artifacts_to_be_uploaded ${ARTIFACTS_DIR_NAME}
173+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
174+
main "$@"
175+
fi

examples/demo-apps/android/LlamaDemo/setup-with-qnn.sh

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -7,66 +7,19 @@
77

88
set -eu
99

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
3113
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
4414

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
4917

5018
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

examples/demo-apps/android/LlamaDemo/setup.sh

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,53 +7,15 @@
77

88
set -eu
99

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-
-DANDROID_PLATFORM=android-23 \
16-
-DEXECUTORCH_BUILD_XNNPACK=ON \
17-
-DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \
18-
-DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \
19-
-DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \
20-
-DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \
21-
-DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \
22-
-DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \
23-
-DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
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 ))
31-
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-
-DANDROID_PLATFORM=android-23 \
38-
-DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \
39-
-DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \
40-
-DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
41-
-DEXECUTORCH_BUILD_LLAMA_JNI=ON \
42-
-DCMAKE_BUILD_TYPE=Release \
43-
-B"${CMAKE_OUT}"/extension/android
44-
45-
cmake --build "${CMAKE_OUT}"/extension/android -j "${CMAKE_JOBS}" --config Release
10+
BASEDIR=$(dirname "$0")
11+
source "$BASEDIR"/../../../../build/build_android_llm_demo.sh
4612

4713
BUILD_AAR_DIR="$(mktemp -d)"
48-
mkdir -p "${BUILD_AAR_DIR}/jni/${ANDROID_ABI}" "${BUILD_AAR_DIR}/libs"
49-
cp "${CMAKE_OUT}"/extension/android/libexecutorch_jni.so "${BUILD_AAR_DIR}/jni/${ANDROID_ABI}/libexecutorch.so"
50-
cp extension/android/build/libs/executorch.jar "${BUILD_AAR_DIR}/libs"
51-
echo \<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" \
52-
package=\"org.pytorch.executorch\"\> \
53-
\<uses-sdk android:minSdkVersion=\"19\" /\> \
54-
\</manifest\> > "${BUILD_AAR_DIR}/AndroidManifest.xml"
55-
pushd "${BUILD_AAR_DIR}"
56-
zip -r executorch-llama.aar libs jni/${ANDROID_ABI} AndroidManifest.xml
57-
popd
58-
mkdir -p examples/demo-apps/android/LlamaDemo/app/libs
59-
mv "${BUILD_AAR_DIR}/executorch-llama.aar" examples/demo-apps/android/LlamaDemo/app/libs
14+
export BUILD_AAR_DIR
15+
16+
build_jar
17+
build_android_native_library "arm64-v8a"
18+
build_android_native_library "x86_64"
19+
build_aar
20+
mkdir -p "$BASEDIR"/app/libs
21+
cp "$BUILD_AAR_DIR/executorch.aar" "$BASEDIR"/app/libs/executorch-llama.aar

0 commit comments

Comments
 (0)