xref: /aosp_15_r20/external/cpuinfo/scripts/android-x86-build.sh (revision 2b54f0db79fd8303838913b20ff3780cddaa909f)
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