diff options
author | Marat Dukhan <maratek@gmail.com> | 2018-03-18 13:11:26 -0700 |
---|---|---|
committer | Marat Dukhan <maratek@gmail.com> | 2018-03-18 13:11:26 -0700 |
commit | 32e42ef120f10f169953bca565ab441071a8e15a (patch) | |
tree | 93e21f0e8645617a01e9909b16d5cabf8fdae919 /scripts/android-arm64-build.sh | |
parent | bfc32f50caa979719c7e0388bd039f3582bd6e03 (diff) | |
download | cpuinfo-32e42ef120f10f169953bca565ab441071a8e15a.tar.gz |
Switch build and test scripts to CMake
Diffstat (limited to 'scripts/android-arm64-build.sh')
-rwxr-xr-x | scripts/android-arm64-build.sh | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/scripts/android-arm64-build.sh b/scripts/android-arm64-build.sh index 74c71fe..7617294 100755 --- a/scripts/android-arm64-build.sh +++ b/scripts/android-arm64-build.sh @@ -2,12 +2,58 @@ set -e -SYSTEMNAME=`uname` -if [[ "$SYSTEMNAME" == 'Darwin' ]] +if [ -z "$ANDROID_NDK" ] then - PROCESSORS=`sysctl -n hw.ncpu` -else - PROCESSORS=`nproc` + echo "ANDROID_NDK not set; please set it to the Android NDK directory" + exit 1 fi -ndk-build APP_ABI=arm64-v8a -j$PROCESSORS +if [ ! -d "$ANDROID_NDK" ] +then + echo "ANDROID_NDK not a directory; did you install it under ${ANDROID_NDK}?" + exit 1 +fi + +mkdir -p build/android/arm64-v8a + +CMAKE_ARGS=() + +# CMake-level configuration +CMAKE_ARGS+=("-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake") +CMAKE_ARGS+=("-DCMAKE_BUILD_TYPE=Release") +CMAKE_ARGS+=("-DCMAKE_POSITION_INDEPENDENT_CODE=ON") + +# If Ninja is installed, prefer it to Make +if [ -x "$(command -v ninja)" ] +then + CMAKE_ARGS+=("-GNinja") +fi + +CMAKE_ARGS+=("-DCPUINFO_LIBRARY_TYPE=static") +# CMakeLists for Google Benchmark is broken on Android +CMAKE_ARGS+=("-DCPUINFO_BUILD_BENCHMARKS=OFF") +CMAKE_ARGS+=("-DCPUINFO_BUILD_TOOLS=ON") +CMAKE_ARGS+=("-DCPUINFO_BUILD_UNIT_TESTS=ON") +CMAKE_ARGS+=("-DCPUINFO_BUILD_MOCK_TESTS=ON") + +# Android-specific options +CMAKE_ARGS+=("-DANDROID_NDK=$ANDROID_NDK") +CMAKE_ARGS+=("-DANDROID_ABI=arm64-v8a") +CMAKE_ARGS+=("-DANDROID_PLATFORM=android-21") +CMAKE_ARGS+=("-DANDROID_PIE=ON") +CMAKE_ARGS+=("-DANDROID_STL=c++_static") +CMAKE_ARGS+=("-DANDROID_CPP_FEATURES=exceptions") + +# Use-specified CMake arguments go last to allow overridding defaults +CMAKE_ARGS+=($@) + +cd build/android/arm64-v8a && cmake ../../.. \ + "${CMAKE_ARGS[@]}" + +# Cross-platform parallel build +if [ "$(uname)" == "Darwin" ] +then + cmake --build . -- "-j$(sysctl -n hw.ncpu)" +else + cmake --build . -- "-j$(nproc)" +fi |