File: cfg-android

package info (click to toggle)
brltty 6.8-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 35,776 kB
  • sloc: ansic: 150,447; java: 13,484; sh: 9,667; xml: 5,702; tcl: 2,634; makefile: 2,328; awk: 713; lisp: 366; python: 321; ml: 301
file content (120 lines) | stat: -rwxr-xr-x 3,875 bytes parent folder | download | duplicates (2)
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-2025 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 <dave@mielke.cc>.
###############################################################################

. "`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