#!/bin/bash set -e BOOST_VERSION=1.74.0 BOOST_VERSION_SUFFIX=1_74 BOOST_LIBS=date_time,filesystem,program_options,system REMOVE_BOOST_LIBS_SUFFIX_x86_64=-clang-mt-x64-${BOOST_VERSION_SUFFIX} REMOVE_BOOST_LIBS_SUFFIX_ARM64=-clang-mt-a64-${BOOST_VERSION_SUFFIX} REMOVE_BOOST_LIBS_SUFFIX_x86=-clang-mt-x32-${BOOST_VERSION_SUFFIX} REMOVE_BOOST_LIBS_SUFFIX_ARM=-clang-mt-a32-${BOOST_VERSION_SUFFIX} function build_one { echo "Configuring and building..." CXXFLAGS="-std=c++14" \ NCPU=$(nproc) \ ./build-android.sh \ --boost=${BOOST_VERSION} \ --arch=${CPU} \ --target-version=${API} \ --with-libraries=${BOOST_LIBS} \ ${ANDROID_NDK_HOME} case "${CPU}" in x86_64) mkdir -p out/{x86_64,include} cp build/out/x86_64/lib/*.a out/${CPU} rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_x86_64}'//' out/x86_64/*.a cp -r build/out/x86_64/include/boost-${BOOST_VERSION_SUFFIX}/boost out/include ;; arm64-v8a) mkdir -p out/{arm64-v8a,include} cp build/out/arm64-v8a/lib/*.a out/${CPU} rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_ARM64}'//' out/arm64-v8a/*.a cp -r build/out/arm64-v8a/include/boost-${BOOST_VERSION_SUFFIX}/boost out/include ;; x86) mkdir -p out/{x86,include} cp build/out/x86/lib/*.a out/${CPU} rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_x86}'//' out/x86/*.a cp -r build/out/x86/include/boost-${BOOST_VERSION_SUFFIX}/boost out/include ;; armeabi-v7a) mkdir -p out/{armeabi-v7a,include} cp build/out/armeabi-v7a/lib/*.a out/${CPU} rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_ARM}'//' out/armeabi-v7a/*.a cp -r build/out/armeabi-v7a/include/boost-${BOOST_VERSION_SUFFIX}/boost out/include ;; *) mkdir -p out/{x86_64,arm64-v8a,x86,armeabi-v7a,include} cp build/out/x86_64/lib/*.a out/x86_64 rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_x86_64}'//' out/x86_64/*.a cp build/out/arm64-v8a/lib/*.a out/arm64-v8a rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_ARM64}'//' out/arm64-v8a/*.a cp build/out/x86/lib/*.a out/x86 rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_x86}'//' out/x86/*.a cp build/out/armeabi-v7a/lib/*.a out/armeabi-v7a rename 's/'${REMOVE_BOOST_LIBS_SUFFIX_ARM}'//' out/armeabi-v7a/*.a cp -r build/out/arm64-v8a/include/boost-${BOOST_VERSION_SUFFIX}/boost out/include ;; esac } function checkPreRequisites { if ! [ -d "boost" ] || ! [ "$(ls -A boost)" ]; then echo -e "\033[31mFailed! Submodule 'boost' not found!\033[0m" echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m" exit fi if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m" exit fi } checkPreRequisites cd boost rm -rf out function build { for arg in "$@"; do case "${arg}" in x86_64) API=21 TARGET=x86_64 build_one ;; arm64) API=21 CPU=arm64-v8a build_one ;; x86) API=16 CPU=x86 build_one ;; arm) API=16 CPU=armeabi-v7a build_one ;; all) API=16 CPU=x86_64,arm64-v8a,x86,armeabi-v7a build_one ;; *) ;; esac done } if (( $# == 0 )); then build all else build $@ fi