158 lines
4.0 KiB
Bash
158 lines
4.0 KiB
Bash
#!/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
|