blob: ded3816d3b9bd8c5010c91775ffbb7c06c92a98a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/bin/bash
set -eu
if [ -z ${1+x} ]; then
echo "usage: $0 <ANDROID_ABI>"
exit 1
fi
ABI=$1
case $ABI in
armeabi-v7a)
ARCH="arm"
BUILD_DIR="build-android-armeabi-v7a"
CPU_FAMILY=arm
CPU=armv7
CLANG_NAME=armv7a-linux-androideabi24
TOOLS_NAME=arm-linux-androideabi
;;
arm64-v8a)
ARCH="arm64"
BUILD_DIR="build-android-arm64-v8a"
CPU_FAMILY=aarch64
CPU=armv8
CLANG_NAME=aarch64-linux-android24
TOOLS_NAME=aarch64-linux-android
;;
x86)
ARCH="x86"
BUILD_DIR="build-android-x86"
CPU_FAMILY=x86
CPU=x86
CLANG_NAME=i686-linux-android24
TOOLS_NAME=i686-linux-android
;;
x86_64)
ARCH="x86_64"
BUILD_DIR="build-android-x86_64"
CPU_FAMILY=x84_64
CPU=x86_64
CLANG_NAME=x86_64-linux-android24
TOOLS_NAME=x86_64-linux-android
;;
*)
echo unknown ABI
exit 1
;;
esac
API_LEVEL="24"
ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk-bundle"
HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
SYS_ROOT="${HOST_ROOT}/sysroot"
LIB_PATH="${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi:${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi/${API_LEVEL}:${ANDROID_NDK_HOME}/platforms/android-${API_LEVEL}/arch-${ARCH}/usr/lib"
INC_PATH="${SYS_ROOT}/usr/include"
export PATH="${HOST_ROOT}/bin:${PATH}"
export CFLAGS="\
-DANDROID_STL=none \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_PLATFORM=android-${API_LEVEL} \
-DANDROID_ABI=${ABI}"
echo "building..."
rm -rf ${BUILD_DIR}
CROSSFILE=cross/android-$ABI.cross.txt
cat > $CROSSFILE <<EOF
[binaries]
c = '$CLANG_NAME-clang'
cmake = 'false'
ar = 'llvm-ar'
as = '$TOOLS_NAME-as'
ranlib = '$TOOLS_NAME-ranlib'
ld = '$TOOLS_NAME-ld'
strip = '$TOOLS_NAME-strip'
pkgconfig = 'false'
[properties]
needs_exe_wrapper = false
[host_machine]
system = 'android'
cpu_family = '$CPU_FAMILY'
cpu = '$CPU'
endian = 'little'
EOF
export LDFLAGS=-flto
export CFLAGS=-flto
meson setup --errorlogs \
-Doptimization=3 \
--prefix=${ANDROID_NDK_HOME} \
--includedir=${INC_PATH} \
--libdir=${LIB_PATH} \
--build.cmake-prefix-path=${SYS_ROOT} \
--cross-file $CROSSFILE \
${BUILD_DIR} .
ninja -v -C ${BUILD_DIR}
|