Android custom lib (#5501)
Summary:
1. Clean up the file to group all deps libs together.
2. Add an option `EXECUTORCH_JNI_CUSTOM_LIBRARY` for user to pass in their own library.
Example:
```
echo "int my_function() { return 0; }" > my_source.cpp
echo "int my_function2() { return 0; }" > my_source2.cpp
${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android27-clang -c my_source.cpp -o file1.o
${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android27-clang -c my_source2.cpp -o file2.o
ar rcs libmystaticlib.a file1.o
ar rcs libmystaticlib2.a file2.o
rm my_source.cpp my_source2.cpp file1.o file2.o
cmake extension/android \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-23 \
-DCMAKE_INSTALL_PREFIX=cmake-out-android-arm64-v8a \
-DEXECUTORCH_ENABLE_LOGGING=ON \
-DEXECUTORCH_LOG_LEVEL=Info \
-DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
-DEXECUTORCH_BUILD_LLAMA_JNI=ON \
-DEXECUTORCH_JNI_CUSTOM_LIBRARY="/home/hsz/executorch/libmystaticlib.a;/home/hsz/executorch/libmystaticlib2.a" \
-DCMAKE_BUILD_TYPE=Release \
-Bcmake-out-android-arm64-v8a/extension/android
cmake --build cmake-out-android-arm64-v8a/extension/android -j 10 --config Release
nm -gDC ./cmake-out-android-arm64-v8a/extension/android/libexecutorch_jni.so | grep my_function
```
Pull Request resolved: https://github.com/pytorch/executorch/pull/5501
Reviewed By: shoumikhin
Differential Revision: D63057835
Pulled By: kirklandsign
fbshipit-source-id: 000e493568db878c50ba85f72ad1ec3a48182a9f H
Hansong Zhang committed
a9f3f810df5f63d6dc1f4b09c149f08b91130f40
Parent: 3512148
Committed by Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
on 9/20/2024, 2:33:48 AM