summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Rosenkraenzer <bero@linaro.org>2017-06-30 09:52:52 +0200
committerBernhard Rosenkraenzer <bero@linaro.org>2017-06-30 09:52:52 +0200
commit8e91b10d39a911f779d2b9bfd9c32faca514ea69 (patch)
tree235c5120bdb946bb5c23df6bf6ffddd4fa35494e
downloadaarch64-buildhosts-8e91b10d39a911f779d2b9bfd9c32faca514ea69.tar.gz
Initial import
-rw-r--r--binutils-2.25aosp-gcc7-buildfix.patch13
-rw-r--r--bionic-aarch64-host.patch28
-rwxr-xr-xbuild-prebuilts385
-rw-r--r--build_core-aarch64-host.patch208
-rw-r--r--build_make-aarch64-host.patch208
-rw-r--r--build_soong-aarch64-host.patch496
-rw-r--r--build_tools-aarch64-host.patch208
-rw-r--r--llvm-4.0-libc++-libc++abi-dependency.patch20
-rw-r--r--ndk-diffs.patch7982
-rw-r--r--ndk-libc++-bionic.patch37
-rw-r--r--ndkrepo-aarch64-host.patch501
-rw-r--r--prebuilts_build-tools-aarch64-host.patch88
12 files changed, 10174 insertions, 0 deletions
diff --git a/binutils-2.25aosp-gcc7-buildfix.patch b/binutils-2.25aosp-gcc7-buildfix.patch
new file mode 100644
index 0000000..b3786cb
--- /dev/null
+++ b/binutils-2.25aosp-gcc7-buildfix.patch
@@ -0,0 +1,13 @@
+diff --git a/binutils-2.25/gold/dwarf_reader.cc b/binutils-2.25/gold/dwarf_reader.cc
+index f5ca7cd7..dd5635c0 100644
+--- a/binutils-2.25/gold/dwarf_reader.cc
++++ b/binutils-2.25/gold/dwarf_reader.cc
+@@ -1961,7 +1961,7 @@ Sized_dwarf_line_info<size, big_endian>::read_header_tables_v5(
+ }
+ gold_debug(DEBUG_LOCATION, "File %3d: %s",
+ static_cast<int>(file_list.size()), path);
+- file_list.push_back(std::make_pair<int, std::string>(dirindex, path));
++ file_list.push_back(std::make_pair<int, std::string>(int(dirindex), path));
+ }
+
+ delete[] types;
diff --git a/bionic-aarch64-host.patch b/bionic-aarch64-host.patch
new file mode 100644
index 0000000..9af509d
--- /dev/null
+++ b/bionic-aarch64-host.patch
@@ -0,0 +1,28 @@
+diff --git a/tests/Android.bp b/tests/Android.bp
+index 519c28c5d..95303cf0d 100644
+--- a/tests/Android.bp
++++ b/tests/Android.bp
+@@ -477,7 +477,7 @@ cc_test {
+ "libtest_invalid-zero_shentsize.so",
+ "libtest_invalid-zero_shstrndx.so",
+ "libtest_invalid-textrels.so",
+- "libtest_invalid-textrels2.so",
++// "libtest_invalid-textrels2.so",
+ "preinit_getauxval_test_helper",
+ "preinit_syscall_test_helper",
+ "libnstest_private_external",
+diff --git a/tests/Android.build.prebuilt.mk b/tests/Android.build.prebuilt.mk
+index c98aee24a..9bcc411e1 100644
+--- a/tests/Android.build.prebuilt.mk
++++ b/tests/Android.build.prebuilt.mk
+@@ -23,8 +23,8 @@ LOCAL_MODULE_CLASS := EXECUTABLES
+
+ LOCAL_SRC_FILES_arm := prebuilt-elf-files/arm/$(bionic_tests_module)
+ LOCAL_SRC_FILES_arm64 := prebuilt-elf-files/arm64/$(bionic_tests_module)
+-LOCAL_SRC_FILES_x86 := prebuilt-elf-files/x86/$(bionic_tests_module)
+-LOCAL_SRC_FILES_x86_64 := prebuilt-elf-files/x86_64/$(bionic_tests_module)
++#LOCAL_SRC_FILES_x86 := prebuilt-elf-files/x86/$(bionic_tests_module)
++#LOCAL_SRC_FILES_x86_64 := prebuilt-elf-files/x86_64/$(bionic_tests_module)
+ LOCAL_SRC_FILES_mips := prebuilt-elf-files/mips/$(bionic_tests_module)
+ LOCAL_SRC_FILES_mips64 := prebuilt-elf-files/mips64/$(bionic_tests_module)
+ include $(BUILD_PREBUILT)
diff --git a/build-prebuilts b/build-prebuilts
new file mode 100755
index 0000000..317c759
--- /dev/null
+++ b/build-prebuilts
@@ -0,0 +1,385 @@
+#!/bin/sh
+set -e
+
+# Build dependencies beyond compilers and make:
+# OpenMandriva: urpmi cmake 'pkgconfig(libedit)' go lib64gmp-devel lib64mpfr-devel lib64mpc-devel gettext-devel autoconf automake libtool flex byacc
+# Fedora: dnf install cmake libedit-devel golang autoconf automake libtool flex byacc
+
+# Some settings...
+export OPTFLAGS="-O2"
+# Set to "true" or "false" -- used in the context of "${WITH_TESTS} && doSomething"
+export WITH_TESTS=true
+
+NINJA_VERSION=1.7.2
+LLVM_REV=tags/RELEASE_401/final
+CLANG_VERSION=4.0.1
+GO_VERSION=1.8
+BINUTILS_VERSION=2.28
+GCC_VERSION=linaro-snapshot-6.3-2017.05
+GLIBC_VERSION=2.25
+BISON_VERSION=3.0.4
+FLEX_VERSION=2.5.39
+
+ARCH=`uname -m`
+[ "$ARCH" = "aarch64" ] && ARCH=arm64
+OS="`uname -s |tr A-Z a-z`"
+
+MYDIR="$(realpath $(dirname $0))"
+
+# Enough settings - let's get to work
+MFLAGS="-j$(getconf _NPROCESSORS_ONLN)"
+GCC_V=$(echo ${GCC_VERSION} |sed -e 's,^[a-z-]*,,;s,-.*,,')
+
+mkdir -p prebuilts-tmp
+cd prebuilts-tmp
+export TOPDIR="$(pwd)"
+export OUTDIR="${TOPDIR}/out"
+export PATH=${OUTDIR}/prebuilts/build-tools/${OS}-${ARCH}/bin:${OUTDIR}/prebuilts/clang/host/${OS}-${ARCH}/clang-${CLANG_VERSION}/bin:${OUTDIR}/prebuilts/go/${OS}-${ARCH}/bin:${OUTDIR}/prebuilts/gcc/${OS}-${ARCH}/host/$(uname -m)-${OS}-glibc${GLIBC_VERSION}-${GCC_V}/bin:${PATH}
+
+status() {
+ echo -e "\e[44m$@\e[49m"
+}
+
+##############################################################################
+### Build ninja first (so we can use it for building llvm too) ###
+##############################################################################
+status Building ninja
+[ -d ninja ] || git clone -b v${NINJA_VERSION} git://github.com/ninja-build/ninja.git
+cd ninja
+export CFLAGS="${OPTFLAGS}"
+export LDFLAGS="${OPTFLAGS}"
+./configure.py --bootstrap
+./ninja
+if ${WITH_TESTS}; then
+ ./ninja ninja_test
+ ./ninja_test
+fi
+cd ..
+mkdir -p ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+cp ninja/ninja ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+
+##############################################################################
+### Build llvm, clang and friends ###
+##############################################################################
+status Building LLVM
+mkdir -p llvm
+cd llvm
+
+if [ -z "USE_AOSP_CLANG" ]; then
+ repo init -u https://android.googlesource.com/platform/manifest -b llvm
+ repo sync
+ cd build/soong
+ patch -p1 <${MYDIR}/build_soong-aarch64-host.patch
+ cd ../..
+else
+ if [ -d llvm ]; then
+ cd llvm
+ svn up
+ cd tools/clang
+ svn up
+ cd ../polly
+ svn up
+ cd ../clang/tools/extra
+ svn up
+ cd ../../../../projects/compiler-rt
+ svn up
+ cd ../libunwind
+ svn up
+ cd ../../tools/lldb
+ svn up
+ cd ../lld
+ svn up
+ cd ../../projects/openmp
+ svn up
+ cd ../libcxx
+ svn up
+ cd ../libcxxabi
+ svn up
+ cd ../../..
+ else
+ svn co http://llvm.org/svn/llvm-project/llvm/$LLVM_REV llvm
+ svn co http://llvm.org/svn/llvm-project/cfe/$LLVM_REV llvm/tools/clang
+ svn co http://llvm.org/svn/llvm-project/polly/$LLVM_REV llvm/tools/polly
+ svn co http://llvm.org/svn/llvm-project/clang-tools-extra/$LLVM_REV llvm/tools/clang/tools/extra
+ svn co http://llvm.org/svn/llvm-project/compiler-rt/$LLVM_REV llvm/projects/compiler-rt
+ svn co http://llvm.org/svn/llvm-project/libunwind/$LLVM_REV llvm/projects/libunwind
+ svn co http://llvm.org/svn/llvm-project/lldb/$LLVM_REV llvm/tools/lldb
+ svn co http://llvm.org/svn/llvm-project/lld/$LLVM_REV llvm/tools/lld
+ svn co http://llvm.org/svn/llvm-project/openmp/$LLVM_REV llvm/projects/openmp
+ svn co http://llvm.org/svn/llvm-project/libcxx/$LLVM_REV llvm/projects/libcxx
+ svn co http://llvm.org/svn/llvm-project/libcxxabi/$LLVM_REV llvm/projects/libcxxabi
+ cd llvm
+ patch -p1 <$MYDIR/llvm-4.0-libc++-libc++abi-dependency.patch
+ cd ..
+ fi
+fi
+
+# Needed for std::bind in some versions of libstdc++
+grep -q '<functional>' llvm/tools/lldb/include/lldb/Utility/TaskPool.h || sed -i -e '/#include <future>/i#include <functional>' llvm/tools/lldb/include/lldb/Utility/TaskPool.h
+
+cd llvm
+mkdir -p build/clang-${CLANG_VERSION} build/lib/python2.7
+cd build
+cmake -G Ninja ../ \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=/usr/bin/python2 \
+ -DLLVM_ENABLE_CXX1Y:BOOL=ON \
+ -DLLVM_ENABLE_RTTI:BOOL=ON \
+ -DLLVM_ENABLE_EH:BOOL=ON \
+ -DLIBCXX_CXX_ABI=libcxxabi \
+ -DLIBCXX_ENABLE_CXX1Y:BOOL=ON \
+ -DLIBCXXABI_LIBCXX_INCLUDES=$(pwd)/../projects/libcxx/include \
+ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$(pwd)/../projects/libcxxabi/include \
+ -DCMAKE_SHARED_LINKER_FLAGS="-L$(pwd)/lib" \
+ -DLIBCXXABI_USE_LLVM_UNWINDER:BOOL=ON \
+ -DCMAKE_INSTALL_PREFIX=./clang-${CLANG_VERSION} \
+ -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64;Mips" \
+ -DLLVM_ENABLE_LIBCXX:BOOL=ON \
+ -DLLVM_ENABLE_LIBCXXABI:BOOL=ON \
+ -DCMAKE_C_COMPILER=gcc \
+ -DCMAKE_CXX_COMPILER=g++
+${TOPDIR}/ninja/ninja install
+cd ../../..
+
+# Headers for cross-compiling libFuzzer
+if [ -d development ]; then
+ cd development
+ git pull
+ cd ..
+else
+ git clone https://android.googlesource.com/platform/development.git
+fi
+if [ -d ndk ]; then
+ cd ndk
+ git pull
+ cd ..
+else
+ git clone https://android.googlesource.com/platform/prebuilts/ndk.git
+ cd ndk
+ patch -p1 <${MYDIR}/ndk-libc++-bionic.patch
+ cd ..
+fi
+
+cd llvm/llvm/lib/Fuzzer
+# FIXME should also build mips64 variant once we have the right binutils
+for i in host arm aarch64 i386 x86_64 mips; do
+ case $i in
+ aarch64)
+ NDKARCH=arm64
+ ;;
+ i386)
+ NDKARCH=x86
+ ;;
+ *)
+ NDKARCH=$i
+ ;;
+ esac
+ target=""
+ case $i in
+ host)
+ ;;
+ arm)
+ target="-target arm-linux-androideabi -isystem ${TOPDIR}/ndk/r11/platforms/android-24/arch-$i/usr/include -isystem ${TOPDIR}/ndk/r13/sources/cxx-stl/llvm-libc++/include"
+ ;;
+ *)
+ target="-target $i-linux-android -isystem ${TOPDIR}/ndk/r11/platforms/android-24/arch-$NDKARCH/usr/include -isystem ${TOPDIR}/ndk/r13/sources/cxx-stl/llvm-libc++/include"
+ ;;
+ esac
+ mkdir -p $i
+ cd $i
+ set -x
+ for j in ../*.cpp; do
+ clang $target -std=c++11 -g -O2 -fno-omit-frame-pointer -o $(basename $j |sed -e 's,\.cpp,.o,') -c $j
+ done
+ ar ru libFuzzer.a *.o
+ ranlib libFuzzer.a
+ mkdir -p ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}/lib64/clang/$(echo ${CLANG_VERSION} |cut -d. -f1-2)/lib/$OS/$i
+ cp -f libFuzzer.a ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}/lib64/clang/$(echo ${CLANG_VERSION} |cut -d. -f1-2)/lib/$OS/$i/
+ set +x
+ cd ..
+done
+cd ../../../..
+
+cp -a llvm/llvm/build/clang-${CLANG_VERSION}/* ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}
+mkdir -p ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}/prebuilt_include/llvm/lib/Fuzzer/
+cp -af llvm/llvm/lib/Fuzzer/*.h ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}/prebuilt_include/llvm/lib/Fuzzer/
+
+EVIL_WORKAROUND=true
+if $EVIL_WORKAROUND; then
+ # FIXME this is WRONG, but somehow soong doesn't pick up libFuzzer in the right place.
+ # Probably there's still a linux-x86 hardcode somewhere.
+ for i in host arm aarch64 i386 x86_64 mips; do
+ mkdir -p ${OUTDIR}/prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/lib64/clang/$(echo ${CLANG_VERSION} |cut -d. -f1-2)/lib/$OS/$i/
+ cp -a ${OUTDIR}/prebuilts/clang/host/$OS-$ARCH/clang-${CLANG_VERSION}/lib64/clang/$(echo ${CLANG_VERSION} |cut -d. -f1-2)/lib/$OS/$i/libFuzzer.a ${OUTDIR}/prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/lib64/clang/$(echo ${CLANG_VERSION} |cut -d. -f1-2)/lib/$OS/$i/
+ done
+ mkdir -p ${OUTDIR}/prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/prebuilt_include/llvm/lib/Fuzzer
+ cp -af llvm/llvm/lib/Fuzzer/*.h ${OUTDIR}/prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/prebuilt_include/llvm/lib/Fuzzer/
+fi
+
+
+##############################################################################
+### Build go ###
+##############################################################################
+status Building go
+[ -d go ] || git clone https://go.googlesource.com/go -b go${GO_VERSION}
+cd go
+
+unset GOROOT || :
+unset GOBIN || :
+export GOROOT_BOOTSTRAP=$(/usr/bin/go env |grep ^GOROOT= |cut -d= -f2 |sed -e 's,",,g')
+
+export GOHOSTOS="$(uname |tr A-Z a-z)"
+export GOHOSTARCH="$(uname -m)"
+case "${GOHOSTARCH}" in
+aarch64)
+ export GOHOSTARCH=arm64
+ ;;
+x86_64)
+ export GOHOSTARCH=amd64
+ ;;
+esac
+cd src
+CFLAGS="${OPTFLAGS}" LDFLAGS="${OPTFLAGS}" CC_FOR_TARGET=clang CXX_FOR_TARGET=clang++ GOOS=${GOHOSTOS} GOARCH=${GOHOSTARCH} ./make.bash
+echo "make.bash finished"
+unset GOROOT
+unset GOBIN
+unset GOROOT_BOOTSTRAP
+unset GOHOSTOS
+unset GOHOSTARCH
+cd ../..
+mkdir -p ${OUTDIR}/prebuilts/go/$OS-$ARCH
+cp -a go/* ${OUTDIR}/prebuilts/go/$OS-$ARCH/
+export GOROOT=${OUTDIR}/prebuilts/go/${OS}-${ARCH}
+
+##############################################################################
+### Build kati and ckati ###
+##############################################################################
+[ -d kati ] || git clone https://android.googlesource.com/platform/build/kati
+cd kati
+status Building ckati
+make ${MFLAGS} -f Makefile.ckati
+status Building kati
+make ${MFLAGS} -f Makefile.kati
+# FIXME ckati_stamp_dump is supposed to be built through Android.bp once we have soong
+status building ckati_stamp_dump
+clang++ -O2 -std=c++14 -o ckati_stamp_dump regen_dump.cc affinity.cc command.cc dep.cc eval.cc exec.cc expr.cc file.cc file_cache.cc fileutil.cc find.cc flags.cc func.cc io.cc log.cc ninja.cc parser.cc regen.cc rule.cc stats.cc stmt.cc string_piece.cc stringprintf.cc strutil.cc symtab.cc thread_pool.cc timeutil.cc var.cc version_unknown.cc -lpthread
+mkdir -p ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+cp -a ckati ckati_stamp_dump ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+# We also build out/bin/kati, but for now that's not needed in prebuilts
+cd ..
+
+##############################################################################
+### Build makeparallel, ijar, ziptime, acp ###
+##############################################################################
+[ -d build ] || git clone https://android.googlesource.com/platform/build/
+status Building makeparallel
+cd build/tools/makeparallel
+make ${MFLAGS}
+cp makeparallel ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+
+status Building ijar
+cd ../ijar
+clang++ -std=c++14 -O2 -o ijar {classfile,ijar,zip}.cc -lz
+cp ijar ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+
+status Building ziptime
+cd ../ziptime
+clang++ -std=c++14 -O2 -o ziptime *.cpp
+cp ziptime ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+
+status Building acp
+cd ../acp
+clang -O2 -o acp *.c ${TOPDIR}/build/tools/libhost/*.c -I${TOPDIR}/build/tools/libhost/include
+cp acp ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+
+cd ../../..
+
+##############################################################################
+### Build bpfmt ###
+##############################################################################
+status Building bpfmt
+cd build
+[ -d blueprint ] || git clone https://android.googlesource.com/platform/build/blueprint
+[ -d blueprint-bin ] || mkdir blueprint-bin
+cd blueprint-bin
+status Building bpfmt
+bash ../blueprint/bootstrap.bash
+ninja -f .minibootstrap/build.ninja
+ninja -f .bootstrap/build.ninja
+cd ../blueprint
+
+GOROOT=${OUTDIR}/prebuilts/go/$OS-$ARCH go get github.com/google/blueprint/parser
+cd bpfmt
+go build bpfmt.go
+cp bpfmt ${OUTDIR}/prebuilts/build-tools/$OS-$ARCH/bin/
+cd ../../..
+
+##############################################################################
+### Binutils/gcc based toolchains ###
+##############################################################################
+status Downloading binutils and gcc
+if ! [ -d binutils-${BINUTILS_VERSION} ]; then
+ wget http://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.bz2
+ tar xf binutils-${BINUTILS_VERSION}.tar.bz2
+fi
+if ! [ -d gcc-${GCC_VERSION} ]; then
+ if echo ${GCC_VERSION} |grep -q linaro; then
+ V=$(echo ${GCC_VERSION} |sed -e 's,^[a-z-]*,,')
+ wget http://snapshots.linaro.org/components/toolchain/gcc-linaro/${V}/gcc-${GCC_VERSION}.tar.xz
+ tar xf gcc-${GCC_VERSION}.tar.xz
+ else
+ wget http://ftp.gnu.org/pub/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2
+ tar xf gcc-${GCC_VERSION}.tar.bz2
+ fi
+fi
+
+for target in $(uname -m)-${OS}; do
+ status Building $target binutils
+ mkdir -p binutils-build-${BINUTILS_VERSION}-$target
+ cd binutils-build-${BINUTILS_VERSION}-$target
+ ../binutils-${BINUTILS_VERSION}/configure --target=$target --prefix=/prebuilts/gcc/${OS}-${ARCH}/host/${target}-glibc${GLIBC_VERSION}-${GCC_V}
+ make ${MFLAGS}
+ make ${MFLAGS} install DESTDIR="${OUTDIR}"
+ cd ..
+
+ status Building $target gcc
+ mkdir -p gcc-build-${GCC_VERSION}-$target
+ cd gcc-build-${GCC_VERSION}-$target
+ ../gcc-${GCC_VERSION}/configure --target=$target --prefix=/prebuilts/gcc/${OS}-${ARCH}/host/${target}-glibc${GLIBC_VERSION}-${GCC_V} --enable-languages=c,c++
+ make ${MFLAGS}
+ make ${MFLAGS} install DESTDIR="${OUTDIR}"
+ cd ..
+done
+
+##############################################################################
+### Build bison ###
+##############################################################################
+status Building bison
+if ! [ -d bison-${BISON_VERSION} ]; then
+ wget http://ftp.gnu.org/gnu/bison/bison-${BISON_VERSION}.tar.xz
+ tar xf bison-${BISON_VERSION}.tar.xz
+fi
+mkdir -p bison-build-${BISON_VERSION}
+cd bison-build-${BISON_VERSION}
+../bison-${BISON_VERSION}/configure --prefix=/prebuilts/misc/${OS}-${ARCH}/bison
+make ${MFLAGS}
+mkdir -p "${OUTDIR}"/prebuilts/misc/${OS}-${ARCH}/bison/
+cp -a src/bison "${OUTDIR}"/prebuilts/misc/${OS}-${ARCH}/bison/
+cd ..
+
+##############################################################################
+### Build flex ###
+##############################################################################
+status Building flex
+[ -d flex ] || git clone -b flex-${FLEX_VERSION} https://github.com/westes/flex
+cd flex
+# We don't ship docs and don't want to deal with the slew of dependencies
+# needed to build them...
+# sed -i -e '/doc \\/d' Makefile.am
+./autogen.sh
+# As of 2.5.39, flex doesn't like out-of-source builds
+./configure --prefix=/prebuilts/misc/${OS}-${ARCH}/flex
+make ${MFLAGS} TEXI2DVI=true
+mkdir -p "${OUTDIR}"/prebuilts/misc/${OS}-${ARCH}/flex/
+cp -a flex "${OUTDIR}"/prebuilts/misc/${OS}-${ARCH}/flex/flex-${FLEX_VERSION}
+cd ..
diff --git a/build_core-aarch64-host.patch b/build_core-aarch64-host.patch
new file mode 100644
index 0000000..93368ff
--- /dev/null
+++ b/build_core-aarch64-host.patch
@@ -0,0 +1,208 @@
+diff --git a/core/config.mk b/core/config.mk
+index 5ff582a13..7ff3b368f 100644
+--- a/core/config.mk
++++ b/core/config.mk
+@@ -383,7 +383,7 @@ ifeq (,$(filter 1 true,$(WITH_TIDY_ONLY)))
+ endif
+
+ PATH_TO_CLANG_TIDY := \
+- $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
++ $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
+ ifeq ($(wildcard $(PATH_TO_CLANG_TIDY)),)
+ ifneq (,$(filter 1 true,$(WITH_TIDY)))
+ $(warning *** Disable WITH_TIDY because $(PATH_TO_CLANG_TIDY) does not exist)
+diff --git a/core/envsetup.mk b/core/envsetup.mk
+index 43593e63c..acf755f15 100644
+--- a/core/envsetup.mk
++++ b/core/envsetup.mk
+@@ -116,13 +116,15 @@ HOST_OS_EXTRA:=$(shell python -c "import platform; print(platform.platform())")
+ BUILD_OS := $(HOST_OS)
+
+ HOST_CROSS_OS :=
+-# We can cross-build Windows binaries on Linux
++# We can cross-build Windows binaries on x86 Linux
+ ifeq ($(HOST_OS),linux)
++ifeq ($(HOST_ARCH),x86)
+ HOST_CROSS_OS := windows
+ HOST_CROSS_ARCH := x86
+ HOST_CROSS_2ND_ARCH := x86_64
+ 2ND_HOST_CROSS_IS_64_BIT := true
+ endif
++endif
+
+ ifeq ($(HOST_OS),)
+ $(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
+@@ -134,10 +136,15 @@ ifneq (,$(findstring x86_64,$(UNAME)))
+ HOST_2ND_ARCH := x86
+ HOST_IS_64_BIT := true
+ else
++ifneq (,$(findstring aarch64,$(UNAME)))
++ HOST_ARCH := arm64
++ HOST_IS_64_BIT := true
++else
+ ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
+ $(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
+ endif
+ endif
++endif
+
+ BUILD_ARCH := $(HOST_ARCH)
+ BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
+@@ -157,8 +164,12 @@ $(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)
+ endif
+ endif
+
++ifneq (,$(findstring x86_64,$(UNAME)))
+ # We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
+ HOST_PREBUILT_ARCH := x86
++else
++HOST_PREBUILT_ARCH := $(HOST_ARCH)
++endif
+ # This is the standard way to name a directory containing prebuilt host
+ # objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
+ HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
+diff --git a/core/main.mk b/core/main.mk
+index bc4ed0421..34e87f6ec 100644
+--- a/core/main.mk
++++ b/core/main.mk
+@@ -14,6 +14,12 @@ ifndef KATI
+ host_prebuilts := linux-x86
+ ifeq ($(shell uname),Darwin)
+ host_prebuilts := darwin-x86
++else
++ifeq (aarch64,$(shell uname -m))
++host_prebuilts := linux-arm64
++else
++ $(error not arm64)
++endif
+ endif
+
+ .PHONY: run_soong_ui
+diff --git a/core/soong_config.mk b/core/soong_config.mk
+index e21083d7c..09d4b5814 100644
+--- a/core/soong_config.mk
++++ b/core/soong_config.mk
+@@ -71,11 +71,11 @@ $(SOONG_VARIABLES): FORCE
+ echo ' "DeviceSecondaryAbi": ["$(TARGET_2ND_CPU_ABI)", "$(TARGET_2ND_CPU_ABI2)"],'; \
+ echo ''; \
+ echo ' "HostArch": "$(HOST_ARCH)",'; \
+- echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
+ echo ''; \
+- echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
+- echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
+- echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
+ echo ' "Safestack": $(if $(filter true,$(USE_SAFESTACK)),true,false),'; \
+ echo ' "EnableCFI": $(if $(filter false,$(ENABLE_CFI)),false,true),'; \
+ echo ' "Device_uses_hwc2": $(if $(filter true,$(TARGET_USES_HWC2)),true,false),'; \
+diff --git a/envsetup.sh b/envsetup.sh
+index b71a8256a..aa400e4c7 100644
+--- a/envsetup.sh
++++ b/envsetup.sh
+@@ -728,7 +728,9 @@ function getdriver()
+ # c++-analyzer and ccc-analyzer.
+ local CLANG_VERSION=$(get_build_var LLVM_PREBUILTS_VERSION)
+ local BUILD_OS=$(get_build_var BUILD_OS)
+- local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-x86/${CLANG_VERSION}"
++ local BUILD_ARCH="x86"
++ test $(uname -m) = "aarch64" && BUILD_ARCH=arm64
++ local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-${BUILD_ARCH}/${CLANG_VERSION}"
+ echo "\
+ ${CLANG_DIR}/tools/scan-build/bin/scan-build \
+ --use-analyzer ${CLANG_DIR}/bin/clang \
+diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
+index 652fadf56..17d851b3c 100644
+--- a/tools/releasetools/common.py
++++ b/tools/releasetools/common.py
+@@ -38,10 +38,15 @@ from hashlib import sha1 as sha1
+
+ class Options(object):
+ def __init__(self):
+- platform_search_path = {
++ if platform.processor() == 'aarch64':
++ platform_search_path = {
++ "linux2": "out/host/linux-arm64",
++ }
++ else:
++ platform_search_path = {
+ "linux2": "out/host/linux-x86",
+ "darwin": "out/host/darwin-x86",
+- }
++ }
+
+ self.search_path = platform_search_path.get(sys.platform, None)
+ self.signapk_path = "framework/signapk.jar" # Relative to search_path
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ core/clang/HOST_arm.mk 2017-06-08 16:05:39.563015342 +0000
+@@ -0,0 +1 @@
++$(clang_2nd_arch_prefix)HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-armv7.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ core/clang/HOST_arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1 @@
++HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-aarch64.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ core/combo/HOST_linux-arm.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,30 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++############################################################
++## Macros after this line are shared by the 64-bit config.
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ core/combo/HOST_linux-arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,27 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm64.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
diff --git a/build_make-aarch64-host.patch b/build_make-aarch64-host.patch
new file mode 100644
index 0000000..d864ad9
--- /dev/null
+++ b/build_make-aarch64-host.patch
@@ -0,0 +1,208 @@
+diff --git a/core/config.mk b/core/config.mk
+index 5ff582a13..7ff3b368f 100644
+--- a/core/config.mk
++++ b/core/config.mk
+@@ -383,7 +383,7 @@ ifeq (,$(filter 1 true,$(WITH_TIDY_ONLY)))
+ endif
+
+ PATH_TO_CLANG_TIDY := \
+- $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
++ $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
+ ifeq ($(wildcard $(PATH_TO_CLANG_TIDY)),)
+ ifneq (,$(filter 1 true,$(WITH_TIDY)))
+ $(warning *** Disable WITH_TIDY because $(PATH_TO_CLANG_TIDY) does not exist)
+diff --git a/core/envsetup.mk b/core/envsetup.mk
+index 43593e63c..acf755f15 100644
+--- a/core/envsetup.mk
++++ b/core/envsetup.mk
+@@ -116,13 +116,15 @@ HOST_OS_EXTRA:=$(shell python -c "import platform; print(platform.platform())")
+ BUILD_OS := $(HOST_OS)
+
+ HOST_CROSS_OS :=
+-# We can cross-build Windows binaries on Linux
++# We can cross-build Windows binaries on x86 Linux
+ ifeq ($(HOST_OS),linux)
++ifeq ($(HOST_ARCH),x86)
+ HOST_CROSS_OS := windows
+ HOST_CROSS_ARCH := x86
+ HOST_CROSS_2ND_ARCH := x86_64
+ 2ND_HOST_CROSS_IS_64_BIT := true
+ endif
++endif
+
+ ifeq ($(HOST_OS),)
+ $(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
+@@ -134,10 +136,15 @@ ifneq (,$(findstring x86_64,$(UNAME)))
+ HOST_2ND_ARCH := x86
+ HOST_IS_64_BIT := true
+ else
++ifneq (,$(findstring aarch64,$(UNAME)))
++ HOST_ARCH := arm64
++ HOST_IS_64_BIT := true
++else
+ ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
+ $(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
+ endif
+ endif
++endif
+
+ BUILD_ARCH := $(HOST_ARCH)
+ BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
+@@ -157,8 +164,12 @@ $(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)
+ endif
+ endif
+
++ifneq (,$(findstring x86_64,$(UNAME)))
+ # We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
+ HOST_PREBUILT_ARCH := x86
++else
++HOST_PREBUILT_ARCH := $(HOST_ARCH)
++endif
+ # This is the standard way to name a directory containing prebuilt host
+ # objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
+ HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
+diff --git a/core/main.mk b/core/main.mk
+index bc4ed0421..34e87f6ec 100644
+--- a/core/main.mk
++++ b/core/main.mk
+@@ -14,6 +14,12 @@ ifndef KATI
+ host_prebuilts := linux-x86
+ ifeq ($(shell uname),Darwin)
+ host_prebuilts := darwin-x86
++else
++ifeq (aarch64,$(shell uname -m))
++host_prebuilts := linux-arm64
++else
++ $(error not arm64)
++endif
+ endif
+
+ .PHONY: run_soong_ui
+diff --git a/core/soong_config.mk b/core/soong_config.mk
+index e21083d7c..09d4b5814 100644
+--- a/core/soong_config.mk
++++ b/core/soong_config.mk
+@@ -71,11 +71,11 @@ $(SOONG_VARIABLES): FORCE
+ echo ' "DeviceSecondaryAbi": ["$(TARGET_2ND_CPU_ABI)", "$(TARGET_2ND_CPU_ABI2)"],'; \
+ echo ''; \
+ echo ' "HostArch": "$(HOST_ARCH)",'; \
+- echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
+ echo ''; \
+- echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
+- echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
+- echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
+ echo ' "Safestack": $(if $(filter true,$(USE_SAFESTACK)),true,false),'; \
+ echo ' "EnableCFI": $(if $(filter false,$(ENABLE_CFI)),false,true),'; \
+ echo ' "Device_uses_hwc2": $(if $(filter true,$(TARGET_USES_HWC2)),true,false),'; \
+diff --git a/envsetup.sh b/envsetup.sh
+index b71a8256a..aa400e4c7 100644
+--- a/envsetup.sh
++++ b/envsetup.sh
+@@ -728,7 +728,9 @@ function getdriver()
+ # c++-analyzer and ccc-analyzer.
+ local CLANG_VERSION=$(get_build_var LLVM_PREBUILTS_VERSION)
+ local BUILD_OS=$(get_build_var BUILD_OS)
+- local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-x86/${CLANG_VERSION}"
++ local BUILD_ARCH="x86"
++ test $(uname -m) = "aarch64" && BUILD_ARCH=arm64
++ local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-${BUILD_ARCH}/${CLANG_VERSION}"
+ echo "\
+ ${CLANG_DIR}/tools/scan-build/bin/scan-build \
+ --use-analyzer ${CLANG_DIR}/bin/clang \
+diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
+index 652fadf56..17d851b3c 100644
+--- a/tools/releasetools/common.py
++++ b/tools/releasetools/common.py
+@@ -38,10 +38,15 @@ from hashlib import sha1 as sha1
+
+ class Options(object):
+ def __init__(self):
+- platform_search_path = {
++ if platform.processor() == 'aarch64':
++ platform_search_path = {
++ "linux2": "out/host/linux-arm64",
++ }
++ else:
++ platform_search_path = {
+ "linux2": "out/host/linux-x86",
+ "darwin": "out/host/darwin-x86",
+- }
++ }
+
+ self.search_path = platform_search_path.get(sys.platform, None)
+ self.signapk_path = "framework/signapk.jar" # Relative to search_path
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ make/core/clang/HOST_arm.mk 2017-06-08 16:05:39.563015342 +0000
+@@ -0,0 +1 @@
++$(clang_2nd_arch_prefix)HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-armv7.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ make/core/clang/HOST_arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1 @@
++HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-aarch64.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ make/core/combo/HOST_linux-arm.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,30 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++############################################################
++## Macros after this line are shared by the 64-bit config.
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ make/core/combo/HOST_linux-arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,27 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm64.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
diff --git a/build_soong-aarch64-host.patch b/build_soong-aarch64-host.patch
new file mode 100644
index 0000000..e07442e
--- /dev/null
+++ b/build_soong-aarch64-host.patch
@@ -0,0 +1,496 @@
+diff --git a/Android.bp b/Android.bp
+index 9f508d5..3f9a90d 100644
+--- a/Android.bp
++++ b/Android.bp
+@@ -95,6 +95,7 @@ bootstrap_go_package {
+ "cc/config/x86_device.go",
+ "cc/config/x86_64_device.go",
+
++ "cc/config/arm64_linux_host.go",
+ "cc/config/x86_darwin_host.go",
+ "cc/config/x86_linux_host.go",
+ "cc/config/x86_linux_bionic_host.go",
+diff --git a/android/arch.go b/android/arch.go
+index effd5a6..19ca724 100644
+--- a/android/arch.go
++++ b/android/arch.go
+@@ -200,7 +200,7 @@ var (
+ Android = NewOsType("android", Device, false)
+
+ osArchTypeMap = map[OsType][]ArchType{
+- Linux: []ArchType{X86, X86_64},
++ Linux: []ArchType{Arm64, X86, X86_64},
+ LinuxBionic: []ArchType{X86_64},
+ Darwin: []ArchType{X86, X86_64},
+ Windows: []ArchType{X86, X86_64},
+@@ -800,6 +800,7 @@ func decodeTargetProductVariables(config *config) (map[OsClass][]Target, error)
+ }
+
+ if config.Host_bionic != nil && *config.Host_bionic {
++ addTarget(LinuxBionic, "arm64", nil, nil, nil)
+ addTarget(LinuxBionic, "x86_64", nil, nil, nil)
+ }
+
+diff --git a/android/config.go b/android/config.go
+index 869a5c4..f3fa60d 100644
+--- a/android/config.go
++++ b/android/config.go
+@@ -267,7 +267,12 @@ func (c *config) HostSystemTool(name string) string {
+ func (c *config) PrebuiltOS() string {
+ switch runtime.GOOS {
+ case "linux":
+- return "linux-x86"
++ if runtime.GOARCH == "x86_64" {
++ panic("FIXME x86")
++ return "linux-x86"
++ } else {
++ return "linux-" + runtime.GOARCH
++ }
+ case "darwin":
+ return "darwin-x86"
+ default:
+diff --git a/android/paths.go b/android/paths.go
+index aa06127..13a60b8 100644
+--- a/android/paths.go
++++ b/android/paths.go
+@@ -18,6 +18,7 @@ import (
+ "fmt"
+ "path/filepath"
+ "reflect"
++ "runtime"
+ "strings"
+
+ "github.com/google/blueprint"
+@@ -686,7 +687,11 @@ func PathForModuleInstall(ctx ModuleContext, pathComponents ...string) OutputPat
+ }
+ outPaths = []string{"target", "product", ctx.AConfig().DeviceName(), partition}
+ } else {
+- outPaths = []string{"host", ctx.Os().String() + "-x86"}
++ if runtime.GOARCH == "x86_64" {
++ outPaths = []string{"host", ctx.Os().String() + "-x86"}
++ } else {
++ outPaths = []string{"host", ctx.Os().String() + "-" + runtime.GOARCH}
++ }
+ }
+ if ctx.Debug() {
+ outPaths = append([]string{"debug"}, outPaths...)
+diff --git a/bootstrap.bash b/bootstrap.bash
+index e48f480..95814eb 100755
+--- a/bootstrap.bash
++++ b/bootstrap.bash
+@@ -22,19 +22,33 @@ export TOPNAME="Android.bp"
+ export BOOTSTRAP_MANIFEST="${SRCDIR}/build/soong/build.ninja.in"
+ export RUN_TESTS="-t"
+
++case $(uname -m) in
++ x86_64)
++ ARCH=x86
++ export GOARCH="amd64"
++ ;;
++ aarch64)
++ ARCH=arm64
++ export GOARCH="arm64"
++ ;;
++ *)
++ ARCH="$(uname -m)"
++ export GOARCH="$ARCH"
++ ;;
++esac
++
+ case $(uname) in
+ Linux)
+ export GOOS="linux"
+- export PREBUILTOS="linux-x86"
++ export PREBUILTOS="linux-${ARCH}"
+ ;;
+ Darwin)
+ export GOOS="darwin"
+- export PREBUILTOS="darwin-x86"
++ export PREBUILTOS="darwin-${ARCH}"
+ ;;
+ *) echo "unknown OS:" $(uname) && exit 1;;
+ esac
+ export GOROOT="${SRCDIR}/prebuilts/go/$PREBUILTOS/"
+-export GOARCH="amd64"
+ export GOCHAR="6"
+
+ if [[ $# -eq 0 ]]; then
+diff --git a/cc/binary.go b/cc/binary.go
+index e982329..fba9858 100644
+--- a/cc/binary.go
++++ b/cc/binary.go
+@@ -245,7 +245,7 @@ func (binary *binaryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags
+ // The linux kernel expects the linker to be an
+ // absolute path
+ path := android.PathForOutput(ctx,
+- "host", "linux_bionic-x86", "bin", "linker")
++ "host", "linux_bionic-x86FIXME", "bin", "linker")
+ if p, err := filepath.Abs(path.String()); err == nil {
+ flags.DynamicLinker = p
+ } else {
+diff --git a/cc/config/x86_linux_host.go b/cc/config/x86_linux_host.go
+index 80e9289..bce8cb4 100644
+--- a/cc/config/x86_linux_host.go
++++ b/cc/config/x86_linux_host.go
+@@ -15,6 +15,7 @@
+ package config
+
+ import (
++ "runtime"
+ "strings"
+
+ "android/soong/android"
+@@ -128,16 +129,22 @@ var (
+ )
+
+ const (
+- linuxGccVersion = "4.8"
++ linuxGccVersion = "6.3"
+ )
+
+ func init() {
+ pctx.StaticVariable("LinuxGccVersion", linuxGccVersion)
+
+- pctx.SourcePathVariable("LinuxGccRoot",
+- "prebuilts/gcc/${HostPrebuiltTag}/host/x86_64-linux-glibc2.15-${LinuxGccVersion}")
++ if runtime.GOARCH == "arm64" {
++ pctx.StaticVariable("LinuxGccTriple", "aarch64-linux")
++ pctx.SourcePathVariable("LinuxGccRoot",
++ "prebuilts/gcc/${HostPrebuiltTag}/host/aarch64-linux-glibc2.25-${LinuxGccVersion}")
++ } else {
++ pctx.SourcePathVariable("LinuxGccRoot",
++ "prebuilts/gcc/${HostPrebuiltTag}/host/x86_64-linux-glibc2.15-${LinuxGccVersion}")
+
+- pctx.StaticVariable("LinuxGccTriple", "x86_64-linux")
++ pctx.StaticVariable("LinuxGccTriple", "x86_64-linux")
++ }
+
+ pctx.StaticVariable("LinuxCflags", strings.Join(linuxCflags, " "))
+ pctx.StaticVariable("LinuxLdflags", strings.Join(linuxLdflags, " "))
+diff --git a/cmd/microfactory/microfactory.bash b/cmd/microfactory/microfactory.bash
+index 7489fe3..9bf47c0 100644
+--- a/cmd/microfactory/microfactory.bash
++++ b/cmd/microfactory/microfactory.bash
+@@ -23,7 +23,11 @@
+ # Ensure GOROOT is set to the in-tree version.
+ case $(uname) in
+ Linux)
+- export GOROOT="${TOP}/prebuilts/go/linux-x86/"
++ if [ "$(uname -m)" = "aarch64" ]; then
++ export GOROOT="${TOP}/prebuilts/go/linux-arm64/"
++ else
++ export GOROOT="${TOP}/prebuilts/go/linux-x86/"
++ fi
+ ;;
+ Darwin)
+ export GOROOT="${TOP}/prebuilts/go/darwin-x86/"
+diff --git a/root.bp b/root.bp
+index 08f2ff8..5676e3f 100644
+--- a/root.bp
++++ b/root.bp
+@@ -27,6 +27,7 @@ optional_subdirs = [
+ "libnativehelper",
+ "packages/apps/*",
+- "prebuilts/clang/host/linux-x86",
++// "prebuilts/clang/host/linux-x86",
++ "prebuilts/clang/host/linux-arm64",
+ "prebuilts/ndk",
+ "prebuilts/sdk",
+ "system/*",
+diff --git a/ui/build/config.go b/ui/build/config.go
+index 7e8091b..38c1af1 100644
+--- a/ui/build/config.go
++++ b/ui/build/config.go
+@@ -388,7 +388,12 @@ func (c *configImpl) hostCrossOut() string {
+
+ func (c *configImpl) HostPrebuiltTag() string {
+ if runtime.GOOS == "linux" {
+- return "linux-x86"
++ if runtime.GOARCH == "x86_64" {
++ panic("FIXME x86")
++ return "linux-x86"
++ } else {
++ return "linux-" + runtime.GOARCH
++ }
+ } else if runtime.GOOS == "darwin" {
+ return "darwin-x86"
+ } else {
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ soong/cc/config/arm64_linux_host.go 2017-06-08 16:03:35.191891546 +0000
+@@ -0,0 +1,276 @@
++// Copyright 2016 Google Inc. All rights reserved.
++//
++// 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.
++
++package config
++
++import (
++ "strings"
++
++ "android/soong/android"
++)
++
++var (
++ /* linuxCflags = []string{
++ "-fno-exceptions", // from build/core/combo/select.mk
++ "-Wno-multichar", // from build/core/combo/select.mk
++
++ "-fdiagnostics-color",
++
++ "-Wa,--noexecstack",
++
++ "-fPIC",
++ "-no-canonical-prefixes",
++
++ "-U_FORTIFY_SOURCE",
++ "-D_FORTIFY_SOURCE=2",
++ "-fstack-protector",
++
++ // Workaround differences in inttypes.h between host and target.
++ //See bug 12708004.
++ "-D__STDC_FORMAT_MACROS",
++ "-D__STDC_CONSTANT_MACROS",
++
++ // HOST_RELEASE_CFLAGS
++ "-O2", // from build/core/combo/select.mk
++ "-g", // from build/core/combo/select.mk
++ "-fno-strict-aliasing", // from build/core/combo/select.mk
++ }
++
++ linuxLdflags = []string{
++ "-Wl,-z,noexecstack",
++ "-Wl,-z,relro",
++ "-Wl,-z,now",
++ "-Wl,--no-undefined-version",
++ } */
++
++ // Extended cflags
++ linuxARMCflags = []string{
++ "-mfpu=neon",
++ "-m32",
++ "-march=armv7hl",
++ "-D_FILE_OFFSET_BITS=64",
++ "-D_LARGEFILE_SOURCE=1",
++ }
++
++ linuxARM64Cflags = []string{
++ "-m64",
++ }
++
++ linuxARMLdflags = []string{
++ "-m32",
++ }
++
++ linuxARM64Ldflags = []string{
++ "-m64",
++ }
++
++/* linuxClangCflags = append(ClangFilterUnknownCflags(linuxCflags), []string{
++ "--gcc-toolchain=${LinuxGccRoot}",
++ "--sysroot ${LinuxGccRoot}/sysroot",
++ "-fstack-protector-strong",
++ }...)
++
++ linuxClangLdflags = append(ClangFilterUnknownCflags(linuxLdflags), []string{
++ "--gcc-toolchain=${LinuxGccRoot}",
++ "--sysroot ${LinuxGccRoot}/sysroot",
++ }...) */
++
++ linuxARMClangLdflags = append(ClangFilterUnknownCflags(linuxARMLdflags), []string{
++ "-B${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}/32",
++ "-L${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}/32",
++ "-L${LinuxGccRoot}/${LinuxGccTriple}/lib32",
++ }...)
++
++ linuxARM64ClangLdflags = append(ClangFilterUnknownCflags(linuxARM64Ldflags), []string{
++ "-B${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}",
++ "-L${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}",
++ "-L${LinuxGccRoot}/${LinuxGccTriple}/lib64",
++ }...)
++
++/* linuxClangCppflags = []string{
++ "-isystem ${LinuxGccRoot}/${LinuxGccTriple}/include/c++/${LinuxGccVersion}",
++ "-isystem ${LinuxGccRoot}/${LinuxGccTriple}/include/c++/${LinuxGccVersion}/backward",
++ } */
++
++ linuxARMClangCppflags = []string{
++ "-isystem ${LinuxGccRoot}/${LinuxGccTriple}/include/c++/${LinuxGccVersion}/${LinuxGccTriple}/32",
++ }
++
++ linuxARM64ClangCppflags = []string{
++ "-isystem ${LinuxGccRoot}/${LinuxGccTriple}/include/c++/${LinuxGccVersion}/${LinuxGccTriple}",
++ }
++
++/* linuxAvailableLibraries = addPrefix([]string{
++ "c",
++ "dl",
++ "gcc",
++ "gcc_s",
++ "m",
++ "ncurses",
++ "pthread",
++ "resolv",
++ "rt",
++ "util",
++ "z",
++ }, "-l") */
++)
++
++/*const (
++ linuxGccVersion = "4.8"
++)*/
++
++func init() {
++/* pctx.StaticVariable("LinuxGccVersion", linuxGccVersion)
++
++ pctx.SourcePathVariable("LinuxGccRoot",
++ "prebuilts/gcc/${HostPrebuiltTag}/host/aarch64-linux-glibc2.15-${LinuxGccVersion}")
++
++ pctx.StaticVariable("LinuxGccTriple", "aarch64-linux")
++
++ pctx.StaticVariable("LinuxCflags", strings.Join(linuxCflags, " "))
++ pctx.StaticVariable("LinuxLdflags", strings.Join(linuxLdflags, " "))
++
++ pctx.StaticVariable("LinuxClangCflags", strings.Join(linuxClangCflags, " "))
++ pctx.StaticVariable("LinuxClangLdflags", strings.Join(linuxClangLdflags, " "))
++ pctx.StaticVariable("LinuxClangCppflags", strings.Join(linuxClangCppflags, " ")) */
++
++ // Extended cflags
++ pctx.StaticVariable("LinuxARMCflags", strings.Join(linuxARMCflags, " "))
++ pctx.StaticVariable("LinuxARM64Cflags", strings.Join(linuxARM64Cflags, " "))
++ pctx.StaticVariable("LinuxARMLdflags", strings.Join(linuxARMLdflags, " "))
++ pctx.StaticVariable("LinuxARM64Ldflags", strings.Join(linuxARM64Ldflags, " "))
++
++ pctx.StaticVariable("LinuxARMClangCflags",
++ strings.Join(ClangFilterUnknownCflags(linuxARMCflags), " "))
++ pctx.StaticVariable("LinuxARM64ClangCflags",
++ strings.Join(ClangFilterUnknownCflags(linuxARM64Cflags), " "))
++ pctx.StaticVariable("LinuxARMClangLdflags", strings.Join(linuxARMClangLdflags, " "))
++ pctx.StaticVariable("LinuxARM64ClangLdflags", strings.Join(linuxARM64ClangLdflags, " "))
++ pctx.StaticVariable("LinuxARMClangCppflags", strings.Join(linuxARMClangCppflags, " "))
++ pctx.StaticVariable("LinuxARM64ClangCppflags", strings.Join(linuxARM64ClangCppflags, " "))
++}
++
++/*type toolchainLinux struct {
++ cFlags, ldFlags string
++}*/
++
++type toolchainLinuxARM struct {
++ toolchain32Bit
++ toolchainLinux
++}
++
++type toolchainLinuxARM64 struct {
++ toolchain64Bit
++ toolchainLinux
++}
++
++func (t *toolchainLinuxARM) Name() string {
++ return "arm"
++}
++
++func (t *toolchainLinuxARM64) Name() string {
++ return "arm64"
++}
++
++/* func (t *toolchainLinux) GccRoot() string {
++ return "${config.LinuxGccRoot}"
++}
++
++func (t *toolchainLinux) GccTriple() string {
++ return "${config.LinuxGccTriple}"
++}
++
++func (t *toolchainLinux) GccVersion() string {
++ return linuxGccVersion
++}*/
++
++func (t *toolchainLinuxARM) Cflags() string {
++ return "${config.LinuxCflags} ${config.LinuxARMCflags}"
++}
++
++func (t *toolchainLinuxARM64) Cflags() string {
++ return "${config.LinuxCflags} ${config.LinuxARM64Cflags}"
++}
++
++/*func (t *toolchainLinux) Cppflags() string {
++ return ""
++}*/
++
++func (t *toolchainLinuxARM) Ldflags() string {
++ return "${config.LinuxLdflags} ${config.LinuxARMLdflags}"
++}
++
++func (t *toolchainLinuxARM64) Ldflags() string {
++ return "${config.LinuxLdflags} ${config.LinuxARM64Ldflags}"
++}
++
++/*func (t *toolchainLinux) IncludeFlags() string {
++ return ""
++}*/
++
++func (t *toolchainLinuxARM) ClangTriple() string {
++ return "armv7hl-linux-gnu"
++}
++
++func (t *toolchainLinuxARM) ClangCflags() string {
++ return "${config.LinuxClangCflags} ${config.LinuxARMClangCflags}"
++}
++
++func (t *toolchainLinuxARM) ClangCppflags() string {
++ return "${config.LinuxClangCppflags} ${config.LinuxARMClangCppflags}"
++}
++
++func (t *toolchainLinuxARM64) ClangTriple() string {
++ return "aarch64-linux-gnu"
++}
++
++func (t *toolchainLinuxARM64) ClangCflags() string {
++ return "${config.LinuxClangCflags} ${config.LinuxARM64ClangCflags}"
++}
++
++func (t *toolchainLinuxARM64) ClangCppflags() string {
++ return "${config.LinuxClangCppflags} ${config.LinuxARM64ClangCppflags}"
++}
++
++func (t *toolchainLinuxARM) ClangLdflags() string {
++ return "${config.LinuxClangLdflags} ${config.LinuxARMClangLdflags}"
++}
++
++func (t *toolchainLinuxARM64) ClangLdflags() string {
++ return "${config.LinuxClangLdflags} ${config.LinuxARM64ClangLdflags}"
++}
++
++/*func (t *toolchainLinux) AvailableLibraries() []string {
++ return linuxAvailableLibraries
++}
++
++func (t *toolchainLinux) Bionic() bool {
++ return false
++}*/
++
++var toolchainLinuxARMSingleton Toolchain = &toolchainLinuxARM{}
++var toolchainLinuxARM64Singleton Toolchain = &toolchainLinuxARM64{}
++
++func linuxARMToolchainFactory(arch android.Arch) Toolchain {
++ return toolchainLinuxARMSingleton
++}
++
++func linuxARM64ToolchainFactory(arch android.Arch) Toolchain {
++ return toolchainLinuxARM64Singleton
++}
++
++func init() {
++ registerToolchainFactory(android.Linux, android.Arm, linuxARMToolchainFactory)
++ registerToolchainFactory(android.Linux, android.Arm64, linuxARM64ToolchainFactory)
++}
diff --git a/build_tools-aarch64-host.patch b/build_tools-aarch64-host.patch
new file mode 100644
index 0000000..256970e
--- /dev/null
+++ b/build_tools-aarch64-host.patch
@@ -0,0 +1,208 @@
+diff --git a/core/config.mk b/core/config.mk
+index 5ff582a13..7ff3b368f 100644
+--- a/core/config.mk
++++ b/core/config.mk
+@@ -383,7 +383,7 @@ ifeq (,$(filter 1 true,$(WITH_TIDY_ONLY)))
+ endif
+
+ PATH_TO_CLANG_TIDY := \
+- $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
++ $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/$(LLVM_PREBUILTS_VERSION)/bin/clang-tidy
+ ifeq ($(wildcard $(PATH_TO_CLANG_TIDY)),)
+ ifneq (,$(filter 1 true,$(WITH_TIDY)))
+ $(warning *** Disable WITH_TIDY because $(PATH_TO_CLANG_TIDY) does not exist)
+diff --git a/core/envsetup.mk b/core/envsetup.mk
+index 43593e63c..acf755f15 100644
+--- a/core/envsetup.mk
++++ b/core/envsetup.mk
+@@ -116,13 +116,15 @@ HOST_OS_EXTRA:=$(shell python -c "import platform; print(platform.platform())")
+ BUILD_OS := $(HOST_OS)
+
+ HOST_CROSS_OS :=
+-# We can cross-build Windows binaries on Linux
++# We can cross-build Windows binaries on x86 Linux
+ ifeq ($(HOST_OS),linux)
++ifeq ($(HOST_ARCH),x86)
+ HOST_CROSS_OS := windows
+ HOST_CROSS_ARCH := x86
+ HOST_CROSS_2ND_ARCH := x86_64
+ 2ND_HOST_CROSS_IS_64_BIT := true
+ endif
++endif
+
+ ifeq ($(HOST_OS),)
+ $(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
+@@ -134,10 +136,15 @@ ifneq (,$(findstring x86_64,$(UNAME)))
+ HOST_2ND_ARCH := x86
+ HOST_IS_64_BIT := true
+ else
++ifneq (,$(findstring aarch64,$(UNAME)))
++ HOST_ARCH := arm64
++ HOST_IS_64_BIT := true
++else
+ ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
+ $(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
+ endif
+ endif
++endif
+
+ BUILD_ARCH := $(HOST_ARCH)
+ BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
+@@ -157,8 +164,12 @@ $(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)
+ endif
+ endif
+
++ifneq (,$(findstring x86_64,$(UNAME)))
+ # We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
+ HOST_PREBUILT_ARCH := x86
++else
++HOST_PREBUILT_ARCH := $(HOST_ARCH)
++endif
+ # This is the standard way to name a directory containing prebuilt host
+ # objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
+ HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
+diff --git a/core/main.mk b/core/main.mk
+index bc4ed0421..34e87f6ec 100644
+--- a/core/main.mk
++++ b/core/main.mk
+@@ -14,6 +14,12 @@ ifndef KATI
+ host_prebuilts := linux-x86
+ ifeq ($(shell uname),Darwin)
+ host_prebuilts := darwin-x86
++else
++ifeq (aarch64,$(shell uname -m))
++host_prebuilts := linux-arm64
++else
++ $(error not arm64)
++endif
+ endif
+
+ .PHONY: run_soong_ui
+diff --git a/core/soong_config.mk b/core/soong_config.mk
+index e21083d7c..09d4b5814 100644
+--- a/core/soong_config.mk
++++ b/core/soong_config.mk
+@@ -71,11 +71,11 @@ $(SOONG_VARIABLES): FORCE
+ echo ' "DeviceSecondaryAbi": ["$(TARGET_2ND_CPU_ABI)", "$(TARGET_2ND_CPU_ABI2)"],'; \
+ echo ''; \
+ echo ' "HostArch": "$(HOST_ARCH)",'; \
+- echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "HostSecondaryArch": "$(HOST_2ND_ARCH)",'; \
+ echo ''; \
+- echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
+- echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
+- echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHost": "$(HOST_CROSS_OS)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostArch": "$(HOST_CROSS_ARCH)",'; \
++ test $(shell uname -m) = aarch64 || echo ' "CrossHostSecondaryArch": "$(HOST_CROSS_2ND_ARCH)",'; \
+ echo ' "Safestack": $(if $(filter true,$(USE_SAFESTACK)),true,false),'; \
+ echo ' "EnableCFI": $(if $(filter false,$(ENABLE_CFI)),false,true),'; \
+ echo ' "Device_uses_hwc2": $(if $(filter true,$(TARGET_USES_HWC2)),true,false),'; \
+diff --git a/envsetup.sh b/envsetup.sh
+index b71a8256a..aa400e4c7 100644
+--- a/envsetup.sh
++++ b/envsetup.sh
+@@ -728,7 +728,9 @@ function getdriver()
+ # c++-analyzer and ccc-analyzer.
+ local CLANG_VERSION=$(get_build_var LLVM_PREBUILTS_VERSION)
+ local BUILD_OS=$(get_build_var BUILD_OS)
+- local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-x86/${CLANG_VERSION}"
++ local BUILD_ARCH="x86"
++ test $(uname -m) = "aarch64" && BUILD_ARCH=arm64
++ local CLANG_DIR="$T/prebuilts/clang/host/${BUILD_OS}-${BUILD_ARCH}/${CLANG_VERSION}"
+ echo "\
+ ${CLANG_DIR}/tools/scan-build/bin/scan-build \
+ --use-analyzer ${CLANG_DIR}/bin/clang \
+diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
+index 652fadf56..17d851b3c 100644
+--- a/tools/releasetools/common.py
++++ b/tools/releasetools/common.py
+@@ -38,10 +38,15 @@ from hashlib import sha1 as sha1
+
+ class Options(object):
+ def __init__(self):
+- platform_search_path = {
++ if platform.processor() == 'aarch64':
++ platform_search_path = {
++ "linux2": "out/host/linux-arm64",
++ }
++ else:
++ platform_search_path = {
+ "linux2": "out/host/linux-x86",
+ "darwin": "out/host/darwin-x86",
+- }
++ }
+
+ self.search_path = platform_search_path.get(sys.platform, None)
+ self.signapk_path = "framework/signapk.jar" # Relative to search_path
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ tools/../core/clang/HOST_arm.mk 2017-06-08 16:05:39.563015342 +0000
+@@ -0,0 +1 @@
++$(clang_2nd_arch_prefix)HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-armv7.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ tools/../core/clang/HOST_arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1 @@
++HOST_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-aarch64.a
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ tools/../core/combo/HOST_linux-arm.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,30 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++############################################################
++## Macros after this line are shared by the 64-bit config.
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
+--- /dev/null 2017-05-30 12:59:06.809484016 +0000
++++ tools/../core/combo/HOST_linux-arm64.mk 2017-06-08 16:05:39.564015311 +0000
+@@ -0,0 +1,27 @@
++#
++# Copyright (C) 2006 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.
++#
++
++# Configuration for builds hosted on linux-arm64.
++# Included by combo/select.mk
++
++define $(combo_var_prefix)transform-shared-lib-to-toc
++$(call _gen_toc_command_for_elf,$(1),$(2))
++endef
++
++# $(1): The file to check
++define get-file-size
++stat --format "%s" "$(1)" | tr -d '\n'
++endef
diff --git a/llvm-4.0-libc++-libc++abi-dependency.patch b/llvm-4.0-libc++-libc++abi-dependency.patch
new file mode 100644
index 0000000..603a730
--- /dev/null
+++ b/llvm-4.0-libc++-libc++abi-dependency.patch
@@ -0,0 +1,20 @@
+--- llvm/projects/libcxx/lib/CMakeLists.txt.omv~ 2017-06-08 21:41:58.711179229 +0000
++++ llvm/projects/libcxx/lib/CMakeLists.txt 2017-06-08 21:42:21.121479585 +0000
+@@ -195,7 +195,7 @@ set(LIBCXX_TARGETS)
+ # Build the shared library.
+ if (LIBCXX_ENABLE_SHARED)
+ add_library(cxx_shared SHARED $<TARGET_OBJECTS:cxx_objects>)
+- target_link_libraries(cxx_shared ${LIBCXX_LIBRARIES})
++ target_link_libraries(cxx_shared ${LIBCXX_LIBRARIES} cxxabi_shared)
+ set_target_properties(cxx_shared
+ PROPERTIES
+ LINK_FLAGS "${LIBCXX_LINK_FLAGS}"
+@@ -216,7 +216,7 @@ endif()
+ # Build the static library.
+ if (LIBCXX_ENABLE_STATIC)
+ add_library(cxx_static STATIC $<TARGET_OBJECTS:cxx_objects>)
+- target_link_libraries(cxx_static ${LIBCXX_LIBRARIES})
++ target_link_libraries(cxx_static ${LIBCXX_LIBRARIES} cxxabi_static)
+ set_target_properties(cxx_static
+ PROPERTIES
+ LINK_FLAGS "${LIBCXX_LINK_FLAGS}"
diff --git a/ndk-diffs.patch b/ndk-diffs.patch
new file mode 100644
index 0000000..e5658ef
--- /dev/null
+++ b/ndk-diffs.patch
@@ -0,0 +1,7982 @@
+
+project ndk/
+diff --git a/build/lib/build_support.py b/build/lib/build_support.py
+index d81efa29..490cb7e7 100644
+--- a/build/lib/build_support.py
++++ b/build/lib/build_support.py
+@@ -17,6 +17,7 @@ import argparse
+ import datetime
+ import multiprocessing
+ import os
++import platform
+ import shutil
+ import subprocess
+ import sys
+@@ -199,8 +200,11 @@ def get_default_host():
+
+
+ def host_to_tag(host):
++ machine = platform.machine()
++ if machine == 'aarch64':
++ machine = 'arm64'
+ if host in ['darwin', 'linux']:
+- return host + '-x86_64'
++ return host + '-' + machine
+ elif host == 'windows':
+ return 'windows'
+ elif host == 'windows64':
+diff --git a/build/tools/dev-defaults.sh b/build/tools/dev-defaults.sh
+index 78f3c99d..39282ee1 100644
+--- a/build/tools/dev-defaults.sh
++++ b/build/tools/dev-defaults.sh
+@@ -55,14 +55,14 @@ FIRST_GCC64_VERSION=4.9
+ DEFAULT_LLVM_GCC32_VERSION=4.9
+ DEFAULT_LLVM_GCC64_VERSION=4.9
+
+-DEFAULT_BINUTILS_VERSION=2.25
++DEFAULT_BINUTILS_VERSION=2.26
+ DEFAULT_GDB_VERSION=7.11
+ DEFAULT_MPFR_VERSION=3.1.1
+-DEFAULT_GMP_VERSION=5.0.5
++DEFAULT_GMP_VERSION=6.1.0 # was 5.0.5
+ DEFAULT_MPC_VERSION=1.0.1
+-DEFAULT_CLOOG_VERSION=0.18.0
+-DEFAULT_ISL_VERSION=0.11.1
+-DEFAULT_PPL_VERSION=1.0
++DEFAULT_CLOOG_VERSION=0.18.4
++DEFAULT_ISL_VERSION=0.14
++DEFAULT_PPL_VERSION=1.2 # was 1.0
+ DEFAULT_PYTHON_VERSION=2.7.5
+ DEFAULT_PERL_VERSION=5.16.2
+
+diff --git a/build/tools/gen-toolchain-wrapper.sh b/build/tools/gen-toolchain-wrapper.sh
+index fd9c151d..99a1bfd4 100755
+--- a/build/tools/gen-toolchain-wrapper.sh
++++ b/build/tools/gen-toolchain-wrapper.sh
+@@ -165,7 +165,7 @@ gen_wrapper_program ()
+ fi
+
+ cat > "$DST_FILE" << EOF
+-#!/bin/sh
++#!/bin/bash
+ # Auto-generated, do not edit
+ ${DST_PREFIX}$PROG $FLAGS "\$@" $LDFLAGS
+ EOF
+diff --git a/build/tools/ndk-ccache-g++.sh b/build/tools/ndk-ccache-g++.sh
+index 795fd4c9..8ce1584e 100755
+--- a/build/tools/ndk-ccache-g++.sh
++++ b/build/tools/ndk-ccache-g++.sh
+@@ -1,2 +1,2 @@
+-#!/bin/sh
++#!/bin/bash
+ $NDK_CCACHE $NDK_CCACHE_CXX "$@"
+diff --git a/build/tools/ndk-ccache-gcc.sh b/build/tools/ndk-ccache-gcc.sh
+index a9f88ce2..c8e33e84 100755
+--- a/build/tools/ndk-ccache-gcc.sh
++++ b/build/tools/ndk-ccache-gcc.sh
+@@ -1,2 +1,2 @@
+-#!/bin/sh
++#!/bin/bash
+ $NDK_CCACHE $NDK_CCACHE_CC "$@"
+diff --git a/build/tools/prebuilt-common.sh b/build/tools/prebuilt-common.sh
+index 106b6615..882281a3 100644
+--- a/build/tools/prebuilt-common.sh
++++ b/build/tools/prebuilt-common.sh
+@@ -816,7 +816,7 @@ prepare_canadian_toolchain ()
+
+ if [ "$DARWIN" = "yes" ] ; then
+ cat > "$CROSS_WRAP_DIR/sw_vers" <<EOF
+-#!/bin/sh
++#!/bin/bash
+ # Tiny utility for the real sw_vers some Makefiles need
+ case \$1 in
+ -productVersion)
+@@ -836,22 +836,38 @@ EOF
+ fi
+ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=$BINPREFIX --dst-prefix="$DST_PREFIX" "$CROSS_WRAP_DIR" \
+ --cflags="$HOST_CFLAGS" --cxxflags="$HOST_CFLAGS" --ldflags="$HOST_LDFLAGS"
+- # generate wrappers for BUILD toolchain
+- # this is required for mingw/darwin build to avoid tools canadian cross configuration issues
+- # 32-bit BUILD toolchain
+- LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-linux-gnu- \
+- --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-pc-linux-gnu- \
+- --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-linux-gnu- \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-pc-linux-gnu- \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ if [ "`uname -m`" = "aarch64" ]; then
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-arm64/host/aarch64-linux-glibc2.15-4.8"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=arm-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m armelf_linux_eabi" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=arm-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m armelf_linux_eabi" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=aarch64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/aarch64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=aarch64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/aarch64-linux-" "$CROSS_WRAP_DIR"
++ fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ else
++ # generate wrappers for BUILD toolchain
++ # this is required for mingw/darwin build to avoid tools canadian cross configuration issues
++ # 32-bit BUILD toolchain
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-pc-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-pc-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ fi
+
+ export PATH=$CROSS_WRAP_DIR:$PATH
+ dump "Using $DEBIAN_NAME wrapper: $CROSS_WRAP_DIR/${BINPREFIX}gcc"
+@@ -918,8 +934,15 @@ prepare_common_build ()
+ if [ -z "$CC" ]; then
+ LEGACY_TOOLCHAIN_DIR=
+ if [ "$HOST_OS" = "linux" ]; then
+- LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/bin"
+- LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/x86_64-linux-"
++ if [ "$HOST_ARCH" = "aarch64" ]; then
++ # No prebuilt toolchain for aarch64 hosts yet, let's use the system compiler
++ log "Using system compiler for $HOST_ARCH $HOST_OS"
++ CC=gcc
++ CXX=g++
++ else
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/bin"
++ LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/x86_64-linux-"
++ fi
+ elif [ "$HOST_OS" = "darwin" ]; then
+ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1/bin"
+ LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/i686-apple-darwin10-"
+@@ -1014,6 +1037,9 @@ prepare_abi_configure_build ()
+ linux-x86_64)
+ ABI_CONFIGURE_BUILD=x86_64-linux-gnu
+ ;;
++ linux-aarch64)
++ ABI_CONFIGURE_BUILD=aarch64-linux-gnu
++ ;;
+ darwin-x86)
+ ABI_CONFIGURE_BUILD=i686-apple-darwin
+ ;;
+@@ -1038,7 +1064,11 @@ prepare_target_build ()
+ ABI_CONFIGURE_HOST="$ABI_CONFIGURE_BUILD"
+
+ prepare_common_build
+- HOST_GMP_ABI=$HOST_BITS
++ if [ "$HOST_ARCH" = "aarch64" ]; then
++ HOST_GMP_ABI=standard
++ else
++ HOST_GMP_ABI=$HOST_BITS
++ fi
+
+ # Now handle the --mingw/--darwin flag
+ if [ "$MINGW" = "yes" -o "$DARWIN" = "yes" ] ; then
+diff --git a/scripts/gen_release_table.py b/scripts/gen_release_table.py
+index a600536d..841affef 100755
+--- a/scripts/gen_release_table.py
++++ b/scripts/gen_release_table.py
+@@ -77,6 +77,7 @@ def main():
+ pretty_host = {
+ 'darwin-x86_64': 'Mac OS X',
+ 'linux-x86_64': 'Linux',
++ 'linux-arm64': 'Linux for ARMv8',
+ 'windows-x86_64': 'Windows 64-bit',
+ 'windows-x86': 'Windows 32-bit',
+ }[host]
+diff --git a/sources/android/support/tests/run-host.sh b/sources/android/support/tests/run-host.sh
+index f9fd9b9d..8ff76141 100755
+--- a/sources/android/support/tests/run-host.sh
++++ b/sources/android/support/tests/run-host.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ set -e
+ export LANG=C
+diff --git a/sources/cxx-stl/gnu-libstdc++/build-gnu-libstdc++.sh b/sources/cxx-stl/gnu-libstdc++/build-gnu-libstdc++.sh
+index f97f4a11..aad26149 100755
+--- a/sources/cxx-stl/gnu-libstdc++/build-gnu-libstdc++.sh
++++ b/sources/cxx-stl/gnu-libstdc++/build-gnu-libstdc++.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/sources/cxx-stl/llvm-libc++/tools/upgrade-upstream.sh b/sources/cxx-stl/llvm-libc++/tools/upgrade-upstream.sh
+index bdff4904..8acd8279 100755
+--- a/sources/cxx-stl/llvm-libc++/tools/upgrade-upstream.sh
++++ b/sources/cxx-stl/llvm-libc++/tools/upgrade-upstream.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # A small script used to update the content of libcxx/ to a newer
+ # version of libc++.
+diff --git a/sources/host-tools/make-3.81/build-make.sh b/sources/host-tools/make-3.81/build-make.sh
+index b6200226..76125ab6 100755
+--- a/sources/host-tools/make-3.81/build-make.sh
++++ b/sources/host-tools/make-3.81/build-make.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/sources/host-tools/nawk-20071023/build-awk.sh b/sources/host-tools/nawk-20071023/build-awk.sh
+index 7f008eef..c5f3c3c6 100755
+--- a/sources/host-tools/nawk-20071023/build-awk.sh
++++ b/sources/host-tools/nawk-20071023/build-awk.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/sources/host-tools/ndk-depends/build-ndk-depends.sh b/sources/host-tools/ndk-depends/build-ndk-depends.sh
+index 618cb80e..b2365c7a 100755
+--- a/sources/host-tools/ndk-depends/build-ndk-depends.sh
++++ b/sources/host-tools/ndk-depends/build-ndk-depends.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/sources/host-tools/ndk-stack/build-ndk-stack.sh b/sources/host-tools/ndk-stack/build-ndk-stack.sh
+index d0156148..d076fc2b 100755
+--- a/sources/host-tools/ndk-stack/build-ndk-stack.sh
++++ b/sources/host-tools/ndk-stack/build-ndk-stack.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/sources/host-tools/toolbox/build-toolbox.sh b/sources/host-tools/toolbox/build-toolbox.sh
+index 2473bbf7..ceaa6259 100755
+--- a/sources/host-tools/toolbox/build-toolbox.sh
++++ b/sources/host-tools/toolbox/build-toolbox.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2011 The Android Open Source Project
+ #
+diff --git a/tests/build/absolute-src-file-paths/build.sh b/tests/build/absolute-src-file-paths/build.sh
+index 06853a5d..b2a2c6cc 100755
+--- a/tests/build/absolute-src-file-paths/build.sh
++++ b/tests/build/absolute-src-file-paths/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ # This script is used to check that using absolute paths in
+ # LOCAL_SRC_PATHS works properly.
+diff --git a/tests/build/check-armeabi-v7a-prebuilts/build.sh b/tests/build/check-armeabi-v7a-prebuilts/build.sh
+index dfb90bbe..5a951eeb 100755
+--- a/tests/build/check-armeabi-v7a-prebuilts/build.sh
++++ b/tests/build/check-armeabi-v7a-prebuilts/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ # The purpose of this dummy build test is to ensure that all the
+ # armeabi-v7a prebuilt binaries distributed with the NDK were
+diff --git a/tests/build/issue64679-prctl/build.sh b/tests/build/issue64679-prctl/build.sh
+index 4ef6f53f..1bf98491 100755
+--- a/tests/build/issue64679-prctl/build.sh
++++ b/tests/build/issue64679-prctl/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ # Check if some platform headers can be included alone
+ # See b.android.com/64679 for one of them
+ #
+diff --git a/tests/build/multi-module-path/build.sh b/tests/build/multi-module-path/build.sh
+index 9f4b88ad..ad4c06b6 100755
+--- a/tests/build/multi-module-path/build.sh
++++ b/tests/build/multi-module-path/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ echo "\$0=$0"
+ cd `dirname $0`
+diff --git a/tests/build/prebuilt-copy/build.sh b/tests/build/prebuilt-copy/build.sh
+index 01c2c833..2e8d2ae6 100755
+--- a/tests/build/prebuilt-copy/build.sh
++++ b/tests/build/prebuilt-copy/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ # The purpose of this script is the following:
+ #
+diff --git a/tests/build/stdint-c++/jni/gen-sources.sh b/tests/build/stdint-c++/jni/gen-sources.sh
+index 8429aaa4..7ef72a08 100755
+--- a/tests/build/stdint-c++/jni/gen-sources.sh
++++ b/tests/build/stdint-c++/jni/gen-sources.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # This script is used to generate the source files for this test.
+ #
+diff --git a/tests/build/thin-archives/build.sh b/tests/build/thin-archives/build.sh
+index b1500a30..ceedfd81 100755
+--- a/tests/build/thin-archives/build.sh
++++ b/tests/build/thin-archives/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ $NDK/ndk-build "$@"
+ if [ $? != 0 ]; then
+diff --git a/tests/build/warn-bad-modules/build.sh b/tests/build/warn-bad-modules/build.sh
+index 7be3c918..d6db233d 100755
+--- a/tests/build/warn-bad-modules/build.sh
++++ b/tests/build/warn-bad-modules/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/build/warn-no-ldflags-in-static-libraries/build.sh b/tests/build/warn-no-ldflags-in-static-libraries/build.sh
+index 6292bf6f..ad318490 100755
+--- a/tests/build/warn-no-ldflags-in-static-libraries/build.sh
++++ b/tests/build/warn-no-ldflags-in-static-libraries/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/build/warn-no-ldlibs-in-static-libraries/build.sh b/tests/build/warn-no-ldlibs-in-static-libraries/build.sh
+index 5a4ecf39..ddeddd04 100755
+--- a/tests/build/warn-no-ldlibs-in-static-libraries/build.sh
++++ b/tests/build/warn-no-ldlibs-in-static-libraries/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/build/warn-no-modules/build.sh b/tests/build/warn-no-modules/build.sh
+index 47017408..753b7532 100755
+--- a/tests/build/warn-no-modules/build.sh
++++ b/tests/build/warn-no-modules/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/build/warn-non-system-libs-in-linker-flags/build.sh b/tests/build/warn-non-system-libs-in-linker-flags/build.sh
+index bac26c96..70b14a65 100755
+--- a/tests/build/warn-non-system-libs-in-linker-flags/build.sh
++++ b/tests/build/warn-non-system-libs-in-linker-flags/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/build/warn-thin-archive-is-for-static-libraries/build.sh b/tests/build/warn-thin-archive-is-for-static-libraries/build.sh
+index 5a1c5b1d..20dafb96 100755
+--- a/tests/build/warn-thin-archive-is-for-static-libraries/build.sh
++++ b/tests/build/warn-thin-archive-is-for-static-libraries/build.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ cd `dirname $0`
+ BUILD_OUTPUT=$($NDK/ndk-build "$@" 2>&1)
+diff --git a/tests/standalone/run.sh b/tests/standalone/run.sh
+index dcced7b6..0eaf61d6 100755
+--- a/tests/standalone/run.sh
++++ b/tests/standalone/run.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #
+ # Copyright (C) 2012 The Android Open Source Project
+ #
+
+project toolchain/build/
+diff --git a/Makefile.in b/Makefile.in
+index 21f33d7..dab823e 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -409,7 +409,7 @@ config-target-gcc: stmp-config-target-gcc
+
+ GCC_CONFIG_ARGS=--prefix=$(prefix) \
+ --target=${cur_target} --host=${cur_host} --build=${cur_build} \
+- --with-gnu-as --with-gnu-ld --enable-languages=c,c++
++ --with-gnu-as --with-gnu-ld --enable-languages=c,c++,fortran,objc,obj-c++
+
+ # For gcc versions 4.3.0 and later, gmp and mpfr are required.
+ # Also build libgcc is a seperate sub-target in 4.3.0+.
+diff --git a/configure b/configure
+index 738b57a..1558809 100755
+--- a/configure
++++ b/configure
+@@ -1312,7 +1312,7 @@ Optional Packages:
+ --with-mpc-version=VERSION
+ use mpc-VERSION (default is 0.8.1)
+ --with-ppl-version=VERSION
+- use ppl-VERSION (default is 0.11.2)
++ use ppl-VERSION (default is 1.2)
+ --with-cloog-version=VERSION
+ use cloog-VERSION (default is 0.15.9)
+ --with-isl-version=VERSION
+@@ -2633,7 +2633,7 @@ fi
+
+
+ if test "$ENABLE_GRAPHITE" == "yes"; then
+-# ppl version (default is 0.11.2)
++# ppl version (default is 1.2)
+ # ppl is only used for gcc 4.5 and 4.6 with graphite optimization.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking ppl version" >&5
+ $as_echo_n "checking ppl version... " >&6; }
+@@ -2644,7 +2644,7 @@ if test "${with_ppl_version+set}" = set; then :
+ PPL_VERSION="$withval"
+ fi
+ else
+- PPL_VERSION="0.11.2"
++ PPL_VERSION="1.2"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PPL_VERSION" >&5
+@@ -2659,6 +2659,8 @@ if test \( ! -d $srcdir/../$tool/ppl-${PPL_VERSION} \) -a \( x"$version" != x"no
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/ppl-${PPL_VERSION}.tgz
+ elif test -f $srcdir/../$tool/ppl-${PPL_VERSION}.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/ppl-${PPL_VERSION}.tar.bz2
++ elif test -f $srcdir/../$tool/ppl-${PPL_VERSION}.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../$tool/ppl-${PPL_VERSION}.tar.xz
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar ; then
+ mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.gz ; then
+@@ -2667,6 +2669,8 @@ if test \( ! -d $srcdir/../$tool/ppl-${PPL_VERSION} \) -a \( x"$version" != x"no
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/ppl-${PPL_VERSION}.tgz
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.bz2
++ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.xz
+ else
+ as_fn_error "'package ppl-${PPL_VERSION} does not exist.'" "$LINENO" 5
+ fi
+diff --git a/configure.ac b/configure.ac
+index b316a7e..6b2acff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -268,6 +268,8 @@ if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none" \) ; then
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tgz
+ elif test -f $srcdir/../$tool/$1.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/$1.tar.bz2
++ elif test -f $srcdir/../$tool/$1.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../$tool/$1.tar.xz
+ elif test -f $srcdir/../tarballs/$1.tar ; then
+ mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/$1.tar
+ elif test -f $srcdir/../tarballs/$1.tar.gz ; then
+@@ -276,6 +278,8 @@ if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none" \) ; then
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tgz
+ elif test -f $srcdir/../tarballs/$1.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/$1.tar.bz2
++ elif test -f $srcdir/../tarballs/$1.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../tarballs/$1.tar.xz
+ else
+ AC_MSG_ERROR('package $1 does not exist.')
+ fi
+@@ -452,16 +456,16 @@ fi
+ AC_SUBST(MPC_VERSION)
+
+ if test "$ENABLE_GRAPHITE" == "yes"; then
+-# ppl version (default is 0.11.2)
++# ppl version (default is 1.2)
+ # ppl is only used for gcc 4.5 and 4.6 with graphite optimization.
+ AC_MSG_CHECKING([ppl version])
+ AC_ARG_WITH([ppl-version],
+ [ --with-ppl-version=VERSION
+- use ppl-VERSION (default is 0.11.2)],
++ use ppl-VERSION (default is 1.2)],
+ [if test x"$withval" != x ; then
+ PPL_VERSION="$withval"
+ fi],
+-[PPL_VERSION="0.11.2"])
++[PPL_VERSION="1.2"])
+ AC_MSG_RESULT($PPL_VERSION)
+ ANDROID_CHECK_PACKAGE(ppl-${PPL_VERSION})
+ fi
+
+project toolchain/gcc/
+diff --git a/build-gcc.sh b/build-gcc.sh
+index 4893461cf..4a821d7df 100755
+--- a/build-gcc.sh
++++ b/build-gcc.sh
+@@ -70,7 +70,7 @@ register_var_option "--ppl-version=<version>" PPL_VERSION "Specify ppl version"
+ PACKAGE_DIR=
+ register_var_option "--package-dir=<path>" PACKAGE_DIR "Create archive tarball in specific directory"
+
+-ENABLE_LANGUAGES="c,c++"
++ENABLE_LANGUAGES="c,c++,fortran,objc,obj-c++"
+ register_var_option "--enable-languages=<name>" ENABLE_LANGUAGES "Experimental: specify which languages to build"
+
+ BUILD_DEBUGGABLE="no"
+diff --git a/gcc-4.9/gcc/graphite-clast-to-gimple.c b/gcc-4.9/gcc/graphite-clast-to-gimple.c
+index 134388c14..431798985 100644
+--- a/gcc-4.9/gcc/graphite-clast-to-gimple.c
++++ b/gcc-4.9/gcc/graphite-clast-to-gimple.c
+@@ -28,6 +28,8 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/constraint.h>
+ #include <isl/ilp.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-dependences.c b/gcc-4.9/gcc/graphite-dependences.c
+index b0f868077..32000e0bc 100644
+--- a/gcc-4.9/gcc/graphite-dependences.c
++++ b/gcc-4.9/gcc/graphite-dependences.c
+@@ -183,7 +183,7 @@ scop_get_transformed_schedule (scop_p scop, vec<poly_bb_p> pbbs)
+ /* Helper function used on each MAP of a isl_union_map. Computes the
+ maximal output dimension. */
+
+-static int
++static isl_stat
+ max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
+ {
+ int global_max = *((int *) user);
+@@ -195,7 +195,7 @@ max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
+
+ isl_map_free (map);
+ isl_space_free (space);
+- return 0;
++ return isl_stat_ok;
+ }
+
+ /* Extends the output dimension of MAP to MAX dimensions. */
+@@ -219,12 +219,12 @@ struct extend_schedule_str {
+
+ /* Helper function for extend_schedule. */
+
+-static int
++static isl_stat
+ extend_schedule_1 (__isl_take isl_map *map, void *user)
+ {
+ struct extend_schedule_str *str = (struct extend_schedule_str *) user;
+ str->umap = isl_union_map_add_map (str->umap, extend_map (map, str->max));
+- return 0;
++ return isl_stat_ok;
+ }
+
+ /* Return a relation that has uniform output dimensions. */
+diff --git a/gcc-4.9/gcc/graphite-interchange.c b/gcc-4.9/gcc/graphite-interchange.c
+index 2e625c127..1984a2c14 100644
+--- a/gcc-4.9/gcc/graphite-interchange.c
++++ b/gcc-4.9/gcc/graphite-interchange.c
+@@ -29,6 +29,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/map.h>
+ #include <isl/union_map.h>
+ #include <isl/ilp.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
++#include <isl/deprecated/constraint_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-optimize-isl.c b/gcc-4.9/gcc/graphite-optimize-isl.c
+index fc12eebbf..f0b750603 100644
+--- a/gcc-4.9/gcc/graphite-optimize-isl.c
++++ b/gcc-4.9/gcc/graphite-optimize-isl.c
+@@ -28,6 +28,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/band.h>
+ #include <isl/aff.h>
+ #include <isl/options.h>
++#include <isl/union_set.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/aff_int.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ #include <isl/deprecated/int.h>
+ #include <isl/deprecated/aff_int.h>
+@@ -415,13 +418,13 @@ getScheduleMap (isl_schedule *Schedule)
+ return ScheduleMap;
+ }
+
+-static int
++static isl_stat
+ getSingleMap (__isl_take isl_map *map, void *user)
+ {
+ isl_map **singleMap = (isl_map **) user;
+ *singleMap = map;
+
+- return 0;
++ return isl_stat_ok;
+ }
+
+ static void
+@@ -469,7 +472,7 @@ optimize_isl (scop_p scop)
+
+ isl_options_set_schedule_max_constant_term (scop->ctx, CONSTANT_BOUND);
+ isl_options_set_schedule_maximize_band_depth (scop->ctx, 1);
+- isl_options_set_schedule_fuse (scop->ctx, ISL_SCHEDULE_FUSE_MIN);
++ isl_options_set_schedule_serialize_sccs (scop->ctx, 1);
+ isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_CONTINUE);
+ schedule = isl_union_set_compute_schedule (domain, validity, proximity);
+ isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_ABORT);
+diff --git a/gcc-4.9/gcc/graphite-poly.c b/gcc-4.9/gcc/graphite-poly.c
+index fccc2ec6d..6b99071c1 100644
+--- a/gcc-4.9/gcc/graphite-poly.c
++++ b/gcc-4.9/gcc/graphite-poly.c
+@@ -28,6 +28,8 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/constraint.h>
+ #include <isl/ilp.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-poly.h b/gcc-4.9/gcc/graphite-poly.h
+index 06d320eea..28a2498e4 100644
+--- a/gcc-4.9/gcc/graphite-poly.h
++++ b/gcc-4.9/gcc/graphite-poly.h
+@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3. If not see
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+
++#include <isl/constraint.h>
++
+ typedef struct poly_dr *poly_dr_p;
+
+ typedef struct poly_bb *poly_bb_p;
+diff --git a/gcc-4.9/gcc/graphite-sese-to-poly.c b/gcc-4.9/gcc/graphite-sese-to-poly.c
+index 059c10dbb..65d4e5690 100644
+--- a/gcc-4.9/gcc/graphite-sese-to-poly.c
++++ b/gcc-4.9/gcc/graphite-sese-to-poly.c
+@@ -26,6 +26,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/union_map.h>
+ #include <isl/constraint.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/aff_int.h>
++#include <isl/deprecated/constraint_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+diff --git a/gcc-4.9/libgfortran/intrinsics/cshift0.c b/gcc-4.9/libgfortran/intrinsics/cshift0.c
+index f983754f1..5187ed9f0 100644
+--- a/gcc-4.9/libgfortran/intrinsics/cshift0.c
++++ b/gcc-4.9/libgfortran/intrinsics/cshift0.c
+@@ -146,7 +146,7 @@ cshift0 (gfc_array_char * ret, const gfc_array_char * array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ cshift0_r16 ((gfc_array_r16 *)ret, (gfc_array_r16 *) array, shift,
+ which);
+@@ -176,7 +176,7 @@ cshift0 (gfc_array_char * ret, const gfc_array_char * array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 // defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ cshift0_c16 ((gfc_array_c16 *)ret, (gfc_array_c16 *) array, shift,
+ which);
+diff --git a/gcc-4.9/libgfortran/intrinsics/pack_generic.c b/gcc-4.9/libgfortran/intrinsics/pack_generic.c
+index 3fbfa0aaa..ebaba1ccd 100644
+--- a/gcc-4.9/libgfortran/intrinsics/pack_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/pack_generic.c
+@@ -158,7 +158,7 @@ pack_internal (gfc_array_char *ret, const gfc_array_char *array,
+ if (total == 0)
+ return; /* In this case, nothing remains to be done. */
+ }
+- else
++ else
+ {
+ /* We come here because of range checking. */
+ index_type ret_extent;
+@@ -312,7 +312,7 @@ pack (gfc_array_char *ret, const gfc_array_char *array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ pack_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) array,
+ (gfc_array_l1 *) mask, (gfc_array_r16 *) vector);
+@@ -344,7 +344,7 @@ pack (gfc_array_char *ret, const gfc_array_char *array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ pack_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) array,
+ (gfc_array_l1 *) mask, (gfc_array_c16 *) vector);
+diff --git a/gcc-4.9/libgfortran/intrinsics/spread_generic.c b/gcc-4.9/libgfortran/intrinsics/spread_generic.c
+index f3f23b8ce..07d316c80 100644
+--- a/gcc-4.9/libgfortran/intrinsics/spread_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/spread_generic.c
+@@ -142,7 +142,7 @@ spread_internal (gfc_array_char *ret, const gfc_array_char *source,
+ " should be %ld", (long int) n+1,
+ (long int) ret_extent,
+ (long int) extent[dim]);
+-
++
+ if (extent[dim] <= 0)
+ zero_sized = 1;
+ sstride[dim] = GFC_DESCRIPTOR_STRIDE_BYTES(source,dim);
+@@ -529,7 +529,7 @@ spread_scalar (gfc_array_char *ret, const char *source,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ spread_scalar_r16 ((gfc_array_r16 *) ret, (GFC_REAL_16 *) source,
+ *along, *pncopies);
+@@ -561,7 +561,7 @@ spread_scalar (gfc_array_char *ret, const char *source,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ spread_scalar_c16 ((gfc_array_c16 *) ret, (GFC_COMPLEX_16 *) source,
+ *along, *pncopies);
+diff --git a/gcc-4.9/libgfortran/intrinsics/unpack_generic.c b/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
+index 4bd99278e..330c9e2a5 100644
+--- a/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
+@@ -278,7 +278,7 @@ unpack1 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ unpack1_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) vector,
+ mask, (gfc_array_r16 *) field);
+@@ -310,7 +310,7 @@ unpack1 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ unpack1_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) vector,
+ mask, (gfc_array_c16 *) field);
+@@ -489,7 +489,7 @@ unpack0 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ unpack0_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) vector,
+ mask, (GFC_REAL_16 *) field);
+@@ -521,7 +521,7 @@ unpack0 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ unpack0_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) vector,
+ mask, (GFC_COMPLEX_16 *) field);
+diff --git a/gcc-4.9/libgfortran/runtime/in_pack_generic.c b/gcc-4.9/libgfortran/runtime/in_pack_generic.c
+index aab155df6..a2ba81e96 100644
+--- a/gcc-4.9/libgfortran/runtime/in_pack_generic.c
++++ b/gcc-4.9/libgfortran/runtime/in_pack_generic.c
+@@ -67,7 +67,7 @@ internal_pack (gfc_array_char * source)
+ case GFC_DTYPE_INTEGER_4:
+ case GFC_DTYPE_LOGICAL_4:
+ return internal_pack_4 ((gfc_array_i4 *) source);
+-
++
+ case GFC_DTYPE_INTEGER_8:
+ case GFC_DTYPE_LOGICAL_8:
+ return internal_pack_8 ((gfc_array_i8 *) source);
+@@ -95,7 +95,7 @@ internal_pack (gfc_array_char * source)
+ return internal_pack_r10 ((gfc_array_r10 *) source);
+ # endif
+
+-# if defined (HAVE_GFC_REAL_16)
++# if 0 && defined (HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ return internal_pack_r16 ((gfc_array_r16 *) source);
+ # endif
+@@ -103,7 +103,7 @@ internal_pack (gfc_array_char * source)
+
+ case GFC_DTYPE_COMPLEX_4:
+ return internal_pack_c4 ((gfc_array_c4 *) source);
+-
++
+ case GFC_DTYPE_COMPLEX_8:
+ return internal_pack_c8 ((gfc_array_c8 *) source);
+
+@@ -119,7 +119,7 @@ internal_pack (gfc_array_char * source)
+ return internal_pack_c10 ((gfc_array_c10 *) source);
+ # endif
+
+-# if defined (HAVE_GFC_COMPLEX_16)
++# if 0 && defined (HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ return internal_pack_c16 ((gfc_array_c16 *) source);
+ # endif
+diff --git a/gcc-4.9/libgfortran/runtime/in_unpack_generic.c b/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
+index 18855e1b6..ff65a187a 100644
+--- a/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
++++ b/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
+@@ -103,7 +103,7 @@ internal_unpack (gfc_array_char * d, const void * s)
+ return;
+ # endif
+
+-# if defined(HAVE_GFC_REAL_16)
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ internal_unpack_r16 ((gfc_array_r16 *) d, (const GFC_REAL_16 *) s);
+ return;
+@@ -131,7 +131,7 @@ internal_unpack (gfc_array_char * d, const void * s)
+ return;
+ # endif
+
+-# if defined(HAVE_GFC_COMPLEX_16)
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ internal_unpack_c16 ((gfc_array_c16 *) d, (const GFC_COMPLEX_16 *) s);
+ return;
+
+project toolchain/sed/
+diff --git a/Makefile.in b/Makefile.in
+index 3158710..236b714 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1,7 +1,7 @@
+-# Makefile.in generated by automake 1.12.2 from Makefile.am.
++# Makefile.in generated by automake 1.15 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
++# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -16,23 +16,61 @@
+
+
+ VPATH = @srcdir@
+-am__make_dryrun = \
+- { \
+- am__dry=no; \
++am__is_gnu_make = { \
++ if test -z '$(MAKELEVEL)'; then \
++ false; \
++ elif test -n '$(MAKE_HOST)'; then \
++ true; \
++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
++ true; \
++ else \
++ false; \
++ fi; \
++}
++am__make_running_with_option = \
++ case $${target_option-} in \
++ ?) ;; \
++ *) echo "am__make_running_with_option: internal error: invalid" \
++ "target option '$${target_option-}' specified" >&2; \
++ exit 1;; \
++ esac; \
++ has_opt=no; \
++ sane_makeflags=$$MAKEFLAGS; \
++ if $(am__is_gnu_make); then \
++ sane_makeflags=$$MFLAGS; \
++ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+- *) \
+- for am__flg in $$MAKEFLAGS; do \
+- case $$am__flg in \
+- *=*|--*) ;; \
+- *n*) am__dry=yes; break;; \
+- esac; \
+- done;; \
++ bs=\\; \
++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
++ esac; \
++ fi; \
++ skip_next=no; \
++ strip_trailopt () \
++ { \
++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
++ }; \
++ for flg in $$sane_makeflags; do \
++ test $$skip_next = yes && { skip_next=no; continue; }; \
++ case $$flg in \
++ *=*|--*) continue;; \
++ -*I) strip_trailopt 'I'; skip_next=yes;; \
++ -*I?*) strip_trailopt 'I';; \
++ -*O) strip_trailopt 'O'; skip_next=yes;; \
++ -*O?*) strip_trailopt 'O';; \
++ -*l) strip_trailopt 'l'; skip_next=yes;; \
++ -*l?*) strip_trailopt 'l';; \
++ -[dEDm]) skip_next=yes;; \
++ -[JT]) skip_next=yes;; \
+ esac; \
+- test $$am__dry = yes; \
+- }
++ case $$flg in \
++ *$$target_option*) has_opt=yes; break;; \
++ esac; \
++ done; \
++ test $$has_opt = yes
++am__make_dryrun = (target_option=n; $(am__make_running_with_option))
++am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+@@ -51,18 +89,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ subdir = .
+-DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
+- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+- $(srcdir)/config_h.in $(top_srcdir)/build-aux/config.guess \
+- $(top_srcdir)/build-aux/config.rpath \
+- $(top_srcdir)/build-aux/config.sub \
+- $(top_srcdir)/build-aux/install-sh \
+- $(top_srcdir)/build-aux/missing $(top_srcdir)/configure \
+- ABOUT-NLS AUTHORS COPYING COPYING.DOC ChangeLog INSTALL NEWS \
+- README-alpha THANKS build-aux/compile build-aux/config.guess \
+- build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
+- build-aux/install-sh build-aux/mdate-sh build-aux/missing \
+- build-aux/texinfo.tex
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+@@ -122,21 +148,36 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
++DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
++ $(am__configure_deps) $(noinst_HEADERS) $(am__DIST_COMMON)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
++AM_V_P = $(am__v_P_@AM_V@)
++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
++am__v_P_0 = false
++am__v_P_1 = :
++AM_V_GEN = $(am__v_GEN_@AM_V@)
++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
++am__v_GEN_0 = @echo " GEN " $@;
++am__v_GEN_1 =
++AM_V_at = $(am__v_at_@AM_V@)
++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
++am__v_at_0 = @
++am__v_at_1 =
+ SOURCES =
+ DIST_SOURCES =
+-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+- html-recursive info-recursive install-data-recursive \
+- install-dvi-recursive install-exec-recursive \
+- install-html-recursive install-info-recursive \
+- install-pdf-recursive install-ps-recursive install-recursive \
+- installcheck-recursive installdirs-recursive pdf-recursive \
+- ps-recursive uninstall-recursive
++RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
++ ctags-recursive dvi-recursive html-recursive info-recursive \
++ install-data-recursive install-dvi-recursive \
++ install-exec-recursive install-html-recursive \
++ install-info-recursive install-pdf-recursive \
++ install-ps-recursive install-recursive installcheck-recursive \
++ installdirs-recursive pdf-recursive ps-recursive \
++ tags-recursive uninstall-recursive
+ am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+@@ -146,13 +187,46 @@ DATA = $(noinst_DATA)
+ HEADERS = $(noinst_HEADERS)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
++am__recursive_targets = \
++ $(RECURSIVE_TARGETS) \
++ $(RECURSIVE_CLEAN_TARGETS) \
++ $(am__extra_recursive_targets)
++AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
++ $(LISP)config_h.in
++# Read a list of newline-separated strings from the standard input,
++# and print each of them once, without duplicates. Input order is
++# *not* preserved.
++am__uniquify_input = $(AWK) '\
++ BEGIN { nonempty = 0; } \
++ { items[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in items) print i; }; } \
++'
++# Make sure the list of sources is unique. This is necessary because,
++# e.g., the same source file might be shared among _SOURCES variables
++# for different programs/libraries.
++am__define_uniq_tagged_files = \
++ list='$(am__tagged_files)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
+ CSCOPE = cscope
+ DIST_SUBDIRS = $(SUBDIRS)
++am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config_h.in \
++ $(top_srcdir)/build-aux/compile \
++ $(top_srcdir)/build-aux/config.guess \
++ $(top_srcdir)/build-aux/config.rpath \
++ $(top_srcdir)/build-aux/config.sub \
++ $(top_srcdir)/build-aux/install-sh \
++ $(top_srcdir)/build-aux/missing ABOUT-NLS AUTHORS COPYING \
++ COPYING.DOC ChangeLog INSTALL NEWS README README-alpha THANKS \
++ build-aux/compile build-aux/config.guess \
++ build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
++ build-aux/install-sh build-aux/mdate-sh build-aux/missing \
++ build-aux/texinfo.tex
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ distdir = $(PACKAGE)-$(VERSION)
+ top_distdir = $(distdir)
+@@ -200,6 +274,7 @@ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ ALLOCA_H = @ALLOCA_H@
+ AMTAR = @AMTAR@
++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ AR = @AR@
+ ARFLAGS = @ARFLAGS@
+@@ -1005,7 +1080,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits Makefile
+-.PRECIOUS: Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+@@ -1026,8 +1100,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__aclocal_m4_deps):
+
+ config.h: stamp-h1
+- @if test ! -f $@; then rm -f stamp-h1; else :; fi
+- @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
++ @test -f $@ || rm -f stamp-h1
++ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+ stamp-h1: $(srcdir)/config_h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+@@ -1046,14 +1120,13 @@ distclean-hdr:
+ # (1) if the variable is set in 'config.status', edit 'config.status'
+ # (which will cause the Makefiles to be regenerated when you run 'make');
+ # (2) otherwise, pass the desired values on the 'make' command line.
+-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+- @fail= failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++$(am__recursive_targets):
++ @fail=; \
++ if $(am__make_keepgoing); then \
++ failcom='fail=yes'; \
++ else \
++ failcom='exit 1'; \
++ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+@@ -1074,31 +1147,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+-tags-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+- done
+-ctags-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+- done
+-cscopelist-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+- done
+
+-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
+- mkid -fID $$unique
+-tags: TAGS
+-
+-TAGS: tags-recursive $(HEADERS) $(SOURCES) config_h.in $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
++ID: $(am__tagged_files)
++ $(am__define_uniq_tagged_files); mkid -fID $$unique
++tags: tags-recursive
++TAGS: tags
++
++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+@@ -1114,12 +1169,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config_h.in $(TAGS_DEPENDENCIES) \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+- list='$(SOURCES) $(HEADERS) config_h.in $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+@@ -1131,15 +1181,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config_h.in $(TAGS_DEPENDENCIES) \
+ $$unique; \
+ fi; \
+ fi
+-ctags: CTAGS
+-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config_h.in $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
+- list='$(SOURCES) $(HEADERS) config_h.in $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ctags: ctags-recursive
++
++CTAGS: ctags
++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
++ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+@@ -1148,18 +1194,16 @@ GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+-
+ cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+-
+ clean-cscope:
+ -rm -f cscope.files
++cscope.files: clean-cscope cscopelist
++cscopelist: cscopelist-recursive
+
+-cscope.files: clean-cscope cscopelist-recursive cscopelist
+-
+-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP)'; \
++cscopelist-am: $(am__tagged_files)
++ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+@@ -1265,10 +1309,16 @@ dist-xz: distdir
+ $(am__post_remove_distdir)
+
+ dist-tarZ: distdir
++ @echo WARNING: "Support for distribution archives compressed with" \
++ "legacy program 'compress' is deprecated." >&2
++ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+ dist-shar: distdir
++ @echo WARNING: "Support for shar distribution archives is" \
++ "deprecated." >&2
++ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+@@ -1301,18 +1351,19 @@ distcheck: dist
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+- chmod -R a-w $(distdir); chmod u+w $(distdir)
+- mkdir $(distdir)/_build
+- mkdir $(distdir)/_inst
++ chmod -R a-w $(distdir)
++ chmod u+w $(distdir)
++ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+- && $(am__cd) $(distdir)/_build \
+- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
++ && $(am__cd) $(distdir)/_build/sub \
++ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
++ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+@@ -1467,25 +1518,25 @@ ps-am:
+
+ uninstall-am:
+
+-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+- cscopelist-recursive ctags-recursive install-am install-strip \
+- tags-recursive
+-
+-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+- all all-am am--refresh check check-am clean clean-cscope \
+- clean-generic cscope cscopelist cscopelist-recursive ctags \
+- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
+- dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
+- distclean distclean-generic distclean-hdr distclean-tags \
+- distcleancheck distdir distuninstallcheck dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-dvi install-dvi-am install-exec \
+- install-exec-am install-html install-html-am install-info \
+- install-info-am install-man install-pdf install-pdf-am \
+- install-ps install-ps-am install-strip installcheck \
+- installcheck-am installdirs installdirs-am maintainer-clean \
+- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
++.MAKE: $(am__recursive_targets) all install-am install-strip
++
++.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
++ am--refresh check check-am clean clean-cscope clean-generic \
++ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
++ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
++ dist-zip distcheck distclean distclean-generic distclean-hdr \
++ distclean-tags distcleancheck distdir distuninstallcheck dvi \
++ dvi-am html html-am info info-am install install-am \
++ install-data install-data-am install-dvi install-dvi-am \
++ install-exec install-exec-am install-html install-html-am \
++ install-info install-info-am install-man install-pdf \
++ install-pdf-am install-ps install-ps-am install-strip \
++ installcheck installcheck-am installdirs installdirs-am \
++ maintainer-clean maintainer-clean-generic mostlyclean \
++ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
++ uninstall-am
++
++.PRECIOUS: Makefile
+
+
+ html:
+diff --git a/aclocal.m4 b/aclocal.m4
+index 1b04dbe..5261ab3 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1,6 +1,6 @@
+-# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
++# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
++# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -11,6 +11,7 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+
++m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+ m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+ m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+@@ -19,24 +20,22 @@ You have another version of autoconf. It may work, but is not guaranteed to.
+ If you have problems, you may need to regenerate the build system entirely.
+ To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
++# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 8
+-
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+ # Automake X.Y traces this macro to ensure aclocal.m4 has been
+ # generated from the m4 files accompanying Automake X.Y.
+ # (This private macro should not be called outside this file.)
+ AC_DEFUN([AM_AUTOMAKE_VERSION],
+-[am__api_version='1.12'
++[am__api_version='1.15'
+ dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+ dnl require some minimum version. Point them to the right macro.
+-m4_if([$1], [1.12.2], [],
++m4_if([$1], [1.15], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+ ])
+
+@@ -52,21 +51,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
+ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+ # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+-[AM_AUTOMAKE_VERSION([1.12.2])dnl
++[AM_AUTOMAKE_VERSION([1.15])dnl
+ m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+ # AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 2
+-
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+ # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+ # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+@@ -106,22 +103,19 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+ # configured tree to be moved without reconfiguration.
+
+ AC_DEFUN([AM_AUX_DIR_EXPAND],
+-[dnl Rely on autoconf to set up CDPATH properly.
+-AC_PREREQ([2.50])dnl
+-# expand $ac_aux_dir to an absolute path
+-am_aux_dir=`cd $ac_aux_dir && pwd`
++[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
++# Expand $ac_aux_dir to an absolute path.
++am_aux_dir=`cd "$ac_aux_dir" && pwd`
+ ])
+
+ # AM_CONDITIONAL -*- Autoconf -*-
+
+-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
++# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 10
+-
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+ # Define a conditional.
+@@ -147,13 +141,12 @@ AC_CONFIG_COMMANDS_PRE(
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
+
+-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
++# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 17
+
+ # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+@@ -339,19 +332,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
+
+ # Generate code to set up dependency tracking. -*- Autoconf -*-
+
+-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
++# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 6
+
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [{
+- # Autoconf 2.62 quotes --file arguments for eval, but not when files
++ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+@@ -380,7 +372,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+- test -z "am__include" && continue
++ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+@@ -414,30 +406,23 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+
+-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+-# serial 8
+-
+-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+-
+ # Do all the work for Automake. -*- Autoconf -*-
+
+-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
++# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 19
+-
+ # This macro actually does too much. Some checks are only needed if
+ # your package does certain things. But this isn't really a big deal.
+
++dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
++m4_define([AC_PROG_CC],
++m4_defn([AC_PROG_CC])
++[_AM_PROG_CC_C_O
++])
++
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+ # AM_INIT_AUTOMAKE([OPTIONS])
+ # -----------------------------------------------
+@@ -450,7 +435,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+ # arguments mandatory, and then we can depend on a new Autoconf
+ # release and drop the old call support.
+ AC_DEFUN([AM_INIT_AUTOMAKE],
+-[AC_PREREQ([2.62])dnl
++[AC_PREREQ([2.65])dnl
+ dnl Autoconf wants to disallow AM_ names. We explicitly allow
+ dnl the ones we care about.
+ m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+@@ -480,8 +465,7 @@ AC_SUBST([CYGPATH_W])
+ dnl Distinguish between old-style and new-style calls.
+ m4_ifval([$2],
+ [AC_DIAGNOSE([obsolete],
+-[$0: two- and three-arguments forms are deprecated. For more info, see:
+-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
++ [$0: two- and three-arguments forms are deprecated.])
+ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+@@ -514,8 +498,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+ # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+ # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+ AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+-# We need awk for the "check" target. The system "awk" is bad on
+-# some platforms.
++# We need awk for the "check" target (and possibly the TAP driver). The
++# system "awk" is bad on some platforms.
+ AC_REQUIRE([AC_PROG_AWK])dnl
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+@@ -535,21 +519,63 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
+-dnl but we still cater to Autoconf 2.62.
+-m4_ifdef([AC_PROG_OBJCXX],
+-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
++AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+- m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
++ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+ ])
+-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+-dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
+-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
++AC_REQUIRE([AM_SILENT_RULES])dnl
++dnl The testsuite driver may need to know about EXEEXT, so add the
++dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
++dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+ AC_CONFIG_COMMANDS_PRE(dnl
+ [m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
++
++# POSIX will say in a future version that running "rm -f" with no argument
++# is OK; and we want to be able to make that assumption in our Makefile
++# recipes. So use an aggressive probe to check that the usage we want is
++# actually supported "in the wild" to an acceptable degree.
++# See automake bug#10828.
++# To make any issue more visible, cause the running configure to be aborted
++# by default if the 'rm' program in use doesn't match our expectations; the
++# user can still override this though.
++if rm -f && rm -fr && rm -rf; then : OK; else
++ cat >&2 <<'END'
++Oops!
++
++Your 'rm' program seems unable to run without file operands specified
++on the command line, even when the '-f' option is present. This is contrary
++to the behaviour of most rm programs out there, and not conforming with
++the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
++
++Please tell bug-automake@gnu.org about your system, including the value
++of your $PATH and any error possibly output before this message. This
++can help us improve future automake versions.
++
++END
++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
++ echo 'Configuration will proceed anyway, since you have set the' >&2
++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
++ echo >&2
++ else
++ cat >&2 <<'END'
++Aborting the configuration process, to ensure you take notice of the issue.
++
++You can download and install GNU coreutils to get an 'rm' implementation
++that behaves properly: <http://www.gnu.org/software/coreutils/>.
++
++If you want to complete the configuration process using your problematic
++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
++to "yes", and re-run configure.
++
++END
++ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
++ fi
++fi
++dnl The trailing newline in this macro's definition is deliberate, for
++dnl backward compatibility and to allow trailing 'dnl'-style comments
++dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+ ])
+
+ dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+@@ -558,7 +584,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
+ m4_define([_AC_COMPILER_EXEEXT],
+ m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+-
+ # When config.status generates a header, we must update the stamp-h file.
+ # This file resides in the same directory as the config header
+ # that is generated. The stamp files are numbered to have different names.
+@@ -580,20 +605,18 @@ for _am_header in $config_headers :; do
+ done
+ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 8
+-
+ # AM_PROG_INSTALL_SH
+ # ------------------
+ # Define $install_sh.
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+-if test x"${install_sh}" != xset; then
++if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+@@ -603,14 +626,12 @@ if test x"${install_sh}" != xset; then
+ fi
+ AC_SUBST([install_sh])])
+
+-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
++# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 2
+-
+ # Check whether the underlying file-system supports filenames
+ # with a leading dot. For instance MS-DOS doesn't.
+ AC_DEFUN([AM_SET_LEADING_DOT],
+@@ -626,14 +647,12 @@ AC_SUBST([am__leading_dot])])
+
+ # Check to see how 'make' treats includes. -*- Autoconf -*-
+
+-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 5
+-
+ # AM_MAKE_INCLUDE()
+ # -----------------
+ # Check to see how make treats includes.
+@@ -678,14 +697,12 @@ rm -f confinc confmf
+
+ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
++# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 7
+-
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+ AC_DEFUN([AM_MISSING_PROG],
+@@ -693,11 +710,10 @@ AC_DEFUN([AM_MISSING_PROG],
+ $1=${$1-"${am_missing_run}$2"}
+ AC_SUBST($1)])
+
+-
+ # AM_MISSING_HAS_RUN
+ # ------------------
+-# Define MISSING if not defined so far and test if it supports --run.
+-# If it does, set am_missing_run to use it, otherwise, to nothing.
++# Define MISSING if not defined so far and test if it is modern enough.
++# If it is, set am_missing_run to use it, otherwise, to nothing.
+ AC_DEFUN([AM_MISSING_HAS_RUN],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+ AC_REQUIRE_AUX_FILE([missing])dnl
+@@ -710,29 +726,28 @@ if test x"${MISSING+set}" != xset; then
+ esac
+ fi
+ # Use eval to expand $SHELL
+-if eval "$MISSING --run true"; then
+- am_missing_run="$MISSING --run "
++if eval "$MISSING --is-lightweight"; then
++ am_missing_run="$MISSING "
+ else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+ fi
+ ])
+
+-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
++# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 3
+-
+ # AM_PROG_MKDIR_P
+ # ---------------
+ # Check for 'mkdir -p'.
+ AC_DEFUN([AM_PROG_MKDIR_P],
+ [AC_PREREQ([2.60])dnl
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+-dnl FIXME to be removed in Automake 1.13.
++dnl FIXME we are no longer going to remove this! adjust warning
++dnl FIXME message accordingly.
+ AC_DIAGNOSE([obsolete],
+ [$0: this macro is deprecated, and will soon be removed.
+ You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
+@@ -751,16 +766,43 @@ case $mkdir_p in
+ esac
+ ])
+
++# -*- Autoconf -*-
++# Obsolete and "removed" macros, that must however still report explicit
++# error messages when used, to smooth transition.
++#
++# Copyright (C) 1996-2014 Free Software Foundation, Inc.
++#
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++AC_DEFUN([AM_CONFIG_HEADER],
++[AC_DIAGNOSE([obsolete],
++['$0': this macro is obsolete.
++You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
++AC_CONFIG_HEADERS($@)])
++
++AC_DEFUN([AM_PROG_CC_STDC],
++[AC_PROG_CC
++am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
++AC_DIAGNOSE([obsolete],
++['$0': this macro is obsolete.
++You should simply use the 'AC][_PROG_CC' macro instead.
++Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
++but upon 'ac_cv_prog_cc_stdc'.])])
++
++AC_DEFUN([AM_C_PROTOTYPES],
++ [AC_FATAL([automatic de-ANSI-fication support has been removed])])
++AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
++
+ # Helper functions for option handling. -*- Autoconf -*-
+
+-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 6
+-
+ # _AM_MANGLE_OPTION(NAME)
+ # -----------------------
+ AC_DEFUN([_AM_MANGLE_OPTION],
+@@ -784,15 +826,77 @@ AC_DEFUN([_AM_SET_OPTIONS],
+ AC_DEFUN([_AM_IF_OPTION],
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+-# Check to make sure that the build environment is sane. -*- Autoconf -*-
++# Copyright (C) 1999-2014 Free Software Foundation, Inc.
++#
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
+
+-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
++# _AM_PROG_CC_C_O
++# ---------------
++# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
++# to automatically call this.
++AC_DEFUN([_AM_PROG_CC_C_O],
++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
++AC_REQUIRE_AUX_FILE([compile])dnl
++AC_LANG_PUSH([C])dnl
++AC_CACHE_CHECK(
++ [whether $CC understands -c and -o together],
++ [am_cv_prog_cc_c_o],
++ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
++ # Make sure it works both with $CC and with simple cc.
++ # Following AC_PROG_CC_C_O, we do the test twice because some
++ # compilers refuse to overwrite an existing .o file with -o,
++ # though they will create one.
++ am_cv_prog_cc_c_o=yes
++ for am_i in 1 2; do
++ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
++ && test -f conftest2.$ac_objext; then
++ : OK
++ else
++ am_cv_prog_cc_c_o=no
++ break
++ fi
++ done
++ rm -f core conftest*
++ unset am_i])
++if test "$am_cv_prog_cc_c_o" != yes; then
++ # Losing compiler, so override with the script.
++ # FIXME: It is wrong to rewrite CC.
++ # But if we don't then we get into trouble of one sort or another.
++ # A longer-term fix would be to have automake use am__CC in this case,
++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
++ CC="$am_aux_dir/compile $CC"
++fi
++AC_LANG_POP([C])])
++
++# For backward compatibility.
++AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
++
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 9
++# AM_RUN_LOG(COMMAND)
++# -------------------
++# Run COMMAND, save the exit status in ac_status, and log it.
++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
++AC_DEFUN([AM_RUN_LOG],
++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
++ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
++ (exit $ac_status); }])
++
++# Check to make sure that the build environment is sane. -*- Autoconf -*-
++
++# Copyright (C) 1996-2014 Free Software Foundation, Inc.
++#
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
+
+ # AM_SANITY_CHECK
+ # ---------------
+@@ -869,13 +973,71 @@ AC_CONFIG_COMMANDS_PRE(
+ rm -f conftest.file
+ ])
+
+-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
++# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 2
++# AM_SILENT_RULES([DEFAULT])
++# --------------------------
++# Enable less verbose build rules; with the default set to DEFAULT
++# ("yes" being less verbose, "no" or empty being verbose).
++AC_DEFUN([AM_SILENT_RULES],
++[AC_ARG_ENABLE([silent-rules], [dnl
++AS_HELP_STRING(
++ [--enable-silent-rules],
++ [less verbose build output (undo: "make V=1")])
++AS_HELP_STRING(
++ [--disable-silent-rules],
++ [verbose build output (undo: "make V=0")])dnl
++])
++case $enable_silent_rules in @%:@ (((
++ yes) AM_DEFAULT_VERBOSITY=0;;
++ no) AM_DEFAULT_VERBOSITY=1;;
++ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
++esac
++dnl
++dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
++dnl do not support nested variable expansions.
++dnl See automake bug#9928 and bug#10237.
++am_make=${MAKE-make}
++AC_CACHE_CHECK([whether $am_make supports nested variables],
++ [am_cv_make_support_nested_variables],
++ [if AS_ECHO([['TRUE=$(BAR$(V))
++BAR0=false
++BAR1=true
++V=1
++am__doit:
++ @$(TRUE)
++.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
++ am_cv_make_support_nested_variables=yes
++else
++ am_cv_make_support_nested_variables=no
++fi])
++if test $am_cv_make_support_nested_variables = yes; then
++ dnl Using '$V' instead of '$(V)' breaks IRIX make.
++ AM_V='$(V)'
++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
++else
++ AM_V=$AM_DEFAULT_VERBOSITY
++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
++fi
++AC_SUBST([AM_V])dnl
++AM_SUBST_NOTMAKE([AM_V])dnl
++AC_SUBST([AM_DEFAULT_V])dnl
++AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
++AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
++AM_BACKSLASH='\'
++AC_SUBST([AM_BACKSLASH])dnl
++_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
++])
++
++# Copyright (C) 2001-2014 Free Software Foundation, Inc.
++#
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
+
+ # AM_PROG_INSTALL_STRIP
+ # ---------------------
+@@ -899,14 +1061,12 @@ fi
+ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+ AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
++# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 3
+-
+ # _AM_SUBST_NOTMAKE(VARIABLE)
+ # ---------------------------
+ # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+@@ -920,14 +1080,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+ # Check how to create a tarball. -*- Autoconf -*-
+
+-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
++# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ #
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 3
+-
+ # _AM_PROG_TAR(FORMAT)
+ # --------------------
+ # Check how to create a tarball in format FORMAT.
+@@ -941,76 +1099,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+ # Substitute a variable $(am__untar) that extract such
+ # a tarball read from stdin.
+ # $(am__untar) < result.tar
++#
+ AC_DEFUN([_AM_PROG_TAR],
+ [# Always define AMTAR for backward compatibility. Yes, it's still used
+ # in the wild :-( We should find a proper way to deprecate it ...
+ AC_SUBST([AMTAR], ['$${TAR-tar}'])
+-m4_if([$1], [v7],
+- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+- [m4_case([$1], [ustar],, [pax],,
+- [m4_fatal([Unknown tar format])])
+-AC_MSG_CHECKING([how to create a $1 tar archive])
+-# Loop over all known methods to create a tar archive until one works.
++
++# We'll loop over all known methods to create a tar archive until one works.
+ _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+-# Do not fold the above two line into one, because Tru64 sh and
+-# Solaris sh will not grok spaces in the rhs of '-'.
+-for _am_tool in $_am_tools
+-do
+- case $_am_tool in
+- gnutar)
+- for _am_tar in tar gnutar gtar;
+- do
+- AM_RUN_LOG([$_am_tar --version]) && break
+- done
+- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+- am__untar="$_am_tar -xf -"
+- ;;
+- plaintar)
+- # Must skip GNU tar: if it does not support --format= it doesn't create
+- # ustar tarball either.
+- (tar --version) >/dev/null 2>&1 && continue
+- am__tar='tar chf - "$$tardir"'
+- am__tar_='tar chf - "$tardir"'
+- am__untar='tar xf -'
+- ;;
+- pax)
+- am__tar='pax -L -x $1 -w "$$tardir"'
+- am__tar_='pax -L -x $1 -w "$tardir"'
+- am__untar='pax -r'
+- ;;
+- cpio)
+- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+- am__untar='cpio -i -H $1 -d'
+- ;;
+- none)
+- am__tar=false
+- am__tar_=false
+- am__untar=false
+- ;;
+- esac
+
+- # If the value was cached, stop now. We just wanted to have am__tar
+- # and am__untar set.
+- test -n "${am_cv_prog_tar_$1}" && break
++m4_if([$1], [v7],
++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
++
++ [m4_case([$1],
++ [ustar],
++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
++ # There is notably a 21 bits limit for the UID and the GID. In fact,
++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
++ # and bug#13588).
++ am_max_uid=2097151 # 2^21 - 1
++ am_max_gid=$am_max_uid
++ # The $UID and $GID variables are not portable, so we need to resort
++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
++ # below are definitely unexpected, so allow the users to see them
++ # (that is, avoid stderr redirection).
++ am_uid=`id -u || echo unknown`
++ am_gid=`id -g || echo unknown`
++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
++ if test $am_uid -le $am_max_uid; then
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ _am_tools=none
++ fi
++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
++ if test $am_gid -le $am_max_gid; then
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ _am_tools=none
++ fi],
++
++ [pax],
++ [],
++
++ [m4_fatal([Unknown tar format])])
++
++ AC_MSG_CHECKING([how to create a $1 tar archive])
++
++ # Go ahead even if we have the value already cached. We do so because we
++ # need to set the values for the 'am__tar' and 'am__untar' variables.
++ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
++
++ for _am_tool in $_am_tools; do
++ case $_am_tool in
++ gnutar)
++ for _am_tar in tar gnutar gtar; do
++ AM_RUN_LOG([$_am_tar --version]) && break
++ done
++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
++ am__untar="$_am_tar -xf -"
++ ;;
++ plaintar)
++ # Must skip GNU tar: if it does not support --format= it doesn't create
++ # ustar tarball either.
++ (tar --version) >/dev/null 2>&1 && continue
++ am__tar='tar chf - "$$tardir"'
++ am__tar_='tar chf - "$tardir"'
++ am__untar='tar xf -'
++ ;;
++ pax)
++ am__tar='pax -L -x $1 -w "$$tardir"'
++ am__tar_='pax -L -x $1 -w "$tardir"'
++ am__untar='pax -r'
++ ;;
++ cpio)
++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
++ am__untar='cpio -i -H $1 -d'
++ ;;
++ none)
++ am__tar=false
++ am__tar_=false
++ am__untar=false
++ ;;
++ esac
+
+- # tar/untar a dummy directory, and stop if the command works
+- rm -rf conftest.dir
+- mkdir conftest.dir
+- echo GrepMe > conftest.dir/file
+- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
++ # If the value was cached, stop now. We just wanted to have am__tar
++ # and am__untar set.
++ test -n "${am_cv_prog_tar_$1}" && break
++
++ # tar/untar a dummy directory, and stop if the command works.
++ rm -rf conftest.dir
++ mkdir conftest.dir
++ echo GrepMe > conftest.dir/file
++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
++ rm -rf conftest.dir
++ if test -s conftest.tar; then
++ AM_RUN_LOG([$am__untar <conftest.tar])
++ AM_RUN_LOG([cat conftest.dir/file])
++ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
++ fi
++ done
+ rm -rf conftest.dir
+- if test -s conftest.tar; then
+- AM_RUN_LOG([$am__untar <conftest.tar])
+- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+- fi
+-done
+-rm -rf conftest.dir
+
+-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
++ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
++
+ AC_SUBST([am__tar])
+ AC_SUBST([am__untar])
+ ]) # _AM_PROG_TAR
+diff --git a/configure b/configure
+index 6991ab4..47bfbcc 100755
+--- a/configure
++++ b/configure
+@@ -1362,6 +1362,10 @@ CFLAGS
+ CC
+ COPYRIGHT_YEAR
+ SED_FEATURE_VERSION
++AM_BACKSLASH
++AM_DEFAULT_VERBOSITY
++AM_DEFAULT_V
++AM_V
+ am__untar
+ am__tar
+ AMTAR
+@@ -1426,6 +1430,7 @@ SHELL'
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
++enable_silent_rules
+ enable_dependency_tracking
+ enable_largefile
+ enable_acl
+@@ -2069,6 +2074,8 @@ Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --enable-silent-rules less verbose build output (undo: "make V=1")
++ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+@@ -3320,7 +3327,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+ ac_config_headers="$ac_config_headers config.h:config_h.in"
+
+
+-am__api_version='1.12'
++am__api_version='1.15'
+
+ # Find a good install program. We prefer a C program (faster),
+ # so one script is as good as another. But avoid the broken or
+@@ -3492,8 +3499,8 @@ test "$program_suffix" != NONE &&
+ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+-# expand $ac_aux_dir to an absolute path
+-am_aux_dir=`cd $ac_aux_dir && pwd`
++# Expand $ac_aux_dir to an absolute path.
++am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+ if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+@@ -3504,15 +3511,15 @@ if test x"${MISSING+set}" != xset; then
+ esac
+ fi
+ # Use eval to expand $SHELL
+-if eval "$MISSING --run true"; then
+- am_missing_run="$MISSING --run "
++if eval "$MISSING --is-lightweight"; then
++ am_missing_run="$MISSING "
+ else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+ $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+ fi
+
+-if test x"${install_sh}" != xset; then
++if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+@@ -3745,6 +3752,45 @@ else
+ fi
+ rmdir .tst 2>/dev/null
+
++# Check whether --enable-silent-rules was given.
++if test "${enable_silent_rules+set}" = set; then :
++ enableval=$enable_silent_rules;
++fi
++
++case $enable_silent_rules in # (((
++ yes) AM_DEFAULT_VERBOSITY=0;;
++ no) AM_DEFAULT_VERBOSITY=1;;
++ *) AM_DEFAULT_VERBOSITY=1;;
++esac
++am_make=${MAKE-make}
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
++$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
++if ${am_cv_make_support_nested_variables+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if $as_echo 'TRUE=$(BAR$(V))
++BAR0=false
++BAR1=true
++V=1
++am__doit:
++ @$(TRUE)
++.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
++ am_cv_make_support_nested_variables=yes
++else
++ am_cv_make_support_nested_variables=no
++fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
++$as_echo "$am_cv_make_support_nested_variables" >&6; }
++if test $am_cv_make_support_nested_variables = yes; then
++ AM_V='$(V)'
++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
++else
++ AM_V=$AM_DEFAULT_VERBOSITY
++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
++fi
++AM_BACKSLASH='\'
++
+ if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+@@ -3801,12 +3847,16 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+ # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+ mkdir_p='$(MKDIR_P)'
+
+-# We need awk for the "check" target. The system "awk" is bad on
+-# some platforms.
++# We need awk for the "check" target (and possibly the TAP driver). The
++# system "awk" is bad on some platforms.
+ # Always define AMTAR for backward compatibility. Yes, it's still used
+ # in the wild :-( We should find a proper way to deprecate it ...
+ AMTAR='$${TAR-tar}'
+
++
++# We'll loop over all known methods to create a tar archive until one works.
++_am_tools='gnutar pax cpio none'
++
+ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+@@ -3814,6 +3864,49 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
++# POSIX will say in a future version that running "rm -f" with no argument
++# is OK; and we want to be able to make that assumption in our Makefile
++# recipes. So use an aggressive probe to check that the usage we want is
++# actually supported "in the wild" to an acceptable degree.
++# See automake bug#10828.
++# To make any issue more visible, cause the running configure to be aborted
++# by default if the 'rm' program in use doesn't match our expectations; the
++# user can still override this though.
++if rm -f && rm -fr && rm -rf; then : OK; else
++ cat >&2 <<'END'
++Oops!
++
++Your 'rm' program seems unable to run without file operands specified
++on the command line, even when the '-f' option is present. This is contrary
++to the behaviour of most rm programs out there, and not conforming with
++the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
++
++Please tell bug-automake@gnu.org about your system, including the value
++of your $PATH and any error possibly output before this message. This
++can help us improve future automake versions.
++
++END
++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
++ echo 'Configuration will proceed anyway, since you have set the' >&2
++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
++ echo >&2
++ else
++ cat >&2 <<'END'
++Aborting the configuration process, to ensure you take notice of the issue.
++
++You can download and install GNU coreutils to get an 'rm' implementation
++that behaves properly: <http://www.gnu.org/software/coreutils/>.
++
++If you want to complete the configuration process using your problematic
++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
++to "yes", and re-run configure.
++
++END
++ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
++ fi
++fi
++
++
+ SED_FEATURE_VERSION=4.2.2
+
+ cat >>confdefs.h <<_ACEOF
+@@ -4613,6 +4706,65 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
++if ${am_cv_prog_cc_c_o+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++ # Make sure it works both with $CC and with simple cc.
++ # Following AC_PROG_CC_C_O, we do the test twice because some
++ # compilers refuse to overwrite an existing .o file with -o,
++ # though they will create one.
++ am_cv_prog_cc_c_o=yes
++ for am_i in 1 2; do
++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } \
++ && test -f conftest2.$ac_objext; then
++ : OK
++ else
++ am_cv_prog_cc_c_o=no
++ break
++ fi
++ done
++ rm -f core conftest*
++ unset am_i
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
++$as_echo "$am_cv_prog_cc_c_o" >&6; }
++if test "$am_cv_prog_cc_c_o" != yes; then
++ # Losing compiler, so override with the script.
++ # FIXME: It is wrong to rewrite CC.
++ # But if we don't then we get into trouble of one sort or another.
++ # A longer-term fix would be to have automake use am__CC in this case,
++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
++ CC="$am_aux_dir/compile $CC"
++fi
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
+ DEPDIR="${am__leading_dot}deps"
+
+ ac_config_commands="$ac_config_commands depfiles"
+@@ -21890,7 +22042,6 @@ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+-U=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+@@ -23208,7 +23359,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+- # Autoconf 2.62 quotes --file arguments for eval, but not when files
++ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+@@ -23259,7 +23410,7 @@ $as_echo X"$mf" |
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+- test -z "am__include" && continue
++ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+diff --git a/doc/Makefile.in b/doc/Makefile.in
+index 84e07d1..2d82c75 100644
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -1,7 +1,7 @@
+-# Makefile.in generated by automake 1.12.2 from Makefile.am.
++# Makefile.in generated by automake 1.15 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
++# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -16,23 +16,61 @@
+
+
+ VPATH = @srcdir@
+-am__make_dryrun = \
+- { \
+- am__dry=no; \
++am__is_gnu_make = { \
++ if test -z '$(MAKELEVEL)'; then \
++ false; \
++ elif test -n '$(MAKE_HOST)'; then \
++ true; \
++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
++ true; \
++ else \
++ false; \
++ fi; \
++}
++am__make_running_with_option = \
++ case $${target_option-} in \
++ ?) ;; \
++ *) echo "am__make_running_with_option: internal error: invalid" \
++ "target option '$${target_option-}' specified" >&2; \
++ exit 1;; \
++ esac; \
++ has_opt=no; \
++ sane_makeflags=$$MAKEFLAGS; \
++ if $(am__is_gnu_make); then \
++ sane_makeflags=$$MFLAGS; \
++ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+- *) \
+- for am__flg in $$MAKEFLAGS; do \
+- case $$am__flg in \
+- *=*|--*) ;; \
+- *n*) am__dry=yes; break;; \
+- esac; \
+- done;; \
++ bs=\\; \
++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+- test $$am__dry = yes; \
+- }
++ fi; \
++ skip_next=no; \
++ strip_trailopt () \
++ { \
++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
++ }; \
++ for flg in $$sane_makeflags; do \
++ test $$skip_next = yes && { skip_next=no; continue; }; \
++ case $$flg in \
++ *=*|--*) continue;; \
++ -*I) strip_trailopt 'I'; skip_next=yes;; \
++ -*I?*) strip_trailopt 'I';; \
++ -*O) strip_trailopt 'O'; skip_next=yes;; \
++ -*O?*) strip_trailopt 'O';; \
++ -*l) strip_trailopt 'l'; skip_next=yes;; \
++ -*l?*) strip_trailopt 'l';; \
++ -[dEDm]) skip_next=yes;; \
++ -[JT]) skip_next=yes;; \
++ esac; \
++ case $$flg in \
++ *$$target_option*) has_opt=yes; break;; \
++ esac; \
++ done; \
++ test $$has_opt = yes
++am__make_dryrun = (target_option=n; $(am__make_running_with_option))
++am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+@@ -51,11 +89,6 @@ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+ subdir = doc
+-DIST_COMMON = $(dist_man_MANS) $(dist_noinst_DATA) \
+- $(dist_noinst_SCRIPTS) $(sed_TEXINFOS) $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(srcdir)/stamp-vti \
+- $(srcdir)/version.texi $(top_srcdir)/build-aux/mdate-sh \
+- $(top_srcdir)/build-aux/texinfo.tex
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+@@ -115,13 +148,56 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
++DIST_COMMON = $(srcdir)/Makefile.am $(dist_noinst_SCRIPTS) \
++ $(srcdir)/version.texi $(srcdir)/stamp-vti $(dist_noinst_DATA) \
++ $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ SCRIPTS = $(dist_noinst_SCRIPTS)
++AM_V_P = $(am__v_P_@AM_V@)
++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
++am__v_P_0 = false
++am__v_P_1 = :
++AM_V_GEN = $(am__v_GEN_@AM_V@)
++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
++am__v_GEN_0 = @echo " GEN " $@;
++am__v_GEN_1 =
++AM_V_at = $(am__v_at_@AM_V@)
++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
++am__v_at_0 = @
++am__v_at_1 =
+ SOURCES =
+ DIST_SOURCES =
++AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
++am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
++am__v_DVIPS_0 = @echo " DVIPS " $@;
++am__v_DVIPS_1 =
++AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
++am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
++am__v_MAKEINFO_0 = @echo " MAKEINFO" $@;
++am__v_MAKEINFO_1 =
++AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
++am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
++am__v_INFOHTML_0 = @echo " INFOHTML" $@;
++am__v_INFOHTML_1 =
++AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
++am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
++am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@;
++am__v_TEXI2DVI_1 =
++AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
++am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
++am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@;
++am__v_TEXI2PDF_1 =
++AM_V_texinfo = $(am__v_texinfo_@AM_V@)
++am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
++am__v_texinfo_0 = -q
++am__v_texinfo_1 =
++AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
++am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
++am__v_texidevnull_0 = > /dev/null
++am__v_texidevnull_1 =
+ INFO_DEPS = $(srcdir)/sed.info
+ TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+ am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+@@ -170,12 +246,17 @@ man1dir = $(mandir)/man1
+ NROFF = nroff
+ MANS = $(dist_man_MANS)
+ DATA = $(dist_noinst_DATA)
++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
++am__DIST_COMMON = $(dist_man_MANS) $(sed_TEXINFOS) \
++ $(srcdir)/Makefile.in $(top_srcdir)/build-aux/mdate-sh \
++ $(top_srcdir)/build-aux/texinfo.tex
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ pkglibexecdir = @pkglibexecdir@
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ ALLOCA_H = @ALLOCA_H@
+ AMTAR = @AMTAR@
++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ AR = @AR@
+ ARFLAGS = @ARFLAGS@
+@@ -972,10 +1053,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ exit 1;; \
+ esac; \
+ done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \
++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+- $(AUTOMAKE) --gnits doc/Makefile
+-.PRECIOUS: Makefile
++ $(AUTOMAKE) --gnu doc/Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+@@ -995,7 +1075,7 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__aclocal_m4_deps):
+
+ .texi.info:
+- restore=: && backupdir="$(am__leading_dot)am$$$$" && \
++ $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+@@ -1017,27 +1097,25 @@ $(am__aclocal_m4_deps):
+ rm -rf $$backupdir; exit $$rc
+
+ .texi.dvi:
+- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+- $(TEXI2DVI) --clean $<
++ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
++ $<
+
+ .texi.pdf:
+- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+- $(TEXI2PDF) --clean $<
++ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
++ $<
+
+ .texi.html:
+- rm -rf $(@:.html=.htp)
+- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
++ $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
++ $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+- rm -rf $@; \
+- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+- mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
++ rm -rf $@ && mv $(@:.html=.htp) $@; \
+ else \
+- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+- rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+- exit 1; \
++ rm -rf $(@:.html=.htp); exit 1; \
+ fi
+ $(srcdir)/sed.info: sed.texi $(srcdir)/version.texi $(sed_TEXINFOS)
+ sed.dvi: sed.texi $(srcdir)/version.texi $(sed_TEXINFOS)
+@@ -1050,21 +1128,22 @@ $(srcdir)/stamp-vti: sed.texi $(top_srcdir)/configure
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+- echo "@set VERSION $(VERSION)") > vti.tmp
+- @cmp -s vti.tmp $(srcdir)/version.texi \
+- || (echo "Updating $(srcdir)/version.texi"; \
+- cp vti.tmp $(srcdir)/version.texi)
+- -@rm -f vti.tmp
++ echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \
++ (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \
++ || (echo "Updating $(srcdir)/version.texi" && \
++ cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \
++ mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \
++ rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$
+ @cp $(srcdir)/version.texi $@
+
+ mostlyclean-vti:
+- -rm -f vti.tmp
++ -rm -f vti.tmp* $(srcdir)/version.texi.tmp*
+
+ maintainer-clean-vti:
+ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+ .dvi.ps:
+- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+- $(DVIPS) -o $@ $<
++ $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ $(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+ uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+@@ -1143,8 +1222,7 @@ dist-info: $(INFO_DEPS)
+ done
+
+ mostlyclean-aminfo:
+- -rm -rf sed.aux sed.cp sed.cps sed.fn sed.fns sed.ky sed.log sed.op sed.pg \
+- sed.tmp sed.toc sed.tp sed.vr sed.vrs
++ -rm -rf sed.t2d sed.t2p
+
+ clean-aminfo:
+ -test -z "sed.dvi sed.pdf sed.ps sed.html" \
+@@ -1199,29 +1277,14 @@ uninstall-man1:
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+-tags: TAGS
+-TAGS:
++tags TAGS:
+
+-ctags: CTAGS
+-CTAGS:
++ctags CTAGS:
+
+ cscope cscopelist:
+
+
+ distdir: $(DISTFILES)
+- @list='$(MANS)'; if test -n "$$list"; then \
+- list=`for p in $$list; do \
+- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+- if test -n "$$list" && \
+- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+- echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
+- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
+- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+- echo " typically 'make maintainer-clean' will remove them" >&2; \
+- exit 1; \
+- else :; fi; \
+- else :; fi
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+@@ -1455,19 +1518,21 @@ uninstall-man: uninstall-man1
+ .MAKE: install-am install-strip
+
+ .PHONY: all all-am check check-am clean clean-aminfo clean-generic \
+- dist-hook dist-info distclean distclean-generic distdir dvi \
+- dvi-am html html-am info info-am install install-am \
+- install-data install-data-am install-dvi install-dvi-am \
+- install-exec install-exec-am install-html install-html-am \
+- install-info install-info-am install-man install-man1 \
+- install-pdf install-pdf-am install-ps install-ps-am \
+- install-strip installcheck installcheck-am installdirs \
+- maintainer-clean maintainer-clean-aminfo \
++ cscopelist-am ctags-am dist-hook dist-info distclean \
++ distclean-generic distdir dvi dvi-am html html-am info info-am \
++ install install-am install-data install-data-am install-dvi \
++ install-dvi-am install-exec install-exec-am install-html \
++ install-html-am install-info install-info-am install-man \
++ install-man1 install-pdf install-pdf-am install-ps \
++ install-ps-am install-strip installcheck installcheck-am \
++ installdirs maintainer-clean maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti mostlyclean \
+ mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
+- pdf-am ps ps-am uninstall uninstall-am uninstall-dvi-am \
+- uninstall-html-am uninstall-info-am uninstall-man \
+- uninstall-man1 uninstall-pdf-am uninstall-ps-am
++ pdf-am ps ps-am tags-am uninstall uninstall-am \
++ uninstall-dvi-am uninstall-html-am uninstall-info-am \
++ uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am
++
++.PRECIOUS: Makefile
+
+
+ # To produce better quality output, in the example sed
+diff --git a/doc/sed.1 b/doc/sed.1
+index 440287a..5ab79af 100644
+--- a/doc/sed.1
++++ b/doc/sed.1
+@@ -1,5 +1,5 @@
+ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
+-.TH SED "1" "December 2012" "sed 4.2.2" "User Commands"
++.TH SED "1" "May 2016" "sed 4.2.2" "User Commands"
+ .SH NAME
+ sed \- stream editor for filtering and transforming text
+ .SH SYNOPSIS
+diff --git a/doc/sed.info b/doc/sed.info
+index 38235da..1553e3e 100644
+--- a/doc/sed.info
++++ b/doc/sed.info
+@@ -1,13 +1,6 @@
+-This is ../../doc/sed.info, produced by makeinfo version 4.13 from
+-../../doc//config.texi.
++This is sed.info, produced by makeinfo version 6.0 from sed.texi.
+
+-INFO-DIR-SECTION Text creation and manipulation
+-START-INFO-DIR-ENTRY
+-* sed: (sed). Stream EDitor.
+-
+-END-INFO-DIR-ENTRY
+-
+- This file documents version 4.2.2 of GNU `sed', a stream editor.
++This file documents version 4.2.2 of GNU 'sed', a stream editor.
+
+ Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
+@@ -16,13 +9,18 @@ Foundation, Inc.
+ Documentation License as published by the Free Software Foundation;
+ either version 1.1, or (at your option) any later version.
+
+- You should have received a copy of the GNU Free Documentation
+-License along with GNU `sed'; see the file `COPYING.DOC'. If not,
+-write to the Free Software Foundation, 59 Temple Place - Suite 330,
+-Boston, MA 02110-1301, USA.
++ You should have received a copy of the GNU Free Documentation License
++along with GNU 'sed'; see the file 'COPYING.DOC'. If not, write to the
++Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++02110-1301, USA.
+
+ There are no Cover Texts and no Invariant Sections; this text, along
+ with its equivalent in the printed manual, constitutes the Title Page.
++INFO-DIR-SECTION Text creation and manipulation
++START-INFO-DIR-ENTRY
++* sed: (sed). Stream EDitor.
++
++END-INFO-DIR-ENTRY
+
+ 
+ File: sed.info, Node: Top, Next: Introduction, Up: (dir)
+@@ -30,7 +28,7 @@ File: sed.info, Node: Top, Next: Introduction, Up: (dir)
+ sed, a stream editor
+ ********************
+
+-This file documents version 4.2.2 of GNU `sed', a stream editor.
++This file documents version 4.2.2 of GNU 'sed', a stream editor.
+
+ Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
+@@ -39,10 +37,10 @@ Foundation, Inc.
+ Documentation License as published by the Free Software Foundation;
+ either version 1.1, or (at your option) any later version.
+
+- You should have received a copy of the GNU Free Documentation
+-License along with GNU `sed'; see the file `COPYING.DOC'. If not,
+-write to the Free Software Foundation, 59 Temple Place - Suite 330,
+-Boston, MA 02110-1301, USA.
++ You should have received a copy of the GNU Free Documentation License
++along with GNU 'sed'; see the file 'COPYING.DOC'. If not, write to the
++Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++02110-1301, USA.
+
+ There are no Cover Texts and no Invariant Sections; this text, along
+ with its equivalent in the printed manual, constitutes the Title Page.
+@@ -51,29 +49,29 @@ with its equivalent in the printed manual, constitutes the Title Page.
+
+ * Introduction:: Introduction
+ * Invoking sed:: Invocation
+-* sed Programs:: `sed' programs
++* sed Programs:: 'sed' programs
+ * Examples:: Some sample scripts
+-* Limitations:: Limitations and (non-)limitations of GNU `sed'
+-* Other Resources:: Other resources for learning about `sed'
++* Limitations:: Limitations and (non-)limitations of GNU 'sed'
++* Other Resources:: Other resources for learning about 'sed'
+ * Reporting Bugs:: Reporting bugs
+
+-* Extended regexps:: `egrep'-style regular expressions
++* Extended regexps:: 'egrep'-style regular expressions
+
+ * Concept Index:: A menu with all the topics in this manual.
+-* Command and Option Index:: A menu with all `sed' commands and
++* Command and Option Index:: A menu with all 'sed' commands and
+ command-line options.
+
+---- The detailed node listing ---
++-- The detailed node listing --
+
+ sed Programs:
+-* Execution Cycle:: How `sed' works
+-* Addresses:: Selecting lines with `sed'
++* Execution Cycle:: How 'sed' works
++* Addresses:: Selecting lines with 'sed'
+ * Regular Expressions:: Overview of regular expression syntax
+ * Common Commands:: Often used commands
+-* The "s" Command:: `sed''s Swiss Army Knife
++* The "s" Command:: 'sed''s Swiss Army Knife
+ * Other Commands:: Less frequently used commands
+-* Programming Commands:: Commands for `sed' gurus
+-* Extended Commands:: Commands specific of GNU `sed'
++* Programming Commands:: Commands for 'sed' gurus
++* Extended Commands:: Commands specific of GNU 'sed'
+ * Escapes:: Specifying special characters
+
+ Examples:
+@@ -95,19 +93,21 @@ Examples:
+ * uniq -u:: Remove all duplicated lines
+ * cat -s:: Squeezing blank lines
+
++
++
+ 
+ File: sed.info, Node: Introduction, Next: Invoking sed, Prev: Top, Up: Top
+
+ 1 Introduction
+ **************
+
+-`sed' is a stream editor. A stream editor is used to perform basic text
++'sed' is a stream editor. A stream editor is used to perform basic text
+ transformations on an input stream (a file or input from a pipeline).
+ While in some ways similar to an editor which permits scripted edits
+-(such as `ed'), `sed' works by making only one pass over the input(s),
+-and is consequently more efficient. But it is `sed''s ability to
+-filter text in a pipeline which particularly distinguishes it from
+-other types of editors.
++(such as 'ed'), 'sed' works by making only one pass over the input(s),
++and is consequently more efficient. But it is 'sed''s ability to filter
++text in a pipeline which particularly distinguishes it from other types
++of editors.
+
+ 
+ File: sed.info, Node: Invoking sed, Next: sed Programs, Prev: Introduction, Up: Top
+@@ -115,340 +115,338 @@ File: sed.info, Node: Invoking sed, Next: sed Programs, Prev: Introduction,
+ 2 Invocation
+ ************
+
+-Normally `sed' is invoked like this:
++Normally 'sed' is invoked like this:
+
+ sed SCRIPT INPUTFILE...
+
+- The full format for invoking `sed' is:
++ The full format for invoking 'sed' is:
+
+ sed OPTIONS... [SCRIPT] [INPUTFILE...]
+
+- If you do not specify INPUTFILE, or if INPUTFILE is `-', `sed'
++ If you do not specify INPUTFILE, or if INPUTFILE is '-', 'sed'
+ filters the contents of the standard input. The SCRIPT is actually the
+-first non-option parameter, which `sed' specially considers a script
+-and not an input file if (and only if) none of the other OPTIONS
+-specifies a script to be executed, that is if neither of the `-e' and
+-`-f' options is specified.
++first non-option parameter, which 'sed' specially considers a script and
++not an input file if (and only if) none of the other OPTIONS specifies a
++script to be executed, that is if neither of the '-e' and '-f' options
++is specified.
+
+- `sed' may be invoked with the following command-line options:
++ 'sed' may be invoked with the following command-line options:
+
+-`--version'
+- Print out the version of `sed' that is being run and a copyright
++'--version'
++ Print out the version of 'sed' that is being run and a copyright
+ notice, then exit.
+
+-`--help'
++'--help'
+ Print a usage message briefly summarizing these command-line
+ options and the bug-reporting address, then exit.
+
+-`-n'
+-`--quiet'
+-`--silent'
+- By default, `sed' prints out the pattern space at the end of each
+- cycle through the script (*note How `sed' works: Execution Cycle.).
+- These options disable this automatic printing, and `sed' only
+- produces output when explicitly told to via the `p' command.
++'-n'
++'--quiet'
++'--silent'
++ By default, 'sed' prints out the pattern space at the end of each
++ cycle through the script (*note How 'sed' works: Execution Cycle.).
++ These options disable this automatic printing, and 'sed' only
++ produces output when explicitly told to via the 'p' command.
+
+-`-e SCRIPT'
+-`--expression=SCRIPT'
++'-e SCRIPT'
++'--expression=SCRIPT'
+ Add the commands in SCRIPT to the set of commands to be run while
+ processing the input.
+
+-`-f SCRIPT-FILE'
+-`--file=SCRIPT-FILE'
++'-f SCRIPT-FILE'
++'--file=SCRIPT-FILE'
+ Add the commands contained in the file SCRIPT-FILE to the set of
+ commands to be run while processing the input.
+
+-`-i[SUFFIX]'
+-`--in-place[=SUFFIX]'
++'-i[SUFFIX]'
++'--in-place[=SUFFIX]'
+ This option specifies that files are to be edited in-place. GNU
+- `sed' does this by creating a temporary file and sending output to
++ 'sed' does this by creating a temporary file and sending output to
+ this file rather than to the standard output.(1).
+
+- This option implies `-s'.
++ This option implies '-s'.
+
+ When the end of the file is reached, the temporary file is renamed
+- to the output file's original name. The extension, if supplied,
+- is used to modify the name of the old file before renaming the
++ to the output file's original name. The extension, if supplied, is
++ used to modify the name of the old file before renaming the
+ temporary file, thereby making a backup copy(2)).
+
+- This rule is followed: if the extension doesn't contain a `*',
+- then it is appended to the end of the current filename as a
+- suffix; if the extension does contain one or more `*' characters,
+- then _each_ asterisk is replaced with the current filename. This
+- allows you to add a prefix to the backup file, instead of (or in
+- addition to) a suffix, or even to place backup copies of the
+- original files into another directory (provided the directory
+- already exists).
++ This rule is followed: if the extension doesn't contain a '*', then
++ it is appended to the end of the current filename as a suffix; if
++ the extension does contain one or more '*' characters, then _each_
++ asterisk is replaced with the current filename. This allows you to
++ add a prefix to the backup file, instead of (or in addition to) a
++ suffix, or even to place backup copies of the original files into
++ another directory (provided the directory already exists).
+
+ If no extension is supplied, the original file is overwritten
+ without making a backup.
+
+-`-l N'
+-`--line-length=N'
+- Specify the default line-wrap length for the `l' command. A
+- length of 0 (zero) means to never wrap long lines. If not
+- specified, it is taken to be 70.
++'-l N'
++'--line-length=N'
++ Specify the default line-wrap length for the 'l' command. A length
++ of 0 (zero) means to never wrap long lines. If not specified, it
++ is taken to be 70.
+
+-`--posix'
+- GNU `sed' includes several extensions to POSIX sed. In order to
++'--posix'
++ GNU 'sed' includes several extensions to POSIX sed. In order to
+ simplify writing portable scripts, this option disables all the
+ extensions that this manual documents, including additional
+- commands. Most of the extensions accept `sed' programs that are
+- outside the syntax mandated by POSIX, but some of them (such as
+- the behavior of the `N' command described in *note Reporting
+- Bugs::) actually violate the standard. If you want to disable
+- only the latter kind of extension, you can set the
+- `POSIXLY_CORRECT' variable to a non-empty value.
+-
+-`-b'
+-`--binary'
++ commands. Most of the extensions accept 'sed' programs that are
++ outside the syntax mandated by POSIX, but some of them (such as the
++ behavior of the 'N' command described in *note Reporting Bugs::)
++ actually violate the standard. If you want to disable only the
++ latter kind of extension, you can set the 'POSIXLY_CORRECT'
++ variable to a non-empty value.
++
++'-b'
++'--binary'
+ This option is available on every platform, but is only effective
+ where the operating system makes a distinction between text files
+ and binary files. When such a distinction is made--as is the case
+ for MS-DOS, Windows, Cygwin--text files are composed of lines
+ separated by a carriage return _and_ a line feed character, and
+- `sed' does not see the ending CR. When this option is specified,
+- `sed' will open input files in binary mode, thus not requesting
++ 'sed' does not see the ending CR. When this option is specified,
++ 'sed' will open input files in binary mode, thus not requesting
+ this special processing and considering lines to end at a line
+ feed.
+
+-`--follow-symlinks'
++'--follow-symlinks'
+ This option is available only on platforms that support symbolic
+- links and has an effect only if option `-i' is specified. In this
++ links and has an effect only if option '-i' is specified. In this
+ case, if the file that is specified on the command line is a
+- symbolic link, `sed' will follow the link and edit the ultimate
++ symbolic link, 'sed' will follow the link and edit the ultimate
+ destination of the link. The default behavior is to break the
+ symbolic link, so that the link destination will not be modified.
+
+-`-r'
+-`--regexp-extended'
++'-r'
++'--regexp-extended'
+ Use extended regular expressions rather than basic regular
+- expressions. Extended regexps are those that `egrep' accepts;
+- they can be clearer because they usually have less backslashes,
+- but are a GNU extension and hence scripts that use them are not
+- portable. *Note Extended regular expressions: Extended regexps.
+-
+-`-s'
+-`--separate'
+- By default, `sed' will consider the files specified on the command
+- line as a single continuous long stream. This GNU `sed' extension
+- allows the user to consider them as separate files: range
+- addresses (such as `/abc/,/def/') are not allowed to span several
+- files, line numbers are relative to the start of each file, `$'
+- refers to the last line of each file, and files invoked from the
+- `R' commands are rewound at the start of each file.
+-
+-`-u'
+-`--unbuffered'
++ expressions. Extended regexps are those that 'egrep' accepts; they
++ can be clearer because they usually have less backslashes, but are
++ a GNU extension and hence scripts that use them are not portable.
++ *Note Extended regular expressions: Extended regexps.
++
++'-s'
++'--separate'
++ By default, 'sed' will consider the files specified on the command
++ line as a single continuous long stream. This GNU 'sed' extension
++ allows the user to consider them as separate files: range addresses
++ (such as '/abc/,/def/') are not allowed to span several files, line
++ numbers are relative to the start of each file, '$' refers to the
++ last line of each file, and files invoked from the 'R' commands are
++ rewound at the start of each file.
++
++'-u'
++'--unbuffered'
+ Buffer both input and output as minimally as practical. (This is
+- particularly useful if the input is coming from the likes of `tail
++ particularly useful if the input is coming from the likes of 'tail
+ -f', and you wish to see the transformed output as soon as
+ possible.)
+
+-`-z'
+-`--null-data'
+-`--zero-terminated'
++'-z'
++'--null-data'
++'--zero-terminated'
+ Treat the input as a set of lines, each terminated by a zero byte
+- (the ASCII `NUL' character) instead of a newline. This option can
+- be used with commands like `sort -z' and `find -print0' to process
++ (the ASCII 'NUL' character) instead of a newline. This option can
++ be used with commands like 'sort -z' and 'find -print0' to process
+ arbitrary file names.
+
+- If no `-e', `-f', `--expression', or `--file' options are given on
+-the command-line, then the first non-option argument on the command
+-line is taken to be the SCRIPT to be executed.
++ If no '-e', '-f', '--expression', or '--file' options are given on
++the command-line, then the first non-option argument on the command line
++is taken to be the SCRIPT to be executed.
+
+ If any command-line parameters remain after processing the above,
+ these parameters are interpreted as the names of input files to be
+-processed. A file name of `-' refers to the standard input stream.
+-The standard input will be processed if no file names are specified.
++processed. A file name of '-' refers to the standard input stream. The
++standard input will be processed if no file names are specified.
+
+ ---------- Footnotes ----------
+
+- (1) This applies to commands such as `=', `a', `c', `i', `l', `p'.
+-You can still write to the standard output by using the `w' or `W'
+-commands together with the `/dev/stdout' special file
++ (1) This applies to commands such as '=', 'a', 'c', 'i', 'l', 'p'.
++You can still write to the standard output by using the 'w' or 'W'
++commands together with the '/dev/stdout' special file
+
+- (2) Note that GNU `sed' creates the backup file whether or not any
++ (2) Note that GNU 'sed' creates the backup file whether or not any
+ output is actually changed.
+
+ 
+ File: sed.info, Node: sed Programs, Next: Examples, Prev: Invoking sed, Up: Top
+
+-3 `sed' Programs
++3 'sed' Programs
+ ****************
+
+-A `sed' program consists of one or more `sed' commands, passed in by
+-one or more of the `-e', `-f', `--expression', and `--file' options, or
+-the first non-option argument if zero of these options are used. This
+-document will refer to "the" `sed' script; this is understood to mean
++A 'sed' program consists of one or more 'sed' commands, passed in by one
++or more of the '-e', '-f', '--expression', and '--file' options, or the
++first non-option argument if zero of these options are used. This
++document will refer to "the" 'sed' script; this is understood to mean
+ the in-order catenation of all of the SCRIPTs and SCRIPT-FILEs passed
+ in.
+
+ Commands within a SCRIPT or SCRIPT-FILE can be separated by
+-semicolons (`;') or newlines (ASCII 10). Some commands, due to their
++semicolons (';') or newlines (ASCII 10). Some commands, due to their
+ syntax, cannot be followed by semicolons working as command separators
+-and thus should be terminated with newlines or be placed at the end of
+-a SCRIPT or SCRIPT-FILE. Commands can also be preceded with optional
++and thus should be terminated with newlines or be placed at the end of a
++SCRIPT or SCRIPT-FILE. Commands can also be preceded with optional
+ non-significant whitespace characters.
+
+- Each `sed' command consists of an optional address or address range,
++ Each 'sed' command consists of an optional address or address range,
+ followed by a one-character command name and any additional
+ command-specific code.
+
+ * Menu:
+
+-* Execution Cycle:: How `sed' works
+-* Addresses:: Selecting lines with `sed'
++* Execution Cycle:: How 'sed' works
++* Addresses:: Selecting lines with 'sed'
+ * Regular Expressions:: Overview of regular expression syntax
+ * Common Commands:: Often used commands
+-* The "s" Command:: `sed''s Swiss Army Knife
++* The "s" Command:: 'sed''s Swiss Army Knife
+ * Other Commands:: Less frequently used commands
+-* Programming Commands:: Commands for `sed' gurus
+-* Extended Commands:: Commands specific of GNU `sed'
++* Programming Commands:: Commands for 'sed' gurus
++* Extended Commands:: Commands specific of GNU 'sed'
+ * Escapes:: Specifying special characters
+
+ 
+ File: sed.info, Node: Execution Cycle, Next: Addresses, Up: sed Programs
+
+-3.1 How `sed' Works
++3.1 How 'sed' Works
+ ===================
+
+-`sed' maintains two data buffers: the active _pattern_ space, and the
+-auxiliary _hold_ space. Both are initially empty.
++'sed' maintains two data buffers: the active _pattern_ space, and the
++auxiliary _hold_ space. Both are initially empty.
+
+- `sed' operates by performing the following cycle on each line of
+-input: first, `sed' reads one line from the input stream, removes any
+-trailing newline, and places it in the pattern space. Then commands
+-are executed; each command can have an address associated to it:
+-addresses are a kind of condition code, and a command is only executed
+-if the condition is verified before the command is to be executed.
++ 'sed' operates by performing the following cycle on each line of
++input: first, 'sed' reads one line from the input stream, removes any
++trailing newline, and places it in the pattern space. Then commands are
++executed; each command can have an address associated to it: addresses
++are a kind of condition code, and a command is only executed if the
++condition is verified before the command is to be executed.
+
+- When the end of the script is reached, unless the `-n' option is in
+-use, the contents of pattern space are printed out to the output
+-stream, adding back the trailing newline if it was removed.(1) Then the
+-next cycle starts for the next input line.
++ When the end of the script is reached, unless the '-n' option is in
++use, the contents of pattern space are printed out to the output stream,
++adding back the trailing newline if it was removed.(1) Then the next
++cycle starts for the next input line.
+
+- Unless special commands (like `D') are used, the pattern space is
+-deleted between two cycles. The hold space, on the other hand, keeps
+-its data between cycles (see commands `h', `H', `x', `g', `G' to move
++ Unless special commands (like 'D') are used, the pattern space is
++deleted between two cycles. The hold space, on the other hand, keeps
++its data between cycles (see commands 'h', 'H', 'x', 'g', 'G' to move
+ data between both buffers).
+
+ ---------- Footnotes ----------
+
+- (1) Actually, if `sed' prints a line without the terminating
+-newline, it will nevertheless print the missing newline as soon as more
+-text is sent to the same output stream, which gives the "least expected
+-surprise" even though it does not make commands like `sed -n p' exactly
+-identical to `cat'.
++ (1) Actually, if 'sed' prints a line without the terminating newline,
++it will nevertheless print the missing newline as soon as more text is
++sent to the same output stream, which gives the "least expected
++surprise" even though it does not make commands like 'sed -n p' exactly
++identical to 'cat'.
+
+ 
+ File: sed.info, Node: Addresses, Next: Regular Expressions, Prev: Execution Cycle, Up: sed Programs
+
+-3.2 Selecting lines with `sed'
++3.2 Selecting lines with 'sed'
+ ==============================
+
+-Addresses in a `sed' script can be in any of the following forms:
+-`NUMBER'
++Addresses in a 'sed' script can be in any of the following forms:
++'NUMBER'
+ Specifying a line number will match only that line in the input.
+- (Note that `sed' counts lines continuously across all input files
+- unless `-i' or `-s' options are specified.)
++ (Note that 'sed' counts lines continuously across all input files
++ unless '-i' or '-s' options are specified.)
+
+-`FIRST~STEP'
++'FIRST~STEP'
+ This GNU extension matches every STEPth line starting with line
+ FIRST. In particular, lines will be selected when there exists a
+ non-negative N such that the current line-number equals FIRST + (N
+ * STEP). Thus, to select the odd-numbered lines, one would use
+- `1~2'; to pick every third line starting with the second, `2~3'
++ '1~2'; to pick every third line starting with the second, '2~3'
+ would be used; to pick every fifth line starting with the tenth,
+- use `10~5'; and `50~0' is just an obscure way of saying `50'.
++ use '10~5'; and '50~0' is just an obscure way of saying '50'.
+
+-`$'
++'$'
+ This address matches the last line of the last file of input, or
+- the last line of each file when the `-i' or `-s' options are
++ the last line of each file when the '-i' or '-s' options are
+ specified.
+
+-`/REGEXP/'
++'/REGEXP/'
+ This will select any line which matches the regular expression
+- REGEXP. If REGEXP itself includes any `/' characters, each must
+- be escaped by a backslash (`\').
++ REGEXP. If REGEXP itself includes any '/' characters, each must be
++ escaped by a backslash ('\').
+
+- The empty regular expression `//' repeats the last regular
++ The empty regular expression '//' repeats the last regular
+ expression match (the same holds if the empty regular expression is
+- passed to the `s' command). Note that modifiers to regular
++ passed to the 's' command). Note that modifiers to regular
+ expressions are evaluated when the regular expression is compiled,
+ thus it is invalid to specify them together with the empty regular
+ expression.
+
+-`\%REGEXP%'
+- (The `%' may be replaced by any other single character.)
++'\%REGEXP%'
++ (The '%' may be replaced by any other single character.)
+
+ This also matches the regular expression REGEXP, but allows one to
+- use a different delimiter than `/'. This is particularly useful
+- if the REGEXP itself contains a lot of slashes, since it avoids
+- the tedious escaping of every `/'. If REGEXP itself includes any
+- delimiter characters, each must be escaped by a backslash (`\').
+-
+-`/REGEXP/I'
+-`\%REGEXP%I'
+- The `I' modifier to regular-expression matching is a GNU extension
++ use a different delimiter than '/'. This is particularly useful if
++ the REGEXP itself contains a lot of slashes, since it avoids the
++ tedious escaping of every '/'. If REGEXP itself includes any
++ delimiter characters, each must be escaped by a backslash ('\').
++
++'/REGEXP/I'
++'\%REGEXP%I'
++ The 'I' modifier to regular-expression matching is a GNU extension
+ which causes the REGEXP to be matched in a case-insensitive manner.
+
+-`/REGEXP/M'
+-`\%REGEXP%M'
+- The `M' modifier to regular-expression matching is a GNU `sed'
+- extension which directs GNU `sed' to match the regular expression
+- in `multi-line' mode. The modifier causes `^' and `$' to match
++'/REGEXP/M'
++'\%REGEXP%M'
++ The 'M' modifier to regular-expression matching is a GNU 'sed'
++ extension which directs GNU 'sed' to match the regular expression
++ in 'multi-line' mode. The modifier causes '^' and '$' to match
+ respectively (in addition to the normal behavior) the empty string
+ after a newline, and the empty string before a newline. There are
+- special character sequences (`\`' and `\'') which always match the
++ special character sequences ('\`' and '\'') which always match the
+ beginning or the end of the buffer. In addition, the period
+ character does not match a new-line character in multi-line mode.
+
+-
+- If no addresses are given, then all lines are matched; if one
+-address is given, then only lines matching that address are matched.
++ If no addresses are given, then all lines are matched; if one address
++is given, then only lines matching that address are matched.
+
+ An address range can be specified by specifying two addresses
+-separated by a comma (`,'). An address range matches lines starting
++separated by a comma (','). An address range matches lines starting
+ from where the first address matches, and continues until the second
+ address matches (inclusively).
+
+- If the second address is a REGEXP, then checking for the ending
+-match will start with the line _following_ the line which matched the
+-first address: a range will always span at least two lines (except of
+-course if the input stream ends).
++ If the second address is a REGEXP, then checking for the ending match
++will start with the line _following_ the line which matched the first
++address: a range will always span at least two lines (except of course
++if the input stream ends).
+
+ If the second address is a NUMBER less than (or equal to) the line
+ matching the first address, then only the one line is matched.
+
+- GNU `sed' also supports some special two-address forms; all these
+-are GNU extensions:
+-`0,/REGEXP/'
+- A line number of `0' can be used in an address specification like
+- `0,/REGEXP/' so that `sed' will try to match REGEXP in the first
+- input line too. In other words, `0,/REGEXP/' is similar to
+- `1,/REGEXP/', except that if ADDR2 matches the very first line of
+- input the `0,/REGEXP/' form will consider it to end the range,
+- whereas the `1,/REGEXP/' form will match the beginning of its
+- range and hence make the range span up to the _second_ occurrence
+- of the regular expression.
+-
+- Note that this is the only place where the `0' address makes
+- sense; there is no 0-th line and commands which are given the `0'
+- address in any other way will give an error.
+-
+-`ADDR1,+N'
++ GNU 'sed' also supports some special two-address forms; all these are
++GNU extensions:
++'0,/REGEXP/'
++ A line number of '0' can be used in an address specification like
++ '0,/REGEXP/' so that 'sed' will try to match REGEXP in the first
++ input line too. In other words, '0,/REGEXP/' is similar to
++ '1,/REGEXP/', except that if ADDR2 matches the very first line of
++ input the '0,/REGEXP/' form will consider it to end the range,
++ whereas the '1,/REGEXP/' form will match the beginning of its range
++ and hence make the range span up to the _second_ occurrence of the
++ regular expression.
++
++ Note that this is the only place where the '0' address makes sense;
++ there is no 0-th line and commands which are given the '0' address
++ in any other way will give an error.
++
++'ADDR1,+N'
+ Matches ADDR1 and the N lines following ADDR1.
+
+-`ADDR1,~N'
++'ADDR1,~N'
+ Matches ADDR1 and the lines following ADDR1 until the next line
+ whose input line number is a multiple of N.
+
+- Appending the `!' character to the end of an address specification
+-negates the sense of the match. That is, if the `!' character follows
++ Appending the '!' character to the end of an address specification
++negates the sense of the match. That is, if the '!' character follows
+ an address range, then only lines which do _not_ match the address range
+-will be selected. This also works for singleton addresses, and,
+-perhaps perversely, for the null address.
++will be selected. This also works for singleton addresses, and, perhaps
++perversely, for the null address.
+
+ 
+ File: sed.info, Node: Regular Expressions, Next: Common Commands, Prev: Addresses, Up: sed Programs
+@@ -456,10 +454,10 @@ File: sed.info, Node: Regular Expressions, Next: Common Commands, Prev: Addre
+ 3.3 Overview of Regular Expression Syntax
+ =========================================
+
+-To know how to use `sed', people should understand regular expressions
+-("regexp" for short). A regular expression is a pattern that is
+-matched against a subject string from left to right. Most characters
+-are "ordinary": they stand for themselves in a pattern, and match the
++To know how to use 'sed', people should understand regular expressions
++("regexp" for short). A regular expression is a pattern that is matched
++against a subject string from left to right. Most characters are
++"ordinary": they stand for themselves in a pattern, and match the
+ corresponding characters in the subject. As a trivial example, the
+ pattern
+
+@@ -470,190 +468,188 @@ power of regular expressions comes from the ability to include
+ alternatives and repetitions in the pattern. These are encoded in the
+ pattern by the use of "special characters", which do not stand for
+ themselves but instead are interpreted in some special way. Here is a
+-brief description of regular expression syntax as used in `sed'.
++brief description of regular expression syntax as used in 'sed'.
+
+-`CHAR'
++'CHAR'
+ A single ordinary character matches itself.
+
+-`*'
++'*'
+ Matches a sequence of zero or more instances of matches for the
+ preceding regular expression, which must be an ordinary character,
+- a special character preceded by `\', a `.', a grouped regexp (see
++ a special character preceded by '\', a '.', a grouped regexp (see
+ below), or a bracket expression. As a GNU extension, a postfixed
+- regular expression can also be followed by `*'; for example, `a**'
+- is equivalent to `a*'. POSIX 1003.1-2001 says that `*' stands for
++ regular expression can also be followed by '*'; for example, 'a**'
++ is equivalent to 'a*'. POSIX 1003.1-2001 says that '*' stands for
+ itself when it appears at the start of a regular expression or
+ subexpression, but many nonGNU implementations do not support this
+- and portable scripts should instead use `\*' in these contexts.
++ and portable scripts should instead use '\*' in these contexts.
+
+-`\+'
+- As `*', but matches one or more. It is a GNU extension.
++'\+'
++ As '*', but matches one or more. It is a GNU extension.
+
+-`\?'
+- As `*', but only matches zero or one. It is a GNU extension.
++'\?'
++ As '*', but only matches zero or one. It is a GNU extension.
+
+-`\{I\}'
+- As `*', but matches exactly I sequences (I is a decimal integer;
++'\{I\}'
++ As '*', but matches exactly I sequences (I is a decimal integer;
+ for portability, keep it between 0 and 255 inclusive).
+
+-`\{I,J\}'
++'\{I,J\}'
+ Matches between I and J, inclusive, sequences.
+
+-`\{I,\}'
++'\{I,\}'
+ Matches more than or equal to I sequences.
+
+-`\(REGEXP\)'
++'\(REGEXP\)'
+ Groups the inner REGEXP as a whole, this is used to:
+
+- * Apply postfix operators, like `\(abcd\)*': this will search
+- for zero or more whole sequences of `abcd', while `abcd*'
+- would search for `abc' followed by zero or more occurrences
+- of `d'. Note that support for `\(abcd\)*' is required by
+- POSIX 1003.1-2001, but many non-GNU implementations do not
+- support it and hence it is not universally portable.
++ * Apply postfix operators, like '\(abcd\)*': this will search
++ for zero or more whole sequences of 'abcd', while 'abcd*'
++ would search for 'abc' followed by zero or more occurrences of
++ 'd'. Note that support for '\(abcd\)*' is required by POSIX
++ 1003.1-2001, but many non-GNU implementations do not support
++ it and hence it is not universally portable.
+
+ * Use back references (see below).
+
+-`.'
++'.'
+ Matches any character, including newline.
+
+-`^'
++'^'
+ Matches the null string at beginning of the pattern space, i.e.
+ what appears after the circumflex must appear at the beginning of
+ the pattern space.
+
+ In most scripts, pattern space is initialized to the content of
+- each line (*note How `sed' works: Execution Cycle.). So, it is a
+- useful simplification to think of `^#include' as matching only
+- lines where `#include' is the first thing on line--if there are
++ each line (*note How 'sed' works: Execution Cycle.). So, it is a
++ useful simplification to think of '^#include' as matching only
++ lines where '#include' is the first thing on line--if there are
+ spaces before, for example, the match fails. This simplification
+ is valid as long as the original content of pattern space is not
+- modified, for example with an `s' command.
++ modified, for example with an 's' command.
+
+- `^' acts as a special character only at the beginning of the
+- regular expression or subexpression (that is, after `\(' or `\|').
+- Portable scripts should avoid `^' at the beginning of a
++ '^' acts as a special character only at the beginning of the
++ regular expression or subexpression (that is, after '\(' or '\|').
++ Portable scripts should avoid '^' at the beginning of a
+ subexpression, though, as POSIX allows implementations that treat
+- `^' as an ordinary character in that context.
++ '^' as an ordinary character in that context.
+
+-`$'
+- It is the same as `^', but refers to end of pattern space. `$'
++'$'
++ It is the same as '^', but refers to end of pattern space. '$'
+ also acts as a special character only at the end of the regular
+- expression or subexpression (that is, before `\)' or `\|'), and
+- its use at the end of a subexpression is not portable.
++ expression or subexpression (that is, before '\)' or '\|'), and its
++ use at the end of a subexpression is not portable.
+
+-`[LIST]'
+-`[^LIST]'
+- Matches any single character in LIST: for example, `[aeiou]'
++'[LIST]'
++'[^LIST]'
++ Matches any single character in LIST: for example, '[aeiou]'
+ matches all vowels. A list may include sequences like
+- `CHAR1-CHAR2', which matches any character between (inclusive)
++ 'CHAR1-CHAR2', which matches any character between (inclusive)
+ CHAR1 and CHAR2.
+
+- A leading `^' reverses the meaning of LIST, so that it matches any
+- single character _not_ in LIST. To include `]' in the list, make
+- it the first character (after the `^' if needed), to include `-'
+- in the list, make it the first or last; to include `^' put it
+- after the first character.
++ A leading '^' reverses the meaning of LIST, so that it matches any
++ single character _not_ in LIST. To include ']' in the list, make
++ it the first character (after the '^' if needed), to include '-' in
++ the list, make it the first or last; to include '^' put it after
++ the first character.
+
+- The characters `$', `*', `.', `[', and `\' are normally not
+- special within LIST. For example, `[\*]' matches either `\' or
+- `*', because the `\' is not special here. However, strings like
+- `[.ch.]', `[=a=]', and `[:space:]' are special within LIST and
++ The characters '$', '*', '.', '[', and '\' are normally not special
++ within LIST. For example, '[\*]' matches either '\' or '*',
++ because the '\' is not special here. However, strings like
++ '[.ch.]', '[=a=]', and '[:space:]' are special within LIST and
+ represent collating symbols, equivalence classes, and character
+- classes, respectively, and `[' is therefore special within LIST
+- when it is followed by `.', `=', or `:'. Also, when not in
+- `POSIXLY_CORRECT' mode, special escapes like `\n' and `\t' are
++ classes, respectively, and '[' is therefore special within LIST
++ when it is followed by '.', '=', or ':'. Also, when not in
++ 'POSIXLY_CORRECT' mode, special escapes like '\n' and '\t' are
+ recognized within LIST. *Note Escapes::.
+
+-`REGEXP1\|REGEXP2'
++'REGEXP1\|REGEXP2'
+ Matches either REGEXP1 or REGEXP2. Use parentheses to use complex
+ alternative regular expressions. The matching process tries each
+ alternative in turn, from left to right, and the first one that
+ succeeds is used. It is a GNU extension.
+
+-`REGEXP1REGEXP2'
++'REGEXP1REGEXP2'
+ Matches the concatenation of REGEXP1 and REGEXP2. Concatenation
+- binds more tightly than `\|', `^', and `$', but less tightly than
++ binds more tightly than '\|', '^', and '$', but less tightly than
+ the other regular expression operators.
+
+-`\DIGIT'
+- Matches the DIGIT-th `\(...\)' parenthesized subexpression in the
++'\DIGIT'
++ Matches the DIGIT-th '\(...\)' parenthesized subexpression in the
+ regular expression. This is called a "back reference".
+ Subexpressions are implicity numbered by counting occurrences of
+- `\(' left-to-right.
++ '\(' left-to-right.
+
+-`\n'
++'\n'
+ Matches the newline character.
+
+-`\CHAR'
+- Matches CHAR, where CHAR is one of `$', `*', `.', `[', `\', or `^'.
+- Note that the only C-like backslash sequences that you can
+- portably assume to be interpreted are `\n' and `\\'; in particular
+- `\t' is not portable, and matches a `t' under most implementations
+- of `sed', rather than a tab character.
+-
++'\CHAR'
++ Matches CHAR, where CHAR is one of '$', '*', '.', '[', '\', or '^'.
++ Note that the only C-like backslash sequences that you can portably
++ assume to be interpreted are '\n' and '\\'; in particular '\t' is
++ not portable, and matches a 't' under most implementations of
++ 'sed', rather than a tab character.
+
+- Note that the regular expression matcher is greedy, i.e., matches
+-are attempted from left to right and, if two or more matches are
+-possible starting at the same character, it selects the longest.
++ Note that the regular expression matcher is greedy, i.e., matches are
++attempted from left to right and, if two or more matches are possible
++starting at the same character, it selects the longest.
+
+ Examples:
+-`abcdef'
+- Matches `abcdef'.
++'abcdef'
++ Matches 'abcdef'.
+
+-`a*b'
+- Matches zero or more `a's followed by a single `b'. For example,
+- `b' or `aaaaab'.
++'a*b'
++ Matches zero or more 'a's followed by a single 'b'. For example,
++ 'b' or 'aaaaab'.
+
+-`a\?b'
+- Matches `b' or `ab'.
++'a\?b'
++ Matches 'b' or 'ab'.
+
+-`a\+b\+'
+- Matches one or more `a's followed by one or more `b's: `ab' is the
+- shortest possible match, but other examples are `aaaab' or
+- `abbbbb' or `aaaaaabbbbbbb'.
++'a\+b\+'
++ Matches one or more 'a's followed by one or more 'b's: 'ab' is the
++ shortest possible match, but other examples are 'aaaab' or 'abbbbb'
++ or 'aaaaaabbbbbbb'.
+
+-`.*'
+-`.\+'
++'.*'
++'.\+'
+ These two both match all the characters in a string; however, the
+ first matches every string (including the empty string), while the
+ second matches only strings containing at least one character.
+
+-`^main.*(.*)'
+- This matches a string starting with `main', followed by an opening
+- and closing parenthesis. The `n', `(' and `)' need not be
++'^main.*(.*)'
++ This matches a string starting with 'main', followed by an opening
++ and closing parenthesis. The 'n', '(' and ')' need not be
+ adjacent.
+
+-`^#'
+- This matches a string beginning with `#'.
++'^#'
++ This matches a string beginning with '#'.
+
+-`\\$'
++'\\$'
+ This matches a string ending with a single backslash. The regexp
+ contains two backslashes for escaping.
+
+-`\$'
++'\$'
+ Instead, this matches a string consisting of a single dollar sign,
+ because it is escaped.
+
+-`[a-zA-Z0-9]'
++'[a-zA-Z0-9]'
+ In the C locale, this matches any ASCII letters or digits.
+
+-`[^ tab]\+'
+- (Here `tab' stands for a single tab character.) This matches a
++'[^ 'tab']\+'
++ (Here 'tab' stands for a single tab character.) This matches a
+ string of one or more characters, none of which is a space or a
+ tab. Usually this means a word.
+
+-`^\(.*\)\n\1$'
++'^\(.*\)\n\1$'
+ This matches a string consisting of two equal substrings separated
+ by a newline.
+
+-`.\{9\}A$'
+- This matches nine characters followed by an `A'.
+-
+-`^.\{15\}A'
+- This matches the start of a string that contains 16 characters,
+- the last of which is an `A'.
++'.\{9\}A$'
++ This matches nine characters followed by an 'A'.
+
++'^.\{15\}A'
++ This matches the start of a string that contains 16 characters, the
++ last of which is an 'A'.
+
+ 
+ File: sed.info, Node: Common Commands, Next: The "s" Command, Prev: Regular Expressions, Up: sed Programs
+@@ -661,185 +657,183 @@ File: sed.info, Node: Common Commands, Next: The "s" Command, Prev: Regular E
+ 3.4 Often-Used Commands
+ =======================
+
+-If you use `sed' at all, you will quite likely want to know these
++If you use 'sed' at all, you will quite likely want to know these
+ commands.
+
+-`#'
++'#'
+ [No addresses allowed.]
+
+- The `#' character begins a comment; the comment continues until
+- the next newline.
++ The '#' character begins a comment; the comment continues until the
++ next newline.
+
+ If you are concerned about portability, be aware that some
+- implementations of `sed' (which are not POSIX conformant) may only
++ implementations of 'sed' (which are not POSIX conformant) may only
+ support a single one-line comment, and then only when the very
+- first character of the script is a `#'.
++ first character of the script is a '#'.
+
+- Warning: if the first two characters of the `sed' script are `#n',
+- then the `-n' (no-autoprint) option is forced. If you want to put
++ Warning: if the first two characters of the 'sed' script are '#n',
++ then the '-n' (no-autoprint) option is forced. If you want to put
+ a comment in the first line of your script and that comment begins
+- with the letter `n' and you do not want this behavior, then be
+- sure to either use a capital `N', or place at least one space
+- before the `n'.
++ with the letter 'n' and you do not want this behavior, then be sure
++ to either use a capital 'N', or place at least one space before the
++ 'n'.
+
+-`q [EXIT-CODE]'
++'q [EXIT-CODE]'
+ This command only accepts a single address.
+
+- Exit `sed' without processing any more commands or input. Note
++ Exit 'sed' without processing any more commands or input. Note
+ that the current pattern space is printed if auto-print is not
+- disabled with the `-n' options. The ability to return an exit
+- code from the `sed' script is a GNU `sed' extension.
++ disabled with the '-n' options. The ability to return an exit code
++ from the 'sed' script is a GNU 'sed' extension.
+
+-`d'
++'d'
+ Delete the pattern space; immediately start next cycle.
+
+-`p'
+- Print out the pattern space (to the standard output). This
+- command is usually only used in conjunction with the `-n'
+- command-line option.
++'p'
++ Print out the pattern space (to the standard output). This command
++ is usually only used in conjunction with the '-n' command-line
++ option.
+
+-`n'
++'n'
+ If auto-print is not disabled, print the pattern space, then,
+ regardless, replace the pattern space with the next line of input.
+- If there is no more input then `sed' exits without processing any
++ If there is no more input then 'sed' exits without processing any
+ more commands.
+
+-`{ COMMANDS }'
+- A group of commands may be enclosed between `{' and `}' characters.
+- This is particularly useful when you want a group of commands to
+- be triggered by a single address (or address-range) match.
+-
++'{ COMMANDS }'
++ A group of commands may be enclosed between '{' and '}' characters.
++ This is particularly useful when you want a group of commands to be
++ triggered by a single address (or address-range) match.
+
+ 
+ File: sed.info, Node: The "s" Command, Next: Other Commands, Prev: Common Commands, Up: sed Programs
+
+-3.5 The `s' Command
++3.5 The 's' Command
+ ===================
+
+-The syntax of the `s' (as in substitute) command is
+-`s/REGEXP/REPLACEMENT/FLAGS'. The `/' characters may be uniformly
+-replaced by any other single character within any given `s' command.
+-The `/' character (or whatever other character is used in its stead)
+-can appear in the REGEXP or REPLACEMENT only if it is preceded by a `\'
++The syntax of the 's' (as in substitute) command is
++'s/REGEXP/REPLACEMENT/FLAGS'. The '/' characters may be uniformly
++replaced by any other single character within any given 's' command.
++The '/' character (or whatever other character is used in its stead) can
++appear in the REGEXP or REPLACEMENT only if it is preceded by a '\'
+ character.
+
+- The `s' command is probably the most important in `sed' and has a
+-lot of different options. Its basic concept is simple: the `s' command
++ The 's' command is probably the most important in 'sed' and has a lot
++of different options. Its basic concept is simple: the 's' command
+ attempts to match the pattern space against the supplied REGEXP; if the
+ match is successful, then that portion of the pattern space which was
+ matched is replaced with REPLACEMENT.
+
+- The REPLACEMENT can contain `\N' (N being a number from 1 to 9,
++ The REPLACEMENT can contain '\N' (N being a number from 1 to 9,
+ inclusive) references, which refer to the portion of the match which is
+-contained between the Nth `\(' and its matching `\)'. Also, the
+-REPLACEMENT can contain unescaped `&' characters which reference the
+-whole matched portion of the pattern space. Finally, as a GNU `sed'
++contained between the Nth '\(' and its matching '\)'. Also, the
++REPLACEMENT can contain unescaped '&' characters which reference the
++whole matched portion of the pattern space. Finally, as a GNU 'sed'
+ extension, you can include a special sequence made of a backslash and
+-one of the letters `L', `l', `U', `u', or `E'. The meaning is as
++one of the letters 'L', 'l', 'U', 'u', or 'E'. The meaning is as
+ follows:
+
+-`\L'
+- Turn the replacement to lowercase until a `\U' or `\E' is found,
++'\L'
++ Turn the replacement to lowercase until a '\U' or '\E' is found,
+
+-`\l'
++'\l'
+ Turn the next character to lowercase,
+
+-`\U'
+- Turn the replacement to uppercase until a `\L' or `\E' is found,
++'\U'
++ Turn the replacement to uppercase until a '\L' or '\E' is found,
+
+-`\u'
++'\u'
+ Turn the next character to uppercase,
+
+-`\E'
+- Stop case conversion started by `\L' or `\U'.
++'\E'
++ Stop case conversion started by '\L' or '\U'.
+
+- When the `g' flag is being used, case conversion does not propagate
++ When the 'g' flag is being used, case conversion does not propagate
+ from one occurrence of the regular expression to another. For example,
+-when the following command is executed with `a-b-' in pattern space:
++when the following command is executed with 'a-b-' in pattern space:
+ s/\(b\?\)-/x\u\1/g
+
+-the output is `axxB'. When replacing the first `-', the `\u' sequence
+-only affects the empty replacement of `\1'. It does not affect the `x'
+-character that is added to pattern space when replacing `b-' with `xB'.
++the output is 'axxB'. When replacing the first '-', the '\u' sequence
++only affects the empty replacement of '\1'. It does not affect the 'x'
++character that is added to pattern space when replacing 'b-' with 'xB'.
+
+- On the other hand, `\l' and `\u' do affect the remainder of the
++ On the other hand, '\l' and '\u' do affect the remainder of the
+ replacement text if they are followed by an empty substitution. With
+-`a-b-' in pattern space, the following command:
++'a-b-' in pattern space, the following command:
+ s/\(b\?\)-/\u\1x/g
+
+-will replace `-' with `X' (uppercase) and `b-' with `Bx'. If this
+-behavior is undesirable, you can prevent it by adding a `\E'
+-sequence--after `\1' in this case.
++will replace '-' with 'X' (uppercase) and 'b-' with 'Bx'. If this
++behavior is undesirable, you can prevent it by adding a '\E'
++sequence--after '\1' in this case.
+
+- To include a literal `\', `&', or newline in the final replacement,
+-be sure to precede the desired `\', `&', or newline in the REPLACEMENT
+-with a `\'.
++ To include a literal '\', '&', or newline in the final replacement,
++be sure to precede the desired '\', '&', or newline in the REPLACEMENT
++with a '\'.
+
+- The `s' command can be followed by zero or more of the following
++ The 's' command can be followed by zero or more of the following
+ FLAGS:
+
+-`g'
++'g'
+ Apply the replacement to _all_ matches to the REGEXP, not just the
+ first.
+
+-`NUMBER'
++'NUMBER'
+ Only replace the NUMBERth match of the REGEXP.
+
+ Note: the POSIX standard does not specify what should happen when
+- you mix the `g' and NUMBER modifiers, and currently there is no
+- widely agreed upon meaning across `sed' implementations. For GNU
+- `sed', the interaction is defined to be: ignore matches before the
++ you mix the 'g' and NUMBER modifiers, and currently there is no
++ widely agreed upon meaning across 'sed' implementations. For GNU
++ 'sed', the interaction is defined to be: ignore matches before the
+ NUMBERth, and then match and replace all matches from the NUMBERth
+ on.
+
+-`p'
++'p'
+ If the substitution was made, then print the new pattern space.
+
+- Note: when both the `p' and `e' options are specified, the
+- relative ordering of the two produces very different results. In
+- general, `ep' (evaluate then print) is what you want, but
+- operating the other way round can be useful for debugging. For
+- this reason, the current version of GNU `sed' interprets specially
+- the presence of `p' options both before and after `e', printing
+- the pattern space before and after evaluation, while in general
+- flags for the `s' command show their effect just once. This
+- behavior, although documented, might change in future versions.
+-
+-`w FILE-NAME'
++ Note: when both the 'p' and 'e' options are specified, the relative
++ ordering of the two produces very different results. In general,
++ 'ep' (evaluate then print) is what you want, but operating the
++ other way round can be useful for debugging. For this reason, the
++ current version of GNU 'sed' interprets specially the presence of
++ 'p' options both before and after 'e', printing the pattern space
++ before and after evaluation, while in general flags for the 's'
++ command show their effect just once. This behavior, although
++ documented, might change in future versions.
++
++'w FILE-NAME'
+ If the substitution was made, then write out the result to the
+- named file. As a GNU `sed' extension, two special values of
+- FILE-NAME are supported: `/dev/stderr', which writes the result to
+- the standard error, and `/dev/stdout', which writes to the standard
++ named file. As a GNU 'sed' extension, two special values of
++ FILE-NAME are supported: '/dev/stderr', which writes the result to
++ the standard error, and '/dev/stdout', which writes to the standard
+ output.(1)
+
+-`e'
++'e'
+ This command allows one to pipe input from a shell command into
+ pattern space. If a substitution was made, the command that is
+ found in pattern space is executed and pattern space is replaced
+ with its output. A trailing newline is suppressed; results are
+ undefined if the command to be executed contains a NUL character.
+- This is a GNU `sed' extension.
+-
+-`I'
+-`i'
+- The `I' modifier to regular-expression matching is a GNU extension
+- which makes `sed' match REGEXP in a case-insensitive manner.
+-
+-`M'
+-`m'
+- The `M' modifier to regular-expression matching is a GNU `sed'
+- extension which directs GNU `sed' to match the regular expression
+- in `multi-line' mode. The modifier causes `^' and `$' to match
++ This is a GNU 'sed' extension.
++
++'I'
++'i'
++ The 'I' modifier to regular-expression matching is a GNU extension
++ which makes 'sed' match REGEXP in a case-insensitive manner.
++
++'M'
++'m'
++ The 'M' modifier to regular-expression matching is a GNU 'sed'
++ extension which directs GNU 'sed' to match the regular expression
++ in 'multi-line' mode. The modifier causes '^' and '$' to match
+ respectively (in addition to the normal behavior) the empty string
+ after a newline, and the empty string before a newline. There are
+- special character sequences (`\`' and `\'') which always match the
++ special character sequences ('\`' and '\'') which always match the
+ beginning or the end of the buffer. In addition, the period
+ character does not match a new-line character in multi-line mode.
+
+-
+ ---------- Footnotes ----------
+
+- (1) This is equivalent to `p' unless the `-i' option is being used.
++ (1) This is equivalent to 'p' unless the '-i' option is being used.
+
+ 
+ File: sed.info, Node: Other Commands, Next: Programming Commands, Prev: The "s" Command, Up: sed Programs
+@@ -848,75 +842,75 @@ File: sed.info, Node: Other Commands, Next: Programming Commands, Prev: The "
+ =================================
+
+ Though perhaps less frequently used than those in the previous section,
+-some very small yet useful `sed' scripts can be built with these
++some very small yet useful 'sed' scripts can be built with these
+ commands.
+
+-`y/SOURCE-CHARS/DEST-CHARS/'
+- (The `/' characters may be uniformly replaced by any other single
+- character within any given `y' command.)
++'y/SOURCE-CHARS/DEST-CHARS/'
++ (The '/' characters may be uniformly replaced by any other single
++ character within any given 'y' command.)
+
+ Transliterate any characters in the pattern space which match any
+ of the SOURCE-CHARS with the corresponding character in DEST-CHARS.
+
+- Instances of the `/' (or whatever other character is used in its
+- stead), `\', or newlines can appear in the SOURCE-CHARS or
+- DEST-CHARS lists, provide that each instance is escaped by a `\'.
++ Instances of the '/' (or whatever other character is used in its
++ stead), '\', or newlines can appear in the SOURCE-CHARS or
++ DEST-CHARS lists, provide that each instance is escaped by a '\'.
+ The SOURCE-CHARS and DEST-CHARS lists _must_ contain the same
+ number of characters (after de-escaping).
+
+-`a\'
+-`TEXT'
++'a\'
++'TEXT'
+ As a GNU extension, this command accepts two addresses.
+
+ Queue the lines of text which follow this command (each but the
+- last ending with a `\', which are removed from the output) to be
+- output at the end of the current cycle, or when the next input
+- line is read.
++ last ending with a '\', which are removed from the output) to be
++ output at the end of the current cycle, or when the next input line
++ is read.
+
+- Escape sequences in TEXT are processed, so you should use `\\' in
++ Escape sequences in TEXT are processed, so you should use '\\' in
+ TEXT to print a single backslash.
+
+- As a GNU extension, if between the `a' and the newline there is
+- other than a whitespace-`\' sequence, then the text of this line,
+- starting at the first non-whitespace character after the `a', is
++ As a GNU extension, if between the 'a' and the newline there is
++ other than a whitespace-'\' sequence, then the text of this line,
++ starting at the first non-whitespace character after the 'a', is
+ taken as the first line of the TEXT block. (This enables a
+ simplification in scripting a one-line add.) This extension also
+- works with the `i' and `c' commands.
++ works with the 'i' and 'c' commands.
+
+-`i\'
+-`TEXT'
++'i\'
++'TEXT'
+ As a GNU extension, this command accepts two addresses.
+
+ Immediately output the lines of text which follow this command
+- (each but the last ending with a `\', which are removed from the
++ (each but the last ending with a '\', which are removed from the
+ output).
+
+-`c\'
+-`TEXT'
++'c\'
++'TEXT'
+ Delete the lines matching the address or address-range, and output
+ the lines of text which follow this command (each but the last
+- ending with a `\', which are removed from the output) in place of
++ ending with a '\', which are removed from the output) in place of
+ the last line (or in place of each line, if no addresses were
+ specified). A new cycle is started after this command is done,
+ since the pattern space will have been deleted.
+
+-`='
++'='
+ As a GNU extension, this command accepts two addresses.
+
+ Print out the current input line number (with a trailing newline).
+
+-`l N'
++'l N'
+ Print the pattern space in an unambiguous form: non-printable
+- characters (and the `\' character) are printed in C-style escaped
+- form; long lines are split, with a trailing `\' character to
+- indicate the split; the end of each line is marked with a `$'.
++ characters (and the '\' character) are printed in C-style escaped
++ form; long lines are split, with a trailing '\' character to
++ indicate the split; the end of each line is marked with a '$'.
+
+ N specifies the desired line-wrap length; a length of 0 (zero)
+ means to never wrap long lines. If omitted, the default as
+ specified on the command line is used. The N parameter is a GNU
+- `sed' extension.
++ 'sed' extension.
+
+-`r FILENAME'
++'r FILENAME'
+ As a GNU extension, this command accepts two addresses.
+
+ Queue the contents of FILENAME to be read and inserted into the
+@@ -924,136 +918,134 @@ commands.
+ input line is read. Note that if FILENAME cannot be read, it is
+ treated as if it were an empty file, without any error indication.
+
+- As a GNU `sed' extension, the special value `/dev/stdin' is
++ As a GNU 'sed' extension, the special value '/dev/stdin' is
+ supported for the file name, which reads the contents of the
+ standard input.
+
+-`w FILENAME'
+- Write the pattern space to FILENAME. As a GNU `sed' extension,
+- two special values of FILE-NAME are supported: `/dev/stderr',
+- which writes the result to the standard error, and `/dev/stdout',
+- which writes to the standard output.(1)
++'w FILENAME'
++ Write the pattern space to FILENAME. As a GNU 'sed' extension, two
++ special values of FILE-NAME are supported: '/dev/stderr', which
++ writes the result to the standard error, and '/dev/stdout', which
++ writes to the standard output.(1)
+
+- The file will be created (or truncated) before the first input
+- line is read; all `w' commands (including instances of the `w' flag
+- on successful `s' commands) which refer to the same FILENAME are
++ The file will be created (or truncated) before the first input line
++ is read; all 'w' commands (including instances of the 'w' flag on
++ successful 's' commands) which refer to the same FILENAME are
+ output without closing and reopening the file.
+
+-`D'
++'D'
+ If pattern space contains no newline, start a normal new cycle as
+- if the `d' command was issued. Otherwise, delete text in the
++ if the 'd' command was issued. Otherwise, delete text in the
+ pattern space up to the first newline, and restart cycle with the
+ resultant pattern space, without reading a new line of input.
+
+-`N'
++'N'
+ Add a newline to the pattern space, then append the next line of
+- input to the pattern space. If there is no more input then `sed'
++ input to the pattern space. If there is no more input then 'sed'
+ exits without processing any more commands.
+
+-`P'
++'P'
+ Print out the portion of the pattern space up to the first newline.
+
+-`h'
++'h'
+ Replace the contents of the hold space with the contents of the
+ pattern space.
+
+-`H'
+- Append a newline to the contents of the hold space, and then
+- append the contents of the pattern space to that of the hold space.
++'H'
++ Append a newline to the contents of the hold space, and then append
++ the contents of the pattern space to that of the hold space.
+
+-`g'
++'g'
+ Replace the contents of the pattern space with the contents of the
+ hold space.
+
+-`G'
++'G'
+ Append a newline to the contents of the pattern space, and then
+ append the contents of the hold space to that of the pattern space.
+
+-`x'
++'x'
+ Exchange the contents of the hold and pattern spaces.
+
+-
+ ---------- Footnotes ----------
+
+- (1) This is equivalent to `p' unless the `-i' option is being used.
++ (1) This is equivalent to 'p' unless the '-i' option is being used.
+
+ 
+ File: sed.info, Node: Programming Commands, Next: Extended Commands, Prev: Other Commands, Up: sed Programs
+
+-3.7 Commands for `sed' gurus
++3.7 Commands for 'sed' gurus
+ ============================
+
+ In most cases, use of these commands indicates that you are probably
+-better off programming in something like `awk' or Perl. But
+-occasionally one is committed to sticking with `sed', and these
+-commands can enable one to write quite convoluted scripts.
++better off programming in something like 'awk' or Perl. But
++occasionally one is committed to sticking with 'sed', and these commands
++can enable one to write quite convoluted scripts.
+
+-`: LABEL'
++': LABEL'
+ [No addresses allowed.]
+
+ Specify the location of LABEL for branch commands. In all other
+ respects, a no-op.
+
+-`b LABEL'
++'b LABEL'
+ Unconditionally branch to LABEL. The LABEL may be omitted, in
+ which case the next cycle is started.
+
+-`t LABEL'
+- Branch to LABEL only if there has been a successful `s'ubstitution
++'t LABEL'
++ Branch to LABEL only if there has been a successful 's'ubstitution
+ since the last input line was read or conditional branch was taken.
+ The LABEL may be omitted, in which case the next cycle is started.
+
+-
+ 
+ File: sed.info, Node: Extended Commands, Next: Escapes, Prev: Programming Commands, Up: sed Programs
+
+-3.8 Commands Specific to GNU `sed'
++3.8 Commands Specific to GNU 'sed'
+ ==================================
+
+-These commands are specific to GNU `sed', so you must use them with
+-care and only when you are sure that hindering portability is not evil.
+-They allow you to check for GNU `sed' extensions or to do tasks that
+-are required quite often, yet are unsupported by standard `sed's.
++These commands are specific to GNU 'sed', so you must use them with care
++and only when you are sure that hindering portability is not evil. They
++allow you to check for GNU 'sed' extensions or to do tasks that are
++required quite often, yet are unsupported by standard 'sed's.
+
+-`e [COMMAND]'
++'e [COMMAND]'
+ This command allows one to pipe input from a shell command into
+- pattern space. Without parameters, the `e' command executes the
++ pattern space. Without parameters, the 'e' command executes the
+ command that is found in pattern space and replaces the pattern
+ space with the output; a trailing newline is suppressed.
+
+- If a parameter is specified, instead, the `e' command interprets
+- it as a command and sends its output to the output stream. The
++ If a parameter is specified, instead, the 'e' command interprets it
++ as a command and sends its output to the output stream. The
+ command can run across multiple lines, all but the last ending with
+ a back-slash.
+
+ In both cases, the results are undefined if the command to be
+ executed contains a NUL character.
+
+- Note that, unlike the `r' command, the output of the command will
+- be printed immediately; the `r' command instead delays the output
++ Note that, unlike the 'r' command, the output of the command will
++ be printed immediately; the 'r' command instead delays the output
+ to the end of the current cycle.
+
+-`F'
++'F'
+ Print out the file name of the current input file (with a trailing
+ newline).
+
+-`L N'
+- This GNU `sed' extension fills and joins lines in pattern space to
+- produce output lines of (at most) N characters, like `fmt' does;
+- if N is omitted, the default as specified on the command line is
+- used. This command is considered a failed experiment and unless
+- there is enough request (which seems unlikely) will be removed in
+- future versions.
++'L N'
++ This GNU 'sed' extension fills and joins lines in pattern space to
++ produce output lines of (at most) N characters, like 'fmt' does; if
++ N is omitted, the default as specified on the command line is used.
++ This command is considered a failed experiment and unless there is
++ enough request (which seems unlikely) will be removed in future
++ versions.
+
+-`Q [EXIT-CODE]'
++'Q [EXIT-CODE]'
+ This command only accepts a single address.
+
+- This command is the same as `q', but will not print the contents
+- of pattern space. Like `q', it provides the ability to return an
+- exit code to the caller.
++ This command is the same as 'q', but will not print the contents of
++ pattern space. Like 'q', it provides the ability to return an exit
++ code to the caller.
+
+ This command can be useful because the only alternative ways to
+- accomplish this apparently trivial function are to use the `-n'
++ accomplish this apparently trivial function are to use the '-n'
+ option (which can unnecessarily complicate your script) or
+ resorting to the following snippet, which wastes time by reading
+ the whole file without any visible effect:
+@@ -1064,46 +1056,45 @@ are required quite often, yet are unsupported by standard `sed's.
+ g Overwrite pattern space each time to save memory
+ b eat
+
+-`R FILENAME'
++'R FILENAME'
+ Queue a line of FILENAME to be read and inserted into the output
+- stream at the end of the current cycle, or when the next input
+- line is read. Note that if FILENAME cannot be read, or if its end
+- is reached, no line is appended, without any error indication.
++ stream at the end of the current cycle, or when the next input line
++ is read. Note that if FILENAME cannot be read, or if its end is
++ reached, no line is appended, without any error indication.
+
+- As with the `r' command, the special value `/dev/stdin' is
++ As with the 'r' command, the special value '/dev/stdin' is
+ supported for the file name, which reads a line from the standard
+ input.
+
+-`T LABEL'
++'T LABEL'
+ Branch to LABEL only if there have been no successful
+- `s'ubstitutions since the last input line was read or conditional
+- branch was taken. The LABEL may be omitted, in which case the next
++ 's'ubstitutions since the last input line was read or conditional
++ branch was taken. The LABEL may be omitted, in which case the next
+ cycle is started.
+
+-`v VERSION'
+- This command does nothing, but makes `sed' fail if GNU `sed'
++'v VERSION'
++ This command does nothing, but makes 'sed' fail if GNU 'sed'
+ extensions are not supported, simply because other versions of
+- `sed' do not implement it. In addition, you can specify the
+- version of `sed' that your script requires, such as `4.0.5'. The
+- default is `4.0' because that is the first version that
+- implemented this command.
++ 'sed' do not implement it. In addition, you can specify the
++ version of 'sed' that your script requires, such as '4.0.5'. The
++ default is '4.0' because that is the first version that implemented
++ this command.
+
+- This command enables all GNU extensions even if `POSIXLY_CORRECT'
++ This command enables all GNU extensions even if 'POSIXLY_CORRECT'
+ is set in the environment.
+
+-`W FILENAME'
++'W FILENAME'
+ Write to the given filename the portion of the pattern space up to
+- the first newline. Everything said under the `w' command about
++ the first newline. Everything said under the 'w' command about
+ file handling holds here too.
+
+-`z'
++'z'
+ This command empties the content of pattern space. It is usually
+- the same as `s/.*//', but is more efficient and works in the
+- presence of invalid multibyte sequences in the input stream.
+- POSIX mandates that such sequences are _not_ matched by `.', so
+- that there is no portable way to clear `sed''s buffers in the
+- middle of the script in most multibyte locales (including UTF-8
+- locales).
++ the same as 's/.*//', but is more efficient and works in the
++ presence of invalid multibyte sequences in the input stream. POSIX
++ mandates that such sequences are _not_ matched by '.', so that
++ there is no portable way to clear 'sed''s buffers in the middle of
++ the script in most multibyte locales (including UTF-8 locales).
+
+ 
+ File: sed.info, Node: Escapes, Prev: Extended Commands, Up: sed Programs
+@@ -1111,95 +1102,94 @@ File: sed.info, Node: Escapes, Prev: Extended Commands, Up: sed Programs
+ 3.9 GNU Extensions for Escapes in Regular Expressions
+ =====================================================
+
+-Until this chapter, we have only encountered escapes of the form `\^',
+-which tell `sed' not to interpret the circumflex as a special
+-character, but rather to take it literally. For example, `\*' matches
+-a single asterisk rather than zero or more backslashes.
++Until this chapter, we have only encountered escapes of the form '\^',
++which tell 'sed' not to interpret the circumflex as a special character,
++but rather to take it literally. For example, '\*' matches a single
++asterisk rather than zero or more backslashes.
+
+ This chapter introduces another kind of escape(1)--that is, escapes
+ that are applied to a character or sequence of characters that
+-ordinarily are taken literally, and that `sed' replaces with a special
++ordinarily are taken literally, and that 'sed' replaces with a special
+ character. This provides a way of encoding non-printable characters in
+-patterns in a visible manner. There is no restriction on the
+-appearance of non-printing characters in a `sed' script but when a
+-script is being prepared in the shell or by text editing, it is usually
+-easier to use one of the following escape sequences than the binary
+-character it represents:
++patterns in a visible manner. There is no restriction on the appearance
++of non-printing characters in a 'sed' script but when a script is being
++prepared in the shell or by text editing, it is usually easier to use
++one of the following escape sequences than the binary character it
++represents:
+
+ The list of these escapes is:
+
+-`\a'
++'\a'
+ Produces or matches a BEL character, that is an "alert" (ASCII 7).
+
+-`\f'
++'\f'
+ Produces or matches a form feed (ASCII 12).
+
+-`\n'
++'\n'
+ Produces or matches a newline (ASCII 10).
+
+-`\r'
++'\r'
+ Produces or matches a carriage return (ASCII 13).
+
+-`\t'
++'\t'
+ Produces or matches a horizontal tab (ASCII 9).
+
+-`\v'
++'\v'
+ Produces or matches a so called "vertical tab" (ASCII 11).
+
+-`\cX'
+- Produces or matches `CONTROL-X', where X is any character. The
+- precise effect of `\cX' is as follows: if X is a lower case
+- letter, it is converted to upper case. Then bit 6 of the
+- character (hex 40) is inverted. Thus `\cz' becomes hex 1A, but
+- `\c{' becomes hex 3B, while `\c;' becomes hex 7B.
++'\cX'
++ Produces or matches 'CONTROL-X', where X is any character. The
++ precise effect of '\cX' is as follows: if X is a lower case letter,
++ it is converted to upper case. Then bit 6 of the character (hex
++ 40) is inverted. Thus '\cz' becomes hex 1A, but '\c{' becomes hex
++ 3B, while '\c;' becomes hex 7B.
+
+-`\dXXX'
++'\dXXX'
+ Produces or matches a character whose decimal ASCII value is XXX.
+
+-`\oXXX'
++'\oXXX'
+ Produces or matches a character whose octal ASCII value is XXX.
+
+-`\xXX'
++'\xXX'
+ Produces or matches a character whose hexadecimal ASCII value is
+ XX.
+
+- `\b' (backspace) was omitted because of the conflict with the
++ '\b' (backspace) was omitted because of the conflict with the
+ existing "word boundary" meaning.
+
+ Other escapes match a particular character class and are valid only
+ in regular expressions:
+
+-`\w'
++'\w'
+ Matches any "word" character. A "word" character is any letter or
+ digit or the underscore character.
+
+-`\W'
++'\W'
+ Matches any "non-word" character.
+
+-`\b'
+- Matches a word boundary; that is it matches if the character to
+- the left is a "word" character and the character to the right is a
++'\b'
++ Matches a word boundary; that is it matches if the character to the
++ left is a "word" character and the character to the right is a
+ "non-word" character, or vice-versa.
+
+-`\B'
++'\B'
+ Matches everywhere but on a word boundary; that is it matches if
+- the character to the left and the character to the right are
+- either both "word" characters or both "non-word" characters.
++ the character to the left and the character to the right are either
++ both "word" characters or both "non-word" characters.
+
+-`\`'
+- Matches only at the start of pattern space. This is different
+- from `^' in multi-line mode.
++'\`'
++ Matches only at the start of pattern space. This is different from
++ '^' in multi-line mode.
+
+-`\''
++'\''
+ Matches only at the end of pattern space. This is different from
+- `$' in multi-line mode.
+-
++ '$' in multi-line mode.
+
+ ---------- Footnotes ----------
+
+ (1) All the escapes introduced here are GNU extensions, with the
+-exception of `\n'. In basic regular expression mode, setting
+-`POSIXLY_CORRECT' disables them inside bracket expressions.
++exception of '\n'. In basic regular expression mode, setting
++'POSIXLY_CORRECT' disables them inside bracket expressions.
+
+ 
+ File: sed.info, Node: Examples, Next: Limitations, Prev: sed Programs, Up: Top
+@@ -1207,7 +1197,7 @@ File: sed.info, Node: Examples, Next: Limitations, Prev: sed Programs, Up: T
+ 4 Some Sample Scripts
+ *********************
+
+-Here are some `sed' scripts to guide you in the art of mastering `sed'.
++Here are some 'sed' scripts to guide you in the art of mastering 'sed'.
+
+ * Menu:
+
+@@ -1239,7 +1229,7 @@ File: sed.info, Node: Centering lines, Next: Increment a number, Up: Examples
+ ===================
+
+ This script centers all lines of a file on a 80 columns width. To
+-change that width, the number in `\{...\}' must be replaced, and the
++change that width, the number in '\{...\}' must be replaced, and the
+ number of added spaces also must be changed.
+
+ Note how the buffer commands are used to separate parts in the
+@@ -1276,19 +1266,19 @@ File: sed.info, Node: Increment a number, Next: Rename files to lower case, P
+ ======================
+
+ This script is one of a few that demonstrate how to do arithmetic in
+-`sed'. This is indeed possible,(1) but must be done manually.
++'sed'. This is indeed possible,(1) but must be done manually.
+
+- To increment one number you just add 1 to last digit, replacing it
+-by the following digit. There is one exception: when the digit is a
+-nine the previous digits must be also incremented until you don't have
+-a nine.
++ To increment one number you just add 1 to last digit, replacing it by
++the following digit. There is one exception: when the digit is a nine
++the previous digits must be also incremented until you don't have a
++nine.
+
+ This solution by Bruno Haible is very clever and smart because it
+ uses a single buffer; if you don't have this limitation, the algorithm
+-used in *note Numbering lines: cat -n, is faster. It works by
+-replacing trailing nines with an underscore, then using multiple `s'
+-commands to increment the last digit, and then again substituting
+-underscores with zeros.
++used in *note Numbering lines: cat -n, is faster. It works by replacing
++trailing nines with an underscore, then using multiple 's' commands to
++increment the last digit, and then again substituting underscores with
++zeros.
+
+ #!/usr/bin/sed -f
+
+@@ -1319,7 +1309,7 @@ underscores with zeros.
+
+ ---------- Footnotes ----------
+
+- (1) `sed' guru Greg Ubben wrote an implementation of the `dc' RPN
++ (1) 'sed' guru Greg Ubben wrote an implementation of the 'dc' RPN
+ calculator! It is distributed together with sed.
+
+ 
+@@ -1328,15 +1318,15 @@ File: sed.info, Node: Rename files to lower case, Next: Print bash environment
+ 4.3 Rename Files to Lower Case
+ ==============================
+
+-This is a pretty strange use of `sed'. We transform text, and
+-transform it to be shell commands, then just feed them to shell. Don't
+-worry, even worse hacks are done when using `sed'; I have seen a script
+-converting the output of `date' into a `bc' program!
++This is a pretty strange use of 'sed'. We transform text, and transform
++it to be shell commands, then just feed them to shell. Don't worry,
++even worse hacks are done when using 'sed'; I have seen a script
++converting the output of 'date' into a 'bc' program!
+
+- The main body of this is the `sed' script, which remaps the name
+-from lower to upper (or vice-versa) and even checks out if the remapped
+-name is the same as the original name. Note how the script is
+-parameterized using shell variables and proper quoting.
++ The main body of this is the 'sed' script, which remaps the name from
++lower to upper (or vice-versa) and even checks out if the remapped name
++is the same as the original name. Note how the script is parameterized
++using shell variables and proper quoting.
+
+ #! /bin/sh
+ # rename files to lower/upper case...
+@@ -1437,11 +1427,11 @@ parameterized using shell variables and proper quoting.
+ 
+ File: sed.info, Node: Print bash environment, Next: Reverse chars of lines, Prev: Rename files to lower case, Up: Examples
+
+-4.4 Print `bash' Environment
++4.4 Print 'bash' Environment
+ ============================
+
+-This script strips the definition of the shell functions from the
+-output of the `set' Bourne-shell command.
++This script strips the definition of the shell functions from the output
++of the 'set' Bourne-shell command.
+
+ #!/bin/sh
+
+@@ -1478,11 +1468,11 @@ This script can be used to reverse the position of characters in lines.
+ The technique moves two characters at a time, hence it is faster than
+ more intuitive implementations.
+
+- Note the `tx' command before the definition of the label. This is
+-often needed to reset the flag that is tested by the `t' command.
++ Note the 'tx' command before the definition of the label. This is
++often needed to reset the flag that is tested by the 't' command.
+
+ Imaginative readers will find uses for this script. An example is
+-reversing the output of `banner'.(1)
++reversing the output of 'banner'.(1)
+
+ #!/usr/bin/sed -f
+
+@@ -1521,10 +1511,10 @@ File: sed.info, Node: tac, Next: cat -n, Prev: Reverse chars of lines, Up: E
+ ==========================
+
+ This one begins a series of totally useless (yet interesting) scripts
+-emulating various Unix commands. This, in particular, is a `tac'
++emulating various Unix commands. This, in particular, is a 'tac'
+ workalike.
+
+- Note that on implementations other than GNU `sed' this script might
++ Note that on implementations other than GNU 'sed' this script might
+ easily overflow internal buffers.
+
+ #!/usr/bin/sed -nf
+@@ -1547,13 +1537,13 @@ File: sed.info, Node: cat -n, Next: cat -b, Prev: tac, Up: Examples
+ 4.7 Numbering Lines
+ ===================
+
+-This script replaces `cat -n'; in fact it formats its output exactly
+-like GNU `cat' does.
++This script replaces 'cat -n'; in fact it formats its output exactly
++like GNU 'cat' does.
+
+- Of course this is completely useless and for two reasons: first,
++ Of course this is completely useless and for two reasons: first,
+ because somebody else did it in C, second, because the following
+-Bourne-shell script could be used for the same purpose and would be
+-much faster:
++Bourne-shell script could be used for the same purpose and would be much
++faster:
+
+ #! /bin/sh
+ sed -e "=" $@ | sed -e '
+@@ -1562,16 +1552,16 @@ much faster:
+ s/^ *\(......\)\n/\1 /
+ '
+
+- It uses `sed' to print the line number, then groups lines two by two
+-using `N'. Of course, this script does not teach as much as the one
++ It uses 'sed' to print the line number, then groups lines two by two
++using 'N'. Of course, this script does not teach as much as the one
+ presented below.
+
+- The algorithm used for incrementing uses both buffers, so the line
+-is printed as soon as possible and then discarded. The number is split
+-so that changing digits go in a buffer and unchanged ones go in the
+-other; the changed digits are modified in a single step (using a `y'
+-command). The line number for the next line is then composed and
+-stored in the hold space, to be used in the next iteration.
++ The algorithm used for incrementing uses both buffers, so the line is
++printed as soon as possible and then discarded. The number is split so
++that changing digits go in a buffer and unchanged ones go in the other;
++the changed digits are modified in a single step (using a 'y' command).
++The line number for the next line is then composed and stored in the
++hold space, to be used in the next iteration.
+
+ #!/usr/bin/sed -nf
+
+@@ -1616,11 +1606,11 @@ File: sed.info, Node: cat -b, Next: wc -c, Prev: cat -n, Up: Examples
+ 4.8 Numbering Non-blank Lines
+ =============================
+
+-Emulating `cat -b' is almost the same as `cat -n'--we only have to
++Emulating 'cat -b' is almost the same as 'cat -n'--we only have to
+ select which lines are to be numbered and which are not.
+
+ The part that is common to this script and the previous one is not
+-commented to show how important it is to comment `sed' scripts
++commented to show how important it is to comment 'sed' scripts
+ properly...
+
+ #!/usr/bin/sed -nf
+@@ -1656,13 +1646,13 @@ File: sed.info, Node: wc -c, Next: wc -w, Prev: cat -b, Up: Examples
+ 4.9 Counting Characters
+ =======================
+
+-This script shows another way to do arithmetic with `sed'. In this
+-case we have to add possibly large numbers, so implementing this by
++This script shows another way to do arithmetic with 'sed'. In this case
++we have to add possibly large numbers, so implementing this by
+ successive increments would not be feasible (and possibly even more
+ complicated to contrive than this script).
+
+ The approach is to map numbers to letters, kind of an abacus
+-implemented with `sed'. `a's are units, `b's are tens and so on: we
++implemented with 'sed'. 'a's are units, 'b's are tens and so on: we
+ simply add the number of characters on the current line as units, and
+ then propagate the carry to tens, hundreds, and so on.
+
+@@ -1670,9 +1660,9 @@ then propagate the carry to tens, hundreds, and so on.
+
+ On the last line, we convert the abacus form back to decimal. For
+ the sake of variety, this is done with a loop rather than with some 80
+-`s' commands(1): first we convert units, removing `a's from the number;
+-then we rotate letters so that tens become `a's, and so on until no
+-more letters remain.
++'s' commands(1): first we convert units, removing 'a's from the number;
++then we rotate letters so that tens become 'a's, and so on until no more
++letters remain.
+
+ #!/usr/bin/sed -nf
+
+@@ -1730,17 +1720,16 @@ File: sed.info, Node: wc -w, Next: wc -l, Prev: wc -c, Up: Examples
+ ===================
+
+ This script is almost the same as the previous one, once each of the
+-words on the line is converted to a single `a' (in the previous script
+-each letter was changed to an `a').
++words on the line is converted to a single 'a' (in the previous script
++each letter was changed to an 'a').
+
+- It is interesting that real `wc' programs have optimized loops for
+-`wc -c', so they are much slower at counting words rather than
+-characters. This script's bottleneck, instead, is arithmetic, and
+-hence the word-counting one is faster (it has to manage smaller
+-numbers).
++ It is interesting that real 'wc' programs have optimized loops for
++'wc -c', so they are much slower at counting words rather than
++characters. This script's bottleneck, instead, is arithmetic, and hence
++the word-counting one is faster (it has to manage smaller numbers).
+
+ Again, the common parts are not commented to show the importance of
+-commenting `sed' scripts.
++commenting 'sed' scripts.
+
+ #!/usr/bin/sed -nf
+
+@@ -1787,8 +1776,8 @@ File: sed.info, Node: wc -l, Next: head, Prev: wc -w, Up: Examples
+ 4.11 Counting Lines
+ ===================
+
+-No strange things are done now, because `sed' gives us `wc -l'
+-functionality for free!!! Look:
++No strange things are done now, because 'sed' gives us 'wc -l'
++functionality for free!!! Look:
+
+ #!/usr/bin/sed -nf
+ $=
+@@ -1799,9 +1788,9 @@ File: sed.info, Node: head, Next: tail, Prev: wc -l, Up: Examples
+ 4.12 Printing the First Lines
+ =============================
+
+-This script is probably the simplest useful `sed' script. It displays
++This script is probably the simplest useful 'sed' script. It displays
+ the first 10 lines of input; the number of displayed lines is right
+-before the `q' command.
++before the 'q' command.
+
+ #!/usr/bin/sed -f
+ 10q
+@@ -1816,8 +1805,8 @@ Printing the last N lines rather than the first is more complex but
+ indeed possible. N is encoded in the second line, before the bang
+ character.
+
+- This script is similar to the `tac' script in that it keeps the
+-final output in the hold space and prints it at the end:
++ This script is similar to the 'tac' script in that it keeps the final
++output in the hold space and prints it at the end:
+
+ #!/usr/bin/sed -nf
+
+@@ -1828,20 +1817,20 @@ final output in the hold space and prints it at the end:
+
+ Mainly, the scripts keeps a window of 10 lines and slides it by
+ adding a line and deleting the oldest (the substitution command on the
+-second line works like a `D' command but does not restart the loop).
++second line works like a 'D' command but does not restart the loop).
+
+ The "sliding window" technique is a very powerful way to write
+-efficient and complex `sed' scripts, because commands like `P' would
++efficient and complex 'sed' scripts, because commands like 'P' would
+ require a lot of work if implemented manually.
+
+ To introduce the technique, which is fully demonstrated in the rest
+-of this chapter and is based on the `N', `P' and `D' commands, here is
+-an implementation of `tail' using a simple "sliding window."
++of this chapter and is based on the 'N', 'P' and 'D' commands, here is
++an implementation of 'tail' using a simple "sliding window."
+
+ This looks complicated but in fact the working is the same as the
+ last script: after we have kicked in the appropriate number of lines,
+ however, we stop using the hold space to keep inter-line state, and
+-instead use `N' and `D' to slide pattern space by one line:
++instead use 'N' and 'D' to slide pattern space by one line:
+
+ #!/usr/bin/sed -f
+
+@@ -1863,7 +1852,7 @@ File: sed.info, Node: uniq, Next: uniq -d, Prev: tail, Up: Examples
+ 4.14 Make Duplicate Lines Unique
+ ================================
+
+-This is an example of the art of using the `N', `P' and `D' commands,
++This is an example of the art of using the 'N', 'P' and 'D' commands,
+ probably the most difficult to master.
+
+ #!/usr/bin/sed -f
+@@ -1880,7 +1869,7 @@ probably the most difficult to master.
+ bb
+ }
+
+- # If the `N' command had added the last line, print and exit
++ # If the N command had added the last line, print and exit
+ $b
+
+ # The lines are different; print the first and go
+@@ -1888,8 +1877,8 @@ probably the most difficult to master.
+ P
+ D
+
+- As you can see, we mantain a 2-line window using `P' and `D'. This
+-technique is often used in advanced `sed' scripts.
++ As you can see, we mantain a 2-line window using 'P' and 'D'. This
++technique is often used in advanced 'sed' scripts.
+
+ 
+ File: sed.info, Node: uniq -d, Next: uniq -u, Prev: uniq, Up: Examples
+@@ -1897,7 +1886,7 @@ File: sed.info, Node: uniq -d, Next: uniq -u, Prev: uniq, Up: Examples
+ 4.15 Print Duplicated Lines of Input
+ ====================================
+
+-This script prints only duplicated lines, like `uniq -d'.
++This script prints only duplicated lines, like 'uniq -d'.
+
+ #!/usr/bin/sed -nf
+
+@@ -1931,7 +1920,7 @@ File: sed.info, Node: uniq -u, Next: cat -s, Prev: uniq -d, Up: Examples
+ 4.16 Remove All Duplicated Lines
+ ================================
+
+-This script prints only unique lines, like `uniq -u'.
++This script prints only unique lines, like 'uniq -u'.
+
+ #!/usr/bin/sed -f
+
+@@ -1948,7 +1937,7 @@ This script prints only unique lines, like `uniq -u'.
+ # end of the file we simply exit
+ $d
+
+- # Else, we keep reading lines with `N' until we
++ # Else, we keep reading lines with N until we
+ # find a different one
+ s/.*\n//
+ N
+@@ -1966,9 +1955,9 @@ File: sed.info, Node: cat -s, Prev: uniq -u, Up: Examples
+ 4.17 Squeezing Blank Lines
+ ==========================
+
+-As a final example, here are three scripts, of increasing complexity
+-and speed, that implement the same function as `cat -s', that is
+-squeezing blank lines.
++As a final example, here are three scripts, of increasing complexity and
++speed, that implement the same function as 'cat -s', that is squeezing
++blank lines.
+
+ The first leaves a blank line at the beginning and end if there are
+ some already.
+@@ -2008,9 +1997,9 @@ beginning. It does leave a single blank line at end if one was there.
+ }
+
+ This removes leading and trailing blank lines. It is also the
+-fastest. Note that loops are completely done with `n' and `b', without
+-relying on `sed' to restart the the script automatically at the end of
+-a line.
++fastest. Note that loops are completely done with 'n' and 'b', without
++relying on 'sed' to restart the the script automatically at the end of a
++line.
+
+ #!/usr/bin/sed -nf
+
+@@ -2044,15 +2033,15 @@ a line.
+ 
+ File: sed.info, Node: Limitations, Next: Other Resources, Prev: Examples, Up: Top
+
+-5 GNU `sed''s Limitations and Non-limitations
++5 GNU 'sed''s Limitations and Non-limitations
+ *********************************************
+
+-For those who want to write portable `sed' scripts, be aware that some
++For those who want to write portable 'sed' scripts, be aware that some
+ implementations have been known to limit line lengths (for the pattern
+ and hold spaces) to be no more than 4000 bytes. The POSIX standard
+-specifies that conforming `sed' implementations shall support at least
+-8192 byte line lengths. GNU `sed' has no built-in limit on line length;
+-as long as it can `malloc()' more (virtual) memory, you can feed or
++specifies that conforming 'sed' implementations shall support at least
++8192 byte line lengths. GNU 'sed' has no built-in limit on line length;
++as long as it can 'malloc()' more (virtual) memory, you can feed or
+ construct lines as long as you like.
+
+ However, recursion is used to handle subpatterns and indefinite
+@@ -2062,23 +2051,23 @@ size of the buffer that can be processed by certain patterns.
+ 
+ File: sed.info, Node: Other Resources, Next: Reporting Bugs, Prev: Limitations, Up: Top
+
+-6 Other Resources for Learning About `sed'
++6 Other Resources for Learning About 'sed'
+ ******************************************
+
+-In addition to several books that have been written about `sed' (either
++In addition to several books that have been written about 'sed' (either
+ specifically or as chapters in books which discuss shell programming),
+-one can find out more about `sed' (including suggestions of a few
+-books) from the FAQ for the `sed-users' mailing list, available from:
+- `http://sed.sourceforge.net/sedfaq.html'
++one can find out more about 'sed' (including suggestions of a few books)
++from the FAQ for the 'sed-users' mailing list, available from:
++ <http://sed.sourceforge.net/sedfaq.html>
+
+ Also of interest are
+-`http://www.student.northpark.edu/pemente/sed/index.htm' and
+-`http://sed.sf.net/grabbag', which include `sed' tutorials and other
+-`sed'-related goodies.
++<http://www.student.northpark.edu/pemente/sed/index.htm> and
++<http://sed.sf.net/grabbag>, which include 'sed' tutorials and other
++'sed'-related goodies.
+
+- The `sed-users' mailing list itself maintained by Sven Guckes. To
+-subscribe, visit `http://groups.yahoo.com' and search for the
+-`sed-users' mailing list.
++ The 'sed-users' mailing list itself maintained by Sven Guckes. To
++subscribe, visit <http://groups.yahoo.com> and search for the
++'sed-users' mailing list.
+
+ 
+ File: sed.info, Node: Reporting Bugs, Next: Extended regexps, Prev: Other Resources, Up: Top
+@@ -2086,140 +2075,145 @@ File: sed.info, Node: Reporting Bugs, Next: Extended regexps, Prev: Other Res
+ 7 Reporting Bugs
+ ****************
+
+-Email bug reports to <bug-sed@gnu.org>. Also, please include the
+-output of `sed --version' in the body of your report if at all possible.
++Email bug reports to <bug-sed@gnu.org>. Also, please include the output
++of 'sed --version' in the body of your report if at all possible.
+
+ Please do not send a bug report like this:
+
+ while building frobme-1.3.4
+ $ configure
+- error--> sed: file sedscr line 1: Unknown option to 's'
++ error-> sed: file sedscr line 1: Unknown option to 's'
+
+- If GNU `sed' doesn't configure your favorite package, take a few
++ If GNU 'sed' doesn't configure your favorite package, take a few
+ extra minutes to identify the specific problem and make a stand-alone
+ test case. Unlike other programs such as C compilers, making such test
+-cases for `sed' is quite simple.
++cases for 'sed' is quite simple.
+
+ A stand-alone test case includes all the data necessary to perform
+-the test, and the specific invocation of `sed' that causes the problem.
++the test, and the specific invocation of 'sed' that causes the problem.
+ The smaller a stand-alone test case is, the better. A test case should
+-not involve something as far removed from `sed' as "try to configure
+-frobme-1.3.4". Yes, that is in principle enough information to look
+-for the bug, but that is not a very practical prospect.
++not involve something as far removed from 'sed' as "try to configure
++frobme-1.3.4". Yes, that is in principle enough information to look for
++the bug, but that is not a very practical prospect.
+
+ Here are a few commonly reported bugs that are not bugs.
+
+-`N' command on the last line
+- Most versions of `sed' exit without printing anything when the `N'
+- command is issued on the last line of a file. GNU `sed' prints
+- pattern space before exiting unless of course the `-n' command
++'N' command on the last line
++
++ Most versions of 'sed' exit without printing anything when the 'N'
++ command is issued on the last line of a file. GNU 'sed' prints
++ pattern space before exiting unless of course the '-n' command
+ switch has been specified. This choice is by design.
+
+ For example, the behavior of
+ sed N foo bar
+ would depend on whether foo has an even or an odd number of
+ lines(1). Or, when writing a script to read the next few lines
+- following a pattern match, traditional implementations of `sed'
++ following a pattern match, traditional implementations of 'sed'
+ would force you to write something like
+ /foo/{ $!N; $!N; $!N; $!N; $!N; $!N; $!N; $!N; $!N }
+ instead of just
+ /foo/{ N;N;N;N;N;N;N;N;N; }
+
+- In any case, the simplest workaround is to use `$d;N' in scripts
++ In any case, the simplest workaround is to use '$d;N' in scripts
+ that rely on the traditional behavior, or to set the
+- `POSIXLY_CORRECT' variable to a non-empty value.
++ 'POSIXLY_CORRECT' variable to a non-empty value.
+
+ Regex syntax clashes (problems with backslashes)
+- `sed' uses the POSIX basic regular expression syntax. According to
++ 'sed' uses the POSIX basic regular expression syntax. According to
+ the standard, the meaning of some escape sequences is undefined in
+- this syntax; notable in the case of `sed' are `\|', `\+', `\?',
+- `\`', `\'', `\<', `\>', `\b', `\B', `\w', and `\W'.
++ this syntax; notable in the case of 'sed' are '\|', '\+', '\?',
++ '\`', '\'', '\<', '\>', '\b', '\B', '\w', and '\W'.
+
+ As in all GNU programs that use POSIX basic regular expressions,
+- `sed' interprets these escape sequences as special characters.
+- So, `x\+' matches one or more occurrences of `x'. `abc\|def'
+- matches either `abc' or `def'.
++ 'sed' interprets these escape sequences as special characters. So,
++ 'x\+' matches one or more occurrences of 'x'. 'abc\|def' matches
++ either 'abc' or 'def'.
+
+ This syntax may cause problems when running scripts written for
+- other `sed's. Some `sed' programs have been written with the
+- assumption that `\|' and `\+' match the literal characters `|' and
+- `+'. Such scripts must be modified by removing the spurious
++ other 'sed's. Some 'sed' programs have been written with the
++ assumption that '\|' and '\+' match the literal characters '|' and
++ '+'. Such scripts must be modified by removing the spurious
+ backslashes if they are to be used with modern implementations of
+- `sed', like GNU `sed'.
++ 'sed', like GNU 'sed'.
+
+ On the other hand, some scripts use s|abc\|def||g to remove
+- occurrences of _either_ `abc' or `def'. While this worked until
+- `sed' 4.0.x, newer versions interpret this as removing the string
+- `abc|def'. This is again undefined behavior according to POSIX,
+- and this interpretation is arguably more robust: older `sed's, for
+- example, required that the regex matcher parsed `\/' as `/' in the
+- common case of escaping a slash, which is again undefined
+- behavior; the new behavior avoids this, and this is good because
+- the regex matcher is only partially under our control.
+-
+- In addition, this version of `sed' supports several escape
++ occurrences of _either_ 'abc' or 'def'. While this worked until
++ 'sed' 4.0.x, newer versions interpret this as removing the string
++ 'abc|def'. This is again undefined behavior according to POSIX,
++ and this interpretation is arguably more robust: older 'sed's, for
++ example, required that the regex matcher parsed '\/' as '/' in the
++ common case of escaping a slash, which is again undefined behavior;
++ the new behavior avoids this, and this is good because the regex
++ matcher is only partially under our control.
++
++ In addition, this version of 'sed' supports several escape
+ characters (some of which are multi-character) to insert
+- non-printable characters in scripts (`\a', `\c', `\d', `\o', `\r',
+- `\t', `\v', `\x'). These can cause similar problems with scripts
+- written for other `sed's.
++ non-printable characters in scripts ('\a', '\c', '\d', '\o', '\r',
++ '\t', '\v', '\x'). These can cause similar problems with scripts
++ written for other 'sed's.
+
+-`-i' clobbers read-only files
+- In short, `sed -i' will let you delete the contents of a read-only
+- file, and in general the `-i' option (*note Invocation: Invoking
++'-i' clobbers read-only files
++
++ In short, 'sed -i' will let you delete the contents of a read-only
++ file, and in general the '-i' option (*note Invocation: Invoking
+ sed.) lets you clobber protected files. This is not a bug, but
+ rather a consequence of how the Unix filesystem works.
+
+ The permissions on a file say what can happen to the data in that
+ file, while the permissions on a directory say what can happen to
+- the list of files in that directory. `sed -i' will not ever open
+- for writing a file that is already on disk. Rather, it will work
++ the list of files in that directory. 'sed -i' will not ever open
++ for writing a file that is already on disk. Rather, it will work
+ on a temporary file that is finally renamed to the original name:
+ if you rename or delete files, you're actually modifying the
+ contents of the directory, so the operation depends on the
+ permissions of the directory, not of the file. For this same
+- reason, `sed' does not let you use `-i' on a writeable file in a
++ reason, 'sed' does not let you use '-i' on a writeable file in a
+ read-only directory, and will break hard or symbolic links when
+- `-i' is used on such a file.
++ '-i' is used on such a file.
++
++'0a' does not work (gives an error)
+
+-`0a' does not work (gives an error)
+ There is no line 0. 0 is a special address that is only used to
+- treat addresses like `0,/RE/' as active when the script starts: if
+- you write `1,/abc/d' and the first line includes the word `abc',
++ treat addresses like '0,/RE/' as active when the script starts: if
++ you write '1,/abc/d' and the first line includes the word 'abc',
+ then that match would be ignored because address ranges must span
+ at least two lines (barring the end of the file); but what you
+ probably wanted is to delete every line up to the first one
+- including `abc', and this is obtained with `0,/abc/d'.
++ including 'abc', and this is obtained with '0,/abc/d'.
++
++'[a-z]' is case insensitive
+
+-`[a-z]' is case insensitive
+ You are encountering problems with locales. POSIX mandates that
+- `[a-z]' uses the current locale's collation order - in C parlance,
+- that means using `strcoll(3)' instead of `strcmp(3)'. Some
+- locales have a case-insensitive collation order, others don't.
++ '[a-z]' uses the current locale's collation order - in C parlance,
++ that means using 'strcoll(3)' instead of 'strcmp(3)'. Some locales
++ have a case-insensitive collation order, others don't.
+
+- Another problem is that `[a-z]' tries to use collation symbols.
++ Another problem is that '[a-z]' tries to use collation symbols.
+ This only happens if you are on the GNU system, using GNU libc's
+ regular expression matcher instead of compiling the one supplied
+ with GNU sed. In a Danish locale, for example, the regular
+- expression `^[a-z]$' matches the string `aa', because this is a
+- single collating symbol that comes after `a' and before `b'; `ll'
+- behaves similarly in Spanish locales, or `ij' in Dutch locales.
++ expression '^[a-z]$' matches the string 'aa', because this is a
++ single collating symbol that comes after 'a' and before 'b'; 'll'
++ behaves similarly in Spanish locales, or 'ij' in Dutch locales.
+
+ To work around these problems, which may cause bugs in shell
+- scripts, set the `LC_COLLATE' and `LC_CTYPE' environment variables
+- to `C'.
++ scripts, set the 'LC_COLLATE' and 'LC_CTYPE' environment variables
++ to 'C'.
++
++'s/.*//' does not clear pattern space
+
+-`s/.*//' does not clear pattern space
+ This happens if your input stream includes invalid multibyte
+- sequences. POSIX mandates that such sequences are _not_ matched
+- by `.', so that `s/.*//' will not clear pattern space as you would
++ sequences. POSIX mandates that such sequences are _not_ matched by
++ '.', so that 's/.*//' will not clear pattern space as you would
+ expect. In fact, there is no way to clear sed's buffers in the
+ middle of the script in most multibyte locales (including UTF-8
+- locales). For this reason, GNU `sed' provides a `z' command (for
+- `zap') as an extension.
++ locales). For this reason, GNU 'sed' provides a 'z' command (for
++ 'zap') as an extension.
+
+ To work around these problems, which may cause bugs in shell
+- scripts, set the `LC_COLLATE' and `LC_CTYPE' environment variables
+- to `C'.
++ scripts, set the 'LC_COLLATE' and 'LC_CTYPE' environment variables
++ to 'C'.
+
+ ---------- Footnotes ----------
+
+@@ -2232,33 +2226,32 @@ Appendix A Extended regular expressions
+ ***************************************
+
+ The only difference between basic and extended regular expressions is in
+-the behavior of a few characters: `?', `+', parentheses, braces (`{}'),
+-and `|'. While basic regular expressions require these to be escaped
+-if you want them to behave as special characters, when using extended
++the behavior of a few characters: '?', '+', parentheses, braces ('{}'),
++and '|'. While basic regular expressions require these to be escaped if
++you want them to behave as special characters, when using extended
+ regular expressions you must escape them if you want them _to match a
+-literal character_. `|' is special here because `\|' is a GNU
+-extension - standard basic regular expressions do not provide its
+-functionality.
++literal character_. '|' is special here because '\|' is a GNU extension
++- standard basic regular expressions do not provide its functionality.
+
+ Examples:
+-`abc?'
+- becomes `abc\?' when using extended regular expressions. It
+- matches the literal string `abc?'.
++'abc?'
++ becomes 'abc\?' when using extended regular expressions. It
++ matches the literal string 'abc?'.
+
+-`c\+'
+- becomes `c+' when using extended regular expressions. It matches
+- one or more `c's.
++'c\+'
++ becomes 'c+' when using extended regular expressions. It matches
++ one or more 'c's.
+
+-`a\{3,\}'
+- becomes `a{3,}' when using extended regular expressions. It
+- matches three or more `a's.
++'a\{3,\}'
++ becomes 'a{3,}' when using extended regular expressions. It
++ matches three or more 'a's.
+
+-`\(abc\)\{2,3\}'
+- becomes `(abc){2,3}' when using extended regular expressions. It
+- matches either `abcabc' or `abcabcabc'.
++'\(abc\)\{2,3\}'
++ becomes '(abc){2,3}' when using extended regular expressions. It
++ matches either 'abcabc' or 'abcabcabc'.
+
+-`\(abc*\)\1'
+- becomes `(abc*)\1' when using extended regular expressions.
++'\(abc*\)\1'
++ becomes '(abc*)\1' when using extended regular expressions.
+ Backreferences must still be escaped when using extended regular
+ expressions.
+
+@@ -2269,26 +2262,26 @@ Concept Index
+ *************
+
+ This is a general index of all issues discussed in this manual, with the
+-exception of the `sed' commands and command-line options.
++exception of the 'sed' commands and command-line options.
+
+
+ * Menu:
+
+-* 0 address: Reporting Bugs. (line 102)
+-* Additional reading about sed: Other Resources. (line 6)
+-* ADDR1,+N: Addresses. (line 80)
+-* ADDR1,~N: Addresses. (line 80)
++* '0' address: Reporting Bugs. (line 104)
++* Additional reading about 'sed': Other Resources. (line 6)
++* ADDR1,+N: Addresses. (line 79)
++* ADDR1,~N: Addresses. (line 79)
+ * Address, as a regular expression: Addresses. (line 27)
+ * Address, last line: Addresses. (line 22)
+ * Address, numeric: Addresses. (line 8)
+-* Addresses, in sed scripts: Addresses. (line 6)
++* Addresses, in 'sed' scripts: Addresses. (line 6)
+ * Append hold space to pattern space: Other Commands. (line 125)
+ * Append next input line to pattern space: Other Commands. (line 105)
+ * Append pattern space to hold space: Other Commands. (line 117)
+ * Appending text after a line: Other Commands. (line 27)
+ * Backreferences, in regular expressions: The "s" Command. (line 19)
+-* Branch to a label, if s/// failed: Extended Commands. (line 71)
+-* Branch to a label, if s/// succeeded: Programming Commands.
++* Branch to a label, if 's///' failed: Extended Commands. (line 71)
++* Branch to a label, if 's///' succeeded: Programming Commands.
+ (line 22)
+ * Branch to a label, unconditionally: Programming Commands.
+ (line 18)
+@@ -2298,91 +2291,105 @@ exception of the `sed' commands and command-line options.
+ * Caveat -- #n on first line: Common Commands. (line 20)
+ * Command groups: Common Commands. (line 50)
+ * Comments, in scripts: Common Commands. (line 12)
+-* Conditional branch <1>: Extended Commands. (line 71)
+ * Conditional branch: Programming Commands.
+ (line 22)
++* Conditional branch <1>: Extended Commands. (line 71)
+ * Copy hold space into pattern space: Other Commands. (line 121)
+ * Copy pattern space into hold space: Other Commands. (line 113)
+ * Delete first line from pattern space: Other Commands. (line 99)
+ * Disabling autoprint, from command line: Invoking sed. (line 34)
+ * empty regular expression: Addresses. (line 31)
+-* Emptying pattern space <1>: Reporting Bugs. (line 129)
+ * Emptying pattern space: Extended Commands. (line 93)
++* Emptying pattern space <1>: Reporting Bugs. (line 133)
+ * Evaluate Bourne-shell commands: Extended Commands. (line 12)
+ * Evaluate Bourne-shell commands, after substitution: The "s" Command.
+ (line 103)
+ * Exchange hold space with pattern space: Other Commands. (line 129)
+-* Excluding lines: Addresses. (line 103)
+-* Extended regular expressions, choosing: Invoking sed. (line 113)
++* Excluding lines: Addresses. (line 102)
++* Extended regular expressions, choosing: Invoking sed. (line 112)
+ * Extended regular expressions, syntax: Extended regexps. (line 6)
+ * File name, printing: Extended Commands. (line 30)
+-* Files to be processed as input: Invoking sed. (line 148)
++* Files to be processed as input: Invoking sed. (line 147)
+ * Flow of control in scripts: Programming Commands.
+ (line 11)
+ * Global substitution: The "s" Command. (line 69)
+-* GNU extensions, /dev/stderr file <1>: Other Commands. (line 88)
+-* GNU extensions, /dev/stderr file: The "s" Command. (line 96)
+-* GNU extensions, /dev/stdin file <1>: Extended Commands. (line 61)
+-* GNU extensions, /dev/stdin file: Other Commands. (line 78)
+-* GNU extensions, /dev/stdout file <1>: Other Commands. (line 88)
+-* GNU extensions, /dev/stdout file <2>: The "s" Command. (line 96)
+-* GNU extensions, /dev/stdout file: Invoking sed. (line 156)
+-* GNU extensions, 0 address <1>: Reporting Bugs. (line 102)
+-* GNU extensions, 0 address: Addresses. (line 80)
+-* GNU extensions, 0,ADDR2 addressing: Addresses. (line 80)
+-* GNU extensions, ADDR1,+N addressing: Addresses. (line 80)
+-* GNU extensions, ADDR1,~N addressing: Addresses. (line 80)
+-* GNU extensions, branch if s/// failed: Extended Commands. (line 71)
+-* GNU extensions, case modifiers in s commands: The "s" Command.
++* GNU extensions, '/dev/stderr' file: The "s" Command. (line 96)
++* GNU extensions, '/dev/stderr' file <1>: Other Commands. (line 88)
++* GNU extensions, '/dev/stdin' file: Other Commands. (line 78)
++* GNU extensions, '/dev/stdin' file <1>: Extended Commands. (line 61)
++* GNU extensions, '/dev/stdout' file: Invoking sed. (line 155)
++* GNU extensions, '/dev/stdout' file <1>: The "s" Command. (line 96)
++* GNU extensions, '/dev/stdout' file <2>: Other Commands. (line 88)
++* GNU extensions, '0' address: Addresses. (line 79)
++* GNU extensions, '0' address <1>: Reporting Bugs. (line 104)
++* GNU extensions, 0,ADDR2 addressing: Addresses. (line 79)
++* GNU extensions, ADDR1,+N addressing: Addresses. (line 79)
++* GNU extensions, ADDR1,~N addressing: Addresses. (line 79)
++* GNU extensions, branch if 's///' failed: Extended Commands. (line 71)
++* GNU extensions, case modifiers in 's' commands: The "s" Command.
+ (line 23)
+ * GNU extensions, checking for their presence: Extended Commands.
+ (line 77)
+-* GNU extensions, disabling: Invoking sed. (line 81)
+-* GNU extensions, emptying pattern space <1>: Reporting Bugs. (line 129)
++* GNU extensions, disabling: Invoking sed. (line 80)
+ * GNU extensions, emptying pattern space: Extended Commands. (line 93)
+-* GNU extensions, evaluating Bourne-shell commands <1>: Extended Commands.
+- (line 12)
++* GNU extensions, emptying pattern space <1>: Reporting Bugs. (line 133)
+ * GNU extensions, evaluating Bourne-shell commands: The "s" Command.
+ (line 103)
+-* GNU extensions, extended regular expressions: Invoking sed. (line 113)
+-* GNU extensions, g and NUMBER modifier interaction in s command: The "s" Command.
++* GNU extensions, evaluating Bourne-shell commands <1>: Extended Commands.
++ (line 12)
++* GNU extensions, extended regular expressions: Invoking sed. (line 112)
++* GNU extensions, 'g' and NUMBER modifier interaction in 's' command: The "s" Command.
+ (line 75)
+-* GNU extensions, I modifier <1>: The "s" Command. (line 112)
+-* GNU extensions, I modifier: Addresses. (line 49)
+-* GNU extensions, in-place editing <1>: Reporting Bugs. (line 84)
++* GNU extensions, 'I' modifier: Addresses. (line 49)
++* GNU extensions, 'I' modifier <1>: The "s" Command. (line 112)
+ * GNU extensions, in-place editing: Invoking sed. (line 51)
+-* GNU extensions, L command: Extended Commands. (line 34)
+-* GNU extensions, M modifier <1>: The "s" Command. (line 117)
+-* GNU extensions, M modifier: Addresses. (line 54)
++* GNU extensions, in-place editing <1>: Reporting Bugs. (line 85)
++* GNU extensions, 'L' command: Extended Commands. (line 34)
++* GNU extensions, 'M' modifier: Addresses. (line 54)
++* GNU extensions, 'M' modifier <1>: The "s" Command. (line 117)
+ * GNU extensions, modifiers and the empty regular expression: Addresses.
+ (line 31)
+-* GNU extensions, N~M addresses: Addresses. (line 13)
++* GNU extensions, 'N~M' addresses: Addresses. (line 13)
+ * GNU extensions, quitting silently: Extended Commands. (line 44)
+-* GNU extensions, R command: Extended Commands. (line 61)
++* GNU extensions, 'R' command: Extended Commands. (line 61)
+ * GNU extensions, reading a file a line at a time: Extended Commands.
+ (line 61)
+ * GNU extensions, reformatting paragraphs: Extended Commands. (line 34)
++* GNU extensions, returning an exit code: Common Commands. (line 30)
+ * GNU extensions, returning an exit code <1>: Extended Commands.
+ (line 44)
+-* GNU extensions, returning an exit code: Common Commands. (line 30)
+ * GNU extensions, setting line length: Other Commands. (line 65)
+-* GNU extensions, special escapes <1>: Reporting Bugs. (line 77)
+ * GNU extensions, special escapes: Escapes. (line 6)
+-* GNU extensions, special two-address forms: Addresses. (line 80)
+-* GNU extensions, subprocesses <1>: Extended Commands. (line 12)
++* GNU extensions, special escapes <1>: Reporting Bugs. (line 78)
++* GNU extensions, special two-address forms: Addresses. (line 79)
+ * GNU extensions, subprocesses: The "s" Command. (line 103)
+-* GNU extensions, to basic regular expressions <1>: Reporting Bugs.
+- (line 50)
++* GNU extensions, subprocesses <1>: Extended Commands. (line 12)
+ * GNU extensions, to basic regular expressions: Regular Expressions.
+ (line 26)
++* GNU extensions, to basic regular expressions <1>: Regular Expressions.
++ (line 37)
++* GNU extensions, to basic regular expressions <2>: Regular Expressions.
++ (line 40)
++* GNU extensions, to basic regular expressions <3>: Regular Expressions.
++ (line 55)
++* GNU extensions, to basic regular expressions <4>: Regular Expressions.
++ (line 116)
++* GNU extensions, to basic regular expressions <5>: Reporting Bugs.
++ (line 51)
+ * GNU extensions, two addresses supported by most commands: Other Commands.
+ (line 25)
++* GNU extensions, two addresses supported by most commands <1>: Other Commands.
++ (line 44)
++* GNU extensions, two addresses supported by most commands <2>: Other Commands.
++ (line 60)
++* GNU extensions, two addresses supported by most commands <3>: Other Commands.
++ (line 76)
+ * GNU extensions, unlimited line length: Limitations. (line 6)
+ * GNU extensions, writing first line to a file: Extended Commands.
+ (line 88)
+ * Goto, in scripts: Programming Commands.
+ (line 18)
+-* Greedy regular expression matching: Regular Expressions. (line 143)
++* Greedy regular expression matching: Regular Expressions. (line 142)
+ * Grouping commands: Common Commands. (line 50)
+ * Hold space, appending from pattern space: Other Commands. (line 117)
+ * Hold space, appending to pattern space: Other Commands. (line 125)
+@@ -2390,7 +2397,7 @@ exception of the `sed' commands and command-line options.
+ * Hold space, copying pattern space into: Other Commands. (line 113)
+ * Hold space, definition: Execution Cycle. (line 6)
+ * Hold space, exchange with pattern space: Other Commands. (line 129)
+-* In-place editing: Reporting Bugs. (line 84)
++* In-place editing: Reporting Bugs. (line 85)
+ * In-place editing, activating: Invoking sed. (line 51)
+ * In-place editing, Perl-style backup file names: Invoking sed.
+ (line 62)
+@@ -2398,45 +2405,46 @@ exception of the `sed' commands and command-line options.
+ * Labels, in scripts: Programming Commands.
+ (line 14)
+ * Last line, selecting: Addresses. (line 22)
++* Line length, setting: Invoking sed. (line 75)
+ * Line length, setting <1>: Other Commands. (line 65)
+-* Line length, setting: Invoking sed. (line 76)
+ * Line number, printing: Other Commands. (line 62)
+ * Line selection: Addresses. (line 6)
+ * Line, selecting by number: Addresses. (line 8)
+ * Line, selecting by regular expression match: Addresses. (line 27)
+ * Line, selecting last: Addresses. (line 22)
+ * List pattern space: Other Commands. (line 65)
+-* Mixing g and NUMBER modifiers in the s command: The "s" Command.
++* Mixing 'g' and NUMBER modifiers in the 's' command: The "s" Command.
+ (line 75)
+ * Next input line, append to pattern space: Other Commands. (line 105)
+ * Next input line, replace pattern space with: Common Commands.
+ (line 44)
+-* Non-bugs, 0 address: Reporting Bugs. (line 102)
+-* Non-bugs, in-place editing: Reporting Bugs. (line 84)
+-* Non-bugs, localization-related: Reporting Bugs. (line 111)
+-* Non-bugs, N command on the last line: Reporting Bugs. (line 30)
+-* Non-bugs, regex syntax clashes: Reporting Bugs. (line 50)
++* Non-bugs, '0' address: Reporting Bugs. (line 104)
++* Non-bugs, in-place editing: Reporting Bugs. (line 85)
++* Non-bugs, localization-related: Reporting Bugs. (line 114)
++* Non-bugs, localization-related <1>: Reporting Bugs. (line 133)
++* Non-bugs, 'N' command on the last line: Reporting Bugs. (line 30)
++* Non-bugs, regex syntax clashes: Reporting Bugs. (line 51)
+ * Parenthesized substrings: The "s" Command. (line 19)
+ * Pattern space, definition: Execution Cycle. (line 6)
+ * Portability, comments: Common Commands. (line 15)
+ * Portability, line length limitations: Limitations. (line 6)
+-* Portability, N command on the last line: Reporting Bugs. (line 30)
+-* POSIXLY_CORRECT behavior, bracket expressions: Regular Expressions.
++* Portability, 'N' command on the last line: Reporting Bugs. (line 30)
++* 'POSIXLY_CORRECT' behavior, bracket expressions: Regular Expressions.
+ (line 105)
+-* POSIXLY_CORRECT behavior, enabling: Invoking sed. (line 84)
+-* POSIXLY_CORRECT behavior, escapes: Escapes. (line 11)
+-* POSIXLY_CORRECT behavior, N command: Reporting Bugs. (line 45)
++* 'POSIXLY_CORRECT' behavior, enabling: Invoking sed. (line 83)
++* 'POSIXLY_CORRECT' behavior, escapes: Escapes. (line 11)
++* 'POSIXLY_CORRECT' behavior, 'N' command: Reporting Bugs. (line 46)
+ * Print first line from pattern space: Other Commands. (line 110)
+ * Printing file name: Extended Commands. (line 30)
+ * Printing line number: Other Commands. (line 62)
+ * Printing text unambiguously: Other Commands. (line 65)
+-* Quitting <1>: Extended Commands. (line 44)
+ * Quitting: Common Commands. (line 30)
+-* Range of lines: Addresses. (line 67)
+-* Range with start address of zero: Addresses. (line 80)
++* Quitting <1>: Extended Commands. (line 44)
++* Range of lines: Addresses. (line 66)
++* Range with start address of zero: Addresses. (line 79)
+ * Read next input line: Common Commands. (line 44)
+-* Read text from a file <1>: Extended Commands. (line 61)
+ * Read text from a file: Other Commands. (line 78)
++* Read text from a file <1>: Extended Commands. (line 61)
+ * Reformat pattern space: Extended Commands. (line 34)
+ * Reformatting paragraphs: Extended Commands. (line 34)
+ * Replace hold space with copy of pattern space: Other Commands.
+@@ -2448,21 +2456,21 @@ exception of the `sed' commands and command-line options.
+ * Replacing only Nth match of regexp in a line: The "s" Command.
+ (line 73)
+ * Replacing selected lines with other text: Other Commands. (line 52)
+-* Requiring GNU sed: Extended Commands. (line 77)
++* Requiring GNU 'sed': Extended Commands. (line 77)
+ * Script structure: sed Programs. (line 6)
+ * Script, from a file: Invoking sed. (line 46)
+ * Script, from command line: Invoking sed. (line 41)
+-* sed program structure: sed Programs. (line 6)
++* 'sed' program structure: sed Programs. (line 6)
+ * Selecting lines to process: Addresses. (line 6)
+-* Selecting non-matching lines: Addresses. (line 103)
+-* Several lines, selecting: Addresses. (line 67)
++* Selecting non-matching lines: Addresses. (line 102)
++* Several lines, selecting: Addresses. (line 66)
+ * Slash character, in regular expressions: Addresses. (line 41)
+ * Spaces, pattern and hold: Execution Cycle. (line 6)
+-* Special addressing forms: Addresses. (line 80)
+-* Standard input, processing as input: Invoking sed. (line 150)
++* Special addressing forms: Addresses. (line 79)
++* Standard input, processing as input: Invoking sed. (line 149)
+ * Stream editor: Introduction. (line 6)
+-* Subprocesses <1>: Extended Commands. (line 12)
+ * Subprocesses: The "s" Command. (line 103)
++* Subprocesses <1>: Extended Commands. (line 12)
+ * Substitution of text, options: The "s" Command. (line 65)
+ * Text, appending: Other Commands. (line 27)
+ * Text, deleting: Common Commands. (line 36)
+@@ -2472,13 +2480,13 @@ exception of the `sed' commands and command-line options.
+ * Text, writing to a file after substitution: The "s" Command.
+ (line 96)
+ * Transliteration: Other Commands. (line 14)
+-* Unbuffered I/O, choosing: Invoking sed. (line 131)
++* Unbuffered I/O, choosing: Invoking sed. (line 130)
+ * Usage summary, printing: Invoking sed. (line 28)
+ * Version, printing: Invoking sed. (line 24)
+-* Working on separate files: Invoking sed. (line 121)
++* Working on separate files: Invoking sed. (line 120)
+ * Write first line to a file: Extended Commands. (line 88)
+ * Write to a file: Other Commands. (line 88)
+-* Zero, as range start address: Addresses. (line 80)
++* Zero, as range start address: Addresses. (line 79)
+
+ 
+ File: sed.info, Node: Command and Option Index, Prev: Concept Index, Up: Top
+@@ -2486,43 +2494,44 @@ File: sed.info, Node: Command and Option Index, Prev: Concept Index, Up: Top
+ Command and Option Index
+ ************************
+
+-This is an alphabetical list of all `sed' commands and command-line
++This is an alphabetical list of all 'sed' commands and command-line
+ options.
+
+
+ * Menu:
+
+ * # (comments): Common Commands. (line 12)
+-* --binary: Invoking sed. (line 93)
++* --binary: Invoking sed. (line 92)
+ * --expression: Invoking sed. (line 41)
+ * --file: Invoking sed. (line 46)
+-* --follow-symlinks: Invoking sed. (line 104)
++* --follow-symlinks: Invoking sed. (line 103)
+ * --help: Invoking sed. (line 28)
+ * --in-place: Invoking sed. (line 51)
+-* --line-length: Invoking sed. (line 76)
+-* --null-data: Invoking sed. (line 139)
+-* --posix: Invoking sed. (line 81)
++* --line-length: Invoking sed. (line 75)
++* --null-data: Invoking sed. (line 138)
++* --posix: Invoking sed. (line 80)
+ * --quiet: Invoking sed. (line 34)
+-* --regexp-extended: Invoking sed. (line 113)
+-* --separate: Invoking sed. (line 121)
++* --regexp-extended: Invoking sed. (line 112)
++* --separate: Invoking sed. (line 120)
+ * --silent: Invoking sed. (line 34)
+-* --unbuffered: Invoking sed. (line 131)
++* --unbuffered: Invoking sed. (line 130)
+ * --version: Invoking sed. (line 24)
+-* --zero-terminated: Invoking sed. (line 139)
+-* -b: Invoking sed. (line 93)
++* --zero-terminated: Invoking sed. (line 138)
++* -b: Invoking sed. (line 92)
+ * -e: Invoking sed. (line 41)
+ * -f: Invoking sed. (line 46)
+ * -i: Invoking sed. (line 51)
+-* -l: Invoking sed. (line 76)
++* -l: Invoking sed. (line 75)
+ * -n: Invoking sed. (line 34)
+ * -n, forcing from within a script: Common Commands. (line 20)
+-* -r: Invoking sed. (line 113)
+-* -s: Invoking sed. (line 121)
+-* -u: Invoking sed. (line 131)
+-* -z: Invoking sed. (line 139)
++* -r: Invoking sed. (line 112)
++* -s: Invoking sed. (line 120)
++* -u: Invoking sed. (line 130)
++* -z: Invoking sed. (line 138)
+ * : (label) command: Programming Commands.
+ (line 14)
+ * = (print line number) command: Other Commands. (line 62)
++* {} command grouping: Common Commands. (line 50)
+ * a (append text lines) command: Other Commands. (line 27)
+ * b (branch) command: Programming Commands.
+ (line 18)
+@@ -2556,57 +2565,56 @@ options.
+ * x (eXchange) command: Other Commands. (line 129)
+ * y (transliterate) command: Other Commands. (line 14)
+ * z (Zap) command: Extended Commands. (line 93)
+-* {} command grouping: Common Commands. (line 50)
+
+
+ 
+ Tag Table:
+-Node: Top944
+-Node: Introduction3867
+-Node: Invoking sed4421
+-Ref: Invoking sed-Footnote-110793
+-Ref: Invoking sed-Footnote-210985
+-Node: sed Programs11084
+-Node: Execution Cycle12617
+-Ref: Execution Cycle-Footnote-113794
+-Node: Addresses14095
+-Node: Regular Expressions18996
+-Node: Common Commands26905
+-Node: The "s" Command28908
+-Ref: The "s" Command-Footnote-134229
+-Node: Other Commands34301
+-Ref: Other Commands-Footnote-139501
+-Node: Programming Commands39573
+-Node: Extended Commands40487
+-Node: Escapes44752
+-Ref: Escapes-Footnote-147763
+-Node: Examples47954
+-Node: Centering lines49050
+-Node: Increment a number49942
+-Ref: Increment a number-Footnote-151419
+-Node: Rename files to lower case51539
+-Node: Print bash environment54312
+-Node: Reverse chars of lines55067
+-Ref: Reverse chars of lines-Footnote-156068
+-Node: tac56285
+-Node: cat -n57052
+-Node: cat -b58874
+-Node: wc -c59621
+-Ref: wc -c-Footnote-161529
+-Node: wc -w61598
+-Node: wc -l63062
+-Node: head63306
+-Node: tail63637
+-Node: uniq65318
+-Node: uniq -d66106
+-Node: uniq -u66817
+-Node: cat -s67528
+-Node: Limitations69379
+-Node: Other Resources70220
+-Node: Reporting Bugs71065
+-Ref: Reporting Bugs-Footnote-178131
+-Node: Extended regexps78202
+-Node: Concept Index79517
+-Node: Command and Option Index94612
++Node: Top915
++Node: Introduction3838
++Node: Invoking sed4392
++Ref: Invoking sed-Footnote-110758
++Ref: Invoking sed-Footnote-210950
++Node: sed Programs11049
++Node: Execution Cycle12582
++Ref: Execution Cycle-Footnote-113762
++Node: Addresses14063
++Node: Regular Expressions18963
++Node: Common Commands26872
++Node: The "s" Command28874
++Ref: The "s" Command-Footnote-134194
++Node: Other Commands34266
++Ref: Other Commands-Footnote-139465
++Node: Programming Commands39537
++Node: Extended Commands40450
++Node: Escapes44712
++Ref: Escapes-Footnote-147722
++Node: Examples47913
++Node: Centering lines49009
++Node: Increment a number49901
++Ref: Increment a number-Footnote-151378
++Node: Rename files to lower case51498
++Node: Print bash environment54271
++Node: Reverse chars of lines55026
++Ref: Reverse chars of lines-Footnote-156027
++Node: tac56244
++Node: cat -n57011
++Node: cat -b58831
++Node: wc -c59578
++Ref: wc -c-Footnote-161486
++Node: wc -w61555
++Node: wc -l63019
++Node: head63264
++Node: tail63595
++Node: uniq65276
++Node: uniq -d66062
++Node: uniq -u66773
++Node: cat -s67482
++Node: Limitations69333
++Node: Other Resources70174
++Node: Reporting Bugs71019
++Ref: Reporting Bugs-Footnote-178088
++Node: Extended regexps78159
++Node: Concept Index79474
++Node: Command and Option Index95698
+ 
+ End Tag Table
+diff --git a/doc/stamp-vti b/doc/stamp-vti
+index 0a7839c..e61a78f 100644
+--- a/doc/stamp-vti
++++ b/doc/stamp-vti
+@@ -1,4 +1,4 @@
+-@set UPDATED 22 December 2012
+-@set UPDATED-MONTH December 2012
++@set UPDATED 16 May 2016
++@set UPDATED-MONTH May 2016
+ @set EDITION 4.2.2
+ @set VERSION 4.2.2
+diff --git a/doc/version.texi b/doc/version.texi
+index 0a7839c..e61a78f 100644
+--- a/doc/version.texi
++++ b/doc/version.texi
+@@ -1,4 +1,4 @@
+-@set UPDATED 22 December 2012
+-@set UPDATED-MONTH December 2012
++@set UPDATED 16 May 2016
++@set UPDATED-MONTH May 2016
+ @set EDITION 4.2.2
+ @set VERSION 4.2.2
+diff --git a/lib/Makefile.in b/lib/Makefile.in
+index 00c857f..544b627 100644
+--- a/lib/Makefile.in
++++ b/lib/Makefile.in
+@@ -1,7 +1,7 @@
+-# Makefile.in generated by automake 1.12.2 from Makefile.am.
++# Makefile.in generated by automake 1.15 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
++# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -40,23 +40,61 @@
+
+
+ VPATH = @srcdir@
+-am__make_dryrun = \
+- { \
+- am__dry=no; \
++am__is_gnu_make = { \
++ if test -z '$(MAKELEVEL)'; then \
++ false; \
++ elif test -n '$(MAKE_HOST)'; then \
++ true; \
++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
++ true; \
++ else \
++ false; \
++ fi; \
++}
++am__make_running_with_option = \
++ case $${target_option-} in \
++ ?) ;; \
++ *) echo "am__make_running_with_option: internal error: invalid" \
++ "target option '$${target_option-}' specified" >&2; \
++ exit 1;; \
++ esac; \
++ has_opt=no; \
++ sane_makeflags=$$MAKEFLAGS; \
++ if $(am__is_gnu_make); then \
++ sane_makeflags=$$MFLAGS; \
++ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+- *) \
+- for am__flg in $$MAKEFLAGS; do \
+- case $$am__flg in \
+- *=*|--*) ;; \
+- *n*) am__dry=yes; break;; \
+- esac; \
+- done;; \
++ bs=\\; \
++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
++ esac; \
++ fi; \
++ skip_next=no; \
++ strip_trailopt () \
++ { \
++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
++ }; \
++ for flg in $$sane_makeflags; do \
++ test $$skip_next = yes && { skip_next=no; continue; }; \
++ case $$flg in \
++ *=*|--*) continue;; \
++ -*I) strip_trailopt 'I'; skip_next=yes;; \
++ -*I?*) strip_trailopt 'I';; \
++ -*O) strip_trailopt 'O'; skip_next=yes;; \
++ -*O?*) strip_trailopt 'O';; \
++ -*l) strip_trailopt 'l'; skip_next=yes;; \
++ -*l?*) strip_trailopt 'l';; \
++ -[dEDm]) skip_next=yes;; \
++ -[JT]) skip_next=yes;; \
+ esac; \
+- test $$am__dry = yes; \
+- }
++ case $$flg in \
++ *$$target_option*) has_opt=yes; break;; \
++ esac; \
++ done; \
++ test $$has_opt = yes
++am__make_dryrun = (target_option=n; $(am__make_running_with_option))
++am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+@@ -74,9 +112,6 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(srcdir)/gnulib.mk \
+- $(top_srcdir)/build-aux/depcomp alloca.c
+ subdir = lib
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+@@ -137,11 +172,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
++DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
++ $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LIBRARIES = $(noinst_LIBRARIES)
++AM_V_AR = $(am__v_AR_@AM_V@)
++am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
++am__v_AR_0 = @echo " AR " $@;
++am__v_AR_1 =
+ libsed_a_AR = $(AR) $(ARFLAGS)
+ am__DEPENDENCIES_1 =
+ am_libsed_a_OBJECTS = set-mode-acl.$(OBJEXT) copy-acl.$(OBJEXT) \
+@@ -156,23 +197,44 @@ am_libsed_a_OBJECTS = set-mode-acl.$(OBJEXT) copy-acl.$(OBJEXT) \
+ xalloc-die.$(OBJEXT)
+ libsed_a_OBJECTS = $(am_libsed_a_OBJECTS)
+ LTLIBRARIES = $(noinst_LTLIBRARIES)
++AM_V_P = $(am__v_P_@AM_V@)
++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
++am__v_P_0 = false
++am__v_P_1 = :
++AM_V_GEN = $(am__v_GEN_@AM_V@)
++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
++am__v_GEN_0 = @echo " GEN " $@;
++am__v_GEN_1 =
++AM_V_at = $(am__v_at_@AM_V@)
++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
++am__v_at_0 = @
++am__v_at_1 =
+ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+ am__depfiles_maybe = depfiles
+ am__mv = mv -f
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo " CC " $@;
++am__v_CC_1 =
+ CCLD = $(CC)
+ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo " CCLD " $@;
++am__v_CCLD_1 =
+ SOURCES = $(libsed_a_SOURCES) $(EXTRA_libsed_a_SOURCES)
+ DIST_SOURCES = $(libsed_a_SOURCES) $(EXTRA_libsed_a_SOURCES)
+-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+- html-recursive info-recursive install-data-recursive \
+- install-dvi-recursive install-exec-recursive \
+- install-html-recursive install-info-recursive \
+- install-pdf-recursive install-ps-recursive install-recursive \
+- installcheck-recursive installdirs-recursive pdf-recursive \
+- ps-recursive uninstall-recursive
++RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
++ ctags-recursive dvi-recursive html-recursive info-recursive \
++ install-data-recursive install-dvi-recursive \
++ install-exec-recursive install-html-recursive \
++ install-info-recursive install-pdf-recursive \
++ install-ps-recursive install-recursive installcheck-recursive \
++ installdirs-recursive pdf-recursive ps-recursive \
++ tags-recursive uninstall-recursive
+ am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+@@ -181,12 +243,34 @@ am__can_run_installinfo = \
+ HEADERS = $(noinst_HEADERS)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
++am__recursive_targets = \
++ $(RECURSIVE_TARGETS) \
++ $(RECURSIVE_CLEAN_TARGETS) \
++ $(am__extra_recursive_targets)
++AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
++# Read a list of newline-separated strings from the standard input,
++# and print each of them once, without duplicates. Input order is
++# *not* preserved.
++am__uniquify_input = $(AWK) '\
++ BEGIN { nonempty = 0; } \
++ { items[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in items) print i; }; } \
++'
++# Make sure the list of sources is unique. This is necessary because,
++# e.g., the same source file might be shared among _SOURCES variables
++# for different programs/libraries.
++am__define_uniq_tagged_files = \
++ list='$(am__tagged_files)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
++am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gnulib.mk \
++ $(top_srcdir)/build-aux/depcomp alloca.c
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ am__relativize = \
+ dir0=`pwd`; \
+@@ -218,6 +302,7 @@ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ ALLOCA_H = @ALLOCA_H@
+ AMTAR = @AMTAR@
++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ AR = @AR@
+ ARFLAGS = @ARFLAGS@
+@@ -1110,7 +1195,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/gnulib.mk $(am__configur
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits lib/Makefile
+-.PRECIOUS: Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+@@ -1119,7 +1203,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+-$(srcdir)/gnulib.mk:
++$(srcdir)/gnulib.mk $(am__empty):
+
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+@@ -1132,10 +1216,11 @@ $(am__aclocal_m4_deps):
+
+ clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
++
+ libsed.a: $(libsed_a_OBJECTS) $(libsed_a_DEPENDENCIES) $(EXTRA_libsed_a_DEPENDENCIES)
+- -rm -f libsed.a
+- $(libsed_a_AR) libsed.a $(libsed_a_OBJECTS) $(libsed_a_LIBADD)
+- $(RANLIB) libsed.a
++ $(AM_V_at)-rm -f libsed.a
++ $(AM_V_AR)$(libsed_a_AR) libsed.a $(libsed_a_OBJECTS) $(libsed_a_LIBADD)
++ $(AM_V_at)$(RANLIB) libsed.a
+
+ clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+@@ -1220,18 +1305,18 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ # This directory's subdirectories are mostly independent; you can cd
+ # into them and run 'make' without going through this Makefile.
+@@ -1239,14 +1324,13 @@ distclean-compile:
+ # (1) if the variable is set in 'config.status', edit 'config.status'
+ # (which will cause the Makefiles to be regenerated when you run 'make');
+ # (2) otherwise, pass the desired values on the 'make' command line.
+-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+- @fail= failcom='exit 1'; \
+- for f in x $$MAKEFLAGS; do \
+- case $$f in \
+- *=* | --[!k]*);; \
+- *k*) failcom='fail=yes';; \
+- esac; \
+- done; \
++$(am__recursive_targets):
++ @fail=; \
++ if $(am__make_keepgoing); then \
++ failcom='fail=yes'; \
++ else \
++ failcom='exit 1'; \
++ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+@@ -1267,31 +1351,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+-tags-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+- done
+-ctags-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+- done
+-cscopelist-recursive:
+- list='$(SUBDIRS)'; for subdir in $$list; do \
+- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+- done
+
+-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
+- mkid -fID $$unique
+-tags: TAGS
+-
+-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
++ID: $(am__tagged_files)
++ $(am__define_uniq_tagged_files); mkid -fID $$unique
++tags: tags-recursive
++TAGS: tags
++
++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+@@ -1307,12 +1373,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+@@ -1324,15 +1385,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $$unique; \
+ fi; \
+ fi
+-ctags: CTAGS
+-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ctags: ctags-recursive
++
++CTAGS: ctags
++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
++ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+@@ -1341,9 +1398,10 @@ GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
++cscopelist: cscopelist-recursive
+
+-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP)'; \
++cscopelist-am: $(am__tagged_files)
++ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+@@ -1527,14 +1585,12 @@ ps-am:
+
+ uninstall-am: uninstall-local
+
+-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+- cscopelist-recursive ctags-recursive install install-am \
+- install-strip tags-recursive
++.MAKE: $(am__recursive_targets) all check install install-am \
++ install-strip
+
+-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+- all all-am all-local check check-am clean clean-generic \
+- clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist \
+- cscopelist-recursive ctags ctags-recursive distclean \
++.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
++ check check-am clean clean-generic clean-noinstLIBRARIES \
++ clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+@@ -1544,8 +1600,10 @@ uninstall-am: uninstall-local
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+- mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
+- uninstall uninstall-am uninstall-local
++ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \
++ uninstall-am uninstall-local
++
++.PRECIOUS: Makefile
+
+
+ # We need the following in order to create <alloca.h> when the system
+diff --git a/sed/Makefile.in b/sed/Makefile.in
+index 3a6a33b..8df0e9e 100644
+--- a/sed/Makefile.in
++++ b/sed/Makefile.in
+@@ -1,7 +1,7 @@
+-# Makefile.in generated by automake 1.12.2 from Makefile.am.
++# Makefile.in generated by automake 1.15 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
++# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -16,23 +16,61 @@
+
+
+ VPATH = @srcdir@
+-am__make_dryrun = \
+- { \
+- am__dry=no; \
++am__is_gnu_make = { \
++ if test -z '$(MAKELEVEL)'; then \
++ false; \
++ elif test -n '$(MAKE_HOST)'; then \
++ true; \
++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
++ true; \
++ else \
++ false; \
++ fi; \
++}
++am__make_running_with_option = \
++ case $${target_option-} in \
++ ?) ;; \
++ *) echo "am__make_running_with_option: internal error: invalid" \
++ "target option '$${target_option-}' specified" >&2; \
++ exit 1;; \
++ esac; \
++ has_opt=no; \
++ sane_makeflags=$$MAKEFLAGS; \
++ if $(am__is_gnu_make); then \
++ sane_makeflags=$$MFLAGS; \
++ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+- *) \
+- for am__flg in $$MAKEFLAGS; do \
+- case $$am__flg in \
+- *=*|--*) ;; \
+- *n*) am__dry=yes; break;; \
+- esac; \
+- done;; \
++ bs=\\; \
++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
++ esac; \
++ fi; \
++ skip_next=no; \
++ strip_trailopt () \
++ { \
++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
++ }; \
++ for flg in $$sane_makeflags; do \
++ test $$skip_next = yes && { skip_next=no; continue; }; \
++ case $$flg in \
++ *=*|--*) continue;; \
++ -*I) strip_trailopt 'I'; skip_next=yes;; \
++ -*I?*) strip_trailopt 'I';; \
++ -*O) strip_trailopt 'O'; skip_next=yes;; \
++ -*O?*) strip_trailopt 'O';; \
++ -*l) strip_trailopt 'l'; skip_next=yes;; \
++ -*l?*) strip_trailopt 'l';; \
++ -[dEDm]) skip_next=yes;; \
++ -[JT]) skip_next=yes;; \
+ esac; \
+- test $$am__dry = yes; \
+- }
++ case $$flg in \
++ *$$target_option*) has_opt=yes; break;; \
++ esac; \
++ done; \
++ test $$has_opt = yes
++am__make_dryrun = (target_option=n; $(am__make_running_with_option))
++am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+@@ -52,8 +90,6 @@ build_triplet = @build@
+ host_triplet = @host@
+ bin_PROGRAMS = sed$(EXEEXT)
+ subdir = sed
+-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(top_srcdir)/build-aux/depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+@@ -113,6 +149,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
++DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
++ $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+@@ -122,14 +160,34 @@ PROGRAMS = $(bin_PROGRAMS)
+ am_sed_OBJECTS = sed.$(OBJEXT) compile.$(OBJEXT) execute.$(OBJEXT) \
+ regexp.$(OBJEXT) fmt.$(OBJEXT) mbcs.$(OBJEXT) utils.$(OBJEXT)
+ sed_OBJECTS = $(am_sed_OBJECTS)
++AM_V_P = $(am__v_P_@AM_V@)
++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
++am__v_P_0 = false
++am__v_P_1 = :
++AM_V_GEN = $(am__v_GEN_@AM_V@)
++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
++am__v_GEN_0 = @echo " GEN " $@;
++am__v_GEN_1 =
++AM_V_at = $(am__v_at_@AM_V@)
++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
++am__v_at_0 = @
++am__v_at_1 =
+ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+ am__depfiles_maybe = depfiles
+ am__mv = mv -f
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo " CC " $@;
++am__v_CC_1 =
+ CCLD = $(CC)
+ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo " CCLD " $@;
++am__v_CCLD_1 =
+ SOURCES = $(sed_SOURCES)
+ DIST_SOURCES = $(sed_SOURCES)
+ am__can_run_installinfo = \
+@@ -138,14 +196,34 @@ am__can_run_installinfo = \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+ HEADERS = $(noinst_HEADERS)
++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
++# Read a list of newline-separated strings from the standard input,
++# and print each of them once, without duplicates. Input order is
++# *not* preserved.
++am__uniquify_input = $(AWK) '\
++ BEGIN { nonempty = 0; } \
++ { items[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in items) print i; }; } \
++'
++# Make sure the list of sources is unique. This is necessary because,
++# e.g., the same source file might be shared among _SOURCES variables
++# for different programs/libraries.
++am__define_uniq_tagged_files = \
++ list='$(am__tagged_files)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
++am__DIST_COMMON = $(srcdir)/Makefile.in \
++ $(top_srcdir)/build-aux/depcomp
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ pkglibexecdir = @pkglibexecdir@
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ ALLOCA_H = @ALLOCA_H@
+ AMTAR = @AMTAR@
++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ AR = @AR@
+ ARFLAGS = @ARFLAGS@
+@@ -940,10 +1018,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ exit 1;; \
+ esac; \
+ done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits sed/Makefile'; \
++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sed/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+- $(AUTOMAKE) --gnits sed/Makefile
+-.PRECIOUS: Makefile
++ $(AUTOMAKE) --gnu sed/Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+@@ -970,10 +1047,11 @@ install-binPROGRAMS: $(bin_PROGRAMS)
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+- while read p p1; do if test -f $$p; \
+- then echo "$$p"; echo "$$p"; else :; fi; \
++ while read p p1; do if test -f $$p \
++ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
++ sed -e 'p;s,.*/,,;n;h' \
++ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+@@ -994,7 +1072,8 @@ uninstall-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+- -e 's/$$/$(EXEEXT)/' `; \
++ -e 's/$$/$(EXEEXT)/' \
++ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+@@ -1002,24 +1081,9 @@ uninstall-binPROGRAMS:
+ clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+-installcheck-binPROGRAMS: $(bin_PROGRAMS)
+- bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
+- case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+- *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+- esac; \
+- f=`echo "$$p" | \
+- sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+- for opt in --help --version; do \
+- if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
+- 2>c$${pid}_.err </dev/null \
+- && test -n "`cat c$${pid}_.out`" \
+- && test -z "`cat c$${pid}_.err`"; then :; \
+- else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+- done; \
+- done; rm -f c$${pid}_.???; exit $$bad
+ sed$(EXEEXT): $(sed_OBJECTS) $(sed_DEPENDENCIES) $(EXTRA_sed_DEPENDENCIES)
+ @rm -f sed$(EXEEXT)
+- $(LINK) $(sed_OBJECTS) $(sed_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(sed_OBJECTS) $(sed_LDADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+@@ -1036,39 +1100,28 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+-
+-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
+- mkid -fID $$unique
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++
++ID: $(am__tagged_files)
++ $(am__define_uniq_tagged_files); mkid -fID $$unique
++tags: tags-am
++TAGS: tags
++
++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+@@ -1080,15 +1133,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $$unique; \
+ fi; \
+ fi
+-ctags: CTAGS
+-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ctags: ctags-am
++
++CTAGS: ctags
++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
++ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+@@ -1097,9 +1146,10 @@ GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
++cscopelist: cscopelist-am
+
+-cscopelist: $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP)'; \
++cscopelist-am: $(am__tagged_files)
++ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+@@ -1230,7 +1280,7 @@ install-ps: install-ps-am
+
+ install-ps-am:
+
+-installcheck-am: installcheck-binPROGRAMS
++installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+@@ -1253,18 +1303,21 @@ uninstall-am: uninstall-binPROGRAMS
+
+ .MAKE: install-am install-strip
+
+-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+- clean-generic cscopelist ctags distclean distclean-compile \
+- distclean-generic distclean-tags distdir dvi dvi-am html \
+- html-am info info-am install install-am install-binPROGRAMS \
+- install-data install-data-am install-dvi install-dvi-am \
+- install-exec install-exec-am install-html install-html-am \
+- install-info install-info-am install-man install-pdf \
+- install-pdf-am install-ps install-ps-am install-strip \
+- installcheck installcheck-am installcheck-binPROGRAMS \
++.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
++ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
++ distclean distclean-compile distclean-generic distclean-tags \
++ distdir dvi dvi-am html html-am info info-am install \
++ install-am install-binPROGRAMS install-data install-data-am \
++ install-dvi install-dvi-am install-exec install-exec-am \
++ install-html install-html-am install-info install-info-am \
++ install-man install-pdf install-pdf-am install-ps \
++ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+- ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS
++ ps ps-am tags tags-am uninstall uninstall-am \
++ uninstall-binPROGRAMS
++
++.PRECIOUS: Makefile
+
+
+ $(PROGRAMS): $(LDADD)
+diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
+index 66e72ce..a82e37a 100644
+--- a/testsuite/Makefile.in
++++ b/testsuite/Makefile.in
+@@ -1,7 +1,7 @@
+-# Makefile.in generated by automake 1.12.2 from Makefile.am.
++# Makefile.in generated by automake 1.15 from Makefile.am.
+ # @configure_input@
+
+-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
++# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -15,23 +15,61 @@
+ @SET_MAKE@
+
+ VPATH = @srcdir@
+-am__make_dryrun = \
+- { \
+- am__dry=no; \
++am__is_gnu_make = { \
++ if test -z '$(MAKELEVEL)'; then \
++ false; \
++ elif test -n '$(MAKE_HOST)'; then \
++ true; \
++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
++ true; \
++ else \
++ false; \
++ fi; \
++}
++am__make_running_with_option = \
++ case $${target_option-} in \
++ ?) ;; \
++ *) echo "am__make_running_with_option: internal error: invalid" \
++ "target option '$${target_option-}' specified" >&2; \
++ exit 1;; \
++ esac; \
++ has_opt=no; \
++ sane_makeflags=$$MAKEFLAGS; \
++ if $(am__is_gnu_make); then \
++ sane_makeflags=$$MFLAGS; \
++ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+- *) \
+- for am__flg in $$MAKEFLAGS; do \
+- case $$am__flg in \
+- *=*|--*) ;; \
+- *n*) am__dry=yes; break;; \
+- esac; \
+- done;; \
++ bs=\\; \
++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+- test $$am__dry = yes; \
+- }
++ fi; \
++ skip_next=no; \
++ strip_trailopt () \
++ { \
++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
++ }; \
++ for flg in $$sane_makeflags; do \
++ test $$skip_next = yes && { skip_next=no; continue; }; \
++ case $$flg in \
++ *=*|--*) continue;; \
++ -*I) strip_trailopt 'I'; skip_next=yes;; \
++ -*I?*) strip_trailopt 'I';; \
++ -*O) strip_trailopt 'O'; skip_next=yes;; \
++ -*O?*) strip_trailopt 'O';; \
++ -*l) strip_trailopt 'l'; skip_next=yes;; \
++ -*l?*) strip_trailopt 'l';; \
++ -[dEDm]) skip_next=yes;; \
++ -[JT]) skip_next=yes;; \
++ esac; \
++ case $$flg in \
++ *$$target_option*) has_opt=yes; break;; \
++ esac; \
++ done; \
++ test $$has_opt = yes
++am__make_dryrun = (target_option=n; $(am__make_running_with_option))
++am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+@@ -61,9 +99,6 @@ host_triplet = @host@
+ @TEST_REGEX_TRUE@ tst-rxspencer$(EXEEXT) tst-regex2$(EXEEXT)
+ @TEST_REGEX_TRUE@am__append_1 = space
+ subdir = testsuite
+-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(srcdir)/version.gin \
+- $(top_srcdir)/build-aux/depcomp
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+@@ -123,6 +158,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
++DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
++ $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES = version.good
+@@ -203,14 +240,34 @@ tst_rxspencer_SOURCES = tst-rxspencer.c
+ tst_rxspencer_OBJECTS = tst-rxspencer.$(OBJEXT)
+ tst_rxspencer_LDADD = $(LDADD)
+ tst_rxspencer_DEPENDENCIES = ../lib/libsed.a
++AM_V_P = $(am__v_P_@AM_V@)
++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
++am__v_P_0 = false
++am__v_P_1 = :
++AM_V_GEN = $(am__v_GEN_@AM_V@)
++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
++am__v_GEN_0 = @echo " GEN " $@;
++am__v_GEN_1 =
++AM_V_at = $(am__v_at_@AM_V@)
++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
++am__v_at_0 = @
++am__v_at_1 =
+ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+ am__depfiles_maybe = depfiles
+ am__mv = mv -f
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++AM_V_CC = $(am__v_CC_@AM_V@)
++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
++am__v_CC_0 = @echo " CC " $@;
++am__v_CC_1 =
+ CCLD = $(CC)
+ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CCLD = $(am__v_CCLD_@AM_V@)
++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
++am__v_CCLD_0 = @echo " CCLD " $@;
++am__v_CCLD_1 =
+ SOURCES = bug-regex10.c bug-regex11.c bug-regex12.c bug-regex13.c \
+ bug-regex14.c bug-regex15.c bug-regex16.c bug-regex21.c \
+ bug-regex27.c bug-regex28.c bug-regex7.c bug-regex8.c \
+@@ -227,18 +284,239 @@ am__can_run_installinfo = \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+ HEADERS = $(noinst_HEADERS)
++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
++# Read a list of newline-separated strings from the standard input,
++# and print each of them once, without duplicates. Input order is
++# *not* preserved.
++am__uniquify_input = $(AWK) '\
++ BEGIN { nonempty = 0; } \
++ { items[$$0] = 1; nonempty = 1; } \
++ END { if (nonempty) { for (i in items) print i; }; } \
++'
++# Make sure the list of sources is unique. This is necessary because,
++# e.g., the same source file might be shared among _SOURCES variables
++# for different programs/libraries.
++am__define_uniq_tagged_files = \
++ list='$(am__tagged_files)'; \
++ unique=`for i in $$list; do \
++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
++ done | $(am__uniquify_input)`
+ ETAGS = etags
+ CTAGS = ctags
+ am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+-am__tty_colors = $(am__tty_colors_dummy)
++am__tty_colors = { \
++ $(am__tty_colors_dummy); \
++ if test "X$(AM_COLOR_TESTS)" = Xno; then \
++ am__color_tests=no; \
++ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
++ am__color_tests=yes; \
++ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
++ am__color_tests=yes; \
++ fi; \
++ if test $$am__color_tests = yes; then \
++ red=''; \
++ grn=''; \
++ lgn=''; \
++ blu=''; \
++ mgn=''; \
++ brg=''; \
++ std=''; \
++ fi; \
++}
++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
++am__vpath_adj = case $$p in \
++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
++ *) f=$$p;; \
++ esac;
++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
++am__install_max = 40
++am__nobase_strip_setup = \
++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
++am__nobase_strip = \
++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
++am__nobase_list = $(am__nobase_strip_setup); \
++ for p in $$list; do echo "$$p $$p"; done | \
++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
++ if (++n[$$2] == $(am__install_max)) \
++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
++ END { for (dir in files) print dir, files[dir] }'
++am__base_list = \
++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
++am__uninstall_files_from_dir = { \
++ test -z "$$files" \
++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
++ $(am__cd) "$$dir" && rm -f $$files; }; \
++ }
++am__recheck_rx = ^[ ]*:recheck:[ ]*
++am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
++am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
++# A command that, given a newline-separated list of test names on the
++# standard input, print the name of the tests that are to be re-run
++# upon "make recheck".
++am__list_recheck_tests = $(AWK) '{ \
++ recheck = 1; \
++ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
++ { \
++ if (rc < 0) \
++ { \
++ if ((getline line2 < ($$0 ".log")) < 0) \
++ recheck = 0; \
++ break; \
++ } \
++ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
++ { \
++ recheck = 0; \
++ break; \
++ } \
++ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
++ { \
++ break; \
++ } \
++ }; \
++ if (recheck) \
++ print $$0; \
++ close ($$0 ".trs"); \
++ close ($$0 ".log"); \
++}'
++# A command that, given a newline-separated list of test names on the
++# standard input, create the global log from their .trs and .log files.
++am__create_global_log = $(AWK) ' \
++function fatal(msg) \
++{ \
++ print "fatal: making $@: " msg | "cat >&2"; \
++ exit 1; \
++} \
++function rst_section(header) \
++{ \
++ print header; \
++ len = length(header); \
++ for (i = 1; i <= len; i = i + 1) \
++ printf "="; \
++ printf "\n\n"; \
++} \
++{ \
++ copy_in_global_log = 1; \
++ global_test_result = "RUN"; \
++ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
++ { \
++ if (rc < 0) \
++ fatal("failed to read from " $$0 ".trs"); \
++ if (line ~ /$(am__global_test_result_rx)/) \
++ { \
++ sub("$(am__global_test_result_rx)", "", line); \
++ sub("[ ]*$$", "", line); \
++ global_test_result = line; \
++ } \
++ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
++ copy_in_global_log = 0; \
++ }; \
++ if (copy_in_global_log) \
++ { \
++ rst_section(global_test_result ": " $$0); \
++ while ((rc = (getline line < ($$0 ".log"))) != 0) \
++ { \
++ if (rc < 0) \
++ fatal("failed to read from " $$0 ".log"); \
++ print line; \
++ }; \
++ printf "\n"; \
++ }; \
++ close ($$0 ".trs"); \
++ close ($$0 ".log"); \
++}'
++# Restructured Text title.
++am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
++# Solaris 10 'make', and several other traditional 'make' implementations,
++# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
++# by disabling -e (using the XSI extension "set +e") if it's set.
++am__sh_e_setup = case $$- in *e*) set +e;; esac
++# Default flags passed to test drivers.
++am__common_driver_flags = \
++ --color-tests "$$am__color_tests" \
++ --enable-hard-errors "$$am__enable_hard_errors" \
++ --expect-failure "$$am__expect_failure"
++# To be inserted before the command running the test. Creates the
++# directory for the log if needed. Stores in $dir the directory
++# containing $f, in $tst the test, in $log the log. Executes the
++# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
++# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
++# will run the test scripts (or their associated LOG_COMPILER, if
++# thy have one).
++am__check_pre = \
++$(am__sh_e_setup); \
++$(am__vpath_adj_setup) $(am__vpath_adj) \
++$(am__tty_colors); \
++srcdir=$(srcdir); export srcdir; \
++case "$@" in \
++ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
++ *) am__odir=.;; \
++esac; \
++test "x$$am__odir" = x"." || test -d "$$am__odir" \
++ || $(MKDIR_P) "$$am__odir" || exit $$?; \
++if test -f "./$$f"; then dir=./; \
++elif test -f "$$f"; then dir=; \
++else dir="$(srcdir)/"; fi; \
++tst=$$dir$$f; log='$@'; \
++if test -n '$(DISABLE_HARD_ERRORS)'; then \
++ am__enable_hard_errors=no; \
++else \
++ am__enable_hard_errors=yes; \
++fi; \
++case " $(XFAIL_TESTS) " in \
++ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
++ am__expect_failure=yes;; \
++ *) \
++ am__expect_failure=no;; \
++esac; \
++$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
++# A shell command to get the names of the tests scripts with any registered
++# extension removed (i.e., equivalently, the names of the test logs, with
++# the '.log' extension removed). The result is saved in the shell variable
++# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
++# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
++# since that might cause problem with VPATH rewrites for suffix-less tests.
++# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
++am__set_TESTS_bases = \
++ bases='$(TEST_LOGS)'; \
++ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
++ bases=`echo $$bases`
++RECHECK_LOGS = $(TEST_LOGS)
++AM_RECURSIVE_TARGETS = check recheck
++TEST_SUITE_LOG = test-suite.log
++TEST_EXTENSIONS = @EXEEXT@ .test
++LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
++LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
++am__set_b = \
++ case '$@' in \
++ */*) \
++ case '$*' in \
++ */*) b='$*';; \
++ *) b=`echo '$@' | sed 's/\.log$$//'`; \
++ esac;; \
++ *) \
++ b='$*';; \
++ esac
++am__test_logs1 = $(TESTS:=.log)
++am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
++TEST_LOGS = $(am__test_logs2:.test.log=.log)
++TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
++TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
++ $(TEST_LOG_FLAGS)
++am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.gin \
++ $(top_srcdir)/build-aux/depcomp \
++ $(top_srcdir)/build-aux/test-driver
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ pkglibexecdir = @pkglibexecdir@
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ ALLOCA_H = @ALLOCA_H@
+ AMTAR = @AMTAR@
++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+ AR = @AR@
+ ARFLAGS = @ARFLAGS@
+@@ -1097,7 +1375,7 @@ EXTRA_DIST = \
+ all: all-am
+
+ .SUFFIXES:
+-.SUFFIXES: .c .o .obj
++.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
+ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+@@ -1107,10 +1385,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ exit 1;; \
+ esac; \
+ done; \
+- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits testsuite/Makefile'; \
++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+- $(AUTOMAKE) --gnits testsuite/Makefile
+-.PRECIOUS: Makefile
++ $(AUTOMAKE) --gnu testsuite/Makefile
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+@@ -1133,63 +1410,82 @@ version.good: $(top_builddir)/config.status $(srcdir)/version.gin
+
+ clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
++
+ bug-regex10$(EXEEXT): $(bug_regex10_OBJECTS) $(bug_regex10_DEPENDENCIES) $(EXTRA_bug_regex10_DEPENDENCIES)
+ @rm -f bug-regex10$(EXEEXT)
+- $(LINK) $(bug_regex10_OBJECTS) $(bug_regex10_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex10_OBJECTS) $(bug_regex10_LDADD) $(LIBS)
++
+ bug-regex11$(EXEEXT): $(bug_regex11_OBJECTS) $(bug_regex11_DEPENDENCIES) $(EXTRA_bug_regex11_DEPENDENCIES)
+ @rm -f bug-regex11$(EXEEXT)
+- $(LINK) $(bug_regex11_OBJECTS) $(bug_regex11_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex11_OBJECTS) $(bug_regex11_LDADD) $(LIBS)
++
+ bug-regex12$(EXEEXT): $(bug_regex12_OBJECTS) $(bug_regex12_DEPENDENCIES) $(EXTRA_bug_regex12_DEPENDENCIES)
+ @rm -f bug-regex12$(EXEEXT)
+- $(LINK) $(bug_regex12_OBJECTS) $(bug_regex12_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex12_OBJECTS) $(bug_regex12_LDADD) $(LIBS)
++
+ bug-regex13$(EXEEXT): $(bug_regex13_OBJECTS) $(bug_regex13_DEPENDENCIES) $(EXTRA_bug_regex13_DEPENDENCIES)
+ @rm -f bug-regex13$(EXEEXT)
+- $(LINK) $(bug_regex13_OBJECTS) $(bug_regex13_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex13_OBJECTS) $(bug_regex13_LDADD) $(LIBS)
++
+ bug-regex14$(EXEEXT): $(bug_regex14_OBJECTS) $(bug_regex14_DEPENDENCIES) $(EXTRA_bug_regex14_DEPENDENCIES)
+ @rm -f bug-regex14$(EXEEXT)
+- $(LINK) $(bug_regex14_OBJECTS) $(bug_regex14_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex14_OBJECTS) $(bug_regex14_LDADD) $(LIBS)
++
+ bug-regex15$(EXEEXT): $(bug_regex15_OBJECTS) $(bug_regex15_DEPENDENCIES) $(EXTRA_bug_regex15_DEPENDENCIES)
+ @rm -f bug-regex15$(EXEEXT)
+- $(LINK) $(bug_regex15_OBJECTS) $(bug_regex15_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex15_OBJECTS) $(bug_regex15_LDADD) $(LIBS)
++
+ bug-regex16$(EXEEXT): $(bug_regex16_OBJECTS) $(bug_regex16_DEPENDENCIES) $(EXTRA_bug_regex16_DEPENDENCIES)
+ @rm -f bug-regex16$(EXEEXT)
+- $(LINK) $(bug_regex16_OBJECTS) $(bug_regex16_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex16_OBJECTS) $(bug_regex16_LDADD) $(LIBS)
++
+ bug-regex21$(EXEEXT): $(bug_regex21_OBJECTS) $(bug_regex21_DEPENDENCIES) $(EXTRA_bug_regex21_DEPENDENCIES)
+ @rm -f bug-regex21$(EXEEXT)
+- $(LINK) $(bug_regex21_OBJECTS) $(bug_regex21_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex21_OBJECTS) $(bug_regex21_LDADD) $(LIBS)
++
+ bug-regex27$(EXEEXT): $(bug_regex27_OBJECTS) $(bug_regex27_DEPENDENCIES) $(EXTRA_bug_regex27_DEPENDENCIES)
+ @rm -f bug-regex27$(EXEEXT)
+- $(LINK) $(bug_regex27_OBJECTS) $(bug_regex27_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex27_OBJECTS) $(bug_regex27_LDADD) $(LIBS)
++
+ bug-regex28$(EXEEXT): $(bug_regex28_OBJECTS) $(bug_regex28_DEPENDENCIES) $(EXTRA_bug_regex28_DEPENDENCIES)
+ @rm -f bug-regex28$(EXEEXT)
+- $(LINK) $(bug_regex28_OBJECTS) $(bug_regex28_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex28_OBJECTS) $(bug_regex28_LDADD) $(LIBS)
++
+ bug-regex7$(EXEEXT): $(bug_regex7_OBJECTS) $(bug_regex7_DEPENDENCIES) $(EXTRA_bug_regex7_DEPENDENCIES)
+ @rm -f bug-regex7$(EXEEXT)
+- $(LINK) $(bug_regex7_OBJECTS) $(bug_regex7_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex7_OBJECTS) $(bug_regex7_LDADD) $(LIBS)
++
+ bug-regex8$(EXEEXT): $(bug_regex8_OBJECTS) $(bug_regex8_DEPENDENCIES) $(EXTRA_bug_regex8_DEPENDENCIES)
+ @rm -f bug-regex8$(EXEEXT)
+- $(LINK) $(bug_regex8_OBJECTS) $(bug_regex8_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex8_OBJECTS) $(bug_regex8_LDADD) $(LIBS)
++
+ bug-regex9$(EXEEXT): $(bug_regex9_OBJECTS) $(bug_regex9_DEPENDENCIES) $(EXTRA_bug_regex9_DEPENDENCIES)
+ @rm -f bug-regex9$(EXEEXT)
+- $(LINK) $(bug_regex9_OBJECTS) $(bug_regex9_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(bug_regex9_OBJECTS) $(bug_regex9_LDADD) $(LIBS)
++
+ runptests$(EXEEXT): $(runptests_OBJECTS) $(runptests_DEPENDENCIES) $(EXTRA_runptests_DEPENDENCIES)
+ @rm -f runptests$(EXEEXT)
+- $(LINK) $(runptests_OBJECTS) $(runptests_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(runptests_OBJECTS) $(runptests_LDADD) $(LIBS)
++
+ runtests$(EXEEXT): $(runtests_OBJECTS) $(runtests_DEPENDENCIES) $(EXTRA_runtests_DEPENDENCIES)
+ @rm -f runtests$(EXEEXT)
+- $(LINK) $(runtests_OBJECTS) $(runtests_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(runtests_OBJECTS) $(runtests_LDADD) $(LIBS)
++
+ tst-boost$(EXEEXT): $(tst_boost_OBJECTS) $(tst_boost_DEPENDENCIES) $(EXTRA_tst_boost_DEPENDENCIES)
+ @rm -f tst-boost$(EXEEXT)
+- $(LINK) $(tst_boost_OBJECTS) $(tst_boost_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(tst_boost_OBJECTS) $(tst_boost_LDADD) $(LIBS)
++
+ tst-pcre$(EXEEXT): $(tst_pcre_OBJECTS) $(tst_pcre_DEPENDENCIES) $(EXTRA_tst_pcre_DEPENDENCIES)
+ @rm -f tst-pcre$(EXEEXT)
+- $(LINK) $(tst_pcre_OBJECTS) $(tst_pcre_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(tst_pcre_OBJECTS) $(tst_pcre_LDADD) $(LIBS)
++
+ tst-regex2$(EXEEXT): $(tst_regex2_OBJECTS) $(tst_regex2_DEPENDENCIES) $(EXTRA_tst_regex2_DEPENDENCIES)
+ @rm -f tst-regex2$(EXEEXT)
+- $(LINK) $(tst_regex2_OBJECTS) $(tst_regex2_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(tst_regex2_OBJECTS) $(tst_regex2_LDADD) $(LIBS)
++
+ tst-rxspencer$(EXEEXT): $(tst_rxspencer_OBJECTS) $(tst_rxspencer_DEPENDENCIES) $(EXTRA_tst_rxspencer_DEPENDENCIES)
+ @rm -f tst-rxspencer$(EXEEXT)
+- $(LINK) $(tst_rxspencer_OBJECTS) $(tst_rxspencer_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(LINK) $(tst_rxspencer_OBJECTS) $(tst_rxspencer_LDADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+@@ -1218,39 +1514,28 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-rxspencer.Po@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+-
+-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
+- mkid -fID $$unique
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++
++ID: $(am__tagged_files)
++ $(am__define_uniq_tagged_files); mkid -fID $$unique
++tags: tags-am
++TAGS: tags
++
++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+@@ -1262,15 +1547,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $$unique; \
+ fi; \
+ fi
+-ctags: CTAGS
+-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+- $(TAGS_FILES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+- unique=`for i in $$list; do \
+- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+- done | \
+- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+- END { if (nonempty) { for (i in files) print i; }; }'`; \
++ctags: ctags-am
++
++CTAGS: ctags
++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
++ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+@@ -1279,9 +1560,10 @@ GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
++cscopelist: cscopelist-am
+
+-cscopelist: $(HEADERS) $(SOURCES) $(LISP)
+- list='$(SOURCES) $(HEADERS) $(LISP)'; \
++cscopelist-am: $(am__tagged_files)
++ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+@@ -1297,98 +1579,763 @@ cscopelist: $(HEADERS) $(SOURCES) $(LISP)
+ distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+-check-TESTS: $(TESTS)
+- @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+- srcdir=$(srcdir); export srcdir; \
+- list=' $(TESTS) '; \
+- $(am__tty_colors); \
+- if test -n "$$list"; then \
+- for tst in $$list; do \
+- if test -f ./$$tst; then dir=./; \
+- elif test -f $$tst; then dir=; \
+- else dir="$(srcdir)/"; fi; \
+- if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
+- all=`expr $$all + 1`; \
+- case " $(XFAIL_TESTS) " in \
+- *[\ \ ]$$tst[\ \ ]*) \
+- xpass=`expr $$xpass + 1`; \
+- failed=`expr $$failed + 1`; \
+- col=$$red; res=XPASS; \
+- ;; \
+- *) \
+- col=$$grn; res=PASS; \
+- ;; \
+- esac; \
+- elif test $$? -ne 77; then \
+- all=`expr $$all + 1`; \
+- case " $(XFAIL_TESTS) " in \
+- *[\ \ ]$$tst[\ \ ]*) \
+- xfail=`expr $$xfail + 1`; \
+- col=$$lgn; res=XFAIL; \
+- ;; \
+- *) \
+- failed=`expr $$failed + 1`; \
+- col=$$red; res=FAIL; \
+- ;; \
+- esac; \
+- else \
+- skip=`expr $$skip + 1`; \
+- col=$$blu; res=SKIP; \
+- fi; \
+- echo "$${col}$$res$${std}: $$tst"; \
+- done; \
+- if test "$$all" -eq 1; then \
+- tests="test"; \
+- All=""; \
+- else \
+- tests="tests"; \
+- All="All "; \
++# Recover from deleted '.trs' file; this should ensure that
++# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
++# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
++# to avoid problems with "make -n".
++.log.trs:
++ rm -f $< $@
++ $(MAKE) $(AM_MAKEFLAGS) $<
++
++# Leading 'am--fnord' is there to ensure the list of targets does not
++# expand to empty, as could happen e.g. with make check TESTS=''.
++am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
++am--force-recheck:
++ @:
++
++$(TEST_SUITE_LOG): $(TEST_LOGS)
++ @$(am__set_TESTS_bases); \
++ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
++ redo_bases=`for i in $$bases; do \
++ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
++ done`; \
++ if test -n "$$redo_bases"; then \
++ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
++ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
++ if $(am__make_dryrun); then :; else \
++ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+- if test "$$failed" -eq 0; then \
+- if test "$$xfail" -eq 0; then \
+- banner="$$All$$all $$tests passed"; \
+- else \
+- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+- fi; \
+- else \
+- if test "$$xpass" -eq 0; then \
+- banner="$$failed of $$all $$tests failed"; \
++ fi; \
++ if test -n "$$am__remaking_logs"; then \
++ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
++ "recursion detected" >&2; \
++ elif test -n "$$redo_logs"; then \
++ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
++ fi; \
++ if $(am__make_dryrun); then :; else \
++ st=0; \
++ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
++ for i in $$redo_bases; do \
++ test -f $$i.trs && test -r $$i.trs \
++ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
++ test -f $$i.log && test -r $$i.log \
++ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
++ done; \
++ test $$st -eq 0 || exit 1; \
++ fi
++ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
++ ws='[ ]'; \
++ results=`for b in $$bases; do echo $$b.trs; done`; \
++ test -n "$$results" || results=/dev/null; \
++ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
++ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
++ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
++ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
++ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
++ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
++ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
++ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
++ success=true; \
++ else \
++ success=false; \
++ fi; \
++ br='==================='; br=$$br$$br$$br$$br; \
++ result_count () \
++ { \
++ if test x"$$1" = x"--maybe-color"; then \
++ maybe_colorize=yes; \
++ elif test x"$$1" = x"--no-color"; then \
++ maybe_colorize=no; \
+ else \
+- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
++ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+- fi; \
+- dashes="$$banner"; \
+- skipped=""; \
+- if test "$$skip" -ne 0; then \
+- if test "$$skip" -eq 1; then \
+- skipped="($$skip test was not run)"; \
++ shift; \
++ desc=$$1 count=$$2; \
++ if test $$maybe_colorize = yes && test $$count -gt 0; then \
++ color_start=$$3 color_end=$$std; \
+ else \
+- skipped="($$skip tests were not run)"; \
++ color_start= color_end=; \
+ fi; \
+- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+- dashes="$$skipped"; \
+- fi; \
+- report=""; \
+- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+- report="Please report to $(PACKAGE_BUGREPORT)"; \
+- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+- dashes="$$report"; \
+- fi; \
+- dashes=`echo "$$dashes" | sed s/./=/g`; \
+- if test "$$failed" -eq 0; then \
+- col="$$grn"; \
+- else \
+- col="$$red"; \
+- fi; \
+- echo "$${col}$$dashes$${std}"; \
+- echo "$${col}$$banner$${std}"; \
+- test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+- test -z "$$report" || echo "$${col}$$report$${std}"; \
+- echo "$${col}$$dashes$${std}"; \
+- test "$$failed" -eq 0; \
+- else :; fi
++ echo "$${color_start}# $$desc $$count$${color_end}"; \
++ }; \
++ create_testsuite_report () \
++ { \
++ result_count $$1 "TOTAL:" $$all "$$brg"; \
++ result_count $$1 "PASS: " $$pass "$$grn"; \
++ result_count $$1 "SKIP: " $$skip "$$blu"; \
++ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
++ result_count $$1 "FAIL: " $$fail "$$red"; \
++ result_count $$1 "XPASS:" $$xpass "$$red"; \
++ result_count $$1 "ERROR:" $$error "$$mgn"; \
++ }; \
++ { \
++ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
++ $(am__rst_title); \
++ create_testsuite_report --no-color; \
++ echo; \
++ echo ".. contents:: :depth: 2"; \
++ echo; \
++ for b in $$bases; do echo $$b; done \
++ | $(am__create_global_log); \
++ } >$(TEST_SUITE_LOG).tmp || exit 1; \
++ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
++ if $$success; then \
++ col="$$grn"; \
++ else \
++ col="$$red"; \
++ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
++ fi; \
++ echo "$${col}$$br$${std}"; \
++ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
++ echo "$${col}$$br$${std}"; \
++ create_testsuite_report --maybe-color; \
++ echo "$$col$$br$$std"; \
++ if $$success; then :; else \
++ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
++ if test -n "$(PACKAGE_BUGREPORT)"; then \
++ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
++ fi; \
++ echo "$$col$$br$$std"; \
++ fi; \
++ $$success || exit 1
++
++check-TESTS:
++ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
++ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
++ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
++ @set +e; $(am__set_TESTS_bases); \
++ log_list=`for i in $$bases; do echo $$i.log; done`; \
++ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
++ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
++ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
++ exit $$?;
++recheck: all $(check_PROGRAMS)
++ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
++ @set +e; $(am__set_TESTS_bases); \
++ bases=`for i in $$bases; do echo $$i; done \
++ | $(am__list_recheck_tests)` || exit 1; \
++ log_list=`for i in $$bases; do echo $$i.log; done`; \
++ log_list=`echo $$log_list`; \
++ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
++ am__force_recheck=am--force-recheck \
++ TEST_LOGS="$$log_list"; \
++ exit $$?
++bug-regex7.log: bug-regex7$(EXEEXT)
++ @p='bug-regex7$(EXEEXT)'; \
++ b='bug-regex7'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex8.log: bug-regex8$(EXEEXT)
++ @p='bug-regex8$(EXEEXT)'; \
++ b='bug-regex8'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex9.log: bug-regex9$(EXEEXT)
++ @p='bug-regex9$(EXEEXT)'; \
++ b='bug-regex9'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex10.log: bug-regex10$(EXEEXT)
++ @p='bug-regex10$(EXEEXT)'; \
++ b='bug-regex10'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex11.log: bug-regex11$(EXEEXT)
++ @p='bug-regex11$(EXEEXT)'; \
++ b='bug-regex11'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex12.log: bug-regex12$(EXEEXT)
++ @p='bug-regex12$(EXEEXT)'; \
++ b='bug-regex12'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex13.log: bug-regex13$(EXEEXT)
++ @p='bug-regex13$(EXEEXT)'; \
++ b='bug-regex13'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex14.log: bug-regex14$(EXEEXT)
++ @p='bug-regex14$(EXEEXT)'; \
++ b='bug-regex14'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex15.log: bug-regex15$(EXEEXT)
++ @p='bug-regex15$(EXEEXT)'; \
++ b='bug-regex15'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex16.log: bug-regex16$(EXEEXT)
++ @p='bug-regex16$(EXEEXT)'; \
++ b='bug-regex16'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex21.log: bug-regex21$(EXEEXT)
++ @p='bug-regex21$(EXEEXT)'; \
++ b='bug-regex21'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex27.log: bug-regex27$(EXEEXT)
++ @p='bug-regex27$(EXEEXT)'; \
++ b='bug-regex27'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bug-regex28.log: bug-regex28$(EXEEXT)
++ @p='bug-regex28$(EXEEXT)'; \
++ b='bug-regex28'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++tst-pcre.log: tst-pcre$(EXEEXT)
++ @p='tst-pcre$(EXEEXT)'; \
++ b='tst-pcre'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++tst-boost.log: tst-boost$(EXEEXT)
++ @p='tst-boost$(EXEEXT)'; \
++ b='tst-boost'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++runtests.log: runtests$(EXEEXT)
++ @p='runtests$(EXEEXT)'; \
++ b='runtests'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++runptests.log: runptests$(EXEEXT)
++ @p='runptests$(EXEEXT)'; \
++ b='runptests'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++tst-rxspencer.log: tst-rxspencer$(EXEEXT)
++ @p='tst-rxspencer$(EXEEXT)'; \
++ b='tst-rxspencer'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++tst-regex2.log: tst-regex2$(EXEEXT)
++ @p='tst-regex2$(EXEEXT)'; \
++ b='tst-regex2'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++space.log: space
++ @p='space'; \
++ b='space'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++appquit.log: appquit
++ @p='appquit'; \
++ b='appquit'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++enable.log: enable
++ @p='enable'; \
++ b='enable'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++sep.log: sep
++ @p='sep'; \
++ b='sep'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++inclib.log: inclib
++ @p='inclib'; \
++ b='inclib'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++8bit.log: 8bit
++ @p='8bit'; \
++ b='8bit'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++newjis.log: newjis
++ @p='newjis'; \
++ b='newjis'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++xabcx.log: xabcx
++ @p='xabcx'; \
++ b='xabcx'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++dollar.log: dollar
++ @p='dollar'; \
++ b='dollar'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++noeol.log: noeol
++ @p='noeol'; \
++ b='noeol'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++noeolw.log: noeolw
++ @p='noeolw'; \
++ b='noeolw'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++modulo.log: modulo
++ @p='modulo'; \
++ b='modulo'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++numsub.log: numsub
++ @p='numsub'; \
++ b='numsub'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++numsub2.log: numsub2
++ @p='numsub2'; \
++ b='numsub2'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++numsub3.log: numsub3
++ @p='numsub3'; \
++ b='numsub3'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++numsub4.log: numsub4
++ @p='numsub4'; \
++ b='numsub4'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++numsub5.log: numsub5
++ @p='numsub5'; \
++ b='numsub5'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++0range.log: 0range
++ @p='0range'; \
++ b='0range'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bkslashes.log: bkslashes
++ @p='bkslashes'; \
++ b='bkslashes'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++head.log: head
++ @p='head'; \
++ b='head'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++madding.log: madding
++ @p='madding'; \
++ b='madding'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++mac-mf.log: mac-mf
++ @p='mac-mf'; \
++ b='mac-mf'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++empty.log: empty
++ @p='empty'; \
++ b='empty'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++xbxcx.log: xbxcx
++ @p='xbxcx'; \
++ b='xbxcx'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++xbxcx3.log: xbxcx3
++ @p='xbxcx3'; \
++ b='xbxcx3'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++recall.log: recall
++ @p='recall'; \
++ b='recall'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++recall2.log: recall2
++ @p='recall2'; \
++ b='recall2'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++xemacs.log: xemacs
++ @p='xemacs'; \
++ b='xemacs'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++fasts.log: fasts
++ @p='fasts'; \
++ b='fasts'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++uniq.log: uniq
++ @p='uniq'; \
++ b='uniq'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++manis.log: manis
++ @p='manis'; \
++ b='manis'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++khadafy.log: khadafy
++ @p='khadafy'; \
++ b='khadafy'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++linecnt.log: linecnt
++ @p='linecnt'; \
++ b='linecnt'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++eval.log: eval
++ @p='eval'; \
++ b='eval'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++distrib.log: distrib
++ @p='distrib'; \
++ b='distrib'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++8to7.log: 8to7
++ @p='8to7'; \
++ b='8to7'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++y-bracket.log: y-bracket
++ @p='y-bracket'; \
++ b='y-bracket'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++y-newline.log: y-newline
++ @p='y-newline'; \
++ b='y-newline'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++allsub.log: allsub
++ @p='allsub'; \
++ b='allsub'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++cv-vars.log: cv-vars
++ @p='cv-vars'; \
++ b='cv-vars'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++classes.log: classes
++ @p='classes'; \
++ b='classes'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++middle.log: middle
++ @p='middle'; \
++ b='middle'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++bsd.log: bsd
++ @p='bsd'; \
++ b='bsd'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++stdin.log: stdin
++ @p='stdin'; \
++ b='stdin'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++flipcase.log: flipcase
++ @p='flipcase'; \
++ b='flipcase'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++insens.log: insens
++ @p='insens'; \
++ b='insens'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++subwrite.log: subwrite
++ @p='subwrite'; \
++ b='subwrite'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++writeout.log: writeout
++ @p='writeout'; \
++ b='writeout'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++readin.log: readin
++ @p='readin'; \
++ b='readin'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++insert.log: insert
++ @p='insert'; \
++ b='insert'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++utf8-1.log: utf8-1
++ @p='utf8-1'; \
++ b='utf8-1'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++utf8-2.log: utf8-2
++ @p='utf8-2'; \
++ b='utf8-2'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++utf8-3.log: utf8-3
++ @p='utf8-3'; \
++ b='utf8-3'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++utf8-4.log: utf8-4
++ @p='utf8-4'; \
++ b='utf8-4'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++badenc.log: badenc
++ @p='badenc'; \
++ b='badenc'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++inplace-hold.log: inplace-hold
++ @p='inplace-hold'; \
++ b='inplace-hold'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++brackets.log: brackets
++ @p='brackets'; \
++ b='brackets'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++amp-escape.log: amp-escape
++ @p='amp-escape'; \
++ b='amp-escape'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++help.log: help
++ @p='help'; \
++ b='help'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++version.log: version
++ @p='version'; \
++ b='version'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++file.log: file
++ @p='file'; \
++ b='file'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++quiet.log: quiet
++ @p='quiet'; \
++ b='quiet'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++factor.log: factor
++ @p='factor'; \
++ b='factor'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++binary3.log: binary3
++ @p='binary3'; \
++ b='binary3'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++binary2.log: binary2
++ @p='binary2'; \
++ b='binary2'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++binary.log: binary
++ @p='binary'; \
++ b='binary'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++dc.log: dc
++ @p='dc'; \
++ b='dc'; \
++ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++.test.log:
++ @p='$<'; \
++ $(am__set_b); \
++ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
++ --log-file $$b.log --trs-file $$b.trs \
++ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
++ "$$tst" $(AM_TESTS_FD_REDIRECT)
++@am__EXEEXT_TRUE@.test$(EXEEXT).log:
++@am__EXEEXT_TRUE@ @p='$<'; \
++@am__EXEEXT_TRUE@ $(am__set_b); \
++@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
++@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
++@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
++@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+ distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+@@ -1446,6 +2393,9 @@ install-strip:
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+ mostlyclean-generic:
++ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
++ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
++ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+ clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+@@ -1528,18 +2478,20 @@ uninstall-am:
+
+ .MAKE: check-am install-am install-strip
+
+-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+- clean-checkPROGRAMS clean-generic cscopelist ctags distclean \
+- distclean-compile distclean-generic distclean-tags distdir dvi \
+- dvi-am html html-am info info-am install install-am \
+- install-data install-data-am install-dvi install-dvi-am \
+- install-exec install-exec-am install-html install-html-am \
+- install-info install-info-am install-man install-pdf \
+- install-pdf-am install-ps install-ps-am install-strip \
+- installcheck installcheck-am installdirs maintainer-clean \
+- maintainer-clean-generic mostlyclean mostlyclean-compile \
+- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+- uninstall-am
++.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
++ clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \
++ distclean distclean-compile distclean-generic distclean-tags \
++ distdir dvi dvi-am html html-am info info-am install \
++ install-am install-data install-data-am install-dvi \
++ install-dvi-am install-exec install-exec-am install-html \
++ install-html-am install-info install-info-am install-man \
++ install-pdf install-pdf-am install-ps install-ps-am \
++ install-strip installcheck installcheck-am installdirs \
++ maintainer-clean maintainer-clean-generic mostlyclean \
++ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
++ recheck tags tags-am uninstall uninstall-am
++
++.PRECIOUS: Makefile
+
+
+ # automake makes `check' depend on $(TESTS). Declare
diff --git a/ndk-libc++-bionic.patch b/ndk-libc++-bionic.patch
new file mode 100644
index 0000000..6efa9b4
--- /dev/null
+++ b/ndk-libc++-bionic.patch
@@ -0,0 +1,37 @@
+diff --git a/r13/sources/cxx-stl/llvm-libc++/include/cmath b/r13/sources/cxx-stl/llvm-libc++/include/cmath
+index b3e95940..86f037a1 100644
+--- a/r13/sources/cxx-stl/llvm-libc++/include/cmath
++++ b/r13/sources/cxx-stl/llvm-libc++/include/cmath
+@@ -310,11 +310,18 @@ long double truncl(long double x);
+
+ _LIBCPP_BEGIN_NAMESPACE_STD
+
++#ifndef signbit
+ using ::signbit;
++#endif
++#ifndef fpclassify
+ using ::fpclassify;
++#endif
++#ifndef isfinite
+ using ::isfinite;
++#endif
+ using ::isinf;
+ using ::isnan;
++#ifndef isnormal
+ using ::isnormal;
+ using ::isgreater;
+ using ::isgreaterequal;
+@@ -323,11 +330,12 @@ using ::islessequal;
+ using ::islessgreater;
+ using ::isunordered;
+ using ::isunordered;
++#endif
+
+ using ::float_t;
+ using ::double_t;
+
+-#ifndef _AIX
++#if !defined(_AIX) && !defined(__BIONIC__)
+ using ::abs;
+ #endif
+
diff --git a/ndkrepo-aarch64-host.patch b/ndkrepo-aarch64-host.patch
new file mode 100644
index 0000000..f6c01c7
--- /dev/null
+++ b/ndkrepo-aarch64-host.patch
@@ -0,0 +1,501 @@
+
+project ndk/
+diff --git a/build/lib/build_support.py b/build/lib/build_support.py
+index d81efa2..8e6a31d 100644
+--- a/build/lib/build_support.py
++++ b/build/lib/build_support.py
+@@ -17,6 +17,7 @@ import argparse
+ import datetime
+ import multiprocessing
+ import os
++import platform
+ import shutil
+ import subprocess
+ import sys
+@@ -200,7 +201,7 @@ def get_default_host():
+
+ def host_to_tag(host):
+ if host in ['darwin', 'linux']:
+- return host + '-x86_64'
++ return host + '-' + platform.machine()
+ elif host == 'windows':
+ return 'windows'
+ elif host == 'windows64':
+diff --git a/build/tools/prebuilt-common.sh b/build/tools/prebuilt-common.sh
+index 106b661..f358d96 100644
+--- a/build/tools/prebuilt-common.sh
++++ b/build/tools/prebuilt-common.sh
+@@ -836,22 +836,38 @@ EOF
+ fi
+ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=$BINPREFIX --dst-prefix="$DST_PREFIX" "$CROSS_WRAP_DIR" \
+ --cflags="$HOST_CFLAGS" --cxxflags="$HOST_CFLAGS" --ldflags="$HOST_LDFLAGS"
+- # generate wrappers for BUILD toolchain
+- # this is required for mingw/darwin build to avoid tools canadian cross configuration issues
+- # 32-bit BUILD toolchain
+- LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-linux-gnu- \
+- --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-pc-linux-gnu- \
+- --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-linux-gnu- \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-pc-linux-gnu- \
+- --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
+- fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ if [ "`uname -m`" = "aarch64" ]; then
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-aarch64/host/aarch64-linux-glibc2.11-4.8"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=arm-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m armelf_linux_eabi" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=arm-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m armelf_linux_eabi" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=aarch64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/aarch64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=aarch64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/aarch64-linux-" "$CROSS_WRAP_DIR"
++ fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ else
++ # generate wrappers for BUILD toolchain
++ # this is required for mingw/darwin build to avoid tools canadian cross configuration issues
++ # 32-bit BUILD toolchain
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=i386-pc-linux-gnu- \
++ --cflags="-m32" --cxxflags="-m32" --ldflags="-m elf_i386" --asflags="--32" \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ # 64-bit BUILD toolchain. libbfd is still built in 32-bit.
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ $NDK_BUILDTOOLS_PATH/gen-toolchain-wrapper.sh --src-prefix=x86_64-pc-linux-gnu- \
++ --dst-prefix="$LEGACY_TOOLCHAIN_DIR/bin/x86_64-linux-" "$CROSS_WRAP_DIR"
++ fail_panic "Could not create $DEBIAN_NAME wrapper toolchain in $CROSS_WRAP_DIR"
++ fi
+
+ export PATH=$CROSS_WRAP_DIR:$PATH
+ dump "Using $DEBIAN_NAME wrapper: $CROSS_WRAP_DIR/${BINPREFIX}gcc"
+@@ -918,8 +934,15 @@ prepare_common_build ()
+ if [ -z "$CC" ]; then
+ LEGACY_TOOLCHAIN_DIR=
+ if [ "$HOST_OS" = "linux" ]; then
+- LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/bin"
+- LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/x86_64-linux-"
++ if [ "$HOST_ARCH" = "aarch64" ]; then
++ # No prebuilt toolchain for aarch64 hosts yet, let's use the system compiler
++ log "Using system compiler for $HOST_ARCH $HOST_OS"
++ CC=gcc
++ CXX=g++
++ else
++ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/bin"
++ LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/x86_64-linux-"
++ fi
+ elif [ "$HOST_OS" = "darwin" ]; then
+ LEGACY_TOOLCHAIN_DIR="$ANDROID_BUILD_TOP/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1/bin"
+ LEGACY_TOOLCHAIN_PREFIX="$LEGACY_TOOLCHAIN_DIR/i686-apple-darwin10-"
+@@ -1014,6 +1037,9 @@ prepare_abi_configure_build ()
+ linux-x86_64)
+ ABI_CONFIGURE_BUILD=x86_64-linux-gnu
+ ;;
++ linux-aarch64)
++ ABI_CONFIGURE_BUILD=aarch64-linux-gnu
++ ;;
+ darwin-x86)
+ ABI_CONFIGURE_BUILD=i686-apple-darwin
+ ;;
+@@ -1038,7 +1064,11 @@ prepare_target_build ()
+ ABI_CONFIGURE_HOST="$ABI_CONFIGURE_BUILD"
+
+ prepare_common_build
+- HOST_GMP_ABI=$HOST_BITS
++ if [ "$HOST_ARCH" = "aarch64" ]; then
++ HOST_GMP_ABI=standard
++ else
++ HOST_GMP_ABI=$HOST_BITS
++ fi
+
+ # Now handle the --mingw/--darwin flag
+ if [ "$MINGW" = "yes" -o "$DARWIN" = "yes" ] ; then
+diff --git a/scripts/gen_release_table.py b/scripts/gen_release_table.py
+index a600536..d800f50 100755
+--- a/scripts/gen_release_table.py
++++ b/scripts/gen_release_table.py
+@@ -77,6 +77,7 @@ def main():
+ pretty_host = {
+ 'darwin-x86_64': 'Mac OS X',
+ 'linux-x86_64': 'Linux',
++ 'linux-aarch64': 'Linux for ARMv8',
+ 'windows-x86_64': 'Windows 64-bit',
+ 'windows-x86': 'Windows 32-bit',
+ }[host]
+project toolchain/build/
+diff --git a/Makefile.in b/Makefile.in
+index 21f33d7..dab823e 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -409,7 +409,7 @@ config-target-gcc: stmp-config-target-gcc
+
+ GCC_CONFIG_ARGS=--prefix=$(prefix) \
+ --target=${cur_target} --host=${cur_host} --build=${cur_build} \
+- --with-gnu-as --with-gnu-ld --enable-languages=c,c++
++ --with-gnu-as --with-gnu-ld --enable-languages=c,c++,fortran,objc,obj-c++
+
+ # For gcc versions 4.3.0 and later, gmp and mpfr are required.
+ # Also build libgcc is a seperate sub-target in 4.3.0+.
+diff --git a/configure b/configure
+index 738b57a..1558809 100755
+--- a/configure
++++ b/configure
+@@ -2659,6 +2659,8 @@ if test \( ! -d $srcdir/../$tool/ppl-${PPL_VERSION} \) -a \( x"$version" != x"no
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/ppl-${PPL_VERSION}.tgz
+ elif test -f $srcdir/../$tool/ppl-${PPL_VERSION}.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/ppl-${PPL_VERSION}.tar.bz2
++ elif test -f $srcdir/../$tool/ppl-${PPL_VERSION}.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../$tool/ppl-${PPL_VERSION}.tar.xz
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar ; then
+ mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.gz ; then
+@@ -2667,6 +2669,8 @@ if test \( ! -d $srcdir/../$tool/ppl-${PPL_VERSION} \) -a \( x"$version" != x"no
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/ppl-${PPL_VERSION}.tgz
+ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.bz2
++ elif test -f $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../tarballs/ppl-${PPL_VERSION}.tar.xz
+ else
+ as_fn_error "'package ppl-${PPL_VERSION} does not exist.'" "$LINENO" 5
+ fi
+diff --git a/configure.ac b/configure.ac
+index b316a7e..6b2acff 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -268,6 +268,8 @@ if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none" \) ; then
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tgz
+ elif test -f $srcdir/../$tool/$1.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/$1.tar.bz2
++ elif test -f $srcdir/../$tool/$1.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../$tool/$1.tar.xz
+ elif test -f $srcdir/../tarballs/$1.tar ; then
+ mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/$1.tar
+ elif test -f $srcdir/../tarballs/$1.tar.gz ; then
+@@ -276,6 +278,8 @@ if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none" \) ; then
+ mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tgz
+ elif test -f $srcdir/../tarballs/$1.tar.bz2 ; then
+ mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/$1.tar.bz2
++ elif test -f $srcdir/../tarballs/$1.tar.xz ; then
++ mkdir -p temp-src && tar -C temp-src -xJf $srcdir/../tarballs/$1.tar.xz
+ else
+ AC_MSG_ERROR('package $1 does not exist.')
+ fi
+project toolchain/gcc/
+diff --git a/build-gcc.sh b/build-gcc.sh
+index 4893461..4a821d7 100755
+--- a/build-gcc.sh
++++ b/build-gcc.sh
+@@ -70,7 +70,7 @@ register_var_option "--ppl-version=<version>" PPL_VERSION "Specify ppl version"
+ PACKAGE_DIR=
+ register_var_option "--package-dir=<path>" PACKAGE_DIR "Create archive tarball in specific directory"
+
+-ENABLE_LANGUAGES="c,c++"
++ENABLE_LANGUAGES="c,c++,fortran,objc,obj-c++"
+ register_var_option "--enable-languages=<name>" ENABLE_LANGUAGES "Experimental: specify which languages to build"
+
+ BUILD_DEBUGGABLE="no"
+diff --git a/gcc-4.9/gcc/graphite-clast-to-gimple.c b/gcc-4.9/gcc/graphite-clast-to-gimple.c
+index 134388c..4317989 100644
+--- a/gcc-4.9/gcc/graphite-clast-to-gimple.c
++++ b/gcc-4.9/gcc/graphite-clast-to-gimple.c
+@@ -28,6 +28,8 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/constraint.h>
+ #include <isl/ilp.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-dependences.c b/gcc-4.9/gcc/graphite-dependences.c
+index b0f8680..32000e0 100644
+--- a/gcc-4.9/gcc/graphite-dependences.c
++++ b/gcc-4.9/gcc/graphite-dependences.c
+@@ -183,7 +183,7 @@ scop_get_transformed_schedule (scop_p scop, vec<poly_bb_p> pbbs)
+ /* Helper function used on each MAP of a isl_union_map. Computes the
+ maximal output dimension. */
+
+-static int
++static isl_stat
+ max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
+ {
+ int global_max = *((int *) user);
+@@ -195,7 +195,7 @@ max_number_of_out_dimensions (__isl_take isl_map *map, void *user)
+
+ isl_map_free (map);
+ isl_space_free (space);
+- return 0;
++ return isl_stat_ok;
+ }
+
+ /* Extends the output dimension of MAP to MAX dimensions. */
+@@ -219,12 +219,12 @@ struct extend_schedule_str {
+
+ /* Helper function for extend_schedule. */
+
+-static int
++static isl_stat
+ extend_schedule_1 (__isl_take isl_map *map, void *user)
+ {
+ struct extend_schedule_str *str = (struct extend_schedule_str *) user;
+ str->umap = isl_union_map_add_map (str->umap, extend_map (map, str->max));
+- return 0;
++ return isl_stat_ok;
+ }
+
+ /* Return a relation that has uniform output dimensions. */
+diff --git a/gcc-4.9/gcc/graphite-interchange.c b/gcc-4.9/gcc/graphite-interchange.c
+index 2e625c1..1984a2c 100644
+--- a/gcc-4.9/gcc/graphite-interchange.c
++++ b/gcc-4.9/gcc/graphite-interchange.c
+@@ -29,6 +29,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/map.h>
+ #include <isl/union_map.h>
+ #include <isl/ilp.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
++#include <isl/deprecated/constraint_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-optimize-isl.c b/gcc-4.9/gcc/graphite-optimize-isl.c
+index fc12eeb..f0b7506 100644
+--- a/gcc-4.9/gcc/graphite-optimize-isl.c
++++ b/gcc-4.9/gcc/graphite-optimize-isl.c
+@@ -28,6 +28,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/band.h>
+ #include <isl/aff.h>
+ #include <isl/options.h>
++#include <isl/union_set.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/aff_int.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+ #include <isl/deprecated/int.h>
+ #include <isl/deprecated/aff_int.h>
+@@ -415,13 +418,13 @@ getScheduleMap (isl_schedule *Schedule)
+ return ScheduleMap;
+ }
+
+-static int
++static isl_stat
+ getSingleMap (__isl_take isl_map *map, void *user)
+ {
+ isl_map **singleMap = (isl_map **) user;
+ *singleMap = map;
+
+- return 0;
++ return isl_stat_ok;
+ }
+
+ static void
+@@ -469,7 +472,7 @@ optimize_isl (scop_p scop)
+
+ isl_options_set_schedule_max_constant_term (scop->ctx, CONSTANT_BOUND);
+ isl_options_set_schedule_maximize_band_depth (scop->ctx, 1);
+- isl_options_set_schedule_fuse (scop->ctx, ISL_SCHEDULE_FUSE_MIN);
++ isl_options_set_schedule_serialize_sccs (scop->ctx, 1);
+ isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_CONTINUE);
+ schedule = isl_union_set_compute_schedule (domain, validity, proximity);
+ isl_options_set_on_error (scop->ctx, ISL_ON_ERROR_ABORT);
+diff --git a/gcc-4.9/gcc/graphite-poly.c b/gcc-4.9/gcc/graphite-poly.c
+index fccc2ec..6b99071 100644
+--- a/gcc-4.9/gcc/graphite-poly.c
++++ b/gcc-4.9/gcc/graphite-poly.c
+@@ -28,6 +28,8 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/constraint.h>
+ #include <isl/ilp.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/ilp_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+ #ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+diff --git a/gcc-4.9/gcc/graphite-poly.h b/gcc-4.9/gcc/graphite-poly.h
+index 06d320e..28a2498 100644
+--- a/gcc-4.9/gcc/graphite-poly.h
++++ b/gcc-4.9/gcc/graphite-poly.h
+@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3. If not see
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+
++#include <isl/constraint.h>
++
+ typedef struct poly_dr *poly_dr_p;
+
+ typedef struct poly_bb *poly_bb_p;
+diff --git a/gcc-4.9/gcc/graphite-sese-to-poly.c b/gcc-4.9/gcc/graphite-sese-to-poly.c
+index 059c10d..65d4e56 100644
+--- a/gcc-4.9/gcc/graphite-sese-to-poly.c
++++ b/gcc-4.9/gcc/graphite-sese-to-poly.c
+@@ -26,6 +26,9 @@ along with GCC; see the file COPYING3. If not see
+ #include <isl/union_map.h>
+ #include <isl/constraint.h>
+ #include <isl/aff.h>
++#include <isl/deprecated/int.h>
++#include <isl/deprecated/aff_int.h>
++#include <isl/deprecated/constraint_int.h>
+ #include <cloog/cloog.h>
+ #include <cloog/cloog.h>
+ #include <cloog/isl/domain.h>
+diff --git a/gcc-4.9/libgfortran/intrinsics/cshift0.c b/gcc-4.9/libgfortran/intrinsics/cshift0.c
+index f983754..5187ed9 100644
+--- a/gcc-4.9/libgfortran/intrinsics/cshift0.c
++++ b/gcc-4.9/libgfortran/intrinsics/cshift0.c
+@@ -146,7 +146,7 @@ cshift0 (gfc_array_char * ret, const gfc_array_char * array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ cshift0_r16 ((gfc_array_r16 *)ret, (gfc_array_r16 *) array, shift,
+ which);
+@@ -176,7 +176,7 @@ cshift0 (gfc_array_char * ret, const gfc_array_char * array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 // defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ cshift0_c16 ((gfc_array_c16 *)ret, (gfc_array_c16 *) array, shift,
+ which);
+diff --git a/gcc-4.9/libgfortran/intrinsics/pack_generic.c b/gcc-4.9/libgfortran/intrinsics/pack_generic.c
+index 3fbfa0a..ebaba1c 100644
+--- a/gcc-4.9/libgfortran/intrinsics/pack_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/pack_generic.c
+@@ -312,7 +312,7 @@ pack (gfc_array_char *ret, const gfc_array_char *array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ pack_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) array,
+ (gfc_array_l1 *) mask, (gfc_array_r16 *) vector);
+@@ -344,7 +344,7 @@ pack (gfc_array_char *ret, const gfc_array_char *array,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ pack_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) array,
+ (gfc_array_l1 *) mask, (gfc_array_c16 *) vector);
+diff --git a/gcc-4.9/libgfortran/intrinsics/spread_generic.c b/gcc-4.9/libgfortran/intrinsics/spread_generic.c
+index f3f23b8..07d316c 100644
+--- a/gcc-4.9/libgfortran/intrinsics/spread_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/spread_generic.c
+@@ -529,7 +529,7 @@ spread_scalar (gfc_array_char *ret, const char *source,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ spread_scalar_r16 ((gfc_array_r16 *) ret, (GFC_REAL_16 *) source,
+ *along, *pncopies);
+@@ -561,7 +561,7 @@ spread_scalar (gfc_array_char *ret, const char *source,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ spread_scalar_c16 ((gfc_array_c16 *) ret, (GFC_COMPLEX_16 *) source,
+ *along, *pncopies);
+diff --git a/gcc-4.9/libgfortran/intrinsics/unpack_generic.c b/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
+index 4bd9927..330c9e2 100644
+--- a/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
++++ b/gcc-4.9/libgfortran/intrinsics/unpack_generic.c
+@@ -278,7 +278,7 @@ unpack1 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ unpack1_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) vector,
+ mask, (gfc_array_r16 *) field);
+@@ -310,7 +310,7 @@ unpack1 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ unpack1_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) vector,
+ mask, (gfc_array_c16 *) field);
+@@ -489,7 +489,7 @@ unpack0 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_REAL_16
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ unpack0_r16 ((gfc_array_r16 *) ret, (gfc_array_r16 *) vector,
+ mask, (GFC_REAL_16 *) field);
+@@ -521,7 +521,7 @@ unpack0 (gfc_array_char *ret, const gfc_array_char *vector,
+ return;
+ # endif
+
+-# ifdef HAVE_GFC_COMPLEX_16
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ unpack0_c16 ((gfc_array_c16 *) ret, (gfc_array_c16 *) vector,
+ mask, (GFC_COMPLEX_16 *) field);
+diff --git a/gcc-4.9/libgfortran/runtime/in_pack_generic.c b/gcc-4.9/libgfortran/runtime/in_pack_generic.c
+index aab155d..a2ba81e 100644
+--- a/gcc-4.9/libgfortran/runtime/in_pack_generic.c
++++ b/gcc-4.9/libgfortran/runtime/in_pack_generic.c
+@@ -95,7 +95,7 @@ internal_pack (gfc_array_char * source)
+ return internal_pack_r10 ((gfc_array_r10 *) source);
+ # endif
+
+-# if defined (HAVE_GFC_REAL_16)
++# if 0 && defined (HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ return internal_pack_r16 ((gfc_array_r16 *) source);
+ # endif
+@@ -119,7 +119,7 @@ internal_pack (gfc_array_char * source)
+ return internal_pack_c10 ((gfc_array_c10 *) source);
+ # endif
+
+-# if defined (HAVE_GFC_COMPLEX_16)
++# if 0 && defined (HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ return internal_pack_c16 ((gfc_array_c16 *) source);
+ # endif
+diff --git a/gcc-4.9/libgfortran/runtime/in_unpack_generic.c b/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
+index 18855e1..ff65a18 100644
+--- a/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
++++ b/gcc-4.9/libgfortran/runtime/in_unpack_generic.c
+@@ -103,7 +103,7 @@ internal_unpack (gfc_array_char * d, const void * s)
+ return;
+ # endif
+
+-# if defined(HAVE_GFC_REAL_16)
++# if 0 && defined(HAVE_GFC_REAL_16)
+ case GFC_DTYPE_REAL_16:
+ internal_unpack_r16 ((gfc_array_r16 *) d, (const GFC_REAL_16 *) s);
+ return;
+@@ -131,7 +131,7 @@ internal_unpack (gfc_array_char * d, const void * s)
+ return;
+ # endif
+
+-# if defined(HAVE_GFC_COMPLEX_16)
++# if 0 && defined(HAVE_GFC_COMPLEX_16)
+ case GFC_DTYPE_COMPLEX_16:
+ internal_unpack_c16 ((gfc_array_c16 *) d, (const GFC_COMPLEX_16 *) s);
+ return;
+
diff --git a/prebuilts_build-tools-aarch64-host.patch b/prebuilts_build-tools-aarch64-host.patch
new file mode 100644
index 0000000..cd6aaa7
--- /dev/null
+++ b/prebuilts_build-tools-aarch64-host.patch
@@ -0,0 +1,88 @@
+diff --git a/build-prebuilts.sh b/build-prebuilts.sh
+index e39f6bd..917c546 100755
+--- a/build-prebuilts.sh
++++ b/build-prebuilts.sh
+@@ -20,6 +20,23 @@ Darwin)
+ ;;
+ esac
+
++ARCH="$(uname -m)"
++case "$ARCH" in
++x86_64)
++ ARCHDIR=x86
++ SECONDARY=x86
++ ;;
++aarch64)
++ ARCH=arm64
++ ARCHDIR=arm64
++ SECONDARY=arm
++ ;;
++*)
++ ARCHDIR=$ARCH
++ SECONDARY=""
++ ;;
++esac
++
+ build_soong=1
+ if [ -d ${TOP}/toolchain/go ]; then
+ build_go=1
+@@ -28,14 +45,20 @@ fi
+ if [ -n ${build_soong} ]; then
+ # ckati and makeparallel (Soong)
+ SOONG_OUT=${OUT_DIR}/soong
+- SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86
++ SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-${ARCHDIR}
+ rm -rf ${SOONG_OUT}
+ mkdir -p ${SOONG_OUT}
+ cat > ${SOONG_OUT}/soong.variables << EOF
+ {
+ "Allow_missing_dependencies": true,
+- "HostArch":"x86_64",
+- "HostSecondaryArch":"x86"
++ "HostArch":"${ARCH}",
++EOF
++ if [ -n "${SECONDARY}" ]; then
++ cat >> ${SOONG_OUT}/soong.variables << EOF
++ "HostSecondaryArch":"${SECONDARY}"
++EOF
++ fi
++ cat >> ${SOONG_OUT}/soong.variables << EOF
+ }
+ EOF
+ BUILDDIR=${SOONG_OUT} ./bootstrap.bash
+@@ -53,8 +76,14 @@ EOF
+ cat > ${SOONG_OUT}/soong.variables << EOF
+ {
+ "Allow_missing_dependencies": true,
+- "HostArch":"x86_64",
+- "HostSecondaryArch":"x86",
++ "HostArch":"${ARCH}",
++EOF
++ if [ -n "${SECONDARY}" ]; then
++ cat > ${SOONG_OUT}/soong.variables << EOF
++ "HostSecondaryArch":"${SECONDARY}",
++EOF
++ fi
++ cat > ${SOONG_OUT}/soong.variables << EOF
+ "SanitizeHost": ["address"]
+ }
+ EOF
+@@ -80,8 +109,8 @@ if [ -n ${build_go} ]; then
+ cp -a ${TOP}/toolchain/go/* ${GO_OUT}/
+ (
+ cd ${GO_OUT}/src
+- export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86
+- export GOROOT_FINAL=./prebuilts/go/${OS}-x86
++ export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-${ARCHDIR}
++ export GOROOT_FINAL=./prebuilts/go/${OS}-${ARCHDIR}
+ export GO_TEST_TIMEOUT_SCALE=100
+ ./make.bash
+ rm -rf ../pkg/bootstrap
+Binary files /dev/null and build-tools/linux-arm64/bin/acp differ
+Binary files /dev/null and build-tools/linux-arm64/bin/bpfmt differ
+Binary files /dev/null and build-tools/linux-arm64/bin/ckati differ
+Binary files /dev/null and build-tools/linux-arm64/bin/ckati_stamp_dump differ
+Binary files /dev/null and build-tools/linux-arm64/bin/ijar differ
+Binary files /dev/null and build-tools/linux-arm64/bin/makeparallel differ
+Binary files /dev/null and build-tools/linux-arm64/bin/ninja differ
+Binary files /dev/null and build-tools/linux-arm64/bin/ziptime differ