From 8c6bf31c5292d42fafac65898e50f2c015b6ba72 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 23 Nov 2021 12:37:22 -0500 Subject: [PATCH] paralellize android build much better * split up configure step and build step so that build steps goes all at once * update ci to use new build structure for android --- .drone.jsonnet | 2 +- contrib/android-configure.sh | 53 ++++++++++++++++++++++++++++++++++++ contrib/android.sh | 47 ++------------------------------ 3 files changed, 57 insertions(+), 45 deletions(-) create mode 100755 contrib/android-configure.sh diff --git a/.drone.jsonnet b/.drone.jsonnet index 5758d9a57..fed2b0709 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -98,7 +98,7 @@ local apk_builder(name, image, extra_cmds=[], allow_fail=false, jobs=6) = { commands: [ 'VERBOSE=1 JOBS=' + jobs + ' NDK=/usr/lib/android-ndk ./contrib/android.sh', 'git clone https://github.com/oxen-io/lokinet-flutter-app lokinet-mobile', - 'cp -av lokinet-jni-*/* lokinet-mobile/lokinet_lib/android/src/main/jniLibs/', + 'cp -av build-android/out/* lokinet-mobile/lokinet_lib/android/src/main/jniLibs/', 'cd lokinet-mobile', 'flutter build apk --debug', 'cd ..', diff --git a/contrib/android-configure.sh b/contrib/android-configure.sh new file mode 100755 index 000000000..ba6a08a7f --- /dev/null +++ b/contrib/android-configure.sh @@ -0,0 +1,53 @@ +#!/bin/bash +set -e +set +x + +default_abis="armeabi-v7a arm64-v8a x86 x86_64" +build_abis=${ABIS:-$default_abis} + +test x$NDK = x && echo "NDK env var not set" +test x$NDK = x && exit 1 + +echo "building abis: $build_abis" + +root="$(readlink -f $(dirname $0)/../)" +build=$root/build-android +mkdir -p $build +cd $build + +for abi in $build_abis; do + mkdir -p build-$abi + cd build-$abi + cmake \ + -G 'Unix Makefiles' \ + -DANDROID=ON \ + -DANDROID_ABI=$abi \ + -DANDROID_ARM_MODE=arm \ + -DANDROID_PLATFORM=android-23 \ + -DANDROID_STL=c++_static \ + -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \ + -DBUILD_STATIC_DEPS=ON \ + -DBUILD_PACKAGE=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_LIBLOKINET=OFF \ + -DWITH_TESTS=OFF \ + -DNATIVE_BUILD=OFF \ + -DSTATIC_LINK=ON \ + -DWITH_SYSTEMD=OFF \ + -DFORCE_OXENMQ_SUBMODULE=ON \ + -DSUBMODULE_CHECK=OFF \ + -DWITH_LTO=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + $@ $root + cd - +done +rm -f $build/Makefile +echo "# generated makefile" >> $build/Makefile +echo "all: $build_abis" >> $build/Makefile +for abi in $build_abis; do + echo -ne "$abi:\n\t" >> $build/Makefile + echo -ne '$(MAKE) -C ' >> $build/Makefile + echo "build-$abi lokinet-android" >> $build/Makefile + echo -ne "\tmkdir -p out/$abi && cp build-$abi/jni/liblokinet-android.so out/$abi/liblokinet-android.so\n\n" >> $build/Makefile +done diff --git a/contrib/android.sh b/contrib/android.sh index 9dfd64df2..a5d720206 100755 --- a/contrib/android.sh +++ b/contrib/android.sh @@ -2,50 +2,9 @@ set -e set +x -default_abis="armeabi-v7a arm64-v8a x86 x86_64" -build_abis=${ABIS:-$default_abis} - test x$NDK = x && echo "NDK env var not set" test x$NDK = x && exit 1 - -echo "building abis: $build_abis" - root="$(readlink -f $(dirname $0)/../)" -out=$root/lokinet-jni-$(git describe || echo unknown) -mkdir -p $out -mkdir -p $root/build-android -cd $root/build-android - -for abi in $build_abis; do - mkdir -p build-$abi $out/$abi - cd build-$abi - cmake \ - -G 'Unix Makefiles' \ - -DANDROID=ON \ - -DANDROID_ABI=$abi \ - -DANDROID_ARM_MODE=arm \ - -DANDROID_PLATFORM=android-23 \ - -DANDROID_STL=c++_static \ - -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \ - -DBUILD_STATIC_DEPS=ON \ - -DBUILD_PACKAGE=ON \ - -DBUILD_SHARED_LIBS=OFF \ - -DBUILD_TESTING=OFF \ - -DBUILD_LIBLOKINET=OFF \ - -DWITH_TESTS=OFF \ - -DNATIVE_BUILD=OFF \ - -DSTATIC_LINK=ON \ - -DWITH_SYSTEMD=OFF \ - -DFORCE_OXENMQ_SUBMODULE=ON \ - -DSUBMODULE_CHECK=OFF \ - -DWITH_LTO=OFF \ - -DCMAKE_BUILD_TYPE=Release \ - $@ $root - make lokinet-android -j${JOBS:-$(nproc)} - cp jni/liblokinet-android.so $out/$abi/liblokinet-android.so - cd - -done - - -echo -echo "build artifacts outputted to $out" +cd "$root" +./contrib/android-configure.sh $@ +make -C build-android -j ${JOBS:-$(nproc)}