|
204 | 204 | # If no output type specified, guess from platform: |
205 | 205 | if test -z "$FORMATS"; then |
206 | 206 | case ${OS} in |
207 | | - linux|android) FORMATS="make" ;; |
| 207 | + # Always use Linux-style makefiles for Android as the Android toolchain |
| 208 | + # is more Linux-y than Darwin-y |
| 209 | + linux|android) FORMATS="make-linux" ;; |
208 | 210 | mac|ios) FORMATS="xcode" ;; |
209 | 211 | win) FORMATS="msvs" ;; |
210 | 212 | esac |
|
262 | 264 | WIN_PERL=${WIN_PERL:-"C:/perl/bin/perl.exe"} |
263 | 265 |
|
264 | 266 | # Android default settings and tools |
265 | | -ANDROID_BUILD_TOOLS=${ANDROID_BUILD_TOOLS:-22.0.1} |
266 | | -ANDROID_JAVA_SDK=${ANDROID_JAVA_SDK:-${JAVA_SDK:-/usr/lib/jvm/java-7-openjdk-amd64}} |
267 | 267 | ANDROID_NDK_VERSION=${ANDROID_NDK_VERSION:-r10d} |
268 | | -ANDROID_NDK=${ANDROID_NDK:-${HOME}/Workspace/android-ndk-${ANDROID_NDK_VERSION}} |
269 | 268 | ANDROID_PLATFORM=${ANDROID_PLATFORM:-android-8} |
270 | | -ANDROID_SDK=${ANDROID_SDK:-${HOME}/Workspace/android-sdk-linux} |
271 | 269 |
|
272 | | -ANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN:-${HOME}/android-armv6-standalone/bin/arm-linux-androideabi-} |
| 270 | +# Attempt to locate an Android NDK |
| 271 | +if [ -z "${ANDROID_NDK}" ] ; then |
| 272 | + # Try the symlink we suggest in INSTALL-android.md |
| 273 | + if [ -d "${HOME}/android/toolchain/android-ndk" ] ; then |
| 274 | + ANDROID_NDK="${HOME}/android/toolchain/android-ndk" |
| 275 | + else |
| 276 | + if [ "${OS}" = "android" ] ; then |
| 277 | + echo >&2 "Error: Android NDK not found (set \$ANDROID_NDK)" |
| 278 | + exit 1 |
| 279 | + fi |
| 280 | + fi |
| 281 | +fi |
| 282 | + |
| 283 | +# Attempt to locate an Android SDK |
| 284 | +if [ -z "${ANDROID_SDK}" ] ; then |
| 285 | + # Try the symlink we suggest in INSTALL-android.md |
| 286 | + if [ -d "${HOME}/android/toolchain/android-sdk" ] ; then |
| 287 | + ANDROID_SDK="${HOME}/android/toolchain/android-sdk" |
| 288 | + else |
| 289 | + if [ "${OS}" = "android" ] ; then |
| 290 | + echo >&2 "Error: Android SDK not found (set \$ANDROID_SDK)" |
| 291 | + exit 1 |
| 292 | + fi |
| 293 | + fi |
| 294 | +fi |
| 295 | + |
| 296 | +# Attempt to guess the Android build tools version |
| 297 | +if [ -z "${ANDROID_BUILD_TOOLS}" ] ; then |
| 298 | + # Check for a sub-folder in the appropriate place |
| 299 | + # Possibly fragile - are there ever multiple sub-folders? |
| 300 | + if [ ! "$(echo \"${ANDROID_SDK}/build-tools/\"*)" = "${ANDROID_SDK}/build-tools/*" ] ; then |
| 301 | + ANDROID_BUILD_TOOLS=$(basename $(echo "${ANDROID_SDK}/build-tools/"*)) |
| 302 | + else |
| 303 | + if [ "${OS}" = "android" ] ; then |
| 304 | + echo >&2 "Error: Android build tools not found (set \$ANDROID_BUILD_TOOLS)" |
| 305 | + exit 1 |
| 306 | + fi |
| 307 | + fi |
| 308 | +fi |
| 309 | + |
| 310 | +if [ -z "${ANDROID_TOOLCHAIN}" ] ; then |
| 311 | + # Try the folder we suggest in INSTALL-android.md |
| 312 | + if [ -d "${HOME}/android/toolchain/standalone" ] ; then |
| 313 | + ANDROID_TOOLCHAIN="${HOME}/android/toolchain/standalone/bin/arm-linux-androideabi-" |
| 314 | + else |
| 315 | + if [ "${OS}" = "android" ] ; then |
| 316 | + echo >&2 "Error: Android toolchain not found (set \$ANDROID_TOOLCHAIN)" |
| 317 | + exit 1 |
| 318 | + fi |
| 319 | + fi |
| 320 | +fi |
273 | 321 |
|
274 | 322 | ANDROID_AR=${AR:-${ANDROID_TOOLCHAIN}ar} |
275 | 323 | ANDROID_CC=${CC:-${ANDROID_TOOLCHAIN}clang -target arm-linux-androideabi -march=armv6 -integrated-as} |
276 | 324 | ANDROID_CXX=${CXX:-${ANDROID_TOOLCHAIN}clang -target arm-linux-androideabi -march=armv6 -integrated-as} |
277 | 325 | ANDROID_LINK=${LINK:-${ANDROID_TOOLCHAIN}clang -target arm-linux-androideabi -march=armv6 -integrated-as} |
278 | 326 | ANDROID_OBJCOPY=${OBJCOPY:-${ANDROID_TOOLCHAIN}objcopy} |
| 327 | +ANDROID_OBJDUMP=${OBJDUMP:-${ANDROID_TOOLCHAIN}objdump} |
279 | 328 | ANDROID_STRIP=${STRIP:-${ANDROID_TOOLCHAIN}strip} |
280 | 329 |
|
| 330 | +if [ -z "${JAVA_SDK}" ] ; then |
| 331 | + # Utility used to locate Java on OSX systems |
| 332 | + if [ -x /usr/libexec/java_home ] ; then |
| 333 | + ANDROID_JAVA_SDK="$(/usr/libexec/java_home)" |
| 334 | + elif [ -d /usr/lib/jvm/default ] ; then |
| 335 | + ANDROID_JAVA_SDK=/usr/lib/jvm/default |
| 336 | + elif [ -d /usr/lib/jvm/default-jvm ] ; then |
| 337 | + ANDROID_JAVA_SDK=/usr/lib/jvm/default-jvm |
| 338 | + else |
| 339 | + if [ "${OS}" = "android" ] ; then |
| 340 | + echo >&2 "Error: no Java SDK found - set \$JAVA_SDK" |
| 341 | + exit 1 |
| 342 | + fi |
| 343 | + fi |
| 344 | +else |
| 345 | + ANDROID_JAVA_SDK="${JAVA_SDK}" |
| 346 | +fi |
| 347 | + |
281 | 348 |
|
282 | 349 | ################################################################ |
283 | 350 | # Invoke gyp |
@@ -307,6 +374,7 @@ case ${OS} in |
307 | 374 | export CXX="${ANDROID_CXX}" |
308 | 375 | export LINK="${ANDROID_LINK}" |
309 | 376 | export OBJCOPY="${ANDROID_OBJCOPY}" |
| 377 | + export OBJDUMP="${ANDROID_OBJDUMP}" |
310 | 378 | export STRIP="${ANDROID_STRIP}" |
311 | 379 | invoke_gyp $basic_args "-DOS=${OS}" "-Dtarget_arch=${TARGET_ARCH}" \ |
312 | 380 | -Dcross_compile=1 \ |
|
0 commit comments