forked from brltty/brltty
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cfg-android
executable file
·120 lines (99 loc) · 3.78 KB
/
cfg-android
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
# text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2024 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <[email protected]>.
###############################################################################
. "`dirname "${0}"`/brltty-prologue.sh"
ndkRootVariable=ANDROID_NDK
showProgramUsagePurpose() {
cat <<END_OF_PROGRAM_USAGE_PURPOSE
Configure a BRLTTY build for the Android platform.
END_OF_PROGRAM_USAGE_PURPOSE
}
showProgramUsageNotes() {
cat <<END_OF_PROGRAM_USAGE_NOTES
All of the options are passed through, unmodified, as additional options to the configure script.
The ${ndkRootVariable} environment variable must point to the root directory for the Android NDK (native development kit).
END_OF_PROGRAM_USAGE_NOTES
}
defaultToplevelABI="armeabi-v7a"
addProgramOption a string.ABI toplevelABI "the top-level's ABI" "${defaultToplevelABI}"
addProgramOption n flag noToplevelConfigure "don't configure the top-level"
addProgramOption o flag overwriteBuildProperties "overwrite existing ABI build properties"
parseProgramArguments "${@}"
set -e
sourceRoot="${programDirectory}"
buildRoot="${initialDirectory}"
androidRoot="${buildRoot}/Android"
ndkRoot="${androidRoot}/NDK"
[ -d "${ndkRoot}" ] || {
[ -n "${!ndkRootVariable}" ] || {
semanticError "Android NDK directory not defined: ${ndkRoot}"
}
[ -f "${!ndkRootVariable}/ndk-build" ] || {
semanticError "not an Android NDK: ${!ndkRootVariable}"
}
logNote "creating symbolic link: ${ndkRoot} -> ${!ndkRootVariable}"
ln -s "${!ndkRootVariable}" "${ndkRoot}" || exit "${?}"
}
architecturesRoot="${androidRoot}/ABI"
androidPlatform=android-21
prepareArchitecture() {
local architecture="${1}"
local system="${2}"
local abi="${3}"
local cFlags="${4}"
local ldFlags="${5}"
local abiRoot="${architecturesRoot}/${abi}"
mkdir -p -- "${abiRoot}"
local toolchainRoot="${abiRoot}/ToolChain"
( set -e
cd "${abiRoot}"
local propertiesFile="build.properties"
if [ -f "${propertiesFile}" ]
then
if "${overwriteBuildProperties}"
then
logWarning "overwriting ABI build properties: ${abi}"
else
logNote "ABI build properties already exist: ${abi}"
return 0
fi
else
logNote "creating ABI build properties: ${abi}"
fi
: >"${propertiesFile}"
set -- SOURCE "${sourceRoot}" NDK "${ndkRoot}" PLATFORM "${androidPlatform}" ARCH "${architecture}" ABI "${abi}" SYSTEM "${system}" TOOLCHAIN "${toolchainRoot}" CFLAGS "${cFlags}" LDFLAGS "${ldFlags}"
while [ "${#}" -gt 0 ]
do
local variable="${1}"
local value="${2}"
shift 2
echo >>"${propertiesFile}" "BRLTTY_ANDROID_${variable}=${value}"
done
)
}
logMessage task "preparing ABI build trees"
prepareArchitecture arm arm-linux-androideabi armeabi-v7a "-mthumb"
prepareArchitecture arm64 aarch64-linux-android arm64-v8a
prepareArchitecture x86 i686-linux-android x86
prepareArchitecture x86_64 x86_64-linux-android x86_64
"${noToplevelConfigure}" || {
[ -n "${toplevelABI}" ] || toplevelABI="${defaultToplevelABI}"
logMessage task "configuring top-level for ${toplevelABI}"
"${sourceRoot}/cfg-android-abi" -f "${toplevelABI}"
}
exit 0