#!/bin/sh # # Copyright (C) 2010 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 ccache # tool that can be used to speed-up rebuilds of NDK binaries. # # We use a special patched version of ccache 2.4 that works # well on Win32 and handles the dependency generation compiler # flags (-MMD -MP -MF) properly. # # Beta versions of ccache 3.0 are supposed to do that as well but # have not been checked yet. # # include common function and variable definitions . `dirname $0`/prebuilt-common.sh PROGRAM_PARAMETERS="<ndk-dir>" PROGRAM_DESCRIPTION="Rebuild the prebuilt ccache binary for the Android NDK toolchain." CCACHE_VERSION=ccache-2.4-android-20070905 CCACHE_PACKAGE=$CCACHE_VERSION.tar.gz DOWNLOAD_ROOT=http://android.git.kernel.org/pub CCACHE_URL=$DOWNLOAD_ROOT/$CCACHE_PACKAGE OPTION_PACKAGE=no BUILD_OUT=$NDK_TMPDIR/build-ccache OPTION_BUILD_OUT= OPTION_FROM= register_option "--from=<url>" do_from "Specify source package" "$PACKAGE" register_option "--build-out=<path>" do_build_out "Set temporary build directory" "/tmp/ndk-$USER/<random>" do_from () { CCACHE_URL=$1; CCACHE_PACKAGE=`basename $1`; } do_build_out () { OPTION_BUILD_OUT=$1; } extract_parameters "$@" set_parameters () { if [ -n "$2" ] ; then echo "ERROR: Too many parameters. See --help for usage." exit 1 fi NDK_DIR=$1 if [ -z "$NDK_DIR" ] ; then echo "ERROR: Missing required ndk directory. See --help for usage." exit 1 fi mkdir -p $NDK_DIR if [ $? != 0 ] ; then echo "ERROR: Could not create NDK target directory: $NDK_DIR" exit 1 fi } set_parameters $PARAMETERS prepare_host_build fix_option BUILD_OUT "$OPTION_BUILD_OUT" "build directory" # Check for md5sum check_md5sum prepare_download run rm -rf $BUILD_OUT && run mkdir -p $BUILD_OUT if [ $? != 0 ] ; then echo "ERROR: Could not create build directory: $BUILD_OUT" exit 1 fi dump "Getting sources from $CCACHE_URL" download_file $CCACHE_URL $BUILD_OUT/$CCACHE_PACKAGE if [ $? != 0 ] ; then dump "Could not download $CCACHE_URL" dump "Aborting." exit 1 fi cd $BUILD_OUT && tar xzf $BUILD_OUT/$CCACHE_PACKAGE if [ $? != 0 ] ; then dump "Could not unpack $CCACHE_PACKAGE in $BUILD_OUT" exit 1 fi echo "Building ccache from sources..." cd $BUILD_OUT/$CCACHE_VERSION && run make clean && run make unpack && run make build if [ $? != 0 ] ; then dump "Could not build ccache in $BUILD_OUT" fi PREBUILT_DIR=$NDK_DIR/build/prebuilt/$HOST_TAG/ccache mkdir -p $PREBUILT_DIR && cp -p $BUILD_OUT/$CCACHE_VERSION/ccache $PREBUILT_DIR if [ $? != 0 ] ; then dump "Could not copy ccache binary!" exit 1 fi dump "Done"