@@ -12,11 +12,6 @@ if [[ -z "${PYTHON_EXECUTABLE:-}" ]]; then
1212fi
1313which " ${PYTHON_EXECUTABLE} "
1414
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-
2015build_android_native_library () {
2116 ANDROID_ABI=" $1 "
2217 ANDROID_NDK=" ${ANDROID_NDK:-/ opt/ ndk} "
@@ -93,54 +88,53 @@ build_android_native_library() {
9388 cmake --build " ${CMAKE_OUT} " /extension/android -j " ${CMAKE_JOBS} " --config " ${EXECUTORCH_CMAKE_BUILD_TYPE} "
9489
9590 # 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"
9894
9995 # Copy QNN related so library
10096 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}
110106 fi
111107
112108 # Copy MTK related so library
113109 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}
117113 fi
118114}
119115
120116build_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 {} \;
125117 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 {} \;
127119 fi
120+ pushd extension/android/
128121 ANDROID_HOME=" ${ANDROID_SDK:-/ opt/ android/ sdk} " ./gradlew build
129- cp executorch_android/build/outputs/aar/executorch_android-debug.aar executorch.aar
130122 popd
123+ cp extension/android/executorch_android/build/outputs/aar/executorch_android-debug.aar " ${BUILD_AAR_DIR} /executorch.aar"
131124}
132125
133126main () {
134127 if [[ -z " ${BUILD_AAR_DIR:- } " ]]; then
135128 BUILD_AAR_DIR=" $( mktemp -d) "
136129 fi
137130 export BUILD_AAR_DIR
131+ mkdir -p $BUILD_AAR_DIR
138132 if [ -z " $ANDROID_ABIS " ]; then
139133 ANDROID_ABIS=(" arm64-v8a" " x86_64" )
140134 fi
141135 export ANDROID_ABIS
142136
143- copy_src
137+ mkdir -p cmake-out-android-so/
144138 for ANDROID_ABI in " ${ANDROID_ABIS[@]} " ; do
145139 build_android_native_library ${ANDROID_ABI}
146140 done
0 commit comments