#!/usr/bin/env bash set -e if [ -z "$ANDROID_NDK" ] then echo "ANDROID_NDK not set; please set it to the Android NDK directory" exit 1 fi 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/x86 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=x86") CMAKE_ARGS+=("-DANDROID_PLATFORM=android-14") 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/x86 && cmake ../../.. \ "${CMAKE_ARGS[@]}" # Cross-platform parallel build if [ "$(uname)" == "Darwin" ] then cmake --build . -- "-j$(sysctl -n hw.ncpu)" else cmake --build . -- "-j$(nproc)" fi