@@ -12,11 +12,6 @@ if [[ -z "${PYTHON_EXECUTABLE:-}" ]]; then
12
12
fi
13
13
which " ${PYTHON_EXECUTABLE} "
14
14
15
- copy_src () {
16
- cp -r extension/android/build.gradle extension/android/settings.gradle extension/android/gradlew extension/android/gradle extension/android/gradlew.bat extension/android/gradle.properties " ${BUILD_AAR_DIR} "
17
- cp -r extension/android/executorch_android " ${BUILD_AAR_DIR} /executorch_android"
18
- }
19
-
20
15
build_android_native_library () {
21
16
ANDROID_ABI=" $1 "
22
17
ANDROID_NDK=" ${ANDROID_NDK:-/ opt/ ndk} "
@@ -93,54 +88,53 @@ build_android_native_library() {
93
88
cmake --build " ${CMAKE_OUT} " /extension/android -j " ${CMAKE_JOBS} " --config " ${EXECUTORCH_CMAKE_BUILD_TYPE} "
94
89
95
90
# Copy artifacts to ABI specific directory
96
- mkdir -p " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/${ANDROID_ABI} "
97
- cp " ${CMAKE_OUT} " /extension/android/* .so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/${ANDROID_ABI} /"
91
+ local SO_STAGE_DIR=" cmake-out-android-so/${ANDROID_ABI} "
92
+ mkdir -p ${SO_STAGE_DIR}
93
+ cp " ${CMAKE_OUT} " /extension/android/* .so " ${SO_STAGE_DIR} /libexecutorch.so"
98
94
99
95
# Copy QNN related so library
100
96
if [ -n " $QNN_SDK_ROOT " ] && [ " $ANDROID_ABI " == " arm64-v8a" ]; then
101
- cp " ${CMAKE_OUT} " /lib/libqnn_executorch_backend.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
102
- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtp.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
103
- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnSystem.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
104
- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV69Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
105
- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV73Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
106
- cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV75Stub.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
107
- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v69/unsigned/libQnnHtpV69Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
108
- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v73/unsigned/libQnnHtpV73Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
109
- cp " ${QNN_SDK_ROOT} " /lib/hexagon-v75/unsigned/libQnnHtpV75Skel.so " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} / "
97
+ cp " ${CMAKE_OUT} " /lib/libqnn_executorch_backend.so ${SO_STAGE_DIR}
98
+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtp.so ${SO_STAGE_DIR}
99
+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnSystem.so ${SO_STAGE_DIR}
100
+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV69Stub.so ${SO_STAGE_DIR}
101
+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV73Stub.so ${SO_STAGE_DIR}
102
+ cp " ${QNN_SDK_ROOT} " /lib/aarch64-android/libQnnHtpV75Stub.so ${SO_STAGE_DIR}
103
+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v69/unsigned/libQnnHtpV69Skel.so ${SO_STAGE_DIR}
104
+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v73/unsigned/libQnnHtpV73Skel.so ${SO_STAGE_DIR}
105
+ cp " ${QNN_SDK_ROOT} " /lib/hexagon-v75/unsigned/libQnnHtpV75Skel.so ${SO_STAGE_DIR}
110
106
fi
111
107
112
108
# Copy MTK related so library
113
109
if [ -n " $NEURON_BUFFER_ALLOCATOR_LIB " ] && [ -n " $NEURON_USDK_ADAPTER_LIB " ] && [ " $ANDROID_ABI " == " arm64-v8a" ]; then
114
- cp " ${CMAKE_OUT} " /backends/mediatek/libneuron_backend.so ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} /
115
- cp " ${NEURON_BUFFER_ALLOCATOR_LIB} " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} /
116
- cp " ${NEURON_USDK_ADAPTER_LIB} " ${BUILD_AAR_DIR} /executorch_android/src/main/jniLibs/ ${ANDROID_ABI} /
110
+ cp " ${CMAKE_OUT} " /backends/mediatek/libneuron_backend.so ${SO_STAGE_DIR}
111
+ cp " ${NEURON_BUFFER_ALLOCATOR_LIB} " ${SO_STAGE_DIR}
112
+ cp " ${NEURON_USDK_ADAPTER_LIB} " ${SO_STAGE_DIR}
117
113
fi
118
114
}
119
115
120
116
build_aar () {
121
- pushd " ${BUILD_AAR_DIR} "
122
- # Rename libexecutorch_jni.so to libexecutorch.so for soname consistency
123
- # between Java and JNI
124
- find . -type f -name " libexecutorch_jni.so" -exec bash -c ' mv "$1" "${1/_jni/}"' bash {} \;
125
117
if [ " $EXECUTORCH_CMAKE_BUILD_TYPE " == " Release" ]; then
126
- find . -type f -name " *.so" -exec " $ANDROID_NDK " /toolchains/llvm/prebuilt/* /bin/llvm-strip {} \;
118
+ find cmake-out-android-so -type f -name " *.so" -exec " $ANDROID_NDK " /toolchains/llvm/prebuilt/* /bin/llvm-strip {} \;
127
119
fi
120
+ pushd extension/android/
128
121
ANDROID_HOME=" ${ANDROID_SDK:-/ opt/ android/ sdk} " ./gradlew build
129
- cp executorch_android/build/outputs/aar/executorch_android-debug.aar executorch.aar
130
122
popd
123
+ cp extension/android/executorch_android/build/outputs/aar/executorch_android-debug.aar " ${BUILD_AAR_DIR} /executorch.aar"
131
124
}
132
125
133
126
main () {
134
127
if [[ -z " ${BUILD_AAR_DIR:- } " ]]; then
135
128
BUILD_AAR_DIR=" $( mktemp -d) "
136
129
fi
137
130
export BUILD_AAR_DIR
131
+ mkdir -p $BUILD_AAR_DIR
138
132
if [ -z " $ANDROID_ABIS " ]; then
139
133
ANDROID_ABIS=(" arm64-v8a" " x86_64" )
140
134
fi
141
135
export ANDROID_ABIS
142
136
143
- copy_src
137
+ mkdir -p cmake-out-android-so/
144
138
for ANDROID_ABI in " ${ANDROID_ABIS[@]} " ; do
145
139
build_android_native_library ${ANDROID_ABI}
146
140
done
0 commit comments