diff options
author | michaelbai@google.com <michaelbai@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-26 21:40:38 +0000 |
---|---|---|
committer | michaelbai@google.com <michaelbai@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-26 21:40:38 +0000 |
commit | ec5dcded1318a4893c622015cb77d23ee52d793a (patch) | |
tree | e2f30c406c5f9ee15c9861086d417d41d7806cf9 /build | |
parent | f36e802a8a1546a6254d1439e404e5743bd5db77 (diff) | |
download | chromium_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.gyp | 30 | ||||
-rw-r--r-- | build/android/envsetup.sh | 136 |
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" |