Only touches download-toolchain-sources.sh and build-toolchain.sh This does not impact the NDK build scripts themselves and is only needed to properly package NDK release packages.
204 lines
5.1 KiB
Bash
Executable File
204 lines
5.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (C) 2009 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.
|
|
#
|
|
# This shell script is used to download the sources of the Android NDK toolchain
|
|
# from the git server at android.git.kernel.org and package them in a nice tarball
|
|
# that can later be used with the 'built-toolchain.sh' script.
|
|
#
|
|
|
|
# include common function and variable definitions
|
|
. `dirname $0`/../core/ndk-common.sh
|
|
|
|
OPTION_HELP=no
|
|
OPTION_RELEASE=
|
|
OPTION_GIT=
|
|
OPTION_BRANCH=
|
|
|
|
# the default release name (use today's date)
|
|
RELEASE=`date +%Y%m%d`
|
|
|
|
# the default branch to use
|
|
BRANCH=eclair
|
|
|
|
GITCMD=git
|
|
|
|
VERBOSE=no
|
|
VERBOSE2=no
|
|
|
|
for opt do
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
|
case "$opt" in
|
|
--help|-h|-\?) OPTION_HELP=yes
|
|
;;
|
|
--branch=*)
|
|
OPTION_BRANCH="$optarg"
|
|
;;
|
|
--git=*)
|
|
OPTION_GIT="$optarg"
|
|
;;
|
|
--verbose)
|
|
if [ "$VERBOSE" = "yes" ] ; then
|
|
VERBOSE2=yes
|
|
else
|
|
VERBOSE=yes
|
|
fi
|
|
;;
|
|
--release=*)
|
|
OPTION_RELEASE=$optarg
|
|
;;
|
|
*)
|
|
echo "unknown option '$opt', use --help"
|
|
exit 1
|
|
esac
|
|
done
|
|
|
|
if [ $OPTION_HELP = "yes" ] ; then
|
|
echo "Download the NDK toolchain sources from android.git.kernel.org and package them."
|
|
echo "You will need to run this script before being able to rebuild the NDK toolchain"
|
|
echo "binaries from scratch with build/tools/build-toolchain.sh"
|
|
echo ""
|
|
echo "options (defaults in brackets):"
|
|
echo ""
|
|
echo " --help print this message"
|
|
echo " --branch=<name> specify release branch [$BRANCH]"
|
|
echo " --release=<name> specify release name [$RELEASE]"
|
|
echo " --git=<executable> use this version of the git tool [$GITCMD]"
|
|
echo " --verbose increase verbosity"
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
TMPLOG=/tmp/android-ndk-download-toolchain-$$.log
|
|
rm -rf $TMPLOG
|
|
|
|
if [ $VERBOSE = yes ] ; then
|
|
run ()
|
|
{
|
|
echo "##### NEW COMMAND"
|
|
echo $@
|
|
$@ 2>&1 | tee $TMPLOG
|
|
}
|
|
log ()
|
|
{
|
|
echo "LOG: $@"
|
|
}
|
|
else
|
|
echo "To follow download, please use in another terminal: tail -F $TMPLOG"
|
|
run ()
|
|
{
|
|
echo "##### NEW COMMAND" >> $TMPLOG
|
|
echo "$@" >> $TMPLOG
|
|
$@ 1>$TMPLOG 2>&1
|
|
}
|
|
log ()
|
|
{
|
|
echo "$@" > /dev/null
|
|
}
|
|
fi
|
|
|
|
if [ -n "$OPTION_RELEASE" ] ; then
|
|
RELEASE="$OPTION_RELEASE"
|
|
log "Using release name $RELEASE"
|
|
else
|
|
log "Using default release name $RELEASE"
|
|
fi
|
|
|
|
# Check that 'git' works
|
|
if [ -n "$OPTION_GIT" ] ; then
|
|
GITCMD="$OPTION_GIT"
|
|
log "Using git tool command: '$GITCMD'"
|
|
else
|
|
log "Using default git tool command."
|
|
fi
|
|
$GITCMD --version > /dev/null 2>&1
|
|
if [ $? != 0 ] ; then
|
|
echo "The git tool doesn't seem to work. Please check $GITCMD"
|
|
exit 1
|
|
fi
|
|
log "Git seems to work ok."
|
|
|
|
if [ -n "$OPTION_BRANCH" ] ; then
|
|
BRANCH="$OPTION_BRANCH"
|
|
log "Using branch named $BRANCH"
|
|
else
|
|
log "Using default branch name $BRANCH"
|
|
fi
|
|
|
|
# Create temp directory where everything will be copied
|
|
#
|
|
PKGNAME=android-ndk-toolchain-$RELEASE
|
|
TMPDIR=/tmp/$PKGNAME
|
|
log "Creating temporary directory $TMPDIR"
|
|
rm -rf $TMPDIR && mkdir $TMPDIR
|
|
if [ $? != 0 ] ; then
|
|
echo "Could not create temporary directory: $TMPDIR"
|
|
fi
|
|
|
|
# prefix used for all clone operations
|
|
GITPREFIX=git://android.git.kernel.org/toolchain
|
|
|
|
toolchain_clone ()
|
|
{
|
|
echo "downloading sources for toolchain/$1"
|
|
log "cloning $GITPREFIX/$1.git"
|
|
run git clone $GITPREFIX/$1.git $1
|
|
if [ $? != 0 ] ; then
|
|
echo "Could not clone $GITPREFIX/$1.git ?"
|
|
exit 1
|
|
fi
|
|
log "checking out $BRANCH branch of $1.git"
|
|
cd $1
|
|
run git checkout -b $BRANCH origin/$BRANCH
|
|
if [ $? != 0 ] ; then
|
|
echo "Could not checkout $1 ?"
|
|
exit 1
|
|
fi
|
|
# get rid of .git directory, we won't need it.
|
|
cd ..
|
|
log "getting rid of .git directory for $1."
|
|
run rm -rf $1/.git
|
|
}
|
|
|
|
|
|
cd $TMPDIR
|
|
toolchain_clone binutils
|
|
toolchain_clone build
|
|
toolchain_clone gcc
|
|
toolchain_clone gdb
|
|
toolchain_clone gmp
|
|
#toolchain_clone gold # not sure about this one !
|
|
toolchain_clone mpfr
|
|
|
|
# We only keep one version of gcc and binutils
|
|
|
|
# we clearly don't need this
|
|
log "getting rid of obsolete sources: gcc-4.3.1 gdb-6.8"
|
|
rm -rf $TMPDIR/gcc/gcc-4.3.1
|
|
rm -rf $TMPDIR/gcc/gdb-6.8
|
|
|
|
# create the package
|
|
PACKAGE=/tmp/$PKGNAME.tar.bz2
|
|
echo "Creating package archive $PACKAGE"
|
|
cd `dirname $TMPDIR`
|
|
run tar cjvf $PACKAGE -C /tmp/$PKGNAME .
|
|
if [ $? != 0 ] ; then
|
|
echo "Could not package toolchain source archive ?. See $TMPLOG"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Toolchain sources downloaded and packaged succesfully at $PACKAGE"
|
|
rm -f $TMPLOG
|