Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(232)

Unified Diff: platform_tools/chromeos/bin/chromeos_setup.sh

Issue 16099011: GYP changes and scripts for compiling Skia for ChromeOS (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: platform_tools/chromeos/bin/chromeos_setup.sh
===================================================================
--- platform_tools/chromeos/bin/chromeos_setup.sh (revision 0)
+++ platform_tools/chromeos/bin/chromeos_setup.sh (working copy)
@@ -1,3 +1,5 @@
+# Set up the environment to build Skia for ChromeOS.
+
function exportVar {
NAME=$1
VALUE=$2
@@ -7,194 +9,79 @@
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-# A valid Android SDK installation is required to build the sample app.
-if [ -z "$ANDROID_SDK_ROOT" ]; then
- ANDROID_TOOL=$(which android 2>/dev/null)
- if [ -z "$ANDROID_TOOL" ]; then
- echo "ERROR: Please define ANDROID_SDK_ROOT in your environment to point"
- echo " to a valid Android SDK installation."
- return 1
- fi
- ANDROID_SDK_ROOT=$(cd $(dirname "$ANDROID_TOOL")/.. && pwd)
- exportVar ANDROID_SDK_ROOT "$ANDROID_SDK_ROOT"
-fi
-
-# ant is required to be installed on your system and in your PATH
-ant -version &> /dev/null
-if [[ "$?" != "0" ]]; then
- echo "ERROR: Unable to find ant. Please install it before proceeding."
- exit 1
-fi
-
-# check to see that gclient sync ran successfully
-THIRD_PARTY_EXTERNAL_DIR=${SCRIPT_DIR}/../third_party/externals
-if [ ! -d "$THIRD_PARTY_EXTERNAL_DIR" ]; then
- echo ""
- echo "ERROR: Unable to find the required third_party dependencies needed to build."
- echo " To fix this add the following line to your .gclient file and run 'gclient sync'"
- echo " target_os = ['android']"
- echo ""
- exit 1;
-fi
-
-# determine the toolchain that we will be using
-API_LEVEL=14
-
-if [[ -z "$NDK_REV" ]];
-then
- NDK_REV="8d"
-fi
-
-if [[ -z "$ANDROID_ARCH" ]];
-then
- ANDROID_ARCH="arm"
-fi
-
-TOOLCHAIN_DIR=${SCRIPT_DIR}/../toolchains
-if [ $(uname) == "Linux" ]; then
- echo "Using Linux toolchain."
- TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
-elif [ $(uname) == "Darwin" ]; then
- echo "Using Mac toolchain."
- TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-mac_v$API_LEVEL
-else
- echo "Could not automatically determine toolchain! Defaulting to Linux."
- TOOLCHAIN_TYPE=ndk-r$NDK_REV-$ANDROID_ARCH-linux_v$API_LEVEL
-fi
-exportVar ANDROID_TOOLCHAIN ${TOOLCHAIN_DIR}/${TOOLCHAIN_TYPE}/bin
-
-# if the toolchain doesn't exist on your machine then we need to fetch it
-if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
- # gsutil must be installed on your system and in your PATH
- gsutil version &> /dev/null
- if [[ "$?" != "0" ]]; then
- echo "ERROR: Unable to find gsutil. Please install it before proceeding."
- exit 1
- fi
- # create the toolchain directory if needed
- if [ ! -d "$TOOLCHAIN_DIR" ]; then
- mkdir $TOOLCHAIN_DIR
- fi
- # enter the toolchain directory then download, unpack, and remove the tarball
- pushd $TOOLCHAIN_DIR
- TARBALL=ndk-r$NDK_REV-v$API_LEVEL.tgz
- gsutil cp gs://chromium-skia-gm/android-toolchains/$TARBALL $TARBALL
- echo "Untarring $TOOLCHAIN_TYPE from $TARBALL."
- tar -xzf $TARBALL $TOOLCHAIN_TYPE
- echo "Removing $TARBALL"
- rm $TARBALL
- popd
-fi
-
-if [ ! -d "$ANDROID_TOOLCHAIN" ]; then
- echo "ERROR: unable to download/setup the required toolchain (${TOOLCHAIN_TYPE})"
- return 1;
-fi
-
-echo "The build is targeting NDK API level $API_LEVEL for use on Android 4.0 (NDK Revision $NDK_REV) and above"
-
-LS="/bin/ls" # Use directly to avoid any 'ls' alias that might be defined.
-GCC=$($LS $ANDROID_TOOLCHAIN/*-gcc | head -n1)
-if [ -z "$GCC" ]; then
- echo "ERROR: Could not find Android cross-compiler in: $ANDROID_TOOLCHAIN"
- return 1
-fi
-
-# Remove the '-gcc' at the end to get the full toolchain prefix
-ANDROID_TOOLCHAIN_PREFIX=${GCC%%-gcc}
-
-exportVar AR "$ANDROID_TOOLCHAIN_PREFIX-ar"
-if [[ -z "$ANDROID_MAKE_CCACHE" ]]; then
- exportVar CC "$ANDROID_TOOLCHAIN_PREFIX-gcc"
- exportVar CXX "$ANDROID_TOOLCHAIN_PREFIX-g++"
- exportVar LINK "$ANDROID_TOOLCHAIN_PREFIX-gcc"
-else
- exportVar CC "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc"
- exportVar CXX "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-g++"
- exportVar LINK "$ANDROID_MAKE_CCACHE $ANDROID_TOOLCHAIN_PREFIX-gcc"
-fi
-exportVar RANLIB "$ANDROID_TOOLCHAIN_PREFIX-ranlib"
-exportVar OBJCOPY "$ANDROID_TOOLCHAIN_PREFIX-objcopy"
-exportVar STRIP "$ANDROID_TOOLCHAIN_PREFIX-strip"
-
# Helper function to configure the GYP defines to the appropriate values
# based on the target device.
setup_device() {
- DEFINES="OS=android"
+ DEFINES="OS=linux"
DEFINES="${DEFINES} host_os=$(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')"
- DEFINES="${DEFINES} skia_os=android"
- DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.."
- DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}"
+ DEFINES="${DEFINES} skia_os=chromeos"
+ # TODO(borenet): We have to define skia_warnings_as_errors=0 for the arm
+ # build, which throws lots of "mangling of va_list has changed" warnings.
+ DEFINES="${DEFINES} skia_warnings_as_errors=0"
+
# Setup the build variation depending on the target device
TARGET_DEVICE="$1"
if [ -z "$TARGET_DEVICE" ]; then
- echo "INFO: no target device type was specified so using the default 'arm_v7'"
- TARGET_DEVICE="arm_v7"
+ echo "INFO: no target device type was specified so using the default 'x86-generic'"
+ TARGET_DEVICE="x86-generic"
fi
+ # Toolchain prefixes.
+ X86_TOOLCHAIN_PREFIX="i686-pc-linux-gnu"
+ AMD64_TOOLCHAIN_PREFIX="x86_64-cros-linux-gnu"
+ ARMV7_TOOLCHAIN_PREFIX="armv7a-cros-linux-gnueabi"
+
case $TARGET_DEVICE in
- nexus_s)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 armv7=1 arm_thumb=0"
- DEFINES="${DEFINES} skia_texture_cache_mb_limit=24"
- ;;
- nexus_4 | nexus_7 | nexus_10)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 armv7=1 arm_thumb=0"
- ;;
- xoom)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 armv7=1 arm_thumb=0"
- ;;
- galaxy_nexus)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 armv7=1 arm_thumb=0"
- DEFINES="${DEFINES} skia_texture_cache_mb_limit=32"
- ;;
- razr_i)
+ x86-generic)
DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32"
- DEFINES="${DEFINES} skia_texture_cache_mb_limit=32"
+ CHROMEOS_TOOLCHAIN_TYPE=${X86_TOOLCHAIN_PREFIX}
+ BOARD_TYPE="x86-generic"
;;
- arm_v7)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 armv7=1 arm_thumb=0"
+ amd64-generic)
+ DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=64"
+ CHROMEOS_TOOLCHAIN_TYPE=${AMD64_TOOLCHAIN_PREFIX}
+ BOARD_TYPE="amd64-generic"
;;
- arm_v7_thumb)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon_optional=1 armv7=1 arm_thumb=1"
+ arm-generic)
+ DEFINES="${DEFINES} skia_arch_type=arm arm_neon=1 armv7=1 arm_thumb=0 skia_arch_width=32"
+ CHROMEOS_TOOLCHAIN_TYPE=${ARMV7_TOOLCHAIN_PREFIX}
+ BOARD_TYPE="arm-generic"
;;
- arm)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 armv7=0 arm_thumb=0"
- ;;
- arm_thumb)
- DEFINES="${DEFINES} skia_arch_type=arm arm_neon=0 armv7=0 arm_thumb=1"
- ;;
- x86)
- DEFINES="${DEFINES} skia_arch_type=x86 skia_arch_width=32"
- DEFINES="${DEFINES} skia_texture_cache_mb_limit=32"
- ;;
*)
echo -n "ERROR: unknown device specified ($TARGET_DEVICE), valid values: "
- echo "nexus_[s,4,7,10] xoom galaxy_nexus arm arm_thumb arm_v7 arm_v7_thumb x86"
+ echo "x86-generic amd64-generic arm-generic"
return 1;
;;
esac
- echo "The build is targeting the device: $TARGET_DEVICE"
+ DEFINES="${DEFINES} skia_cros_target=${BOARD_TYPE}"
- exportVar GYP_DEFINES "$DEFINES"
- exportVar SKIA_OUT "out/config/android-${TARGET_DEVICE}"
-}
+ CHROMEOS_TOOLCHAIN_PREFIX="/usr/bin/${CHROMEOS_TOOLCHAIN_TYPE}"
+ exportVar AR "$CHROMEOS_TOOLCHAIN_PREFIX-ar"
+ if [[ -z "$CHROMEOS_MAKE_CCACHE" ]]; then
+ exportVar CC "$CHROMEOS_TOOLCHAIN_PREFIX-gcc"
+ exportVar CXX "$CHROMEOS_TOOLCHAIN_PREFIX-g++"
+ exportVar LINK "$CHROMEOS_TOOLCHAIN_PREFIX-gcc"
+ else
+ exportVar CC "$CHROMEOS_MAKE_CCACHE $CHROMEOS_TOOLCHAIN_PREFIX-gcc"
+ exportVar CXX "$CHROMEOS_MAKE_CCACHE $CHROMEOS_TOOLCHAIN_PREFIX-g++"
+ exportVar LINK "$CHROMEOS_MAKE_CCACHE $CHROMEOS_TOOLCHAIN_PREFIX-gcc"
+ fi
+ exportVar RANLIB "$CHROMEOS_TOOLCHAIN_PREFIX-ranlib"
+ exportVar OBJCOPY "$CHROMEOS_TOOLCHAIN_PREFIX-objcopy"
+ exportVar STRIP "$CHROMEOS_TOOLCHAIN_PREFIX-strip"
-# Run the setup device command initially as a convenience for the user
-#setup_device
-#echo "** The device has been setup for you by default. If you would like to **"
-#echo "** use a different device then run the setup_device function with the **"
-#echo "** appropriate input. **"
+ echo "The build is targeting the device: $TARGET_DEVICE"
-# Use the "android" flavor of the Makefile generator for both Linux and OS X.
-exportVar GYP_GENERATORS "make-android"
+ BUILD_PREFIX="/build/${BOARD_TYPE}"
-# Helper function so that when we run "make" to build for clank it exports
-# the toolchain variables to make.
-#make_android() {
-# CC="$CROSS_CC" CXX="$CROSS_CXX" LINK="$CROSS_LINK" \
-# AR="$CROSS_AR" RANLIB="$CROSS_RANLIB" \
-# command make $*
-#}
+ exportVar C_INCLUDE_PATH "${BUILD_PREFIX}/usr/include"
+ exportVar CPLUS_INCLUDE_PATH "${BUILD_PREFIX}/usr/include"
+ exportVar LIBRARY_PATH "${BUILD_PREFIX}/usr/lib"
+ exportVar LD_LIBRARY_PATH "${BUILD_PREFIX}/usr/lib"
+
+ exportVar GYP_DEFINES "$DEFINES"
+ exportVar SKIA_OUT "out/config/chromeos-${TARGET_DEVICE}"
+}

Powered by Google App Engine
This is Rietveld 408576698