#!/bin/bash

#
# Copyright (C) 2014-2015 ARM Limited. All rights reserved.
#
# Copyright (C) 2008 The Android Open Source 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.
#

# Android K script for LLVM 3.5 and above support
#
# This script applies two minor patches and checks-out libcxx and libcxxabi libraries
# adding C++11 support in Android K required for LLVM3.5 and above.


if [ -z "$ANDROID_BUILD_TOP" ]; then
    echo "[ANDROID-PATCH] This script must be executed in an Android build environment"
    echo "                ANDROID_BUILD_TOP is undefined"
    echo "                please do \"source build/envseup.sh; lunch\"."
    exit 1
fi

ANDROID_REPOSITORY_URL="https://android.googlesource.com/"

REFERENCE_ARGUMENT=""

# Process arguments. Valid arguments are:
#        -u ARG      Override the Android repository url
#        -r ARG      Provide a path to a reference git repository
while getopts "u:r:" opt; do
  case $opt in
    u)
      ANDROID_REPOSITORY_URL=$OPTARG
      ;;

    r)
      REFERENCE_ARGUMENT="--reference "$OPTARG
      ;;

    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1

      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;

  esac
done

MIDGARD_DDK_WD=$(pwd)

cd $ANDROID_BUILD_TOP/external

#Checkout libcxx from Android Master required by LLVM due to c++11
git clone $ANDROID_REPOSITORY_URL/platform/external/libcxx $REFERENCE_ARGUMENT

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] git clone of libcxx failed."
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

cd libcxx
git checkout 27ae7cb782821a4f2d3813522ee411cd978bcd85 -q

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] checkout of libcxx@27ae7cb782821a4f2d3813522ee411cd978bcd85 revision failed."
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

patch -p1  < $MIDGARD_DDK_WD/android/patches/K/libcxx.diff

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] Patching libcxx failed."
    git reset --hard
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

#Checkout libcxxabi from Android Master required by LLVM due to c++11
cd $ANDROID_BUILD_TOP/external
git clone $ANDROID_REPOSITORY_URL/platform/external/libcxxabi $REFERENCE_ARGUMENT

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] git clone of libcxxabi failed."
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

cd libcxxabi
git checkout 285d67f35f6044cf733091e36248405ca967c62c -q

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] checkout of libcxxabi@285d67f35f6044cf733091e36248405ca967c62c revision failed."
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi


#Apply patch to bioncs
cd $ANDROID_BUILD_TOP/bionic/
patch -p1  < $MIDGARD_DDK_WD/android/patches/K/bionics.diff

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] Patching bionics failed."
    git reset --hard
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

#Add locale support to bioncs
cd $ANDROID_BUILD_TOP/bionic/
patch -p1  < $MIDGARD_DDK_WD/android/patches/K/locale.diff

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] Adding locale support failed."
    git reset --hard
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

#Add LLVM backend ARM fix to support -O0 compilation
cd $ANDROID_BUILD_TOP/external/llvm/
patch -p1  < $MIDGARD_DDK_WD/android/patches/K/llvm.diff

ret_code=$?
if [[ $ret_code != 0 ]] ; then
    echo "[ANDROID-PATCH] Fixing ARM LLVM backend failed."
    git reset --hard
    cd $MIDGARD_DDK_WD
    exit $ret_code
fi

echo "[ANDROID-PATCH] Patching completed successfully"
cd $MIDGARD_DDK_WD
