1*2b54f0dbSXin Li#!/usr/bin/env bash 2*2b54f0dbSXin Li 3*2b54f0dbSXin Liset -e 4*2b54f0dbSXin Li 5*2b54f0dbSXin Liif [ -z "$ANDROID_NDK" ] 6*2b54f0dbSXin Lithen 7*2b54f0dbSXin Li echo "ANDROID_NDK not set; please set it to the Android NDK directory" 8*2b54f0dbSXin Li exit 1 9*2b54f0dbSXin Lifi 10*2b54f0dbSXin Li 11*2b54f0dbSXin Liif [ ! -d "$ANDROID_NDK" ] 12*2b54f0dbSXin Lithen 13*2b54f0dbSXin Li echo "ANDROID_NDK not a directory; did you install it under ${ANDROID_NDK}?" 14*2b54f0dbSXin Li exit 1 15*2b54f0dbSXin Lifi 16*2b54f0dbSXin Li 17*2b54f0dbSXin Limkdir -p build/android/x86 18*2b54f0dbSXin Li 19*2b54f0dbSXin LiCMAKE_ARGS=() 20*2b54f0dbSXin Li 21*2b54f0dbSXin Li# CMake-level configuration 22*2b54f0dbSXin LiCMAKE_ARGS+=("-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake") 23*2b54f0dbSXin LiCMAKE_ARGS+=("-DCMAKE_BUILD_TYPE=Release") 24*2b54f0dbSXin LiCMAKE_ARGS+=("-DCMAKE_POSITION_INDEPENDENT_CODE=ON") 25*2b54f0dbSXin Li 26*2b54f0dbSXin Li# If Ninja is installed, prefer it to Make 27*2b54f0dbSXin Liif [ -x "$(command -v ninja)" ] 28*2b54f0dbSXin Lithen 29*2b54f0dbSXin Li CMAKE_ARGS+=("-GNinja") 30*2b54f0dbSXin Lifi 31*2b54f0dbSXin Li 32*2b54f0dbSXin LiCMAKE_ARGS+=("-DCPUINFO_LIBRARY_TYPE=static") 33*2b54f0dbSXin Li# CMakeLists for Google Benchmark is broken on Android 34*2b54f0dbSXin LiCMAKE_ARGS+=("-DCPUINFO_BUILD_BENCHMARKS=OFF") 35*2b54f0dbSXin LiCMAKE_ARGS+=("-DCPUINFO_BUILD_TOOLS=ON") 36*2b54f0dbSXin LiCMAKE_ARGS+=("-DCPUINFO_BUILD_UNIT_TESTS=ON") 37*2b54f0dbSXin LiCMAKE_ARGS+=("-DCPUINFO_BUILD_MOCK_TESTS=ON") 38*2b54f0dbSXin Li 39*2b54f0dbSXin Li# Android-specific options 40*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_NDK=$ANDROID_NDK") 41*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_ABI=x86") 42*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_PLATFORM=android-14") 43*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_PIE=ON") 44*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_STL=c++_static") 45*2b54f0dbSXin LiCMAKE_ARGS+=("-DANDROID_CPP_FEATURES=exceptions") 46*2b54f0dbSXin Li 47*2b54f0dbSXin Li# Use-specified CMake arguments go last to allow overridding defaults 48*2b54f0dbSXin LiCMAKE_ARGS+=($@) 49*2b54f0dbSXin Li 50*2b54f0dbSXin Licd build/android/x86 && cmake ../../.. \ 51*2b54f0dbSXin Li "${CMAKE_ARGS[@]}" 52*2b54f0dbSXin Li 53*2b54f0dbSXin Li# Cross-platform parallel build 54*2b54f0dbSXin Liif [ "$(uname)" == "Darwin" ] 55*2b54f0dbSXin Lithen 56*2b54f0dbSXin Li cmake --build . -- "-j$(sysctl -n hw.ncpu)" 57*2b54f0dbSXin Lielse 58*2b54f0dbSXin Li cmake --build . -- "-j$(nproc)" 59*2b54f0dbSXin Lifi 60