mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 05:11:16 +00:00
Bug 1515004 - Move --with-android-sdk to moz.configure. r=nalexander
Since ./mach bootstrap installs Android SDK into ~/.mozbuild, we should detect this location as default SDK install path. Also, --with-android-max-sdk and --with-android-min-sdk are still in android.m4 because confvars.sh sets MOZ_ANDROID_MIN_SDK_VERSION. Differential Revision: https://phabricator.services.mozilla.com/D15463 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
033a88aff9
commit
b93b9a8c45
@ -91,86 +91,9 @@ AC_SUBST_LIST([STLPORT_LIBS])
|
||||
|
||||
|
||||
dnl Configure an Android SDK.
|
||||
dnl Arg 1: target SDK version, like 23.
|
||||
dnl Arg 2: list of build-tools versions, like "23.0.3 23.0.1".
|
||||
AC_DEFUN([MOZ_ANDROID_SDK],
|
||||
[
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-sdk,
|
||||
[ --with-android-sdk=DIR
|
||||
location where the Android SDK can be found (like ~/.mozbuild/android-sdk-linux)],
|
||||
android_sdk_root=$withval)
|
||||
|
||||
android_sdk_root=${withval%/platforms/android-*}
|
||||
|
||||
case "$target" in
|
||||
*-android*|*-linuxandroid*)
|
||||
if test -z "$android_sdk_root" ; then
|
||||
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
||||
fi
|
||||
|
||||
# We were given an old-style
|
||||
# --with-android-sdk=/path/to/sdk/platforms/android-*. We could warn, but
|
||||
# we'll get compliance by forcing the issue.
|
||||
if test -e "$withval"/source.properties ; then
|
||||
AC_MSG_ERROR([Including platforms/android-* in --with-android-sdk arguments is deprecated. Use --with-android-sdk=$android_sdk_root.])
|
||||
fi
|
||||
|
||||
android_target_sdk=$1
|
||||
|
||||
AC_MSG_CHECKING([for Android build-tools])
|
||||
android_build_tools_base="$android_sdk_root"/build-tools
|
||||
for version in $2; do
|
||||
android_build_tools="$android_build_tools_base"/$version
|
||||
if test -d "$android_build_tools" -a -f "$android_build_tools/zipalign"; then
|
||||
AC_MSG_RESULT([$android_build_tools])
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
MOZ_PATH_PROG(ZIPALIGN, zipalign, :, [$android_build_tools])
|
||||
if test -z "$ZIPALIGN" -o "$ZIPALIGN" = ":"; then
|
||||
AC_MSG_ERROR([The program zipalign was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
android_platform_tools="$android_sdk_root"/platform-tools
|
||||
AC_MSG_CHECKING([for Android platform-tools])
|
||||
if test -d "$android_platform_tools" -a -f "$android_platform_tools/adb"; then
|
||||
AC_MSG_RESULT([$android_platform_tools])
|
||||
else
|
||||
AC_MSG_ERROR([You must install the Android platform-tools. Try |mach bootstrap|. (Looked for $android_platform_tools)])
|
||||
fi
|
||||
|
||||
MOZ_PATH_PROG(ADB, adb, :, [$android_platform_tools])
|
||||
if test -z "$ADB" -o "$ADB" = ":"; then
|
||||
AC_MSG_ERROR([The program adb was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
android_tools="$android_sdk_root"/tools
|
||||
AC_MSG_CHECKING([for Android tools])
|
||||
if test -d "$android_tools" -a -f "$android_tools/emulator"; then
|
||||
AC_MSG_RESULT([$android_tools])
|
||||
else
|
||||
AC_MSG_ERROR([You must install the Android tools. Try |mach bootstrap|. (Looked for $android_tools)])
|
||||
fi
|
||||
|
||||
dnl Android Tools 26 changes emulator path.
|
||||
dnl Although android_sdk_root/tools still has emulator command,
|
||||
dnl it doesn't work correctly
|
||||
MOZ_PATH_PROG(EMULATOR, emulator, :, [$android_sdk_root/emulator:$android_tools])
|
||||
if test -z "$EMULATOR" -o "$EMULATOR" = ":"; then
|
||||
AC_MSG_ERROR([The program emulator was not found. Try |mach bootstrap|.])
|
||||
fi
|
||||
|
||||
ANDROID_TARGET_SDK="${android_target_sdk}"
|
||||
ANDROID_SDK_ROOT="${android_sdk_root}"
|
||||
ANDROID_TOOLS="${android_tools}"
|
||||
AC_SUBST(ANDROID_TARGET_SDK)
|
||||
AC_SUBST(ANDROID_SDK_ROOT)
|
||||
AC_SUBST(ANDROID_TOOLS)
|
||||
;;
|
||||
esac
|
||||
|
||||
MOZ_ARG_WITH_STRING(android-min-sdk,
|
||||
[ --with-android-min-sdk=[VER] Impose a minimum Firefox for Android SDK version],
|
||||
[ MOZ_ANDROID_MIN_SDK_VERSION=$withval ])
|
||||
|
116
build/moz.configure/android-sdk.configure
Normal file
116
build/moz.configure/android-sdk.configure
Normal file
@ -0,0 +1,116 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# Ensure Android SDK and build-tools versions depending on mobile target.
|
||||
|
||||
|
||||
@depends(host, '--help')
|
||||
@imports('os')
|
||||
def default_android_sdk_root(host, _):
|
||||
mozbuild_state_dir = os.environ.get('MOZBUILD_STATE_PATH',
|
||||
os.path.expanduser(os.path.join('~', '.mozbuild')))
|
||||
sdk_basename = {
|
||||
'Darwin': 'android-sdk-macosx',
|
||||
'Linux': 'android-sdk-linux',
|
||||
'WINNT': 'android-sdk-windows',
|
||||
}.get(host.kernel)
|
||||
if sdk_basename is None:
|
||||
log.warning("%s is unsupported host" % host.kernel)
|
||||
return None
|
||||
return os.path.join(mozbuild_state_dir, sdk_basename)
|
||||
|
||||
|
||||
option('--with-android-sdk', nargs=1,
|
||||
default=default_android_sdk_root,
|
||||
help='location where the Android SDK can be found (like ~/.mozbuild/android-sdk-linux){|}')
|
||||
|
||||
|
||||
@depends('--with-android-sdk')
|
||||
@imports(_from='os.path', _import='isdir')
|
||||
def android_sdk_root(value):
|
||||
if value and isdir(value[0]):
|
||||
return value[0]
|
||||
|
||||
die("You must specify --with-android-sdk=/path/to/sdk when targeting Android, "
|
||||
"or try |mach bootstrap|.")
|
||||
|
||||
|
||||
@depends('--help')
|
||||
def android_sdk_version(_):
|
||||
return namespace(build_tools_versions=['27.0.3'], target_sdk_version='28')
|
||||
|
||||
|
||||
@depends(android_sdk_root, android_sdk_version)
|
||||
@checking('for Android build-tools')
|
||||
@imports(_from='os.path', _import='exists')
|
||||
@imports(_from='os.path', _import='isdir')
|
||||
def android_build_tools(sdk_root, sdk_version):
|
||||
android_build_tools_base = os.path.join(sdk_root, 'build-tools')
|
||||
for version in sdk_version.build_tools_versions:
|
||||
if isdir(os.path.join(android_build_tools_base, version)):
|
||||
tools = os.path.join(android_build_tools_base, version)
|
||||
for zipalign in ('zipalign', 'zipalign.exe'):
|
||||
if exists(os.path.join(tools, zipalign)):
|
||||
return [tools]
|
||||
|
||||
die("You must install the Android build-tools version %s. "
|
||||
"Try |mach bootstrap|. (Looked for %s/%s)" %
|
||||
(versions[0], android_build_tools_base, versions[0]))
|
||||
|
||||
|
||||
@depends(android_sdk_root)
|
||||
@checking('for Android tools')
|
||||
@imports(_from='os.path', _import='isdir')
|
||||
def android_tools(sdk_root):
|
||||
tools = os.path.join(sdk_root, 'tools')
|
||||
if isdir(tools):
|
||||
return tools
|
||||
|
||||
die("You must install the Android tools. Try |mach bootstrap|")
|
||||
|
||||
|
||||
@depends(android_sdk_root)
|
||||
@checking('for Android platform-tools')
|
||||
@imports(_from='os.path', _import='exists')
|
||||
@imports(_from='os.path', _import='isdir')
|
||||
def android_platform_tools(sdk_root):
|
||||
tools = os.path.join(sdk_root, 'platform-tools')
|
||||
for adb in ('adb', 'adb.exe'):
|
||||
if exists(os.path.join(tools, adb)):
|
||||
return [tools]
|
||||
|
||||
die("You must install the Android platform-tools. Try |mach bootstrap|. (Looked for %s)" %
|
||||
tools)
|
||||
|
||||
|
||||
@depends(android_sdk_root)
|
||||
def android_emulator_path(sdk_root):
|
||||
return [os.path.join(sdk_root, 'emulator')]
|
||||
|
||||
|
||||
@template
|
||||
def check_android_tools(tool, tool_dir):
|
||||
check = check_prog(tool.upper(), (tool, tool + '.exe'), paths=tool_dir,
|
||||
allow_missing=True)
|
||||
|
||||
@depends(check)
|
||||
def require_tool(result):
|
||||
if result is None:
|
||||
die('The program %s was not found. Try |mach bootstrap|' % tool)
|
||||
return result
|
||||
|
||||
return require_tool
|
||||
|
||||
|
||||
check_android_tools('zipalign', android_build_tools)
|
||||
check_android_tools('adb', android_platform_tools)
|
||||
check_android_tools('emulator', android_emulator_path)
|
||||
|
||||
set_config('ANDROID_SDK_ROOT', android_sdk_root)
|
||||
set_config('ANDROID_TOOLS', android_tools)
|
||||
|
||||
set_config('ANDROID_TARGET_SDK', android_sdk_version.target_sdk_version)
|
||||
add_old_configure_assignment('ANDROID_TARGET_SDK', android_sdk_version.target_sdk_version)
|
@ -229,7 +229,6 @@ def old_configure_options(*options):
|
||||
'--with-android-distribution-directory',
|
||||
'--with-android-max-sdk',
|
||||
'--with-android-min-sdk',
|
||||
'--with-android-sdk',
|
||||
'--with-app-basename',
|
||||
'--with-app-name',
|
||||
'--with-arch',
|
||||
|
@ -122,6 +122,7 @@ def check_target(target):
|
||||
'for more information about the necessary options.')
|
||||
|
||||
include('../../toolkit/moz.configure')
|
||||
include('../../build/moz.configure/android-sdk.configure')
|
||||
include('../../build/moz.configure/java.configure')
|
||||
include('gradle.configure')
|
||||
|
||||
|
@ -1796,7 +1796,7 @@ dnl ========================================================
|
||||
|
||||
case "$MOZ_BUILD_APP" in
|
||||
mobile/android)
|
||||
MOZ_ANDROID_SDK(28, 27.0.3)
|
||||
MOZ_ANDROID_SDK
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user