summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authormichaelbai@google.com <michaelbai@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-26 21:40:38 +0000
committermichaelbai@google.com <michaelbai@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-26 21:40:38 +0000
commitec5dcded1318a4893c622015cb77d23ee52d793a (patch)
treee2f30c406c5f9ee15c9861086d417d41d7806cf9 /build
parentf36e802a8a1546a6254d1439e404e5743bd5db77 (diff)
downloadchromium_src-ec5dcded1318a4893c622015cb77d23ee52d793a.zip
chromium_src-ec5dcded1318a4893c622015cb77d23ee52d793a.tar.gz
chromium_src-ec5dcded1318a4893c622015cb77d23ee52d793a.tar.bz2
Upstream: Set build target and evnvironment for Android
BUG= TEST= Review URL: http://codereview.chromium.org/8008026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102807 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build')
-rw-r--r--build/all_android.gyp30
-rw-r--r--build/android/envsetup.sh136
2 files changed, 166 insertions, 0 deletions
diff --git a/build/all_android.gyp b/build/all_android.gyp
new file mode 100644
index 0000000..3aa4ddd
--- /dev/null
+++ b/build/all_android.gyp
@@ -0,0 +1,30 @@
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This is all.gyp file for Android to prevent breakage in Android and other
+# platform; It will be churning a lot in the short term and eventually be merged
+# into all.gyp.
+#
+# Currently only base_unittests is supported.
+
+{
+ 'targets': [
+ {
+ 'target_name': 'All',
+ 'type': 'none',
+ 'dependencies': [
+ 'util/build_util.gyp:*',
+ ],
+ }, # target_name: All
+ {
+ # The current list of tests for android.
+ # This is temporary until the full set supported.
+ 'target_name': 'android_builder_tests',
+ 'type': 'none',
+ 'dependencies': [
+ '../base/base.gyp:base_unittests',
+ ],
+ },
+ ], # targets
+}
diff --git a/build/android/envsetup.sh b/build/android/envsetup.sh
new file mode 100644
index 0000000..efd8c87
--- /dev/null
+++ b/build/android/envsetup.sh
@@ -0,0 +1,136 @@
+#!/bin/bash
+
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# 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 downloaded from" >& 2
+ echo "http://developer.android.com/sdk/ndk/index.html" >& 2
+ return 1
+fi
+
+host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
+
+case "${host_os}" in
+ "linux")
+ toolchain_dir="linux-x86"
+ ;;
+ "mac")
+ toolchain_dir="darwin-x86"
+ ;;
+ *)
+ echo "Host platform ${host_os} is not supported" >& 2
+ return 1
+esac
+
+export ANDROID_TOOLCHAIN="${ANDROID_NDK_ROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/${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
+
+if [ -z "${CHROME_SRC}" ]; then
+ # if $CHROME_SRC was not set, assume current directory is CHROME_SRC.
+ export CHROME_SRC=$(pwd)
+fi
+
+if [ ! -d "${CHROME_SRC}" ]; then
+ echo "CHROME_SRC must be set to the path of Chrome source code." >& 2
+ return 1
+fi
+
+make() {
+ # TODO(michaelbai): how to use ccache in NDK.
+ if [ -n "${USE_CCACHE}" ]; then
+ if [ -e "${PREBUILT_CCACHE_PATH}" ]; then
+ use_ccache_var="$PREBUILT_CCACHE_PATH "
+ else
+ use_ccache_var=""
+ fi
+ fi
+ if [ -f "$PWD/build/android/envsetup.sh" ]; then
+ CC="${use_ccache_var}${CROSS_CC}" CXX="${use_ccache_var}${CROSS_CXX}" \
+ LINK="${CROSS_LINK}" AR="${CROSS_AR}" RANLIB="${CROSS_RANLIB}" \
+ command make $*
+ else
+ command make $*
+ fi
+}
+
+# Performs a gyp_chromium run to convert gyp->Makefile for android code.
+android_gyp() {
+ "${CHROME_SRC}/build/gyp_chromium" --depth="${CHROME_SRC}"
+}
+
+firstword() {
+ echo "${1}"
+}
+
+export CROSS_AR="$(firstword "${ANDROID_TOOLCHAIN}"/*-ar)"
+export CROSS_CC="$(firstword "${ANDROID_TOOLCHAIN}"/*-gcc)"
+export CROSS_CXX="$(firstword "${ANDROID_TOOLCHAIN}"/*-g++)"
+export CROSS_LINK="$(firstword "${ANDROID_TOOLCHAIN}"/*-gcc)"
+export CROSS_RANLIB="$(firstword "${ANDROID_TOOLCHAIN}"/*-ranlib)"
+export OBJCOPY="$(firstword "${ANDROID_TOOLCHAIN}"/*-objcopy)"
+export STRIP="$(firstword "${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" # Currently, Only '0' is supportted.
+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"
+# TODO(bulach): use "shared_libraries" once the transition from executable
+# is over.
+DEFINES+=" gtest_target_type=executable"
+DEFINES+=" branding=Chromium"
+
+# If the TARGET_PRODUCT wasn't set, use 'full' by default.
+if [ -z "${TARGET_PRODUCT}" ]; then
+ TARGET_PRODUCT="full"
+fi
+
+# The following defines will affect ARM code generation of both C/C++ compiler
+# and V8 mksnapshot.
+case "${TARGET_PRODUCT}" in
+ "full")
+ DEFINES+=" target_arch=arm"
+ DEFINES+=" arm_neon=0 armv7=0 arm_thumb=1 arm_fpu=vfp"
+ ;;
+ *x86*)
+ DEFINES+=" target_arch=ia32 use_libffmpeg=0"
+ ;;
+ *)
+ echo "TARGET_PRODUCT: ${TARGET_PRODUCT} is not supported." >& 2
+ return 1
+esac
+
+export GYP_DEFINES="${DEFINES}"
+
+# Use the "android" flavor of the Makefile generator for both Linux and OS X.
+export GYP_GENERATORS="make-android"
+
+# We want to use our version of "all" targets.
+export CHROMIUM_GYP_FILE="${CHROME_SRC}/build/all_android.gyp"