New build-host-perl.sh

Change-Id: Ia7e441b57ce21786caec69abdfd0a258dd347990
diff --git a/build/tools/build-host-perl.sh b/build/tools/build-host-perl.sh
new file mode 100755
index 0000000..9a7e5c0
--- /dev/null
+++ b/build/tools/build-host-perl.sh
@@ -0,0 +1,140 @@
+#!/bin/sh
+#
+# Copyright (C) 2013 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.
+#
+# Build the host version of the perl executable and place it
+# at the right location
+
+PROGDIR=$(dirname $0)
+. $PROGDIR/prebuilt-common.sh
+
+PROGRAM_PARAMETERS="<src-dir>"
+
+PROGRAM_DESCRIPTION=\
+"Rebuild the host perl used by the Android NDK.
+
+Where <src-dir> is the location of toolchain sources."
+
+register_try64_option
+register_canadian_option
+register_jobs_option
+
+BUILD_OUT=/tmp/ndk-$USER/build/perl
+OPTION_BUILD_OUT=
+register_var_option "--build-out=<path>" OPTION_BUILD_OUT "Set temporary build directory"
+
+NDK_DIR=$ANDROID_NDK_ROOT
+register_var_option "--ndk-dir=<path>" NDK_DIR "Specify NDK install directory"
+
+PACKAGE_DIR=
+register_var_option "--package-dir=<path>" PACKAGE_DIR "Archive to package directory"
+
+CHECK=no
+do_check_option () { CHECK=yes; }
+register_option "--check" do_check_option "Check Perl"
+
+extract_parameters "$@"
+
+SUBDIR=$(get_prebuilt_install_prefix)
+BIN_OUT="$SUBDIR/bin/perl${HOST_EXE}"
+LIB_OUT="$SUBDIR/lib/perl5"
+
+fix_option BUILD_OUT "$OPTION_BUILD_OUT" "build directory"
+
+PERL_VERSION=$DEFAULT_PERL_VERSION
+
+set_parameters ()
+{
+    SRC_DIR="$1"
+
+    # Check source directory
+    #
+    if [ -z "$SRC_DIR" ] ; then
+        echo "ERROR: Missing source directory parameter. See --help for details."
+        exit 1
+    fi
+
+    if [ ! -d "$SRC_DIR/perl/perl-$PERL_VERSION" ] ; then
+        echo "ERROR: Source directory does not contain perl sources: $SRC_DIR/perl/perl-$PERL_VERSION"
+        exit 1
+    fi
+
+    log "Using source directory: $SRC_DIR"
+
+}
+
+set_parameters $PARAMETERS
+
+prepare_host_build
+
+if [ "$MINGW" != "yes" -a "$DARWIN" != "yes" ] ; then
+    dump "Using C compiler: $CC"
+    dump "Using C++ compiler: $CXX"
+fi
+
+log "Configuring the build"
+mkdir -p $BUILD_OUT && rm -rf $BUILD_OUT/*
+prepare_canadian_toolchain $BUILD_OUT
+
+run copy_directory "$SRC_DIR/perl/perl-$PERL_VERSION" "$BUILD_OUT"
+fail_panic "Could not copy perl source $SRC_DIR/perl/perl-$PERL_VERSION to build directory $BUILD_OUT"
+
+cd $BUILD_OUT &&
+CFLAGS=$HOST_CFLAGS" -O2 -s" &&
+run ./Configure \
+    -des \
+    -Dprefix=$BUILD_OUT/prefix \
+    -Dcc="$CC" \
+    -Dcc_as_ld \
+    -Dccflags="$CFLAGS" \
+fail_panic "Failed to configure the perl-$PERL_VERSION build!"
+
+log "Building perl"
+run make -j $NUM_JOBS
+fail_panic "Failed to build perl-$PERL_VERSION!"
+
+if [ "$CHECK" = "yes" ]; then
+    log "Checking perl"
+    run make check
+    fail_warning "Failed to check perl-$PERL_VERSION!"
+fi
+
+log "Installing perl"
+run make install
+fail_panic "Failed to install perl-$PERL_VERSION!"
+
+log "Copying executable to prebuilt location"
+run copy_file_list "$BUILD_OUT/prefix/bin" $(dirname "$NDK_DIR/$BIN_OUT") perl
+fail_panic "Could not copy executable to: $NDK_DIR/$BIN_OUT"
+
+log "Copying library to prebuilt location"
+run copy_directory "$BUILD_OUT/prefix/lib" "$NDK_DIR/$LIB_OUT"
+fail_panic "Could not copy library to: $NDK_DIR/$LIB_OUT"
+
+if [ "$PACKAGE_DIR" ]; then
+    ARCHIVE=ndk-perl-$HOST_TAG.tar.bz2
+    dump "Packaging: $ARCHIVE"
+    mkdir -p "$PACKAGE_DIR" &&
+    pack_archive "$PACKAGE_DIR/$ARCHIVE" "$NDK_DIR" "$BIN_OUT" "$LIB_OUT"
+    fail_panic "Could not package archive: $PACKAGE_DIR/$ARCHIVE"
+fi
+
+log "Cleaning up"
+if [ -z "$OPTION_BUILD_OUT" ] ; then
+   rm -rf $BUILD_OUT
+fi
+
+log "Done."
+
diff --git a/build/tools/dev-defaults.sh b/build/tools/dev-defaults.sh
index 4203442..f8f3043 100644
--- a/build/tools/dev-defaults.sh
+++ b/build/tools/dev-defaults.sh
@@ -41,6 +41,7 @@
 DEFAULT_CLOOG_VERSION=0.17.0
 DEFAULT_PPL_VERSION=1.0
 DEFAULT_PYTHON_VERSION=2.7.3
+DEFAULT_PERL_VERSION=5.16.2
 
 # Default platform to build target binaries against.
 DEFAULT_PLATFORM=android-9