| Index: build/android/envsetup.sh
|
| ===================================================================
|
| --- build/android/envsetup.sh (revision 148738)
|
| +++ build/android/envsetup.sh (working copy)
|
| @@ -4,25 +4,31 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -# Sets up environment for building Chromium on Android. It can either be
|
| -# compiled with the Android tree or using the Android SDK/NDK. To build with
|
| -# NDK/SDK: ". build/android/envsetup.sh --sdk". Environment variable
|
| -# ANDROID_SDK_BUILD=1 will then be defined and used in the rest of the setup to
|
| -# specifiy build type.
|
| +# Sets up environment for building Chromium on Android. Only Android NDK,
|
| +# Revision 6b on Linux or Mac is offically supported.
|
| +#
|
| +# To run this script, the system environment ANDROID_NDK_ROOT must be set
|
| +# to Android NDK's root path.
|
| +#
|
| +# TODO(michaelbai): Develop a standard for NDK/SDK integration.
|
| +#
|
| +# If current path isn't the Chrome's src directory, CHROME_SRC must be set
|
| +# to the Chrome's src directory.
|
|
|
| -# NOTE(yfriedman): This looks unnecessary but downstream the default value
|
| -# should be 0 until all builds switch to SDK/NDK.
|
| -export ANDROID_SDK_BUILD=1
|
| -# Loop over args in case we add more arguments in the future.
|
| -while [ "$1" != "" ]; do
|
| - case $1 in
|
| - -s | --sdk ) export ANDROID_SDK_BUILD=1 ; shift ;;
|
| - * ) shift ; break ;;
|
| - esac
|
| -done
|
| +if [ ! -d "${ANDROID_NDK_ROOT}" ]; then
|
| + echo "ANDROID_NDK_ROOT must be set to the path of Android NDK, Revision 6b." \
|
| + >& 2
|
| + echo "which could be installed by" >& 2
|
| + echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2
|
| + return 1
|
| +fi
|
|
|
| -if [[ "${ANDROID_SDK_BUILD}" -eq 1 ]]; then
|
| - echo "Using SDK build"
|
| +if [ ! -d "${ANDROID_SDK_ROOT}" ]; then
|
| + echo "ANDROID_SDK_ROOT must be set to the path of Android SDK, Android 3.2." \
|
| + >& 2
|
| + echo "which could be installed by" >& 2
|
| + echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2
|
| + return 1
|
| fi
|
|
|
| host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
|
| @@ -39,7 +45,53 @@
|
| return 1
|
| esac
|
|
|
| -CURRENT_DIR="$(readlink -f "$(dirname $BASH_SOURCE)/../../")"
|
| +# The following defines will affect ARM code generation of both C/C++ compiler
|
| +# and V8 mksnapshot.
|
| +case "${TARGET_PRODUCT-full}" in
|
| + "full")
|
| + DEFINES=" target_arch=arm"
|
| + DEFINES+=" arm_neon=0 armv7=1 arm_thumb=1 arm_fpu=vfpv3-d16"
|
| + toolchain_arch="arm-linux-androideabi-4.4.3"
|
| + ;;
|
| + *x86*)
|
| + DEFINES=" target_arch=ia32 use_libffmpeg=0"
|
| + toolchain_arch="x86-4.4.3"
|
| + ;;
|
| + *)
|
| + echo "TARGET_PRODUCT: ${TARGET_PRODUCT} is not supported." >& 2
|
| + return 1
|
| +esac
|
| +
|
| +# If we are building NDK/SDK, and in the upstream (open source) tree,
|
| +# define a special variable for bringup purposes.
|
| +case "${ANDROID_BUILD_TOP-undefined}" in
|
| + "undefined")
|
| + DEFINES+=" android_upstream_bringup=1"
|
| + ;;
|
| +esac
|
| +
|
| +toolchain_path="${ANDROID_NDK_ROOT}/toolchains/${toolchain_arch}/prebuilt/"
|
| +export ANDROID_TOOLCHAIN="${toolchain_path}/${toolchain_dir}/bin/"
|
| +
|
| +if [ ! -d "${ANDROID_TOOLCHAIN}" ]; then
|
| + echo "Can not find Android toolchain in ${ANDROID_TOOLCHAIN}." >& 2
|
| + echo "The NDK version might be wrong." >& 2
|
| + return 1
|
| +fi
|
| +
|
| +export ANDROID_SDK_VERSION="15"
|
| +
|
| +# Needed by android antfiles when creating apks.
|
| +export ANDROID_SDK_HOME=${ANDROID_SDK_ROOT}
|
| +
|
| +# Add Android SDK/NDK tools to system path.
|
| +export PATH=$PATH:${ANDROID_NDK_ROOT}
|
| +export PATH=$PATH:${ANDROID_SDK_ROOT}/tools
|
| +export PATH=$PATH:${ANDROID_SDK_ROOT}/platform-tools
|
| +# Must have tools like arm-linux-androideabi-gcc on the path for ninja
|
| +export PATH=$PATH:${ANDROID_TOOLCHAIN}
|
| +
|
| +CURRENT_DIR="$(readlink -f ${PWD})"
|
| if [ -z "${CHROME_SRC}" ]; then
|
| # If $CHROME_SRC was not set, assume current directory is CHROME_SRC.
|
| export CHROME_SRC="${CURRENT_DIR}"
|
| @@ -55,37 +107,15 @@
|
| echo "${CHROME_SRC}"
|
| fi
|
|
|
| -# Source functions script. The file is in the same directory as this script.
|
| -. "$(dirname $BASH_SOURCE)"/envsetup_functions.sh
|
| -
|
| -if [ "${ANDROID_SDK_BUILD}" -eq 1 ]; then
|
| - sdk_build_init
|
| -# Sets up environment for building Chromium for Android with source. Expects
|
| -# android environment setup and lunch.
|
| -elif [ -z "$ANDROID_BUILD_TOP" -o -z "$ANDROID_TOOLCHAIN" -o \
|
| - -z "$ANDROID_PRODUCT_OUT" ]; then
|
| - echo "Android build environment variables must be set."
|
| - echo "Please cd to the root of your Android tree and do: "
|
| - echo " . build/envsetup.sh"
|
| - echo " lunch"
|
| - echo "Then try this again."
|
| - echo "Or did you mean NDK/SDK build. Run envsetup.sh with --sdk argument."
|
| +if [ ! -d "${CHROME_SRC}" ]; then
|
| + echo "CHROME_SRC must be set to the path of Chrome source code." >& 2
|
| return 1
|
| -else
|
| - non_sdk_build_init
|
| fi
|
|
|
| -# Workaround for valgrind build
|
| -if [ -n "$CHROME_ANDROID_VALGRIND_BUILD" ]; then
|
| -# arm_thumb=0 is a workaround for https://bugs.kde.org/show_bug.cgi?id=270709
|
| - DEFINES+=" arm_thumb=0 release_extra_cflags='-fno-inline\
|
| - -fno-omit-frame-pointer -fno-builtin' release_valgrind_build=1\
|
| - release_optimize=1"
|
| -fi
|
| +# Add Chromium Android development scripts to system path.
|
| +# Must be after CHROME_SRC is set.
|
| +export PATH=$PATH:${CHROME_SRC}/build/android
|
|
|
| -# Source a bunch of helper functions
|
| -. ${CHROME_SRC}/build/android/adb_device_functions.sh
|
| -
|
| ANDROID_GOMA_WRAPPER=""
|
| if [[ -d $GOMA_DIR ]]; then
|
| ANDROID_GOMA_WRAPPER="$GOMA_DIR/gomacc"
|
| @@ -100,13 +130,38 @@
|
| # Performs a gyp_chromium run to convert gyp->Makefile for android code.
|
| android_gyp() {
|
| echo "GYP_GENERATORS set to '$GYP_GENERATORS'"
|
| - if [[ $GYP_DEFINES =~ "clang=1" ]]; then
|
| - echo -n "NOTE: You have \`clang=1' in \$GYP_DEFINES; "
|
| - echo "did you mean to run \`android_clang_gyp'?"
|
| - fi
|
| -
|
| - "${CHROME_SRC}/build/gyp_chromium" --depth="${CHROME_SRC}" --check "$@"
|
| + "${CHROME_SRC}/build/gyp_chromium" --depth="${CHROME_SRC}" "$@"
|
| }
|
|
|
| -# FLOCK needs to be null on system that has no flock
|
| -which flock > /dev/null || export FLOCK=
|
| +export OBJCOPY=$(echo ${ANDROID_TOOLCHAIN}/*-objcopy)
|
| +export STRIP=$(echo ${ANDROID_TOOLCHAIN}/*-strip)
|
| +
|
| +# The set of GYP_DEFINES to pass to gyp. Use 'readlink -e' on directories
|
| +# to canonicalize them (remove double '/', remove trailing '/', etc).
|
| +DEFINES+=" OS=android"
|
| +DEFINES+=" android_build_type=0"
|
| +DEFINES+=" host_os=${host_os}"
|
| +DEFINES+=" linux_fpic=1"
|
| +DEFINES+=" release_optimize=s"
|
| +DEFINES+=" linux_use_tcmalloc=0"
|
| +DEFINES+=" disable_nacl=1"
|
| +DEFINES+=" remoting=0"
|
| +DEFINES+=" p2p_apis=0"
|
| +DEFINES+=" enable_touch_events=1"
|
| +DEFINES+=" build_ffmpegsumo=0"
|
| +DEFINES+=" gtest_target_type=shared_library"
|
| +DEFINES+=" branding=Chromium"
|
| +DEFINES+=\
|
| +" android_sdk=${ANDROID_SDK_ROOT}/platforms/android-${ANDROID_SDK_VERSION}"
|
| +DEFINES+=" android_sdk_tools=${ANDROID_SDK_ROOT}/platform-tools"
|
| +
|
| +export GYP_DEFINES="${DEFINES}"
|
| +
|
| +# Use the "android" flavor of the Makefile generator for both Linux and OS X.
|
| +export GYP_GENERATORS="make-android"
|
| +
|
| +# Use our All target as the default
|
| +export GYP_GENERATOR_FLAGS="${GYP_GENERATOR_FLAGS} default_target=All"
|
| +
|
| +# We want to use our version of "all" targets.
|
| +export CHROMIUM_GYP_FILE="${CHROME_SRC}/build/all_android.gyp"
|
|
|