| Index: build/android/envsetup.sh
|
| diff --git a/build/android/envsetup.sh b/build/android/envsetup.sh
|
| index 9bf43490dfced3aed7c84afb767e09367dcf56a5..2c19dbaaf4ff055b963f8893d917e646a037bb84 100755
|
| --- a/build/android/envsetup.sh
|
| +++ b/build/android/envsetup.sh
|
| @@ -4,31 +4,25 @@
|
| # 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. 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.
|
| -
|
| -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 [ ! -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
|
| +# 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.
|
| +
|
| +# 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 [[ "${ANDROID_SDK_BUILD}" -eq 1 ]]; then
|
| + echo "Using SDK build"
|
| fi
|
|
|
| host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
|
| @@ -45,53 +39,7 @@ case "${host_os}" in
|
| return 1
|
| esac
|
|
|
| -# 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})"
|
| +CURRENT_DIR="$(readlink -f "$(dirname $BASH_SOURCE)/../../")"
|
| if [ -z "${CHROME_SRC}" ]; then
|
| # If $CHROME_SRC was not set, assume current directory is CHROME_SRC.
|
| export CHROME_SRC="${CURRENT_DIR}"
|
| @@ -107,14 +55,36 @@ the one you want."
|
| echo "${CHROME_SRC}"
|
| fi
|
|
|
| -if [ ! -d "${CHROME_SRC}" ]; then
|
| - echo "CHROME_SRC must be set to the path of Chrome source code." >& 2
|
| +# 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."
|
| return 1
|
| +else
|
| + non_sdk_build_init
|
| fi
|
|
|
| -# Add Chromium Android development scripts to system path.
|
| -# Must be after CHROME_SRC is set.
|
| -export PATH=$PATH:${CHROME_SRC}/build/android
|
| +# 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
|
| +
|
| +# Source a bunch of helper functions
|
| +. ${CHROME_SRC}/build/android/adb_device_functions.sh
|
|
|
| ANDROID_GOMA_WRAPPER=""
|
| if [[ -d $GOMA_DIR ]]; then
|
| @@ -130,38 +100,13 @@ export AR_target=$(basename ${ANDROID_TOOLCHAIN}/*-ar)
|
| # Performs a gyp_chromium run to convert gyp->Makefile for android code.
|
| android_gyp() {
|
| echo "GYP_GENERATORS set to '$GYP_GENERATORS'"
|
| - "${CHROME_SRC}/build/gyp_chromium" --depth="${CHROME_SRC}" "$@"
|
| + 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 "$@"
|
| }
|
|
|
| -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"
|
| +# FLOCK needs to be null on system that has no flock
|
| +which flock > /dev/null || export FLOCK=
|
|
|