aboutsummaryrefslogtreecommitdiffstats
path: root/gello_build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'gello_build.sh')
-rwxr-xr-xgello_build.sh203
1 files changed, 203 insertions, 0 deletions
diff --git a/gello_build.sh b/gello_build.sh
new file mode 100755
index 0000000..fb81f36
--- /dev/null
+++ b/gello_build.sh
@@ -0,0 +1,203 @@
+#!/bin/bash
+#
+# Copyright (C) 2015 The CyanogenMod Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Integrated SWE Build System for Gello
+#
+
+##
+# Variables
+#
+TOP_GELLO=$(pwd)
+SRC_GELLO=$TOP_GELLO/env/src
+
+READY_APK=$TOP_GELLO/Gello.apk
+
+
+##
+# Flag Booleans
+#
+FAST=false
+PUSH=false
+NOSYNC=false
+VERBOSE=false
+
+
+##
+# Sync
+#
+function sync() {
+ if [ "$NOSYNC" != true ]; then
+ cd $TOP_GELLO/env
+
+ # If we have previously downloaded depot tools using this script
+ # export its path for us
+ if [ -d "$TOP_GELLO/depot/depot_tools" ]; then
+ export PATH=$PATH:$TOP_GELLO/depot/depot_tools
+ fi
+
+ echo "Syncing now!"
+ gclient sync -n --no-nag-max
+ return $?
+ else
+ return 0
+ fi
+}
+
+
+##
+# Setup
+#
+function setup() {
+ local DONE_FILE=$TOP_GELLO/.cm_done
+ local GOOGLE_SDK=$SRC_GELLO/third_party/android_tools/sdk/extras/google/google_play_services
+
+ cd $SRC_GELLO
+
+ . build/android/envsetup.sh
+
+ if [ "$FAST" != true ] && [ -f $DONE_FILE ]; then
+ # !! The first time it asks a manual input to accept licenses !!
+ GYP_DEFINES="$GYP_DEFINES OS=android swe_channel=cm" gclient runhooks
+ return $?
+ else
+ return 0
+ fi
+
+ if [ ! -f $DONE_FILE ]; then
+ touch $DONE_FILE
+ fi
+
+ # If we don't have Google SDKs, get them
+ # !! This asks a manual input to accept licenses !!
+ if [ ! -d $GOOGLE_SDK ]; then
+ bash $SRC_GELLO/build/install-android-sdks.sh
+ fi
+
+
+}
+
+
+##
+# Compile
+#
+function compile() {
+ local TMP_APK=$SRC_GELLO/out/Release/apks/SWE_AndroidBrowser.apk
+ local OUT_TARGET=$TOP_GELLO/Gello.apk
+
+ cd $SRC_GELLO
+
+ # Make things
+ ninja -C out/Release swe_android_browser_apk
+
+ if [ "$?" == 0 ]; then
+ if [ -f "$OUT_TARGET" ]; then
+ rm -f $OUT_TARGET
+ fi
+ cp $TMP_APK $OUT_TARGET
+ return $?
+ else
+ return $?
+ fi
+}
+
+
+##
+# Check Flags
+#
+function checkflags() {
+ if [ "$1" == "--verbose" ] || [ "$2" == "--verbose" ] ||
+ [ "$3" == "--verbose" ] || [ "$4" == "--verbose" ]; then
+ VERBOSE=true
+ fi
+
+ if [ "$1" == "--fast" ] || [ "$2" == "--fast" ] ||
+ [ "$3" == "--fast" ] || [ "$4" == "--fast" ]; then
+ NOSYNC=true
+ FAST=true
+ fi
+
+ if [ "$1" == "--no-sync" ] || [ "$2" == "--no-sync" ] ||
+ [ "$3" == "--no-sync" ] || [ "$4" == "--no-sync" ]; then
+ NOSYNC=true
+ fi
+
+ if [ "$1" == "--push" ] || [ "$2" == "--push" ] ||
+ [ "$3" == "--push" ] || [ "$4" == "--push" ]; then
+ PUSH=true
+ fi
+}
+
+
+##
+# Help
+#
+function helpgello() {
+ cat<<EOF
+Gello inline build system (c) CyanogenMod 2015
+Usage: ./gello_build.sh <flags>
+flags:
+ -h = Show this message
+ -v = Verbose mode, show more details
+ --depot = Install Depot Tool
+ --fast = Skip sync and runhooks, useful for testing changes
+ --push = Once everything else is done, install the given apk on a connected device
+ --no-sync = Skip sync
+EOF
+}
+
+
+##
+# Depot
+#
+function getdepot() {
+ cd $TOP_GELLO
+
+ mkdir depot
+ cd depot
+ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+}
+
+
+##
+# Main
+#
+
+if [ "$1" == "--depot" ]; then
+ getdepot && exit 0
+elif [ "$1" == "--help" ]; then
+ helpgello && exit 0
+fi
+
+checkflags $1 $2 $3 $4
+
+sync && setup && compile
+
+if [ "$?" == 0 ]; then
+ echo "$(tput setaf 2)Done! Gello: $READY_APK$(tput sgr reset)"
+
+ if [ "$PUSH" == true ]; then
+ if [ ! -x $(which adb) ]; then
+ adb wait-for-device
+ adb install -r -d $TOP_GELLO/Gello.apk
+ exit $?
+ else
+ echo "Adb not found! Unable to push gello to device!"
+ exit 3
+ fi
+ fi
+
+ exit 0
+fi