#!/bin/sh # # Copyright (C) 2011 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. # # dev-platform-compress.sh # # Compressed expanded platform files into development/ndk/platforms/ # structure. # PROGDIR=$(dirname $0) . $PROGDIR/prebuilt-common.sh PROGRAM_PARAMETERS="" PROGRAM_DESCRIPTION=\ "This script is used to compress an expanded platforms NDK tree into the compressed/minimal structure used in development/ndk/platforms. The main idea is that in the destination directory, a file only appears once, even if it is provided by several platforms. I.e. if we have: file1 = \$SRC/android-3/foo file2 = \$SRC/android-4/foo file3 = \$SRC/android-5/foo We will always store a copy of file1 under \$DST/android-3/foo If file2 is identical to file1, we remove its copy in \$DST/android-4/foo, otherwise we do copy it to the same location If file3 is identical to file2, we remove its copy in \$DST/android-4/foo, otherwise we copy it to the same location. Repeat for all files under \$SRC/android-N for increasing values of N. " SRCDIR=/tmp/ndk-$USER/platforms register_var_option "--src-dir=<path>" SRCDIR "Specify source platforms directory" DSTDIR=/tmp/ndk-$USER/platforms-compressed register_var_option "--dst-dir=<path>" DSTDIR "Specify destination directory" API_LEVELS=$(spaces_to_commas $API_LEVELS) register_var_option "--platforms=<list>" API_LEVELS "Specify all API levels" extract_parameters "$@" API_LEVELS=$(commas_to_spaces $API_LEVELS) # Sanity check for PLATFORM in $API_LEVELS; do SDIR=$SRCDIR/android-$PLATFORM if [ ! -d "$SDIR" ]; then echo "ERROR: Missing source platform directory: $SDIR" exit 1 fi done # Let's roll PREV_PLATFORM= for PLATFORM in $API_LEVELS; do SDIR=$SRCDIR/android-$PLATFORM DDIR=$DSTDIR/android-$PLATFORM if [ -z "$PREV_PLATFORM" ]; then # Copy everything here log "Copying directory: $SDIR --> $DDIR" copy_directory "$SDIR" "$DDIR" else # For each file, check whether it is new or # different from the one in the previous platform level log "Compressing directory: $SDIR" PDIR=$SRCDIR/android-$PREV_PLATFORM FILES=$(cd $SDIR && find . -type f) if [ "$VERBOSE2" = "yes" ]; then echo "Files found:" echo "$FILES" | tr ' ' '\n' fi for FILENAME in $FILES; do FILENAME=${FILENAME##./} # Get rid of leading ./ PFILE=$PDIR/$FILENAME CFILE=$SDIR/$FILENAME DFILE=$DDIR/$FILENAME if [ -f "$PFILE" ]; then log2 "Comparing $CFILE with $PFILE" if cmp --quiet $PFILE $CFILE; then # Files are identical, remove it from destination # if it exists there, it's not longer relevant. if [ -f "$DFILE" ]; then log2 "Removing obsolete $DFILE" rm -f $DFILE else log2 "Skipping $CFILE" fi continue fi fi # New or modified file, copy it DFILE=$DDIR/$FILENAME log2 "Copying $SFILE --> $DFILE" mkdir -p $(dirname "$DFILE") && cp $CFILE $DFILE fail_panic "Could not copy $CFILE to $DFILE" done fi PREV_PLATFORM=$PLATFORM done log "Done!" exit 0