aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <maratek@gmail.com>2018-03-18 13:11:26 -0700
committerMarat Dukhan <maratek@gmail.com>2018-03-18 13:11:26 -0700
commit32e42ef120f10f169953bca565ab441071a8e15a (patch)
tree93e21f0e8645617a01e9909b16d5cabf8fdae919
parentbfc32f50caa979719c7e0388bd039f3582bd6e03 (diff)
downloadcpuinfo-32e42ef120f10f169953bca565ab441071a8e15a.tar.gz
Switch build and test scripts to CMake
-rwxr-xr-xscripts/android-arm64-auxv-dump.sh2
-rwxr-xr-xscripts/android-arm64-build.sh58
-rwxr-xr-xscripts/android-arm64-mock.sh68
-rwxr-xr-xscripts/android-arm64-test.sh6
-rwxr-xr-xscripts/android-armv7-auxv-dump.sh2
-rwxr-xr-xscripts/android-armv7-build.sh58
-rwxr-xr-xscripts/android-armv7-cache-info.sh2
-rwxr-xr-xscripts/android-armv7-cpu-info.sh2
-rwxr-xr-xscripts/android-armv7-isa-info.sh2
-rwxr-xr-xscripts/android-armv7-mock.sh136
-rwxr-xr-xscripts/android-armv7-test.sh6
-rwxr-xr-xscripts/android-x86-build.sh58
-rwxr-xr-xscripts/android-x86-cache-info.sh2
-rwxr-xr-xscripts/android-x86-cpu-info.sh2
-rwxr-xr-xscripts/android-x86-isa-info.sh2
-rwxr-xr-xscripts/android-x86-mock.sh10
16 files changed, 277 insertions, 139 deletions
diff --git a/scripts/android-arm64-auxv-dump.sh b/scripts/android-arm64-auxv-dump.sh
index 6c3a0be..4ee54d0 100755
--- a/scripts/android-arm64-auxv-dump.sh
+++ b/scripts/android-arm64-auxv-dump.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/arm64-v8a/auxv-dump /data/local/tmp/auxv-dump
+adb push build/android/arm64-v8a/auxv-dump /data/local/tmp/auxv-dump
adb shell /data/local/tmp/auxv-dump
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
diff --git a/scripts/android-arm64-mock.sh b/scripts/android-arm64-mock.sh
index b16b72c..111e00c 100755
--- a/scripts/android-arm64-mock.sh
+++ b/scripts/android-arm64-mock.sh
@@ -2,40 +2,40 @@
set -e
-adb push libs/arm64-v8a/alcatel-revvl-test /data/local/tmp/alcatel-revvl-test
-adb push libs/arm64-v8a/galaxy-a8-2018-test /data/local/tmp/galaxy-a8-2018-test
-adb push libs/arm64-v8a/galaxy-c9-pro-test /data/local/tmp/galaxy-c9-pro-test
-adb push libs/arm64-v8a/galaxy-s6-test /data/local/tmp/galaxy-s6-test
-adb push libs/arm64-v8a/galaxy-s7-global-test /data/local/tmp/galaxy-s7-global-test
-adb push libs/arm64-v8a/galaxy-s7-us-test /data/local/tmp/galaxy-s7-us-test
-adb push libs/arm64-v8a/galaxy-s8-global-test /data/local/tmp/galaxy-s8-global-test
-adb push libs/arm64-v8a/galaxy-s8-us-test /data/local/tmp/galaxy-s8-us-test
-adb push libs/arm64-v8a/galaxy-s9-us-test /data/local/tmp/galaxy-s9-us-test
-adb push libs/arm64-v8a/huawei-mate-8-test /data/local/tmp/huawei-mate-8-test
-adb push libs/arm64-v8a/huawei-mate-9-test /data/local/tmp/huawei-mate-9-test
-adb push libs/arm64-v8a/huawei-mate-10-test /data/local/tmp/huawei-mate-10-test
-adb push libs/arm64-v8a/huawei-p8-lite-test /data/local/tmp/huawei-p8-lite-test
-adb push libs/arm64-v8a/huawei-p9-lite-test /data/local/tmp/huawei-p9-lite-test
-adb push libs/arm64-v8a/iconia-one-10-test /data/local/tmp/iconia-one-10-test
-adb push libs/arm64-v8a/meizu-pro-6-test /data/local/tmp/meizu-pro-6-test
-adb push libs/arm64-v8a/meizu-pro-6s-test /data/local/tmp/meizu-pro-6s-test
-adb push libs/arm64-v8a/meizu-pro-7-plus-test /data/local/tmp/meizu-pro-7-plus-test
-adb push libs/arm64-v8a/nexus5x-test /data/local/tmp/nexus5x-test
-adb push libs/arm64-v8a/nexus6p-test /data/local/tmp/nexus6p-test
-adb push libs/arm64-v8a/nexus9-test /data/local/tmp/nexus9-test
-adb push libs/arm64-v8a/oneplus-3t-test /data/local/tmp/oneplus-3t-test
-adb push libs/arm64-v8a/oneplus-5-test /data/local/tmp/oneplus-5-test
-adb push libs/arm64-v8a/oneplus-5t-test /data/local/tmp/oneplus-5t-test
-adb push libs/arm64-v8a/oppo-a37-test /data/local/tmp/oppo-a37-test
-adb push libs/arm64-v8a/oppo-r9-test /data/local/tmp/oppo-r9-test
-adb push libs/arm64-v8a/pixel-c-test /data/local/tmp/pixel-c-test
-adb push libs/arm64-v8a/pixel-xl-test /data/local/tmp/pixel-xl-test
-adb push libs/arm64-v8a/pixel-test /data/local/tmp/pixel-test
-adb push libs/arm64-v8a/pixel-2-xl-test /data/local/tmp/pixel-2-xl-test
-adb push libs/arm64-v8a/xiaomi-mi-5c-test /data/local/tmp/xiaomi-mi-5c-test
-adb push libs/arm64-v8a/xiaomi-redmi-note-3-test /data/local/tmp/xiaomi-redmi-note-3-test
-adb push libs/arm64-v8a/xiaomi-redmi-note-4-test /data/local/tmp/xiaomi-redmi-note-4-test
-adb push libs/arm64-v8a/xperia-c4-dual-test /data/local/tmp/xperia-c4-dual-test
+adb push build/android/arm64-v8a/alcatel-revvl-test /data/local/tmp/alcatel-revvl-test
+adb push build/android/arm64-v8a/galaxy-a8-2018-test /data/local/tmp/galaxy-a8-2018-test
+adb push build/android/arm64-v8a/galaxy-c9-pro-test /data/local/tmp/galaxy-c9-pro-test
+adb push build/android/arm64-v8a/galaxy-s6-test /data/local/tmp/galaxy-s6-test
+adb push build/android/arm64-v8a/galaxy-s7-global-test /data/local/tmp/galaxy-s7-global-test
+adb push build/android/arm64-v8a/galaxy-s7-us-test /data/local/tmp/galaxy-s7-us-test
+adb push build/android/arm64-v8a/galaxy-s8-global-test /data/local/tmp/galaxy-s8-global-test
+adb push build/android/arm64-v8a/galaxy-s8-us-test /data/local/tmp/galaxy-s8-us-test
+adb push build/android/arm64-v8a/galaxy-s9-us-test /data/local/tmp/galaxy-s9-us-test
+adb push build/android/arm64-v8a/huawei-mate-8-test /data/local/tmp/huawei-mate-8-test
+adb push build/android/arm64-v8a/huawei-mate-9-test /data/local/tmp/huawei-mate-9-test
+adb push build/android/arm64-v8a/huawei-mate-10-test /data/local/tmp/huawei-mate-10-test
+adb push build/android/arm64-v8a/huawei-p8-lite-test /data/local/tmp/huawei-p8-lite-test
+adb push build/android/arm64-v8a/huawei-p9-lite-test /data/local/tmp/huawei-p9-lite-test
+adb push build/android/arm64-v8a/iconia-one-10-test /data/local/tmp/iconia-one-10-test
+adb push build/android/arm64-v8a/meizu-pro-6-test /data/local/tmp/meizu-pro-6-test
+adb push build/android/arm64-v8a/meizu-pro-6s-test /data/local/tmp/meizu-pro-6s-test
+adb push build/android/arm64-v8a/meizu-pro-7-plus-test /data/local/tmp/meizu-pro-7-plus-test
+adb push build/android/arm64-v8a/nexus5x-test /data/local/tmp/nexus5x-test
+adb push build/android/arm64-v8a/nexus6p-test /data/local/tmp/nexus6p-test
+adb push build/android/arm64-v8a/nexus9-test /data/local/tmp/nexus9-test
+adb push build/android/arm64-v8a/oneplus-3t-test /data/local/tmp/oneplus-3t-test
+adb push build/android/arm64-v8a/oneplus-5-test /data/local/tmp/oneplus-5-test
+adb push build/android/arm64-v8a/oneplus-5t-test /data/local/tmp/oneplus-5t-test
+adb push build/android/arm64-v8a/oppo-a37-test /data/local/tmp/oppo-a37-test
+adb push build/android/arm64-v8a/oppo-r9-test /data/local/tmp/oppo-r9-test
+adb push build/android/arm64-v8a/pixel-c-test /data/local/tmp/pixel-c-test
+adb push build/android/arm64-v8a/pixel-xl-test /data/local/tmp/pixel-xl-test
+adb push build/android/arm64-v8a/pixel-test /data/local/tmp/pixel-test
+adb push build/android/arm64-v8a/pixel-2-xl-test /data/local/tmp/pixel-2-xl-test
+adb push build/android/arm64-v8a/xiaomi-mi-5c-test /data/local/tmp/xiaomi-mi-5c-test
+adb push build/android/arm64-v8a/xiaomi-redmi-note-3-test /data/local/tmp/xiaomi-redmi-note-3-test
+adb push build/android/arm64-v8a/xiaomi-redmi-note-4-test /data/local/tmp/xiaomi-redmi-note-4-test
+adb push build/android/arm64-v8a/xperia-c4-dual-test /data/local/tmp/xperia-c4-dual-test
adb shell "/data/local/tmp/alcatel-revvl-test --gtest_color=yes"
adb shell "/data/local/tmp/galaxy-a8-2018-test --gtest_color=yes"
diff --git a/scripts/android-arm64-test.sh b/scripts/android-arm64-test.sh
index 00479b9..a680342 100755
--- a/scripts/android-arm64-test.sh
+++ b/scripts/android-arm64-test.sh
@@ -2,9 +2,9 @@
set -e
-adb push libs/arm64-v8a/init-test /data/local/tmp/init-test
-adb push libs/arm64-v8a/cache-test /data/local/tmp/cache-test
-adb push libs/arm64-v8a/chipset-test /data/local/tmp/chipset-test
+adb push build/android/arm64-v8a/init-test /data/local/tmp/init-test
+adb push build/android/arm64-v8a/cache-test /data/local/tmp/cache-test
+adb push build/android/arm64-v8a/chipset-test /data/local/tmp/chipset-test
adb shell /data/local/tmp/init-test --gtest_color=yes
adb shell /data/local/tmp/cache-test --gtest_color=yes
adb shell /data/local/tmp/chipset-test --gtest_color=yes
diff --git a/scripts/android-armv7-auxv-dump.sh b/scripts/android-armv7-auxv-dump.sh
index 34c8eef..4a4ec92 100755
--- a/scripts/android-armv7-auxv-dump.sh
+++ b/scripts/android-armv7-auxv-dump.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/armeabi-v7a/auxv-dump /data/local/tmp/auxv-dump
+adb push build/android/armeabi-v7a/auxv-dump /data/local/tmp/auxv-dump
adb shell /data/local/tmp/auxv-dump
diff --git a/scripts/android-armv7-build.sh b/scripts/android-armv7-build.sh
index 094e9eb..0d7ed06 100755
--- a/scripts/android-armv7-build.sh
+++ b/scripts/android-armv7-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=armeabi-v7a -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/armeabi-v7a
+
+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=armeabi-v7a")
+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/armeabi-v7a && cmake ../../.. \
+ "${CMAKE_ARGS[@]}"
+
+# Cross-platform parallel build
+if [ "$(uname)" == "Darwin" ]
+then
+ cmake --build . -- "-j$(sysctl -n hw.ncpu)"
+else
+ cmake --build . -- "-j$(nproc)"
+fi
diff --git a/scripts/android-armv7-cache-info.sh b/scripts/android-armv7-cache-info.sh
index ab1313e..484e56f 100755
--- a/scripts/android-armv7-cache-info.sh
+++ b/scripts/android-armv7-cache-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/armeabi-v7a/cache-info /data/local/tmp/cache-info
+adb push build/android/armeabi-v7a/cache-info /data/local/tmp/cache-info
adb shell /data/local/tmp/cache-info
diff --git a/scripts/android-armv7-cpu-info.sh b/scripts/android-armv7-cpu-info.sh
index cd7d885..7c1d501 100755
--- a/scripts/android-armv7-cpu-info.sh
+++ b/scripts/android-armv7-cpu-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/armeabi-v7a/cpu-info /data/local/tmp/cpu-info
+adb push build/android/armeabi-v7a/cpu-info /data/local/tmp/cpu-info
adb shell /data/local/tmp/cpu-info
diff --git a/scripts/android-armv7-isa-info.sh b/scripts/android-armv7-isa-info.sh
index 7b0176a..4dd5efe 100755
--- a/scripts/android-armv7-isa-info.sh
+++ b/scripts/android-armv7-isa-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/armeabi-v7a/isa-info /data/local/tmp/isa-info
+adb push build/android/armeabi-v7a/isa-info /data/local/tmp/isa-info
adb shell /data/local/tmp/isa-info
diff --git a/scripts/android-armv7-mock.sh b/scripts/android-armv7-mock.sh
index eeeb9fe..31f32a9 100755
--- a/scripts/android-armv7-mock.sh
+++ b/scripts/android-armv7-mock.sh
@@ -2,74 +2,74 @@
set -e
-adb push libs/armeabi-v7a/alcatel-revvl-test /data/local/tmp/alcatel-revvl-test
-adb push libs/armeabi-v7a/atm7029b-tablet-test /data/local/tmp/atm7029b-tablet-test
-adb push libs/armeabi-v7a/blu-r1-hd-test /data/local/tmp/blu-r1-hd-test
-adb push libs/armeabi-v7a/galaxy-a3-2016-eu-test /data/local/tmp/galaxy-a3-2016-eu-test
-adb push libs/armeabi-v7a/galaxy-a8-2016-duos-test /data/local/tmp/galaxy-a8-2016-duos-test
-adb push libs/armeabi-v7a/galaxy-a8-2018-test /data/local/tmp/galaxy-a8-2018-test
-adb push libs/armeabi-v7a/galaxy-c9-pro-test /data/local/tmp/galaxy-c9-pro-test
-adb push libs/armeabi-v7a/galaxy-grand-prime-value-edition-test /data/local/tmp/galaxy-grand-prime-value-edition-test
-adb push libs/armeabi-v7a/galaxy-j1-2016-test /data/local/tmp/galaxy-j1-2016-test
-adb push libs/armeabi-v7a/galaxy-j5-test /data/local/tmp/galaxy-j5-test
-adb push libs/armeabi-v7a/galaxy-j7-prime-test /data/local/tmp/galaxy-j7-prime-test
-adb push libs/armeabi-v7a/galaxy-j7-tmobile-test /data/local/tmp/galaxy-j7-tmobile-test
-adb push libs/armeabi-v7a/galaxy-j7-uae-test /data/local/tmp/galaxy-j7-uae-test
-adb push libs/armeabi-v7a/galaxy-s3-us-test /data/local/tmp/galaxy-s3-us-test
-adb push libs/armeabi-v7a/galaxy-s4-us-test /data/local/tmp/galaxy-s4-us-test
-adb push libs/armeabi-v7a/galaxy-s5-global-test /data/local/tmp/galaxy-s5-global-test
-adb push libs/armeabi-v7a/galaxy-s5-us-test /data/local/tmp/galaxy-s5-us-test
-adb push libs/armeabi-v7a/galaxy-s6-test /data/local/tmp/galaxy-s6-test
-adb push libs/armeabi-v7a/galaxy-s7-global-test /data/local/tmp/galaxy-s7-global-test
-adb push libs/armeabi-v7a/galaxy-s7-us-test /data/local/tmp/galaxy-s7-us-test
-adb push libs/armeabi-v7a/galaxy-s8-global-test /data/local/tmp/galaxy-s8-global-test
-adb push libs/armeabi-v7a/galaxy-s8-us-test /data/local/tmp/galaxy-s8-us-test
-adb push libs/armeabi-v7a/galaxy-s9-us-test /data/local/tmp/galaxy-s9-us-test
-adb push libs/armeabi-v7a/galaxy-tab-3-7.0-test /data/local/tmp/galaxy-tab-3-7.0-test
-adb push libs/armeabi-v7a/galaxy-tab-3-lite-test /data/local/tmp/galaxy-tab-3-lite-test
-adb push libs/armeabi-v7a/galaxy-win-duos-test /data/local/tmp/galaxy-win-duos-test
-adb push libs/armeabi-v7a/huawei-ascend-p7-test /data/local/tmp/huawei-ascend-p7-test
-adb push libs/armeabi-v7a/huawei-mate-8-test /data/local/tmp/huawei-mate-8-test
-adb push libs/armeabi-v7a/huawei-mate-9-test /data/local/tmp/huawei-mate-9-test
-adb push libs/armeabi-v7a/huawei-mate-10-test /data/local/tmp/huawei-mate-10-test
-adb push libs/armeabi-v7a/huawei-p8-lite-test /data/local/tmp/huawei-p8-lite-test
-adb push libs/armeabi-v7a/huawei-p9-lite-test /data/local/tmp/huawei-p9-lite-test
-adb push libs/armeabi-v7a/iconia-one-10-test /data/local/tmp/iconia-one-10-test
-adb push libs/armeabi-v7a/lenovo-a6600-plus-test /data/local/tmp/lenovo-a6600-plus-test
-adb push libs/armeabi-v7a/lenovo-vibe-x2-test /data/local/tmp/lenovo-vibe-x2-test
-adb push libs/armeabi-v7a/lg-k10-eu-test /data/local/tmp/lg-k10-eu-test
-adb push libs/armeabi-v7a/lg-optimus-g-pro-test /data/local/tmp/lg-optimus-g-pro-test
-adb push libs/armeabi-v7a/meizu-pro-6-test /data/local/tmp/meizu-pro-6-test
-adb push libs/armeabi-v7a/meizu-pro-6s-test /data/local/tmp/meizu-pro-6s-test
-adb push libs/armeabi-v7a/meizu-pro-7-plus-test /data/local/tmp/meizu-pro-7-plus-test
-adb push libs/armeabi-v7a/moto-e-gen1-test /data/local/tmp/moto-e-gen1-test
-adb push libs/armeabi-v7a/moto-g-gen1-test /data/local/tmp/moto-g-gen1-test
-adb push libs/armeabi-v7a/moto-g-gen2-test /data/local/tmp/moto-g-gen2-test
-adb push libs/armeabi-v7a/moto-g-gen3-test /data/local/tmp/moto-g-gen3-test
-adb push libs/armeabi-v7a/moto-g-gen4-test /data/local/tmp/moto-g-gen4-test
-adb push libs/armeabi-v7a/nexus-s-test /data/local/tmp/nexus-s-test
-adb push libs/armeabi-v7a/nexus4-test /data/local/tmp/nexus4-test
-adb push libs/armeabi-v7a/nexus5x-test /data/local/tmp/nexus5x-test
-adb push libs/armeabi-v7a/nexus6-test /data/local/tmp/nexus6-test
-adb push libs/armeabi-v7a/nexus6p-test /data/local/tmp/nexus6p-test
-adb push libs/armeabi-v7a/nexus9-test /data/local/tmp/nexus9-test
-adb push libs/armeabi-v7a/nexus10-test /data/local/tmp/nexus10-test
-adb push libs/armeabi-v7a/oneplus-3t-test /data/local/tmp/oneplus-3t-test
-adb push libs/armeabi-v7a/oneplus-5-test /data/local/tmp/oneplus-5-test
-adb push libs/armeabi-v7a/oneplus-5t-test /data/local/tmp/oneplus-5t-test
-adb push libs/armeabi-v7a/oppo-a37-test /data/local/tmp/oppo-a37-test
-adb push libs/armeabi-v7a/oppo-r9-test /data/local/tmp/oppo-r9-test
-adb push libs/armeabi-v7a/padcod-10.1-test /data/local/tmp/padcod-10.1-test
-adb push libs/armeabi-v7a/pixel-c-test /data/local/tmp/pixel-c-test
-adb push libs/armeabi-v7a/pixel-xl-test /data/local/tmp/pixel-xl-test
-adb push libs/armeabi-v7a/pixel-test /data/local/tmp/pixel-test
-adb push libs/armeabi-v7a/pixel-2-xl-test /data/local/tmp/pixel-2-xl-test
-adb push libs/armeabi-v7a/xiaomi-mi-5c-test /data/local/tmp/xiaomi-mi-5c-test
-adb push libs/armeabi-v7a/xiaomi-redmi-2a-test /data/local/tmp/xiaomi-redmi-2a-test
-adb push libs/armeabi-v7a/xiaomi-redmi-note-3-test /data/local/tmp/xiaomi-redmi-note-3-test
-adb push libs/armeabi-v7a/xiaomi-redmi-note-4-test /data/local/tmp/xiaomi-redmi-note-4-test
-adb push libs/armeabi-v7a/xperia-c4-dual-test /data/local/tmp/xperia-c4-dual-test
-adb push libs/armeabi-v7a/xperia-sl-test /data/local/tmp/xperia-sl-test
+adb push build/android/armeabi-v7a/alcatel-revvl-test /data/local/tmp/alcatel-revvl-test
+adb push build/android/armeabi-v7a/atm7029b-tablet-test /data/local/tmp/atm7029b-tablet-test
+adb push build/android/armeabi-v7a/blu-r1-hd-test /data/local/tmp/blu-r1-hd-test
+adb push build/android/armeabi-v7a/galaxy-a3-2016-eu-test /data/local/tmp/galaxy-a3-2016-eu-test
+adb push build/android/armeabi-v7a/galaxy-a8-2016-duos-test /data/local/tmp/galaxy-a8-2016-duos-test
+adb push build/android/armeabi-v7a/galaxy-a8-2018-test /data/local/tmp/galaxy-a8-2018-test
+adb push build/android/armeabi-v7a/galaxy-c9-pro-test /data/local/tmp/galaxy-c9-pro-test
+adb push build/android/armeabi-v7a/galaxy-grand-prime-value-edition-test /data/local/tmp/galaxy-grand-prime-value-edition-test
+adb push build/android/armeabi-v7a/galaxy-j1-2016-test /data/local/tmp/galaxy-j1-2016-test
+adb push build/android/armeabi-v7a/galaxy-j5-test /data/local/tmp/galaxy-j5-test
+adb push build/android/armeabi-v7a/galaxy-j7-prime-test /data/local/tmp/galaxy-j7-prime-test
+adb push build/android/armeabi-v7a/galaxy-j7-tmobile-test /data/local/tmp/galaxy-j7-tmobile-test
+adb push build/android/armeabi-v7a/galaxy-j7-uae-test /data/local/tmp/galaxy-j7-uae-test
+adb push build/android/armeabi-v7a/galaxy-s3-us-test /data/local/tmp/galaxy-s3-us-test
+adb push build/android/armeabi-v7a/galaxy-s4-us-test /data/local/tmp/galaxy-s4-us-test
+adb push build/android/armeabi-v7a/galaxy-s5-global-test /data/local/tmp/galaxy-s5-global-test
+adb push build/android/armeabi-v7a/galaxy-s5-us-test /data/local/tmp/galaxy-s5-us-test
+adb push build/android/armeabi-v7a/galaxy-s6-test /data/local/tmp/galaxy-s6-test
+adb push build/android/armeabi-v7a/galaxy-s7-global-test /data/local/tmp/galaxy-s7-global-test
+adb push build/android/armeabi-v7a/galaxy-s7-us-test /data/local/tmp/galaxy-s7-us-test
+adb push build/android/armeabi-v7a/galaxy-s8-global-test /data/local/tmp/galaxy-s8-global-test
+adb push build/android/armeabi-v7a/galaxy-s8-us-test /data/local/tmp/galaxy-s8-us-test
+adb push build/android/armeabi-v7a/galaxy-s9-us-test /data/local/tmp/galaxy-s9-us-test
+adb push build/android/armeabi-v7a/galaxy-tab-3-7.0-test /data/local/tmp/galaxy-tab-3-7.0-test
+adb push build/android/armeabi-v7a/galaxy-tab-3-lite-test /data/local/tmp/galaxy-tab-3-lite-test
+adb push build/android/armeabi-v7a/galaxy-win-duos-test /data/local/tmp/galaxy-win-duos-test
+adb push build/android/armeabi-v7a/huawei-ascend-p7-test /data/local/tmp/huawei-ascend-p7-test
+adb push build/android/armeabi-v7a/huawei-mate-8-test /data/local/tmp/huawei-mate-8-test
+adb push build/android/armeabi-v7a/huawei-mate-9-test /data/local/tmp/huawei-mate-9-test
+adb push build/android/armeabi-v7a/huawei-mate-10-test /data/local/tmp/huawei-mate-10-test
+adb push build/android/armeabi-v7a/huawei-p8-lite-test /data/local/tmp/huawei-p8-lite-test
+adb push build/android/armeabi-v7a/huawei-p9-lite-test /data/local/tmp/huawei-p9-lite-test
+adb push build/android/armeabi-v7a/iconia-one-10-test /data/local/tmp/iconia-one-10-test
+adb push build/android/armeabi-v7a/lenovo-a6600-plus-test /data/local/tmp/lenovo-a6600-plus-test
+adb push build/android/armeabi-v7a/lenovo-vibe-x2-test /data/local/tmp/lenovo-vibe-x2-test
+adb push build/android/armeabi-v7a/lg-k10-eu-test /data/local/tmp/lg-k10-eu-test
+adb push build/android/armeabi-v7a/lg-optimus-g-pro-test /data/local/tmp/lg-optimus-g-pro-test
+adb push build/android/armeabi-v7a/meizu-pro-6-test /data/local/tmp/meizu-pro-6-test
+adb push build/android/armeabi-v7a/meizu-pro-6s-test /data/local/tmp/meizu-pro-6s-test
+adb push build/android/armeabi-v7a/meizu-pro-7-plus-test /data/local/tmp/meizu-pro-7-plus-test
+adb push build/android/armeabi-v7a/moto-e-gen1-test /data/local/tmp/moto-e-gen1-test
+adb push build/android/armeabi-v7a/moto-g-gen1-test /data/local/tmp/moto-g-gen1-test
+adb push build/android/armeabi-v7a/moto-g-gen2-test /data/local/tmp/moto-g-gen2-test
+adb push build/android/armeabi-v7a/moto-g-gen3-test /data/local/tmp/moto-g-gen3-test
+adb push build/android/armeabi-v7a/moto-g-gen4-test /data/local/tmp/moto-g-gen4-test
+adb push build/android/armeabi-v7a/nexus-s-test /data/local/tmp/nexus-s-test
+adb push build/android/armeabi-v7a/nexus4-test /data/local/tmp/nexus4-test
+adb push build/android/armeabi-v7a/nexus5x-test /data/local/tmp/nexus5x-test
+adb push build/android/armeabi-v7a/nexus6-test /data/local/tmp/nexus6-test
+adb push build/android/armeabi-v7a/nexus6p-test /data/local/tmp/nexus6p-test
+adb push build/android/armeabi-v7a/nexus9-test /data/local/tmp/nexus9-test
+adb push build/android/armeabi-v7a/nexus10-test /data/local/tmp/nexus10-test
+adb push build/android/armeabi-v7a/oneplus-3t-test /data/local/tmp/oneplus-3t-test
+adb push build/android/armeabi-v7a/oneplus-5-test /data/local/tmp/oneplus-5-test
+adb push build/android/armeabi-v7a/oneplus-5t-test /data/local/tmp/oneplus-5t-test
+adb push build/android/armeabi-v7a/oppo-a37-test /data/local/tmp/oppo-a37-test
+adb push build/android/armeabi-v7a/oppo-r9-test /data/local/tmp/oppo-r9-test
+adb push build/android/armeabi-v7a/padcod-10.1-test /data/local/tmp/padcod-10.1-test
+adb push build/android/armeabi-v7a/pixel-c-test /data/local/tmp/pixel-c-test
+adb push build/android/armeabi-v7a/pixel-xl-test /data/local/tmp/pixel-xl-test
+adb push build/android/armeabi-v7a/pixel-test /data/local/tmp/pixel-test
+adb push build/android/armeabi-v7a/pixel-2-xl-test /data/local/tmp/pixel-2-xl-test
+adb push build/android/armeabi-v7a/xiaomi-mi-5c-test /data/local/tmp/xiaomi-mi-5c-test
+adb push build/android/armeabi-v7a/xiaomi-redmi-2a-test /data/local/tmp/xiaomi-redmi-2a-test
+adb push build/android/armeabi-v7a/xiaomi-redmi-note-3-test /data/local/tmp/xiaomi-redmi-note-3-test
+adb push build/android/armeabi-v7a/xiaomi-redmi-note-4-test /data/local/tmp/xiaomi-redmi-note-4-test
+adb push build/android/armeabi-v7a/xperia-c4-dual-test /data/local/tmp/xperia-c4-dual-test
+adb push build/android/armeabi-v7a/xperia-sl-test /data/local/tmp/xperia-sl-test
adb shell "/data/local/tmp/alcatel-revvl-test --gtest_color=yes"
adb shell "/data/local/tmp/atm7029b-tablet-test --gtest_color=yes"
diff --git a/scripts/android-armv7-test.sh b/scripts/android-armv7-test.sh
index 68f11f8..178695a 100755
--- a/scripts/android-armv7-test.sh
+++ b/scripts/android-armv7-test.sh
@@ -2,9 +2,9 @@
set -e
-adb push libs/armeabi-v7a/init-test /data/local/tmp/init-test
-adb push libs/armeabi-v7a/cache-test /data/local/tmp/cache-test
-adb push libs/armeabi-v7a/chipset-test /data/local/tmp/chipset-test
+adb push build/android/armeabi-v7a/init-test /data/local/tmp/init-test
+adb push build/android/armeabi-v7a/cache-test /data/local/tmp/cache-test
+adb push build/android/armeabi-v7a/chipset-test /data/local/tmp/chipset-test
adb shell /data/local/tmp/init-test --gtest_color=yes
adb shell /data/local/tmp/cache-test --gtest_color=yes
adb shell /data/local/tmp/chipset-test --gtest_color=yes
diff --git a/scripts/android-x86-build.sh b/scripts/android-x86-build.sh
index 1fb2629..3483b9a 100755
--- a/scripts/android-x86-build.sh
+++ b/scripts/android-x86-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=x86 -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/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
diff --git a/scripts/android-x86-cache-info.sh b/scripts/android-x86-cache-info.sh
index 7e3c9c1..595df33 100755
--- a/scripts/android-x86-cache-info.sh
+++ b/scripts/android-x86-cache-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/x86/cache-info /data/local/tmp/cache-info
+adb push build/android/x86/cache-info /data/local/tmp/cache-info
adb shell /data/local/tmp/cache-info
diff --git a/scripts/android-x86-cpu-info.sh b/scripts/android-x86-cpu-info.sh
index b07a987..1ef292e 100755
--- a/scripts/android-x86-cpu-info.sh
+++ b/scripts/android-x86-cpu-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/x86/cpu-info /data/local/tmp/cpu-info
+adb push build/android/x86/cpu-info /data/local/tmp/cpu-info
adb shell /data/local/tmp/cpu-info
diff --git a/scripts/android-x86-isa-info.sh b/scripts/android-x86-isa-info.sh
index 426d741..f778dc2 100755
--- a/scripts/android-x86-isa-info.sh
+++ b/scripts/android-x86-isa-info.sh
@@ -2,5 +2,5 @@
set -e
-adb push libs/x86/isa-info /data/local/tmp/isa-info
+adb push build/android/x86/isa-info /data/local/tmp/isa-info
adb shell /data/local/tmp/isa-info
diff --git a/scripts/android-x86-mock.sh b/scripts/android-x86-mock.sh
index 2846c5d..4cee5f3 100755
--- a/scripts/android-x86-mock.sh
+++ b/scripts/android-x86-mock.sh
@@ -2,11 +2,11 @@
set -e
-adb push libs/x86/alldocube-iwork8-test /data/local/tmp/alldocube-iwork8-test
-adb push libs/x86/memo-pad-7-test /data/local/tmp/memo-pad-7-test
-adb push libs/x86/zenfone-2-test /data/local/tmp/zenfone-2-test
-adb push libs/x86/zenfone-2e-test /data/local/tmp/zenfone-2e-test
-adb push libs/x86/zenfone-c-test /data/local/tmp/zenfone-c-test
+adb push build/android/x86/alldocube-iwork8-test /data/local/tmp/alldocube-iwork8-test
+adb push build/android/x86/memo-pad-7-test /data/local/tmp/memo-pad-7-test
+adb push build/android/x86/zenfone-2-test /data/local/tmp/zenfone-2-test
+adb push build/android/x86/zenfone-2e-test /data/local/tmp/zenfone-2e-test
+adb push build/android/x86/zenfone-c-test /data/local/tmp/zenfone-c-test
adb shell "/data/local/tmp/alldocube-iwork8-test --gtest_color=yes"
adb shell "/data/local/tmp/memo-pad-7-test --gtest_color=yes"