diff --git a/.gitmodules b/.gitmodules
index 2c4a18c..20509fa 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,4 @@
 [submodule "buildroot"]
 	path = buildroot
+	branch = 2015.11.1-op-build
 	url = https://github.com/open-power/buildroot
diff --git a/README b/README
deleted file mode 100644
index 2e84fbb..0000000
--- a/README
+++ /dev/null
@@ -1,44 +0,0 @@
-=== Building an image ===
-
-git clone --recursive git@github.com:open-power/op-build.git
-cd op-build
-. op-build-env
-op-build palmetto_defconfig && op-build
-
-Building on *64-bit* Ubuntu/Debian systems
-==========================================
-
-1. Install Ubuntu 14.04 or Debian 7.5 64-bit.
-2. Install the packages necessary for the build:
-> sudo apt-get install cscope ctags libz-dev libexpat-dev \
-  python language-pack-en \
-  build-essential g++ git bison flex unzip \
-  libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc
-3. Continue with the clone, environment setup, and build as noted above.
-
-Building on *64-bit* Fedora systems
-==========================================
-
-1. Install Fedora 20 64-bit.
-2. Install the packages necessary for the build:
-> sudo yum update vim-minimal
-> sudo yum install vim gcc-c++ flex bison git ctags cscope expat-devel patch glibc-devel.i686 libgcc.i686 zlib-devel zlib-static libstdc++.i686 libxml2-devel.i686
-3. Install PERL modules necessary for the build:
->  sudo yum install "perl(XML::Simple)" "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)"
-
-Troubleshooting
-===============
-
-* If git is complaining about "fatal: reference is not a tree" with a commit matching a buildroot change, try:
-> rm -rf op-build/buildroot
-> cd op-build
-> git clone --recursive git@github.com:open-power/buildroot.git
-
-
-* If make is complaining during skiboot link phases, revert make to version 3.81
--- On Fedora
---> sudo rpm -del --nodeps make
---> sudo wget ftp://fr2.rpmfind.net/linux/centos/6.5/os/x86_64/Packages/make-3.81-20.el6.x86_64.rpm
---> sudo rpm --install make-3.81-20.el6.x86_64.rpm
-
-(instructions for make reversion from http://curiositydrivendevelopment.blogspot.com)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9eeabd0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# OpenPower Firmware Build Environment
+
+The OpenPower firmware build process uses Buildroot to create a toolchain and
+build the various components of the PNOR firmware, including Hostboot, Skiboot,
+OCC, Petitboot etc.
+
+## Development
+
+Issues, Milestones, pull requests and code hosting is on github:
+https://github.com/open-power/op-build
+
+Mailing list: openpower-firmware@lists.ozlabs.org  
+Info/Subscribe: https://lists.ozlabs.org/listinfo/openpower-firmware  
+Archives: https://lists.ozlabs.org/pipermail/openpower-firmware/  
+
+## Building an image
+
+```
+git clone --recursive git@github.com:open-power/op-build.git
+cd op-build
+. op-build-env
+op-build palmetto_defconfig && op-build
+```
+
+This will build an image for a Palmetto system. There exists default
+configurations for other platforms in openpower/configs/ such as
+Habanero and Firestone.
+
+### Dependancies for *64-bit* Ubuntu/Debian systems
+
+1. Install Ubuntu (>= 14.04) or Debian (>= 7.5) 64-bit.
+2. Enable Universe:
+
+        sudo apt-get install software-properties-common
+        sudo add-apt-repository universe
+3. Install the packages necessary for the build:
+
+        sudo apt-get install cscope ctags libz-dev libexpat-dev \
+          python language-pack-en texinfo \
+          build-essential g++ git bison flex unzip \
+          libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
+          wget bc
+
+### Dependancies for *64-bit* Fedora systems
+
+1. Install Fedora 23 64-bit.
+2. Install the packages necessary for the build:
+
+        sudo dnf install gcc-c++ flex bison git ctags cscope expat-devel patch \
+          zlib-devel zlib-static texinfo perl-bignum "perl(XML::Simple)" \
+          "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" \
+          "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" libxml2-devel \
+          which wget unzip tar cpio python bzip2 bc findutils ncurses-devel
+
diff --git a/buildroot b/buildroot
index 80a2f83..fda20bd 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 80a2f83e60f3fd21a38e2bc9aac149f2c3a9ffdd
+Subproject commit fda20bd82acd118fff5211772f483b700b605c9d
diff --git a/ci/Dockerfile/fedora23 b/ci/Dockerfile/fedora23
new file mode 100644
index 0000000..5c425a3
--- /dev/null
+++ b/ci/Dockerfile/fedora23
@@ -0,0 +1,5 @@
+FROM fedora:23
+RUN dnf -y install gcc-c++ flex bison git ctags cscope expat-devel patch zlib-devel zlib-static texinfo perl-bignum "perl(XML::Simple)" "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" libxml2-devel
+RUN dnf -y install which wget unzip tar cpio python bzip2 bc
+RUN dnf -y install findutils
+RUN dnf -y install ncurses-devel
diff --git a/ci/Dockerfile/fedora23.x86_64 b/ci/Dockerfile/fedora23.x86_64
new file mode 120000
index 0000000..5322ce7
--- /dev/null
+++ b/ci/Dockerfile/fedora23.x86_64
@@ -0,0 +1 @@
+fedora23
\ No newline at end of file
diff --git a/ci/Dockerfile/ubuntu1404 b/ci/Dockerfile/ubuntu1404
new file mode 100644
index 0000000..8acb932
--- /dev/null
+++ b/ci/Dockerfile/ubuntu1404
@@ -0,0 +1,10 @@
+FROM ubuntu:14.04
+# Don't ask. Ubuntu is awful.
+RUN sed -e 's/main$/main universe/' --in-place=orig /etc/apt/sources.list
+RUN DEBIAN_FRONTEND=noninteractive apt-get update
+RUN DEBIAN_FRONTEND=noninteractive apt-get install -yy cscope ctags \
+  libz-dev libexpat-dev \
+  python language-pack-en texinfo \
+  build-essential g++ git bison flex unzip \
+  libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc
+RUN DEBIAN_FRONTEND=noninteractive apt-get install -yy wget bc
diff --git a/ci/Dockerfile/ubuntu1404.ppc64le b/ci/Dockerfile/ubuntu1404.ppc64le
new file mode 120000
index 0000000..529a5fa
--- /dev/null
+++ b/ci/Dockerfile/ubuntu1404.ppc64le
@@ -0,0 +1 @@
+ubuntu1404
\ No newline at end of file
diff --git a/ci/Dockerfile/ubuntu1404.x86_64 b/ci/Dockerfile/ubuntu1404.x86_64
new file mode 120000
index 0000000..529a5fa
--- /dev/null
+++ b/ci/Dockerfile/ubuntu1404.x86_64
@@ -0,0 +1 @@
+ubuntu1404
\ No newline at end of file
diff --git a/ci/build-all-defconfigs.sh b/ci/build-all-defconfigs.sh
new file mode 100755
index 0000000..1730e28
--- /dev/null
+++ b/ci/build-all-defconfigs.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -ex
+set -eo pipefail
+
+DEFCONFIGS=`(cd openpower/configs; ls -1 *_defconfig)`
+
+if [ -z "$1" or ! -d "$1" ]; then
+	echo "No output directory specified"
+	exit 1;
+fi
+
+if [ -z "$CCACHE_DIR" ]; then
+	CCACHE_DIR=`pwd`/.op-build_ccache
+fi
+
+shopt -s expand_aliases
+source op-build-env
+
+for i in $DEFCONFIGS; do
+        op-build $i
+        echo 'BR2_CCACHE=y' >> output/.config
+        echo "BR2_CCACHE_DIR=\"$CCACHE_DIR\"" >> output/.config
+        echo 'BR2_CCACHE_INITIAL_SETUP=""' >> output/.config
+
+        op-build olddefconfig
+        op-build
+        r=$?
+        mkdir $1/$i-images
+        mv output/images/* $1/$i-images/
+        mv output/.config $1/$i-images/.config
+	lsb_release -a > $1/$i-images/lsb_release
+        rm -rf output/*
+        if [ $r -ne 0 ]; then
+        	exit $r
+        fi
+done
+
diff --git a/ci/build.sh b/ci/build.sh
new file mode 100755
index 0000000..d7e98ca
--- /dev/null
+++ b/ci/build.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+set -ex
+set -eo pipefail
+
+function run_docker
+{
+	$DOCKER_PREFIX docker run --cap-add=sys_admin --net=host --rm=true \
+	 --user="${USER}" -w "${PWD}" -v "${PWD}":"${PWD}":Z \
+         -t $1 $2
+}
+
+env
+
+if [ -d output-images ]; then
+	echo 'output-images already exists!';
+	exit 1;
+fi
+
+for distro in ubuntu1404 fedora23;
+do
+	base_dockerfile=ci/Dockerfile/$distro.`arch`
+	if [ ! -f $base_dockerfile ]; then
+	  echo '$distro not supported on `arch`.';
+	  continue
+	fi
+	if [[ -n "$HTTP_PROXY" ]]; then
+		http_proxy=$HTTP_PROXY
+	fi
+	if [[ -n "$http_proxy" ]]; then
+	  if [[ "$distro" == fedora23 ]]; then
+	    PROXY="RUN echo \"proxy=${http_proxy}\" >> /etc/dnf/dnf.conf"
+	  fi
+	  if [[ "$distro" == ubuntu1404 ]]; then
+	    PROXY="RUN echo \"Acquire::http::Proxy \\"\"${http_proxy}/\\"\";\" > /etc/apt/apt.conf.d/000apt-cacher-ng-proxy"
+	  fi
+        fi
+
+	Dockerfile=$(head -n1 $base_dockerfile; echo ${PROXY}; tail -n +2 $base_dockerfile; cat << EOF
+RUN groupadd -g ${GROUPS} ${USER} && useradd -d ${HOME} -m -u ${UID} -g ${GROUPS} ${USER}
+${PROXY}
+USER ${USER}
+ENV HOME ${HOME}
+EOF
+)
+	$DOCKER_PREFIX docker build -t openpower/op-build-$distro - <<< "${Dockerfile}"
+	mkdir -p output-images/$distro
+	run_docker openpower/op-build-$distro "./ci/build-all-defconfigs.sh output-images/$distro"
+	if [ $? = 0 ]; then
+		mv *-images output-$distro/
+	else
+		exit $?;
+	fi
+done;
+
diff --git a/op-build-env b/op-build-env
index 9f2bfd2..9cd5cb5 100755
--- a/op-build-env
+++ b/op-build-env
@@ -8,4 +8,6 @@
 export BR2_EXTERNAL=${__PWD}/openpower
 export BR2_DL_DIR=${__PWD}/dl
 
-alias op-build="make --directory=${__PWD}/buildroot O=${__PWD}/output "
+op-build () {
+    make --directory=${__PWD}/buildroot O=${__PWD}/output $@
+}
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
new file mode 100644
index 0000000..48431ff
--- /dev/null
+++ b/openpower/configs/barreleye_defconfig
@@ -0,0 +1,72 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_OPENPOWER_PLATFORM=y
+
+BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_23=y
+
+BR2_OPENPOWER_CONFIG_NAME="barreleye"
+BR2_OPENPOWER_XML_PACKAGE="barreleye-xml"
+BR2_HOSTBOOT_CONFIG_FILE="barreleye.config"
+
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
+BR2_HOSTBOOT_BINARY_WINK_FILENAME="p8.ref_image.hdr.bin.ecc"
+
+BR2_OCC_BIN_FILENAME="occ.bin"
+
+BR2_BARRELEYE_SYSTEM_XML_FILENAME="BARRELEYE_hb.system.xml"
+BR2_BARRELEYE_MRW_XML_FILENAME="BARRELEYE_hb.mrw.xml"
+BR2_BARRELEYE_BIOS_XML_FILENAME="BARRELEYE_bios.xml"
+
+BR2_OPENPOWER_TARGETING_BIN_FILENAME="BARRELEYE_HB.targeting.bin"
+BR2_OPENPOWER_TARGETING_ECC_FILENAME="BARRELEYE_HB.targeting.bin.ecc"
+BR2_CAPP_UCODE_BIN_FILENAME="cappucode.bin"
+
+BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME="defaultPnorLayoutWithGoldenSide.xml"
+BR2_OPENPOWER_PNOR_FILENAME="barreleye.pnor"
+BR2_OPENPOWER_PNOR_UPDATE_FILENAME="barreleye_update.pnor"
+
+# skiboot requirements
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
+
+# petitboot requirements
+BR2_ENABLE_LOCALE_PURGE=y
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
+BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
+BR2_PACKAGE_I2C_TOOLS=y
+BR2_PACKAGE_NCURSES_WCHAR=y
+BR2_PACKAGE_DROPBEAR=y
+# BR2_PACKAGE_DROPBEAR_SERVER is not set
+BR2_PACKAGE_ETHTOOL=y
+BR2_PACKAGE_NETCAT=y
+BR2_PACKAGE_RSYNC=y
+BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
+BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
+BR2_TARGET_ROOTFS_CPIO_XZ=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_PACKAGE_LOADKEYS=y
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 45e6787..b43c31c 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_23=y
 
 BR2_OPENPOWER_CONFIG_NAME="firestone"
 BR2_OPENPOWER_XML_PACKAGE="firestone-xml"
@@ -30,27 +31,30 @@
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="firestone_update.pnor"
 
 # skiboot requirements
-BR2_TARGET_SKIBOOT=y
-BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="overlay"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
@@ -59,6 +63,10 @@
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_PACKAGE_LOADKEYS=y
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index 3069ac7..f2e7e42 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -4,12 +4,15 @@
 
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+# BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_23=y
 
 BR2_OPENPOWER_CONFIG_NAME="garrison"
 BR2_OPENPOWER_XML_PACKAGE="garrison-xml"
 BR2_HOSTBOOT_CONFIG_FILE="garrison.config"
 
-BR2_HOSTBOOT_BINARY_SBE_FILENAME="venice_sbe.img.ecc"
+BR2_HOSTBOOT_BINARY_SBE_FILENAME="naples_sbe.img.ecc"
 BR2_HOSTBOOT_BINARY_SBEC_FILENAME="centaur_sbec_pad.img.ecc"
 BR2_HOSTBOOT_BINARY_WINK_FILENAME="n1.ref_image.hdr.bin.ecc"
 
@@ -28,8 +31,8 @@
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="garrison_update.pnor"
 
 # skiboot requirements
-BR2_TARGET_SKIBOOT=y
-BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
@@ -37,18 +40,21 @@
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="overlay"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
@@ -57,6 +63,10 @@
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_PACKAGE_LOADKEYS=y
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 14c10ae..dade28f 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_23=y
 
 BR2_OPENPOWER_CONFIG_NAME="habanero"
 BR2_OPENPOWER_XML_PACKAGE="habanero-xml"
@@ -30,27 +31,30 @@
 BR2_OPENPOWER_PNOR_UPDATE_FILENAME="habanero_update.pnor"
 
 # skiboot requirements
-BR2_TARGET_SKIBOOT=y
-BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
-BR2_ENABLE_LOCALE_WHITELIST="C en_US"
-BR2_GENERATE_LOCALE="en_US.UTF-8"
+BR2_ENABLE_LOCALE_WHITELIST="C de en es fr it ja ko pt_BR ru zh_CN zh_TW"
+BR2_GENERATE_LOCALE="en_US.UTF-8 de_DE.UTF-8 es_ES.UTF-8 fr_FR.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="overlay"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
@@ -59,6 +63,10 @@
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_PACKAGE_LOADKEYS=y
diff --git a/openpower/configs/hostboot/barreleye.config b/openpower/configs/hostboot/barreleye.config
new file mode 100755
index 0000000..8d25814
--- /dev/null
+++ b/openpower/configs/hostboot/barreleye.config
@@ -0,0 +1,66 @@
+# The Serial Flash Controller is the AST2400 BMC.
+set   SFC_IS_AST2400
+set   BMC_DOES_SFC_INIT
+unset SFC_IS_IBM_DPSS
+set   ALLOW_MICRON_PNOR
+set   ALLOW_MACRONIX_PNOR
+
+# VPD options.
+set MVPD_READ_FROM_HW
+set MVPD_WRITE_TO_HW
+set MVPD_READ_FROM_PNOR
+set MVPD_WRITE_FROM_PNOR
+set DJVPD_READ_FROM_HW
+set DJVPD_WRITE_TO_HW
+set DJVPD_READ_FROM_PNOR
+set DJVPD_WRITE_TO_PNOR
+set CVPD_READ_FROM_HW
+set CVPD_WRITE_TO_HW
+set CVPD_READ_FROM_PNOR
+set CVPD_WRITE_TO_PNOR
+set PVPD_READ_FROM_HW
+set PVPD_WRITE_TO_HW
+set PVPD_READ_FROM_PNOR
+set PVPD_WRITE_TO_PNOR
+set SKIP_RESTRICT_EX_UNITS
+unset CDIMM_FORMAT_FOR_CVPD
+
+# gpio config
+set GPIODD
+set PALMETTO_VDDR
+
+# Enable SBE updates
+set SBE_UPDATE_INDEPENDENT
+
+unset PCIE_HOTPLUG_CONTROLLER
+
+# turn on console output
+set CONSOLE
+set BMC_AST2400
+
+# Enable Kingston dimm voltage workaround
+set KINGSTON_1_35_VOLT
+
+# PCA95X config
+set PCA95X_8BIT
+
+unset DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+set HTMGT
+set START_OCC_DURING_BOOT
+
+#PNOR flags
+set PNOR_TWO_SIDE_SUPPORT
+set BMC_BT_LPC_IPMI
+
+# Enable Checktop Analysis
+set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
+
+# Hostboot will detect hardware changes
+set HOST_HCDB_SUPPORT
+
+# set for trace debug to console
+unset CONSOLE_OUTPUT_TRACE
diff --git a/openpower/configs/hostboot/firestone.config b/openpower/configs/hostboot/firestone.config
index b7bc93c..e8218cf 100755
--- a/openpower/configs/hostboot/firestone.config
+++ b/openpower/configs/hostboot/firestone.config
@@ -29,8 +29,8 @@
 set GPIODD
 set PALMETTO_VDDR
 
-# disable sbe updates
-set NO_SBE_UPDATES
+# Enable SBE updates
+set SBE_UPDATE_INDEPENDENT
 
 unset PCIE_HOTPLUG_CONTROLLER
 
@@ -41,7 +41,6 @@
 # Enable Kingston dimm voltage workaround
 set KINGSTON_1_35_VOLT
 
-set NO_DMI_EREPAIR
 unset DISABLE_HOSTBOOT_RUNTIME
 
 # Compile in hostboot runtime PRD
@@ -56,6 +55,7 @@
 
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # Hostboot will detect hardware changes
 set HOST_HCDB_SUPPORT
diff --git a/openpower/configs/hostboot/garrison.config b/openpower/configs/hostboot/garrison.config
index c78bc7a..e8218cf 100755
--- a/openpower/configs/hostboot/garrison.config
+++ b/openpower/configs/hostboot/garrison.config
@@ -29,8 +29,8 @@
 set GPIODD
 set PALMETTO_VDDR
 
-# disable sbe updates
-set NO_SBE_UPDATES
+# Enable SBE updates
+set SBE_UPDATE_INDEPENDENT
 
 unset PCIE_HOTPLUG_CONTROLLER
 
@@ -41,10 +41,12 @@
 # Enable Kingston dimm voltage workaround
 set KINGSTON_1_35_VOLT
 
-set NO_DMI_EREPAIR
-set DISABLE_HOSTBOOT_RUNTIME
-unset HTMGT
-unset START_OCC_DURING_BOOT
+unset DISABLE_HOSTBOOT_RUNTIME
+
+# Compile in hostboot runtime PRD
+set HBRT_PRD
+set HTMGT
+set START_OCC_DURING_BOOT
 
 #PNOR flags
 set PNOR_TWO_SIDE_SUPPORT
@@ -53,6 +55,7 @@
 
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # Hostboot will detect hardware changes
 set HOST_HCDB_SUPPORT
diff --git a/openpower/configs/hostboot/habanero.config b/openpower/configs/hostboot/habanero.config
index b5d28b4a9..21d3ef8 100755
--- a/openpower/configs/hostboot/habanero.config
+++ b/openpower/configs/hostboot/habanero.config
@@ -29,8 +29,6 @@
 set GPIODD
 set PALMETTO_VDDR
 
-# to disable sbe updates
-# set NO_SBE_UPDATES
 # Enable SBE updates
 set SBE_UPDATE_INDEPENDENT
 
@@ -43,7 +41,6 @@
 # Enable Kingston dimm voltage workaround
 set KINGSTON_1_35_VOLT
 
-set NO_DMI_EREPAIR
 unset DISABLE_HOSTBOOT_RUNTIME
 
 # Compile in hostboot runtime PRD
@@ -61,6 +58,7 @@
 
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # Hostboot will detect hardware changes
 set HOST_HCDB_SUPPORT
diff --git a/openpower/configs/hostboot/palmetto.config b/openpower/configs/hostboot/palmetto.config
index 4288585..a821159 100755
--- a/openpower/configs/hostboot/palmetto.config
+++ b/openpower/configs/hostboot/palmetto.config
@@ -29,8 +29,6 @@
 set GPIODD
 set PALMETTO_VDDR
 
-# to disable sbe updates
-#set NO_SBE_UPDATES
 # Enable SBE updates
 set SBE_UPDATE_INDEPENDENT
 
@@ -42,7 +40,6 @@
 
 set PNOR_IS_32MB
 
-set NO_DMI_EREPAIR
 unset DISABLE_HOSTBOOT_RUNTIME
 
 # Compile in hostboot runtime PRD
@@ -57,6 +54,7 @@
 
 # Enable Checktop Analysis
 set ENABLE_CHECKSTOP_ANALYSIS
+set IPLTIME_CHECKSTOP_ANALYSIS
 
 # Hostboot will detect hardware changes
 set HOST_HCDB_SUPPORT
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index 648de48..20d4358 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -1,4 +1,5 @@
 CONFIG_PPC64=y
+CONFIG_POWER8_CPU=y
 CONFIG_ALTIVEC=y
 CONFIG_VSX=y
 CONFIG_SMP=y
@@ -7,8 +8,7 @@
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
+# CONFIG_CROSS_MEMORY_ATTACH is not set
 CONFIG_IRQ_DOMAIN_DEBUG=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
@@ -19,17 +19,22 @@
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=20
-# CONFIG_NAMESPACES is not set
 CONFIG_RELAY=y
 CONFIG_BLK_DEV_INITRD=y
-CONFIG_KALLSYMS_ALL=y
+# CONFIG_RD_GZIP is not set
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_PERF_EVENTS=y
 # CONFIG_COMPAT_BRK is not set
 CONFIG_JUMP_LABEL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
-# CONFIG_PPC_PMAC is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_PPC_PSERIES is not set
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_HZ_100=y
 CONFIG_KEXEC=y
@@ -37,109 +42,111 @@
 # CONFIG_COMPACTION is not set
 # CONFIG_MIGRATION is not set
 # CONFIG_BOUNCE is not set
-# CONFIG_CROSS_MEMORY_ATTACH is not set
 CONFIG_PPC_64K_PAGES=y
 CONFIG_SCHED_SMT=y
-# CONFIG_SUSPEND is not set
 # CONFIG_SECCOMP is not set
+CONFIG_PCI_MSI=y
+CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
-CONFIG_NET=y
 CONFIG_NET_IPIP=y
 CONFIG_SYN_COOKIES=y
 # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
 # CONFIG_INET_XFRM_MODE_TUNNEL is not set
 # CONFIG_INET_XFRM_MODE_BEET is not set
 # CONFIG_IPV6 is not set
+CONFIG_DNS_RESOLVER=y
 # CONFIG_WIRELESS is not set
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FW_LOADER_USER_HELPER is not set
-CONFIG_PROC_DEVICETREE=y
+CONFIG_MTD=m
+CONFIG_MTD_POWERNV_FLASH=m
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_ATA_OVER_ETH=y
-CONFIG_VIRTIO_BLK=y
+CONFIG_ATA_OVER_ETH=m
+CONFIG_VIRTIO_BLK=m
+CONFIG_BLK_DEV_NVME=m
 CONFIG_EEPROM_AT24=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_BLK_DEV_SR=m
 CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_SCSI_MULTI_LUN=y
+CONFIG_CHR_DEV_SG=m
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_SCAN_ASYNC=y
-CONFIG_SCSI_CXGB3_ISCSI=y
-CONFIG_SCSI_CXGB4_ISCSI=y
-CONFIG_SCSI_BNX2_ISCSI=y
-CONFIG_BE2ISCSI=y
-CONFIG_SCSI_MPT2SAS=y
-CONFIG_SCSI_IBMVSCSI=y
+CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_SCSI_AACRAID=y
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_SYM53C8XX_2=y
 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
-CONFIG_SCSI_IPR=y
+CONFIG_SCSI_IPR=m
 # CONFIG_SCSI_IPR_TRACE is not set
 # CONFIG_SCSI_IPR_DUMP is not set
-CONFIG_SCSI_QLA_FC=y
-CONFIG_SCSI_QLA_ISCSI=y
-CONFIG_SCSI_LPFC=y
-CONFIG_SCSI_VIRTIO=y
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_DH=y
-CONFIG_SCSI_DH_ALUA=y
+CONFIG_SCSI_DH_ALUA=m
 CONFIG_ATA=y
 CONFIG_SATA_AHCI=y
 # CONFIG_ATA_SFF is not set
 CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_MD_LINEAR=y
-CONFIG_MD_RAID0=y
-CONFIG_MD_RAID1=y
-CONFIG_MD_RAID10=y
-CONFIG_MD_RAID456=y
-CONFIG_MD_MULTIPATH=y
-CONFIG_MD_FAULTY=y
-CONFIG_BLK_DEV_DM=y
-CONFIG_DM_CRYPT=y
-CONFIG_DM_SNAPSHOT=y
-CONFIG_DM_MIRROR=y
-CONFIG_DM_ZERO=y
-CONFIG_DM_MULTIPATH=y
-CONFIG_NETCONSOLE=y
-CONFIG_TUN=y
-CONFIG_VIRTIO_NET=y
-CONFIG_VORTEX=y
-CONFIG_ACENIC=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_NETCONSOLE=m
+CONFIG_TUN=m
+CONFIG_VIRTIO_NET=m
+CONFIG_VORTEX=m
+CONFIG_ACENIC=m
 CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_PCNET32=y
+CONFIG_PCNET32=m
 CONFIG_TIGON3=y
-CONFIG_BNX2X=y
+CONFIG_BNX2X=m
 CONFIG_CHELSIO_T1=y
-CONFIG_BE2NET=y
-CONFIG_S2IO=y
-CONFIG_IBMVETH=y
-CONFIG_E100=y
-CONFIG_E1000=y
-CONFIG_E1000E=y
-CONFIG_IXGB=y
-CONFIG_IXGBE=y
-CONFIG_MLX4_EN=y
-CONFIG_MYRI10GE=y
-CONFIG_QLGE=y
-CONFIG_NETXEN_NIC=y
-CONFIG_SFC=y
+CONFIG_BE2NET=m
+CONFIG_S2IO=m
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_MLX4_EN=m
+CONFIG_MYRI10GE=m
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_SFC=m
 # CONFIG_WLAN is not set
 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
-CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_HVC_CONSOLE=y
 CONFIG_IPMI_HANDLER=y
 CONFIG_IPMI_DEVICE_INTERFACE=y
 CONFIG_IPMI_POWERNV=y
@@ -160,7 +167,6 @@
 CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
 # CONFIG_LCD_CLASS_DEVICE is not set
 # CONFIG_BACKLIGHT_GENERIC is not set
 # CONFIG_VGA_CONSOLE is not set
@@ -176,49 +182,53 @@
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO_PCI=y
 # CONFIG_IOMMU_SUPPORT is not set
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-CONFIG_EXT2_FS_XIP=y
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS=m
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
-CONFIG_XFS_FS=y
+CONFIG_XFS_FS=m
 CONFIG_XFS_POSIX_ACL=y
-CONFIG_BTRFS_FS=y
+CONFIG_BTRFS_FS=m
 CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_ISO9660_FS=y
-CONFIG_UDF_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
+CONFIG_AUTOFS4_FS=m
+CONFIG_ISO9660_FS=m
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
 CONFIG_PROC_KCORE=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
 CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_CIFS=y
+CONFIG_NFS_V4=m
+CONFIG_CIFS=m
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ASCII=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_NLS_UTF8=y
-# CONFIG_XZ_DEC_POWERPC is not set
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_LOCKUP_DETECTOR=y
 CONFIG_SCHEDSTATS=y
 # CONFIG_FTRACE is not set
-CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_XMON=y
 CONFIG_XMON_DEFAULT=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_ECHAINIV is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_HW is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=tty0 console=hvc0"
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 12c8308..5422a08 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -4,6 +4,7 @@
 
 BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
+BR2_GLIBC_VERSION_2_23=y
 
 # No HostBoot for Mambo
 BR2_PACKAGE_HOSTBOOT=n
@@ -18,8 +19,8 @@
 BR2_PACKAGE_OPENPOWER_PNOR=n
 
 # skiboot will be built but we don't need embedded payload
-BR2_TARGET_SKIBOOT=y
-BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
@@ -27,18 +28,21 @@
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="overlay"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
@@ -48,5 +52,7 @@
 BR2_PACKAGE_RSYNC=y
 BR2_PACKAGE_PETITBOOT=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 1468fe8..67f2c86 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -6,6 +6,7 @@
 BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-targets=powerpc64-linux"
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 # BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP is not set
+BR2_GLIBC_VERSION_2_23=y
 
 BR2_OPENPOWER_CONFIG_NAME="palmetto"
 BR2_OPENPOWER_XML_PACKAGE="palmetto-xml"
@@ -29,8 +30,8 @@
 BR2_OPENPOWER_PNOR_FILENAME="palmetto.pnor"
 
 # skiboot requirements
-BR2_TARGET_SKIBOOT=y
-BR2_TARGET_SKIBOOT_EMBED_PAYLOAD=n
+BR2_PACKAGE_SKIBOOT=y
+BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD=n
 
 # petitboot requirements
 BR2_ENABLE_LOCALE_PURGE=y
@@ -38,18 +39,21 @@
 BR2_GENERATE_LOCALE="en_US.UTF-8"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
 BR2_TARGET_GENERIC_GETTY_PORT="hvc0"
-BR2_ROOTFS_OVERLAY="overlay"
+BR2_ROOTFS_OVERLAY="../openpower/overlay"
+BR2_ROOTFS_DEVICE_TABLE="../openpower/device_table.txt"
+BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var"
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/open-power/linux.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d0ff068a9962ba96d4e6ddfba2a4e9fd8bc9a763"
+BR2_LINUX_KERNEL_SAME_AS_HEADERS=y
+BR2_KERNEL_HEADERS_4_4=y
+BR2_DEFAULT_KERNEL_HEADERS="4.4.5"
+BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4=y
+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_DROPBEAR=y
@@ -58,6 +62,10 @@
 BR2_PACKAGE_NETCAT=y
 BR2_PACKAGE_RSYNC=y
 BR2_PACKAGE_PETITBOOT=y
+BR2_PACKAGE_PETITBOOT_MTD=y
 BR2_PACKAGE_IPMITOOL=y
+BR2_PACKAGE_POWERPC_UTILS=y
+BR2_PACKAGE_MDADM=y
 BR2_TARGET_ROOTFS_CPIO_XZ=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
+BR2_PACKAGE_LOADKEYS=y
diff --git a/openpower/custom/patches/dtc/dtc-0001-sort-unit-addresses-by-number.patch b/openpower/custom/patches/dtc/dtc-0001-sort-unit-addresses-by-number.patch
new file mode 100644
index 0000000..6f49dbc
--- /dev/null
+++ b/openpower/custom/patches/dtc/dtc-0001-sort-unit-addresses-by-number.patch
@@ -0,0 +1,110 @@
+Date: Tue, 21 Jan 2014 13:49:35 +1100
+From: Anton Blanchard <anton@samba.org>
+Subject: [PATCH] dtc: Sort unit addresses by number
+
+The sort option in dtc treats unit addresses as strings. This causes
+cpu nodes to end up out of order:
+
+# dtc -s -I fs -O dts /proc/device-tree | grep PowerPC,POWER7
+
+		PowerPC,POWER7@30 {
+		PowerPC,POWER7@68 {
+		PowerPC,POWER7@70 {
+		PowerPC,POWER7@828 {
+		PowerPC,POWER7@860 {
+		PowerPC,POWER7@868 {
+		PowerPC,POWER7@8a0 {
+		PowerPC,POWER7@8b0 {
+		PowerPC,POWER7@8f0 {
+		PowerPC,POWER7@a0 {
+		PowerPC,POWER7@a8 {
+		PowerPC,POWER7@e0 {
+
+If we use this device tree for a kexec boot we end up with a confusing
+layout of logical CPUs:
+
+node 0 cpus: 0-23 72-95
+node 0 size: 32633 MB
+
+node 1 cpus: 24-71
+node 1 size: 32631 MB
+
+The reason for this is that we allocate logical CPU ids as we walk
+through the device tree.
+
+In cmp_subnode, if both nodes have a hex unit address and the
+basenames match, then compare by number.
+
+This fixes the issue:
+
+# dtc -s -I fs -O dts /proc/device-tree | grep PowerPC,POWER7
+		PowerPC,POWER7@30 {
+		PowerPC,POWER7@68 {
+		PowerPC,POWER7@70 {
+		PowerPC,POWER7@a0 {
+		PowerPC,POWER7@a8 {
+		PowerPC,POWER7@e0 {
+		PowerPC,POWER7@828 {
+		PowerPC,POWER7@860 {
+		PowerPC,POWER7@868 {
+		PowerPC,POWER7@8a0 {
+		PowerPC,POWER7@8b0 {
+		PowerPC,POWER7@8f0 {
+
+And the CPU layout is as expected:
+
+node 0 cpus: 0-47
+node 0 size: 32633 MB
+
+node 1 cpus: 48-95
+node 1 size: 32631 MB
+
+Signed-off-by: Anton Blanchard <anton@samba.org>
+--
+
+Index: b/livetree.c
+===================================================================
+--- a/livetree.c
++++ b/livetree.c
+@@ -656,12 +656,38 @@ static void sort_properties(struct node
+ 	free(tbl);
+ }
+ 
++static bool is_hex(const char *str)
++{
++	while (*str) {
++		if (!isxdigit(*str++))
++			return false;
++	}
++
++	return true;
++}
++
+ static int cmp_subnode(const void *ax, const void *bx)
+ {
+-	const struct node *a, *b;
++	struct node *a, *b;
++	const char *a_unit, *b_unit;
++
++	a = *((struct node * const *)ax);
++	b = *((struct node * const *)bx);
++
++	a_unit = get_unitname(a);
++	b_unit = get_unitname(b);
++
++	/* Sort hex unit addresses by number */
++	if (a_unit && b_unit && (a->basenamelen == b->basenamelen) &&
++	    !strncmp(a->name, b->name, a->basenamelen) &&
++	    is_hex(a_unit) && is_hex(b_unit)) {
++		unsigned long long a_num, b_num;
++
++		a_num = strtoull(a_unit, NULL, 16);
++		b_num = strtoull(b_unit, NULL, 16);
+ 
+-	a = *((const struct node * const *)ax);
+-	b = *((const struct node * const *)bx);
++		return (a_num > b_num) - (a_num < b_num);
++	}
+ 
+ 	return strcmp(a->name, b->name);
+ }
diff --git a/openpower/device_table.txt b/openpower/device_table.txt
new file mode 100644
index 0000000..dc1af51
--- /dev/null
+++ b/openpower/device_table.txt
@@ -0,0 +1,21 @@
+# See package/makedevs/README for details
+#
+# This device table is used to assign proper ownership and permissions
+# on various files. It doesn't create any device file, as it is used
+# in both static device configurations (where /dev/ is static) and in
+# dynamic configurations (where devtmpfs, mdev or udev are used).
+#
+# <name>				<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>
+/dev					d	755	0	0	-	-	-	-	-
+/tmp					d	1777	0	0	-	-	-	-	-
+/etc					d	755	0	0	-	-	-	-	-
+/root					d	700	0	0	-	-	-	-	-
+/var/www				d	755	33	33	-	-	-	-	-
+/etc/shadow				f	600	0	0	-	-	-	-	-
+/etc/passwd				f	644	0	0	-	-	-	-	-
+/etc/network/if-up.d			d	755	0	0	-	-	-	-	-
+/etc/network/if-pre-up.d		d	755	0	0	-	-	-	-	-
+/etc/network/if-down.d			d	755	0	0	-	-	-	-	-
+/etc/network/if-post-down.d		d	755	0	0	-	-	-	-	-
+# uncomment this to allow starting x as non-root
+#/usr/X11R6/bin/Xfbdev		     	f	4755	0	0	-	-	-	-	-
diff --git a/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
new file mode 100644
index 0000000..2c071b4
--- /dev/null
+++ b/openpower/linux/linux-0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -0,0 +1,27 @@
+From 3f099329a4aa747c3cccb502bb3a671df6e76cfd Mon Sep 17 00:00:00 2001
+From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
+Date: Tue, 25 Mar 2014 10:45:16 -0400
+Subject: [PATCH 1/7] xhci: Use xhci_pci_remove for xhci device shutdown
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/usb/host/xhci-pci.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
+index c2d65206ec6c..c2d33e274542 100644
+--- a/drivers/usb/host/xhci-pci.c
++++ b/drivers/usb/host/xhci-pci.c
+@@ -438,7 +438,7 @@ static struct pci_driver xhci_pci_driver = {
+ 	.remove =	xhci_pci_remove,
+ 	/* suspend and resume implemented later */
+ 
+-	.shutdown = 	usb_hcd_pci_shutdown,
++	.shutdown = 	xhci_pci_remove,
+ #ifdef CONFIG_PM
+ 	.driver = {
+ 		.pm = &usb_hcd_pci_pm_ops
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch b/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
new file mode 100644
index 0000000..9dcb6c3
--- /dev/null
+++ b/openpower/linux/linux-0002-Revert-usb-xhci-stop-everything-on-the-first-call-to.patch
@@ -0,0 +1,62 @@
+From 797d3fde5250abb4dedf00536282b8f93e4b66fe Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Thu, 28 Jan 2016 13:07:06 +1030
+Subject: [PATCH 2/7] Revert "usb: xhci: stop everything on the first call to
+ xhci_stop"
+
+This reverts commit 8c24d6d7b09deee3036ddc4f2b81b53b28c8f877.
+
+With this patch, the driver stops everything at the first call to
+xhci_stop, which is always for the secondary HCD when executing the
+.remove handler. We instead want to only stop when the primray HCD is
+shutting down.
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/usb/host/xhci.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
+index 776d59c32bc5..cef80e930db9 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -665,6 +665,15 @@ int xhci_run(struct usb_hcd *hcd)
+ }
+ EXPORT_SYMBOL_GPL(xhci_run);
+ 
++static void xhci_only_stop_hcd(struct usb_hcd *hcd)
++{
++	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
++
++	spin_lock_irq(&xhci->lock);
++	xhci_halt(xhci);
++	spin_unlock_irq(&xhci->lock);
++}
++
+ /*
+  * Stop xHCI driver.
+  *
+@@ -679,14 +688,15 @@ void xhci_stop(struct usb_hcd *hcd)
+ 	u32 temp;
+ 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ 
+-	if (xhci->xhc_state & XHCI_STATE_HALTED)
++	mutex_lock(&xhci->mutex);
++
++	if (!usb_hcd_is_primary_hcd(hcd)) {
++		xhci_only_stop_hcd(xhci->shared_hcd);
++		mutex_unlock(&xhci->mutex);
+ 		return;
++	}
+ 
+-	mutex_lock(&xhci->mutex);
+ 	spin_lock_irq(&xhci->lock);
+-	xhci->xhc_state |= XHCI_STATE_HALTED;
+-	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
+-
+ 	/* Make sure the xHC is halted for a USB3 roothub
+ 	 * (xhci_stop() could be called as part of failed init).
+ 	 */
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
new file mode 100644
index 0000000..5e42d2f
--- /dev/null
+++ b/openpower/linux/linux-0003-xhci-do-not-halt-the-secondary-HCD.patch
@@ -0,0 +1,42 @@
+From 05ac3b2476dd66ba26622d437c2517dd3ac389f1 Mon Sep 17 00:00:00 2001
+From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
+Date: Mon, 10 Mar 2014 13:02:13 -0300
+Subject: [PATCH 3/7] xhci: do not halt the secondary HCD
+
+We can't halt the secondary HCD, because it's also the primary HCD,
+which will cause problems if we have devices attached to the primary
+HCD, like a keyboard.
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/usb/host/xhci.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
+index cef80e930db9..90f48eb32d93 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -670,7 +670,18 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd)
+ 	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ 
+ 	spin_lock_irq(&xhci->lock);
+-	xhci_halt(xhci);
++	/*
++	 * We can't halt the secondary HCD, because it's also the
++	 * primary HCD, which will cause problems if we have devices
++	 * attached to the primary HCD, like a keyboard.
++	 */
++	/*xhci_halt(xhci);*/
++
++	/* The shared_hcd is going to be deallocated shortly (the USB core only
++	 * calls this function when allocation fails in usb_add_hcd(), or
++	 * usb_remove_hcd() is called).  So we need to unset xHCI's pointer.
++	 */
++	xhci->shared_hcd = NULL;
+ 	spin_unlock_irq(&xhci->lock);
+ }
+ 
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch b/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
new file mode 100644
index 0000000..f924468
--- /dev/null
+++ b/openpower/linux/linux-0004-drivers-drm-ast-Switch-SCU-to-VGA-output-on-POST.patch
@@ -0,0 +1,72 @@
+From c12cb7a8c9c8d780ff454399bf4bbbffdd3941f4 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Wed, 2 Mar 2016 11:25:47 +0800
+Subject: [PATCH 4/7] drivers/drm/ast: Switch SCU to VGA output on POST
+
+On AST BMC platforms, the BMC may be using the VGA device for UART
+mirroring. In this case, we need to switch the DAC output to
+VGA mode.
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/gpu/drm/ast/ast_post.c | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
+index 810c51d92b99..703dba2ba84b 100644
+--- a/drivers/gpu/drm/ast/ast_post.c
++++ b/drivers/gpu/drm/ast/ast_post.c
+@@ -32,6 +32,7 @@
+ #include "ast_dram_tables.h"
+ 
+ static void ast_init_dram_2300(struct drm_device *dev);
++static void ast_init_output_control(struct drm_device *dev);
+ 
+ void ast_enable_vga(struct drm_device *dev)
+ {
+@@ -384,6 +385,9 @@ void ast_post_gpu(struct drm_device *dev)
+ 	else
+ 		ast_init_dram_reg(dev);
+ 
++	if (ast->chip == AST2400)
++		ast_init_output_control(dev);
++
+ 	ast_init_3rdtx(dev);
+ }
+ 
+@@ -1655,3 +1659,31 @@ static void ast_init_dram_2300(struct drm_device *dev)
+ 	} while ((reg & 0x40) == 0);
+ }
+ 
++static void ast_init_output_control(struct drm_device *dev)
++{
++	struct ast_private *ast = dev->dev_private;
++	const uint32_t scu_addr = 0x1e6e2000;
++	const uint32_t scu_key = 0x1688a8a8;
++	uint32_t val;
++
++	/* unlock write access to SCUs */
++	val = ast_mindwm(ast, scu_addr);
++	ast_moutdwm(ast, scu_addr, scu_key);
++
++	/* configure SCU2C with the appropriate video output mode */
++	val = ast_mindwm(ast, scu_addr | 0x2c);
++
++	switch (ast->tx_chip_type) {
++	case AST_TX_SIL164:
++	case AST_TX_DP501:
++		/* Enable DVO output */
++		val &= ~0x40000;
++		break;
++	default:
++		/* VGA only: enable DAC output */
++		val &= ~0x30000;
++		break;
++	}
++
++	ast_moutdwm(ast, scu_addr | 0x2c, val);
++}
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch b/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
new file mode 100644
index 0000000..f6dec62
--- /dev/null
+++ b/openpower/linux/linux-0005-scsi-ignore-errors-from-scsi_dh_add_device.patch
@@ -0,0 +1,42 @@
+From 9d3559f97bd5183d4f84bbef3ea445a2ef841080 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare@suse.de>
+Date: Tue, 1 Mar 2016 13:57:59 +1100
+Subject: [PATCH 5/7] scsi: ignore errors from scsi_dh_add_device()
+
+device handler initialisation might fail due to a number of
+reasons. But as device_handlers are optional this shouldn't
+cause us to disable the device entirely.
+So just ignore errors from scsi_dh_add_device().
+
+Reviewed-by: Johannes Thumshirn <jthumshirn@suse.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/scsi/scsi_sysfs.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
+index c8115b4fe474..750df9b9b11c 100644
+--- a/drivers/scsi/scsi_sysfs.c
++++ b/drivers/scsi/scsi_sysfs.c
+@@ -1058,11 +1058,12 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
+ 	}
+ 
+ 	error = scsi_dh_add_device(sdev);
+-	if (error) {
++	if (error)
++		/*
++		 * device_handler is optional, so any error can be ignored
++		 */
+ 		sdev_printk(KERN_INFO, sdev,
+ 				"failed to add device handler: %d\n", error);
+-		return error;
+-	}
+ 
+ 	device_enable_async_suspend(&sdev->sdev_dev);
+ 	error = device_add(&sdev->sdev_dev);
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch b/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
new file mode 100644
index 0000000..11f9135
--- /dev/null
+++ b/openpower/linux/linux-0006-net-mlx4_core-Set-UAR-page-size-to-4KB-regardless-of.patch
@@ -0,0 +1,299 @@
+From 50d6158618c001b19967ab48aa9e25b2885b3374 Mon Sep 17 00:00:00 2001
+From: Huy Nguyen <huyn@mellanox.com>
+Date: Wed, 17 Feb 2016 17:24:26 +0200
+Subject: [PATCH 6/7] net/mlx4_core: Set UAR page size to 4KB regardless of
+ system page size
+
+problem description:
+
+The current code sets UAR page size equal to system page size.
+The ConnectX-3 and ConnectX-3 Pro HWs require minimum 128 UAR pages.
+The mlx4 kernel drivers are not loaded if there is less than 128 UAR pages.
+
+solution:
+
+Always set UAR page to 4KB. This allows more UAR pages if the OS
+has PAGE_SIZE larger than 4KB. For example, PowerPC kernel use 64KB
+system page size, with 4MB uar region, there are 4MB/2/64KB = 32
+uars (half for uar, half for blueflame). This does not meet minimum 128
+UAR pages requirement. With 4KB UAR page, there are 4MB/2/4KB = 512 uars
+which meet the minimum requirement.
+
+Note that only codes in mlx4_core that deal with firmware know that uar
+page size is 4KB. Codes that deal with usr page in cq and qp context
+(mlx4_ib, mlx4_en and part of mlx4_core) still have the same assumption
+that uar page size equals to system page size.
+
+Note that with this implementation, on 64KB system page size kernel, there
+are 16 uars per system page but only one uars is used. The other 15
+uars are ignored because of the above assumption.
+
+Regarding SR-IOV, mlx4_core in hypervisor will set the uar page size
+to 4KB and mlx4_core code in virtual OS will obtain the uar page size from
+firmware.
+
+Regarding backward compatibility in SR-IOV, if hypervisor has this new code,
+the virtual OS must be updated. If hypervisor has old code, and the virtual
+OS has this new code, the new code will be backward compatible with the
+old code. If the uar size is big enough, this new code in VF continues to
+work with 64 KB uar page size (on PowerPc kernel). If the uar size does not
+meet 128 uars requirement, this new code not loaded in VF and print the same
+error message as the old code in Hypervisor.
+
+Signed-off-by: Huy Nguyen <huyn@mellanox.com>
+Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+(cherry picked from commit 85743f1eb34548ba4b056d2f184a3d107a3b8917)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/infiniband/hw/mlx4/qp.c                   |  7 ++-
+ drivers/net/ethernet/mellanox/mlx4/cq.c           |  4 +-
+ drivers/net/ethernet/mellanox/mlx4/en_resources.c |  3 +-
+ drivers/net/ethernet/mellanox/mlx4/en_tx.c        |  4 +-
+ drivers/net/ethernet/mellanox/mlx4/eq.c           |  7 +--
+ drivers/net/ethernet/mellanox/mlx4/main.c         | 56 ++++++++++++++++++-----
+ drivers/net/ethernet/mellanox/mlx4/pd.c           | 12 +++--
+ include/linux/mlx4/device.h                       | 13 ++++++
+ 8 files changed, 84 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
+index 13eaaf45288f..c981fba11da8 100644
+--- a/drivers/infiniband/hw/mlx4/qp.c
++++ b/drivers/infiniband/hw/mlx4/qp.c
+@@ -1591,9 +1591,12 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
+ 	}
+ 
+ 	if (qp->ibqp.uobject)
+-		context->usr_page = cpu_to_be32(to_mucontext(ibqp->uobject->context)->uar.index);
++		context->usr_page = cpu_to_be32(
++			mlx4_to_hw_uar_index(dev->dev,
++					     to_mucontext(ibqp->uobject->context)->uar.index));
+ 	else
+-		context->usr_page = cpu_to_be32(dev->priv_uar.index);
++		context->usr_page = cpu_to_be32(
++			mlx4_to_hw_uar_index(dev->dev, dev->priv_uar.index));
+ 
+ 	if (attr_mask & IB_QP_DEST_QPN)
+ 		context->remote_qpn = cpu_to_be32(attr->dest_qp_num);
+diff --git a/drivers/net/ethernet/mellanox/mlx4/cq.c b/drivers/net/ethernet/mellanox/mlx4/cq.c
+index 3348e646db70..a849da92f857 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/cq.c
++++ b/drivers/net/ethernet/mellanox/mlx4/cq.c
+@@ -318,7 +318,9 @@ int mlx4_cq_alloc(struct mlx4_dev *dev, int nent,
+ 	if (timestamp_en)
+ 		cq_context->flags  |= cpu_to_be32(1 << 19);
+ 
+-	cq_context->logsize_usrpage = cpu_to_be32((ilog2(nent) << 24) | uar->index);
++	cq_context->logsize_usrpage =
++		cpu_to_be32((ilog2(nent) << 24) |
++			    mlx4_to_hw_uar_index(dev, uar->index));
+ 	cq_context->comp_eqn	    = priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(vector)].eqn;
+ 	cq_context->log_page_size   = mtt->page_shift - MLX4_ICM_PAGE_SHIFT;
+ 
+diff --git a/drivers/net/ethernet/mellanox/mlx4/en_resources.c b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
+index 12aab5a659d3..02e925d6f734 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/en_resources.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_resources.c
+@@ -58,7 +58,8 @@ void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride,
+ 	} else {
+ 		context->sq_size_stride = ilog2(TXBB_SIZE) - 4;
+ 	}
+-	context->usr_page = cpu_to_be32(mdev->priv_uar.index);
++	context->usr_page = cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
++					mdev->priv_uar.index));
+ 	context->local_qpn = cpu_to_be32(qpn);
+ 	context->pri_path.ackto = 1 & 0x07;
+ 	context->pri_path.sched_queue = 0x83 | (priv->port - 1) << 6;
+diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+index 4421bf5463f6..e0946ab22010 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+@@ -213,7 +213,9 @@ int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv,
+ 	mlx4_en_fill_qp_context(priv, ring->size, ring->stride, 1, 0, ring->qpn,
+ 				ring->cqn, user_prio, &ring->context);
+ 	if (ring->bf_alloced)
+-		ring->context.usr_page = cpu_to_be32(ring->bf.uar->index);
++		ring->context.usr_page =
++			cpu_to_be32(mlx4_to_hw_uar_index(mdev->dev,
++							 ring->bf.uar->index));
+ 
+ 	err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, &ring->context,
+ 			       &ring->qp, &ring->qp_state);
+diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
+index 603d1c3d3b2e..ad6240e45441 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/eq.c
++++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
+@@ -924,9 +924,10 @@ static void __iomem *mlx4_get_eq_uar(struct mlx4_dev *dev, struct mlx4_eq *eq)
+ 
+ 	if (!priv->eq_table.uar_map[index]) {
+ 		priv->eq_table.uar_map[index] =
+-			ioremap(pci_resource_start(dev->persist->pdev, 2) +
+-				((eq->eqn / 4) << PAGE_SHIFT),
+-				PAGE_SIZE);
++			ioremap(
++				pci_resource_start(dev->persist->pdev, 2) +
++				((eq->eqn / 4) << (dev->uar_page_shift)),
++				(1 << (dev->uar_page_shift)));
+ 		if (!priv->eq_table.uar_map[index]) {
+ 			mlx4_err(dev, "Couldn't map EQ doorbell for EQN 0x%06x\n",
+ 				 eq->eqn);
+diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
+index 31c491e02e69..225551150442 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/main.c
++++ b/drivers/net/ethernet/mellanox/mlx4/main.c
+@@ -168,6 +168,20 @@ struct mlx4_port_config {
+ 
+ static atomic_t pf_loading = ATOMIC_INIT(0);
+ 
++static inline void mlx4_set_num_reserved_uars(struct mlx4_dev *dev,
++					      struct mlx4_dev_cap *dev_cap)
++{
++	/* The reserved_uars is calculated by system page size unit.
++	 * Therefore, adjustment is added when the uar page size is less
++	 * than the system page size
++	 */
++	dev->caps.reserved_uars	=
++		max_t(int,
++		      mlx4_get_num_reserved_uar(dev),
++		      dev_cap->reserved_uars /
++			(1 << (PAGE_SHIFT - dev->uar_page_shift)));
++}
++
+ int mlx4_check_port_params(struct mlx4_dev *dev,
+ 			   enum mlx4_port_type *port_type)
+ {
+@@ -386,8 +400,6 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
+ 	dev->caps.reserved_mtts      = dev_cap->reserved_mtts;
+ 	dev->caps.reserved_mrws	     = dev_cap->reserved_mrws;
+ 
+-	/* The first 128 UARs are used for EQ doorbells */
+-	dev->caps.reserved_uars	     = max_t(int, 128, dev_cap->reserved_uars);
+ 	dev->caps.reserved_pds	     = dev_cap->reserved_pds;
+ 	dev->caps.reserved_xrcds     = (dev->caps.flags & MLX4_DEV_CAP_FLAG_XRC) ?
+ 					dev_cap->reserved_xrcds : 0;
+@@ -405,6 +417,15 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
+ 	dev->caps.max_gso_sz	     = dev_cap->max_gso_sz;
+ 	dev->caps.max_rss_tbl_sz     = dev_cap->max_rss_tbl_sz;
+ 
++	/* Save uar page shift */
++	if (!mlx4_is_slave(dev)) {
++		/* Virtual PCI function needs to determine UAR page size from
++		 * firmware. Only master PCI function can set the uar page size
++		 */
++		dev->uar_page_shift = DEFAULT_UAR_PAGE_SHIFT;
++		mlx4_set_num_reserved_uars(dev, dev_cap);
++	}
++
+ 	if (dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_PHV_EN) {
+ 		struct mlx4_init_hca_param hca_param;
+ 
+@@ -815,16 +836,25 @@ static int mlx4_slave_cap(struct mlx4_dev *dev)
+ 		return -ENODEV;
+ 	}
+ 
+-	/* slave gets uar page size from QUERY_HCA fw command */
+-	dev->caps.uar_page_size = 1 << (hca_param.uar_page_sz + 12);
++	/* Set uar_page_shift for VF */
++	dev->uar_page_shift = hca_param.uar_page_sz + 12;
+ 
+-	/* TODO: relax this assumption */
+-	if (dev->caps.uar_page_size != PAGE_SIZE) {
+-		mlx4_err(dev, "UAR size:%d != kernel PAGE_SIZE of %ld\n",
+-			 dev->caps.uar_page_size, PAGE_SIZE);
+-		return -ENODEV;
++	/* Make sure the master uar page size is valid */
++	if (dev->uar_page_shift > PAGE_SHIFT) {
++		mlx4_err(dev,
++			 "Invalid configuration: uar page size is larger than system page size\n");
++		return  -ENODEV;
+ 	}
+ 
++	/* Set reserved_uars based on the uar_page_shift */
++	mlx4_set_num_reserved_uars(dev, &dev_cap);
++
++	/* Although uar page size in FW differs from system page size,
++	 * upper software layers (mlx4_ib, mlx4_en and part of mlx4_core)
++	 * still works with assumption that uar page size == system page size
++	 */
++	dev->caps.uar_page_size = PAGE_SIZE;
++
+ 	memset(&func_cap, 0, sizeof(func_cap));
+ 	err = mlx4_QUERY_FUNC_CAP(dev, 0, &func_cap);
+ 	if (err) {
+@@ -2092,8 +2122,12 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
+ 
+ 		dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1;
+ 
+-		init_hca.log_uar_sz = ilog2(dev->caps.num_uars);
+-		init_hca.uar_page_sz = PAGE_SHIFT - 12;
++		/* Always set UAR page size 4KB, set log_uar_sz accordingly */
++		init_hca.log_uar_sz = ilog2(dev->caps.num_uars) +
++				      PAGE_SHIFT -
++				      DEFAULT_UAR_PAGE_SHIFT;
++		init_hca.uar_page_sz = DEFAULT_UAR_PAGE_SHIFT - 12;
++
+ 		init_hca.mw_enabled = 0;
+ 		if (dev->caps.flags & MLX4_DEV_CAP_FLAG_MEM_WINDOW ||
+ 		    dev->caps.bmme_flags & MLX4_BMME_FLAG_TYPE_2_WIN)
+diff --git a/drivers/net/ethernet/mellanox/mlx4/pd.c b/drivers/net/ethernet/mellanox/mlx4/pd.c
+index 609c59dc854e..b3cc3ab63799 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/pd.c
++++ b/drivers/net/ethernet/mellanox/mlx4/pd.c
+@@ -269,9 +269,15 @@ EXPORT_SYMBOL_GPL(mlx4_bf_free);
+ 
+ int mlx4_init_uar_table(struct mlx4_dev *dev)
+ {
+-	if (dev->caps.num_uars <= 128) {
+-		mlx4_err(dev, "Only %d UAR pages (need more than 128)\n",
+-			 dev->caps.num_uars);
++	int num_reserved_uar = mlx4_get_num_reserved_uar(dev);
++
++	mlx4_dbg(dev, "uar_page_shift = %d", dev->uar_page_shift);
++	mlx4_dbg(dev, "Effective reserved_uars=%d", dev->caps.reserved_uars);
++
++	if (dev->caps.num_uars <= num_reserved_uar) {
++		mlx4_err(
++			dev, "Only %d UAR pages (need more than %d)\n",
++			dev->caps.num_uars, num_reserved_uar);
+ 		mlx4_err(dev, "Increase firmware log2_uar_bar_megabytes?\n");
+ 		return -ENODEV;
+ 	}
+diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
+index d3133be12d92..8bab38f8872a 100644
+--- a/include/linux/mlx4/device.h
++++ b/include/linux/mlx4/device.h
+@@ -44,6 +44,8 @@
+ 
+ #include <linux/timecounter.h>
+ 
++#define DEFAULT_UAR_PAGE_SHIFT  12
++
+ #define MAX_MSIX_P_PORT		17
+ #define MAX_MSIX		64
+ #define MIN_MSIX_P_PORT		5
+@@ -853,6 +855,7 @@ struct mlx4_dev {
+ 	u64			regid_promisc_array[MLX4_MAX_PORTS + 1];
+ 	u64			regid_allmulti_array[MLX4_MAX_PORTS + 1];
+ 	struct mlx4_vf_dev     *dev_vfs;
++	u8  uar_page_shift;
+ };
+ 
+ struct mlx4_clock_params {
+@@ -1527,4 +1530,14 @@ int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev,
+ int mlx4_get_internal_clock_params(struct mlx4_dev *dev,
+ 				   struct mlx4_clock_params *params);
+ 
++static inline int mlx4_to_hw_uar_index(struct mlx4_dev *dev, int index)
++{
++	return (index << (PAGE_SHIFT - dev->uar_page_shift));
++}
++
++static inline int mlx4_get_num_reserved_uar(struct mlx4_dev *dev)
++{
++	/* The first 128 UARs are used for EQ doorbells */
++	return (128 >> (PAGE_SHIFT - dev->uar_page_shift));
++}
+ #endif /* MLX4_DEVICE_H */
+-- 
+2.7.3
+
diff --git a/openpower/linux/linux-0007-Release-4.4.6-openpower1.patch b/openpower/linux/linux-0007-Release-4.4.6-openpower1.patch
new file mode 100644
index 0000000..b8c7e49
--- /dev/null
+++ b/openpower/linux/linux-0007-Release-4.4.6-openpower1.patch
@@ -0,0 +1,26 @@
+From 67b6cef1f1fe1801bbe015be2bccc5e3d9d32f2a Mon Sep 17 00:00:00 2001
+From: Joel Stanley <joel@jms.id.au>
+Date: Tue, 20 Oct 2015 15:01:06 +1030
+Subject: [PATCH 7/7] Release 4.4.6-openpower1
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 87d12b44ab66..9a78974bdab4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 4
+ PATCHLEVEL = 4
+ SUBLEVEL = 6
+-EXTRAVERSION =
++EXTRAVERSION = -openpower1
+ NAME = Blurry Fish Butt
+ 
+ # *DOCUMENTATION*
+-- 
+2.7.3
+
diff --git a/openpower/overlay/etc/fstab b/openpower/overlay/etc/fstab
new file mode 100644
index 0000000..d373dc6
--- /dev/null
+++ b/openpower/overlay/etc/fstab
@@ -0,0 +1,6 @@
+# <file system>	<mount pt>	<type>	<options>	<dump>	<pass>
+/dev/root	/		ext2	rw,noauto	0	1
+proc		/proc		proc	defaults	0	0
+devpts		/dev/pts	devpts	defaults,gid=5,mode=620	0	0
+tmpfs		/dev/shm	tmpfs	mode=0777	0	0
+sysfs		/sys		sysfs	defaults	0	0
diff --git a/openpower/overlay/etc/inittab b/openpower/overlay/etc/inittab
new file mode 100644
index 0000000..235c835
--- /dev/null
+++ b/openpower/overlay/etc/inittab
@@ -0,0 +1,34 @@
+# /etc/inittab
+#
+# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
+#
+# Note: BusyBox init doesn't support runlevels.  The runlevels field is
+# completely ignored by BusyBox init. If you want runlevels, use
+# sysvinit.
+#
+# Format for each entry: <id>:<runlevels>:<action>:<process>
+#
+# id        == tty to run on, or empty for /dev/console
+# runlevels == ignored
+# action    == one of sysinit, respawn, askfirst, wait, and once
+# process   == program to run
+
+# Startup the system
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -o remount,rw / # REMOUNT_ROOTFS_RW
+null::sysinit:/bin/mkdir -p /dev/pts
+null::sysinit:/bin/mkdir -p /dev/shm
+null::sysinit:/bin/mount -a
+null::sysinit:/bin/hostname -F /etc/hostname
+# now run any rc scripts
+null::sysinit:/etc/init.d/rcS
+
+# Stuff to do for the 3-finger salute
+::ctrlaltdel:/sbin/reboot
+
+# Stuff to do before rebooting
+null::shutdown:/etc/init.d/rcK
+null::shutdown:/bin/umount -a -r
+null::shutdown:/sbin/swapoff -a
+
+null::restart:/usr/sbin/kexec-restart
diff --git a/openpower/overlay/etc/locale b/openpower/overlay/etc/locale
new file mode 100644
index 0000000..6737e87
--- /dev/null
+++ b/openpower/overlay/etc/locale
@@ -0,0 +1 @@
+LANG=en_US.utf8
diff --git a/openpower/package/Config.in b/openpower/package/Config.in
old mode 100644
new mode 100755
index 92ab00f..902d2ec
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -5,8 +5,12 @@
 source "$BR2_EXTERNAL/package/habanero-xml/Config.in"
 source "$BR2_EXTERNAL/package/firestone-xml/Config.in"
 source "$BR2_EXTERNAL/package/garrison-xml/Config.in"
+source "$BR2_EXTERNAL/package/barreleye-xml/Config.in"
 source "$BR2_EXTERNAL/package/openpower-pnor/Config.in"
+source "$BR2_EXTERNAL/package/petitboot/Config.in"
 source "$BR2_EXTERNAL/package/p8-pore-binutils/Config.in"
 source "$BR2_EXTERNAL/package/occ/Config.in"
 source "$BR2_EXTERNAL/package/capp-ucode/Config.in"
 source "$BR2_EXTERNAL/package/skiboot/Config.in"
+source "$BR2_EXTERNAL/package/libflash/Config.in"
+source "$BR2_EXTERNAL/package/loadkeys/Config.in"
diff --git a/openpower/package/VERSION.readme b/openpower/package/VERSION.readme
index b9b43bb..9cd9943 100644
--- a/openpower/package/VERSION.readme
+++ b/openpower/package/VERSION.readme
@@ -72,10 +72,12 @@
 
     Current sub packages included in openpower-pnor.mk $(OPENPOWER_VERSIONED_SUBPACKAGES)
 
-    - hostboot
-    - occ
     - skiboot
+    - hostboot
+    - petitboot kernel
+    - petitboot
     - $(platform)-xml
+    - occ
     - hostboot-binaries
     - capp-ucode
 
diff --git a/openpower/package/barreleye-xml/Config.in b/openpower/package/barreleye-xml/Config.in
new file mode 100755
index 0000000..9187dac
--- /dev/null
+++ b/openpower/package/barreleye-xml/Config.in
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_BARRELEYE_XML
+        bool "barreleye_xml"
+        default y if (BR2_OPENPOWER_CONFIG_NAME = "barreleye")
+        help
+            Utilites for building xml and the targeting binary image
+
+config BR2_BARRELEYE_SYSTEM_XML_FILENAME
+        string "Barreleye targeting system xml filename"
+        default ""
+        help
+            Defines the name of the system XML filename to be used when creating targeting binary image
+
+config BR2_BARRELEYE_MRW_XML_FILENAME
+        string "Barreleye targeting mrw xml filename"
+        default ""
+        help
+            Defines the name of the mrw XML filename to be used when creating targeting binary image
+
+config BR2_BARRELEYE_BIOS_XML_FILENAME
+        string "Barreleye BIOS metadata XML filename"
+        default ""
+        help
+            Defines the name of the BIOS XML filename to parse when generating BIOS metadata
diff --git a/openpower/package/barreleye-xml/barreleye-xml.mk b/openpower/package/barreleye-xml/barreleye-xml.mk
new file mode 100755
index 0000000..2dd6194
--- /dev/null
+++ b/openpower/package/barreleye-xml/barreleye-xml.mk
@@ -0,0 +1,75 @@
+################################################################################
+#
+# barreleye_xml
+#
+################################################################################
+
+BARRELEYE_XML_VERSION ?= 2ae82feca041e3dc5452fc6e5402b26e1af4921e
+BARRELEYE_XML_SITE = $(call github,open-power,barreleye-xml,$(BARRELEYE_XML_VERSION))
+
+BARRELEYE_XML_LICENSE = Apache-2.0
+BARRELEYE_XML_DEPENDENCIES = hostboot-install-images openpower-mrw-install-images common-p8-xml-install-images
+
+BARRELEYE_XML_INSTALL_IMAGES = YES
+BARRELEYE_XML_INSTALL_TARGET = YES
+
+MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BIOS_SCHEMA_FILE = $(MRW_HB_TOOLS)/bios.xsd
+BARRELEYE_BIOS_XML_CONFIG_FILE = $(MRW_SCRATCH)/$(BR2_BARRELEYE_BIOS_XML_FILENAME)
+BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata.xml
+PETITBOOT_XSLT_FILE = $(MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+PETITBOOT_BIOS_XML_METADATA_FILE = \
+    $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_CONFIG_NAME)_bios_metadata_petitboot.xml
+PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+define BARRELEYE_XML_BUILD_CMDS
+        # copy the barreleye xml where the common lives
+        bash -c 'mkdir -p $(MRW_SCRATCH) && cp -r $(@D)/* $(MRW_SCRATCH)'
+
+        # generate the system mrw xml
+        perl -I $(MRW_HB_TOOLS) \
+        $(MRW_HB_TOOLS)/processMrw.pl -x $(MRW_SCRATCH)/barreleye.xml
+        
+        # merge in any system specific attributes, hostboot attributes
+        $(MRW_HB_TOOLS)/mergexml.sh $(MRW_SCRATCH)/$(BR2_BARRELEYE_SYSTEM_XML_FILENAME) \
+            $(MRW_HB_TOOLS)/attribute_types.xml \
+            $(MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(MRW_HB_TOOLS)/target_types_merged.xml \
+            $(MRW_HB_TOOLS)/target_types_hb.xml \
+            $(MRW_SCRATCH)/$(BR2_BARRELEYE_MRW_XML_FILENAME) > $(MRW_HB_TOOLS)/temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        $(MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(MRW_HB_TOOLS)/temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=none \
+            --img-output-dir=$(MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(BARRELEYE_BIOS_XML_CONFIG_FILE) \
+            --bios-schema-file=$(BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BIOS_XML_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_XSLT_FILE) \
+            $(BIOS_XML_METADATA_FILE)
+endef
+
+define BARRELEYE_XML_INSTALL_IMAGES_CMDS
+        mv $(MRW_HB_TOOLS)/targeting.bin $(MRW_HB_TOOLS)/$(BR2_OPENPOWER_TARGETING_BIN_FILENAME)
+endef
+
+define BARRELEYE_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(PETITBOOT_BIOS_XML_METADATA_FILE) \
+            $(PETITBOOT_BIOS_XML_METADATA_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/capp-ucode/capp-ucode.mk b/openpower/package/capp-ucode/capp-ucode.mk
index fda87ea..ba5acd4 100644
--- a/openpower/package/capp-ucode/capp-ucode.mk
+++ b/openpower/package/capp-ucode/capp-ucode.mk
@@ -3,9 +3,9 @@
 # capp-ucode.mk
 #
 ################################################################################
-CAPP_UCODE_VERSION ?= e4f3923e60979ea42494f590db03d965e478eef1
+CAPP_UCODE_VERSION ?= 105cb8f69edb7e76c4d153bf2e5c9718811a3114
 CAPP_UCODE_SITE ?= $(call github,open-power,capp-ucode,$(CAPP_UCODE_VERSION))
-PETITBOOT_LICENSE = Apache-2.0
+CAPP_UCODE_LICENSE = Apache-2.0
 
 CAPP_UCODE_INSTALL_IMAGES = YES
 
diff --git a/openpower/package/firestone-xml/firestone.mk b/openpower/package/firestone-xml/firestone.mk
index 68e6347..5f631fd 100644
--- a/openpower/package/firestone-xml/firestone.mk
+++ b/openpower/package/firestone-xml/firestone.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FIRESTONE_XML_VERSION ?= 7ac1ae80d0f965d39bdee944f89ed5a118d2adc2
+FIRESTONE_XML_VERSION ?= 15e371874a8dec1d8ef279aef2d0a0fed3ded8dd
 FIRESTONE_XML_SITE ?= $(call github,open-power,firestone-xml,$(FIRESTONE_XML_VERSION))
 
 FIRESTONE_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/garrison-xml/garrison.mk b/openpower/package/garrison-xml/garrison.mk
index 688bc6f..d84ed41 100644
--- a/openpower/package/garrison-xml/garrison.mk
+++ b/openpower/package/garrison-xml/garrison.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-GARRISON_XML_VERSION ?= 835c3467a37773205960d7b0150a3c360972e178
+GARRISON_XML_VERSION ?= f55807eb198d56323ab0e0767769a87ee984909f
 GARRISON_XML_SITE ?= $(call github,open-power,garrison-xml,$(GARRISON_XML_VERSION))
 
 GARRISON_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/habanero-xml/habanero-xml.mk b/openpower/package/habanero-xml/habanero-xml.mk
index 1b194a6..b85a952 100644
--- a/openpower/package/habanero-xml/habanero-xml.mk
+++ b/openpower/package/habanero-xml/habanero-xml.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HABANERO_XML_VERSION ?= d32a9e558b49989eda2a72f28f4e85dd4c2e568c
+HABANERO_XML_VERSION ?= 5a2a5413a6e2cd55f2e30342e898980a3d3a15d7
 HABANERO_XML_SITE ?= $(call github,open-power,habanero-xml,$(HABANERO_XML_VERSION))
 
 HABANERO_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/hostboot-binaries/hostboot_binaries.mk b/openpower/package/hostboot-binaries/hostboot_binaries.mk
index d9a23df..766202a 100644
--- a/openpower/package/hostboot-binaries/hostboot_binaries.mk
+++ b/openpower/package/hostboot-binaries/hostboot_binaries.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_BINARIES_VERSION ?= 22470e51b6342f9c307e28b3ea7cdb194ff954d4
+HOSTBOOT_BINARIES_VERSION ?= 7f593a3545f47310132f67e0ba8f4d0c6350c9e7
 HOSTBOOT_BINARIES_SITE ?= $(call github,open-power,hostboot-binaries,$(HOSTBOOT_BINARIES_VERSION))
 HOSTBOOT_BINARIES_LICENSE = Apache-2.0
 
diff --git a/openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI-and-use-O2.patch b/openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
similarity index 76%
rename from openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI-and-use-O2.patch
rename to openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
index cc25c45..66bc026 100644
--- a/openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI-and-use-O2.patch
+++ b/openpower/package/hostboot/hostboot-0002-GCC-4.9-Make-compiler-use-ELFv1-ABI.patch
@@ -1,12 +1,10 @@
 From 005cac73915ee6f6b67e9b01ae840b798c1fc80e Mon Sep 17 00:00:00 2001
 From: Andrew Geissler <andrewg@us.ibm.com>
 Date: Mon, 16 Feb 2015 13:43:51 -0600
-Subject: [PATCH] GCC 4.9: Make compiler use ELFv1 ABI and use -O2
+Subject: [PATCH] GCC 4.9: Make compiler use ELFv1 ABI.
 
 GCC4.9 defaults to ELFv2 ABI support but we do not have all
 of the needed tools to suppor this.
-GCC4.9 also does not work well with -O3 so I've had to
-knock us down to -O2 for now.
 
 Change-Id: Iacf49c46b1fb25776ba60d6506ccadff7b46bf60
 RTC: 123430
@@ -18,16 +16,6 @@
 index 8ca32b1..c729341 100644
 --- a/src/build/mkrules/cflags.env.mk
 +++ b/src/build/mkrules/cflags.env.mk
-@@ -28,7 +28,8 @@
- # Description:
- #     Configuration of the compiler, linker, etc. flags.
- 
--OPT_LEVEL ?= -O3
-+# TODO RTC 124305 - Get -O3 to work with gcc4.9
-+OPT_LEVEL ?= -O2
- 
- ifdef MODULE
- COMMONFLAGS += -fPIC -Bsymbolic -Bsymbolic-functions
 @@ -36,10 +37,12 @@ CFLAGS += -D__HOSTBOOT_MODULE=$(MODULE)
  endif
  
diff --git a/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch b/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch
deleted file mode 100644
index ef2a896..0000000
--- a/openpower/package/hostboot/hostboot-0003-Remove-gard-actions-for-memory-plugging-errors.patch
+++ /dev/null
@@ -1,764 +0,0 @@
-From c53b40e0dcc250d75a159389e099dd40b64e5468 Mon Sep 17 00:00:00 2001
-From: Dan Crowell <dcrowell@us.ibm.com>
-Date: Wed, 27 May 2015 16:39:23 -0500
-Subject: [PATCH] Remove gard actions for memory plugging errors
-
-Modified errors related to unsupported or invalid dimm
-configurations to no longer gard any hardware.
-
-Change-Id: I67459425e973ad1c6f4cf95ccd164b73bdd46a80
----
- .../mss_eff_config/memory_mss_eff_config.xml       | 208 +++++----------------
- .../memory_mss_eff_config_termination.xml          |  69 +------
- 2 files changed, 50 insertions(+), 227 deletions(-)
-
-diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
-index ed1de55..c6a2d37 100644
---- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
-+++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config.xml
-@@ -5,7 +5,7 @@
- <!--                                                                        -->
- <!-- OpenPOWER HostBoot Project                                             -->
- <!--                                                                        -->
--<!-- Contributors Listed Below - COPYRIGHT 2013,2014                        -->
-+<!-- Contributors Listed Below - COPYRIGHT 2013,2015                        -->
- <!-- [+] International Business Machines Corp.                              -->
- <!--                                                                        -->
- <!--                                                                        -->
-@@ -22,7 +22,7 @@
- <!-- permissions and limitations under the License.                         -->
- <!--                                                                        -->
- <!-- IBM_PROLOG_END_TAG                                                     -->
--<!-- $Id: memory_mss_eff_config.xml,v 1.3 2014/10/20 22:12:59 asaetow Exp $ -->
-+<!-- $Id: memory_mss_eff_config.xml,v 1.4 2015-05-27 19:56:31 asaetow Exp $ -->
- <!-- For file ../../ipl/fapi/mss_eff_config.C -->
- <!-- // *! OWNER NAME  : Anuwat Saetow     Email: asaetow@us.ibm.com -->
- <!-- // *! BACKUP NAME : Mark Bellows      Email: bellows@us.ibm.com -->
-@@ -47,9 +47,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -71,9 +68,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -98,9 +92,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -125,9 +116,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -169,10 +157,10 @@
-     <description>Plug rule violation, one position is empty but other are present
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-         <priority>HIGH</priority>
-@@ -186,10 +174,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -198,10 +182,10 @@
-     <description>Plug rule violation, sides do not match
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -216,10 +200,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- 
-@@ -229,10 +209,10 @@
-     <description>Plug rule violation,  top and bottom do not match
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
--    <ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_0_1</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_0</ffdc>
-+	<ffdc>CUR_DIMM_SPD_VALID_U8ARRAY_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -247,10 +227,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -259,10 +235,10 @@
-     <description>Incompatable DRAM generation 
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>DRAM_DEVICE_TYPE_0_0</ffdc>
--    <ffdc>DRAM_DEVICE_TYPE_0_1</ffdc>
--    <ffdc>DRAM_DEVICE_TYPE_1_0</ffdc>
--    <ffdc>DRAM_DEVICE_TYPE_1_1</ffdc>
-+	<ffdc>DRAM_DEVICE_TYPE_0_0</ffdc>
-+	<ffdc>DRAM_DEVICE_TYPE_0_1</ffdc>
-+	<ffdc>DRAM_DEVICE_TYPE_1_0</ffdc>
-+	<ffdc>DRAM_DEVICE_TYPE_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -277,10 +253,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -289,10 +261,10 @@
-     <description>Incompatable DIMM type
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>MODULE_TYPE_0_0</ffdc>
--    <ffdc>MODULE_TYPE_0_1</ffdc>
--    <ffdc>MODULE_TYPE_1_0</ffdc>
--    <ffdc>MODULE_TYPE_1_1</ffdc>
-+	<ffdc>MODULE_TYPE_0_0</ffdc>
-+	<ffdc>MODULE_TYPE_0_1</ffdc>
-+	<ffdc>MODULE_TYPE_1_0</ffdc>
-+	<ffdc>MODULE_TYPE_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -307,10 +279,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -319,10 +287,10 @@
-     <description>Incompatable DIMM ranks
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>NUM_RANKS_0_0</ffdc>
--    <ffdc>NUM_RANKS_0_1</ffdc>
--    <ffdc>NUM_RANKS_1_0</ffdc>
--    <ffdc>NUM_RANKS_1_1</ffdc>
-+	<ffdc>NUM_RANKS_0_0</ffdc>
-+	<ffdc>NUM_RANKS_0_1</ffdc>
-+	<ffdc>NUM_RANKS_1_0</ffdc>
-+	<ffdc>NUM_RANKS_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -337,10 +305,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -349,10 +313,10 @@
-     <description>Incompatable DIMM banks
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>SDRAM_BANKS_0_0</ffdc>
--    <ffdc>SDRAM_BANKS_0_1</ffdc>
--    <ffdc>SDRAM_BANKS_1_0</ffdc>
--    <ffdc>SDRAM_BANKS_1_1</ffdc>
-+	<ffdc>SDRAM_BANKS_0_0</ffdc>
-+	<ffdc>SDRAM_BANKS_0_1</ffdc>
-+	<ffdc>SDRAM_BANKS_1_0</ffdc>
-+	<ffdc>SDRAM_BANKS_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -367,10 +331,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -379,10 +339,10 @@
-     <description>Incompatable DIMM rows
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>SDRAM_ROWS_0_0</ffdc>
--    <ffdc>SDRAM_ROWS_0_1</ffdc>
--    <ffdc>SDRAM_ROWS_1_0</ffdc>
--    <ffdc>SDRAM_ROWS_1_1</ffdc>
-+	<ffdc>SDRAM_ROWS_0_0</ffdc>
-+	<ffdc>SDRAM_ROWS_0_1</ffdc>
-+	<ffdc>SDRAM_ROWS_1_0</ffdc>
-+	<ffdc>SDRAM_ROWS_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -397,10 +357,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -409,10 +365,10 @@
-     <description>Incompatable DIMM columns
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>SDRAM_COLS_0_0</ffdc>
--    <ffdc>SDRAM_COLS_0_1</ffdc>
--    <ffdc>SDRAM_COLS_1_0</ffdc>
--    <ffdc>SDRAM_COLS_1_1</ffdc>
-+	<ffdc>SDRAM_COLS_0_0</ffdc>
-+	<ffdc>SDRAM_COLS_0_1</ffdc>
-+	<ffdc>SDRAM_COLS_1_0</ffdc>
-+	<ffdc>SDRAM_COLS_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -427,10 +383,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -439,10 +391,10 @@
-     <description>Incompatable DRAM primary bus width
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>BUS_WIDTH_0_0</ffdc>
--    <ffdc>BUS_WIDTH_0_1</ffdc>
--    <ffdc>BUS_WIDTH_1_0</ffdc>
--    <ffdc>BUS_WIDTH_1_1</ffdc>
-+	<ffdc>BUS_WIDTH_0_0</ffdc>
-+	<ffdc>BUS_WIDTH_0_1</ffdc>
-+	<ffdc>BUS_WIDTH_1_0</ffdc>
-+	<ffdc>BUS_WIDTH_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -457,10 +409,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- 
-@@ -483,10 +431,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- 
-@@ -496,10 +440,10 @@
-     <description>Incompatable DRAM width
-         </description>
-     <FFDC>TARGET_MBA</FFDC>
--    <ffdc>DRAM_WIDTH_0_0</ffdc>
--    <ffdc>DRAM_WIDTH_0_1</ffdc>
--    <ffdc>DRAM_WIDTH_1_0</ffdc>
--    <ffdc>DRAM_WIDTH_1_1</ffdc>
-+	<ffdc>DRAM_WIDTH_0_0</ffdc>
-+	<ffdc>DRAM_WIDTH_0_1</ffdc>
-+	<ffdc>DRAM_WIDTH_1_0</ffdc>
-+	<ffdc>DRAM_WIDTH_1_1</ffdc>
- 
-     <callout>
-         <procedure>MEMORY_PLUGGING_ERROR</procedure>
-@@ -514,10 +458,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -540,10 +480,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -566,10 +502,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -591,10 +523,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -616,10 +544,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -641,10 +565,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -666,10 +586,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -691,10 +607,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -716,10 +628,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -741,10 +649,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -766,10 +670,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -791,10 +691,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -816,10 +712,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -841,10 +733,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -866,10 +754,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--        <priority>HIGH</priority>
--    </gard>
- </hwpError>
- 
- 
-diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
-index 9f3c89c..f04b0a6 100644
---- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
-+++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml
-@@ -5,7 +5,9 @@
- <!--                                                                        -->
- <!-- OpenPOWER HostBoot Project                                             -->
- <!--                                                                        -->
--<!-- COPYRIGHT International Business Machines Corp. 2013,2014              -->
-+<!-- Contributors Listed Below - COPYRIGHT 2013,2015                        -->
-+<!-- [+] International Business Machines Corp.                              -->
-+<!--                                                                        -->
- <!--                                                                        -->
- <!-- Licensed under the Apache License, Version 2.0 (the "License");        -->
- <!-- you may not use this file except in compliance with the License.       -->
-@@ -20,7 +22,7 @@
- <!-- permissions and limitations under the License.                         -->
- <!--                                                                        -->
- <!-- IBM_PROLOG_END_TAG                                                     -->
--<!-- $Id: memory_mss_eff_config_termination.xml,v 1.2 2014/04/07 23:02:10 lapietra Exp $ -->
-+<!-- $Id: memory_mss_eff_config_termination.xml,v 1.3 2015-05-27 20:02:29 asaetow Exp $ -->
- <!-- For file ../../ipl/fapi/mss_eff_config_termination.C -->
- <!-- // *! OWNER NAME  : Dave Cadigan      Email: dcadiga@us.ibm.com -->
- <!-- // *! BACKUP NAME : Anuwat Saetow     Email: asaetow@us.ibm.com -->
-@@ -195,9 +197,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -220,9 +219,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- <!-- *********************************************************************** -->
-   <hwpError>
-@@ -245,9 +241,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -271,9 +264,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -297,9 +287,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -323,9 +310,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -349,9 +333,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -374,9 +355,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -400,9 +378,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -425,9 +400,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -450,9 +422,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -476,9 +445,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -497,9 +463,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -523,9 +486,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- <!-- *********************************************************************** -->
-   <hwpError>
-@@ -650,9 +610,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -675,9 +632,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -699,9 +653,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- 
-@@ -724,9 +675,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -750,9 +698,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -820,9 +765,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- <!-- *********************************************************************** -->
-@@ -845,9 +787,6 @@
-         <target>TARGET_MBA</target>
-     </deconfigure>
- 
--    <gard>
--        <target>TARGET_MBA</target>
--    </gard>
- </hwpError>
- 
- </hwpErrors>
--- 
-2.3.0
-
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index 79141c0..b776aad 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_VERSION ?= e05b5f634ecb03a0705f3638568d7001181981ab
+HOSTBOOT_VERSION ?= 32dff4ca9db6d8b088ed6ec63f147d2aaded3e69
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
diff --git a/openpower/package/libflash/Config.in b/openpower/package/libflash/Config.in
new file mode 100644
index 0000000..eb6f56d
--- /dev/null
+++ b/openpower/package/libflash/Config.in
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_LIBFLASH
+	bool "libflash"
+	help
+	  Build libflash shared library
diff --git a/openpower/package/libflash/libflash.mk b/openpower/package/libflash/libflash.mk
new file mode 100644
index 0000000..f39e8c8
--- /dev/null
+++ b/openpower/package/libflash/libflash.mk
@@ -0,0 +1,36 @@
+################################################################################
+#
+# libflash - builds libflash libraries from skiboot source
+#
+################################################################################
+
+LIBFLASH_VERSION = b2649b822ab57ab06f0028d8343320ae6e11cc50
+
+LIBFLASH_SITE = $(call github,open-power,skiboot,$(LIBFLASH_VERSION))
+LIBFLASH_INSTALL_STAGING = YES
+LIBFLASH_INSTALL_TARGET = YES
+
+LIBFLASH_MAKE_OPTS += CC="$(TARGET_CC)" LD="$(TARGET_LD)" \
+		     AS="$(TARGET_AS)" AR="$(TARGET_AR)" NM="$(TARGET_NM)" \
+		     OBJCOPY="$(TARGET_OBJCOPY)" OBJDUMP="$(TARGET_OBJDUMP)" \
+		     SIZE="$(TARGET_CROSS)size"
+
+define LIBFLASH_BUILD_CMDS
+	PREFIX=$(STAGING_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
+	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
+	       -C $(@D)/external/shared
+endef
+
+define LIBFLASH_INSTALL_STAGING_CMDS
+	PREFIX=$(STAGING_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
+	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
+	       -C $(@D)/external/shared install
+endef
+
+define LIBFLASH_INSTALL_TARGET_CMDS
+	PREFIX=$(TARGET_DIR)/usr SKIBOOT_VERSION=$(LIBFLASH_VERSION) \
+	       $(MAKE1) $(LIBFLASH_MAKE_OPTS) CROSS_COMPILE=$(TARGET_CROSS) \
+	       -C $(@D)/external/shared install-lib
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/loadkeys/Config.in b/openpower/package/loadkeys/Config.in
new file mode 100644
index 0000000..c53391c
--- /dev/null
+++ b/openpower/package/loadkeys/Config.in
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_LOADKEYS
+	bool "loadkeys"
+	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+	select BR2_PACKAGE_CHECK
+	# Uses fork()
+	depends on BR2_USE_MMU
+	help
+	  Custom package to install just the 'loadkeys'
+	  binary from the kbd package.
+
+	  http://kernel.org/pub/linux/utils/kbd/
diff --git a/openpower/package/loadkeys/S16-keymap b/openpower/package/loadkeys/S16-keymap
new file mode 100755
index 0000000..aa3f068
--- /dev/null
+++ b/openpower/package/loadkeys/S16-keymap
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+case "$1" in
+    start)
+        loadkeys /etc/kbd/config
+        ;;
+esac
+
+exit 0
diff --git a/openpower/package/loadkeys/backtab-keymap b/openpower/package/loadkeys/backtab-keymap
new file mode 100644
index 0000000..953b990
--- /dev/null
+++ b/openpower/package/loadkeys/backtab-keymap
@@ -0,0 +1,10 @@
+# Enable backtab for VGA consoles
+# Thanks to http://web.mit.edu/daveg/Info/backtab-howto.txt
+
+keycode  15 = Tab   F91
+	alt     keycode  15 = Meta_Tab
+	shift   alt     keycode  15 = F92
+
+# backtab and M-backtab
+string F91 = "\033[Z"
+string F92 = "\033\033[Z"
diff --git a/openpower/package/loadkeys/loadkeys.hash b/openpower/package/loadkeys/loadkeys.hash
new file mode 100644
index 0000000..39a4cdd
--- /dev/null
+++ b/openpower/package/loadkeys/loadkeys.hash
@@ -0,0 +1,2 @@
+# From https://www.kernel.org/pub/linux/utils/kbd/sha256sums.asc
+sha256	7a899de1c0eb75f3aea737095a736f2375e1cbfbe693fc14a3fe0bfb4649fb5e	kbd-2.0.3.tar.xz
diff --git a/openpower/package/loadkeys/loadkeys.mk b/openpower/package/loadkeys/loadkeys.mk
new file mode 100644
index 0000000..db6cbca
--- /dev/null
+++ b/openpower/package/loadkeys/loadkeys.mk
@@ -0,0 +1,31 @@
+################################################################################
+#
+# loadkeys - Custom installer for the kbd package
+#
+################################################################################
+
+LOADKEYS_VERSION = 2.0.3
+LOADKEYS_SOURCE = kbd-$(LOADKEYS_VERSION).tar.xz
+LOADKEYS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kbd
+LOADKEYS_CONF_OPTS = --disable-vlock
+LOADKEYS_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext)
+LOADKEYS_LICENSE = GPLv2+
+LOADKEYS_LICENSE_FILES = COPYING
+LOADKEYS_INSTALL_STAGING = NO
+LOADKEYS_INSTALL_TARGET = YES
+
+define LOADKEYS_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/src/loadkeys \
+		$(TARGET_DIR)/usr/bin/
+endef
+
+define LOADKEYS_POST_INSTALL
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/S16-keymap \
+		$(TARGET_DIR)/etc/init.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/loadkeys/backtab-keymap \
+		$(TARGET_DIR)/etc/kbd/config
+endef
+
+LOADKEYS_POST_INSTALL_TARGET_HOOKS += LOADKEYS_POST_INSTALL
+
+$(eval $(autotools-package))
diff --git a/openpower/package/occ/occ.mk b/openpower/package/occ/occ.mk
index 2dcc253..a09827c 100644
--- a/openpower/package/occ/occ.mk
+++ b/openpower/package/occ/occ.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-OCC_VERSION ?= 0726e692d4eea5465f0509bb9f12185745a77ca9
+OCC_VERSION ?= 1093bf945e6c22650ca0b83da2347ee7d21cbe41
 OCC_SITE ?= $(call github,open-power,occ,$(OCC_VERSION))
 OCC_LICENSE = Apache-2.0
 OCC_DEPENDENCIES = host-binutils host-p8-pore-binutils
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index b3c4347..0865fcc 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -8,16 +8,16 @@
 # make doesn't care for quotes in the dependencies.
 XML_PACKAGE=$(subst $\",,$(BR2_OPENPOWER_XML_PACKAGE))
 
-OPENPOWER_PNOR_VERSION ?= ed1682e10526ebd85825427fbf397361bb0e34aa
+OPENPOWER_PNOR_VERSION ?= 50e3204e108a5fa4033019de84e3ca72d38248a6
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
 OPENPOWER_PNOR_DEPENDENCIES = hostboot hostboot-binaries $(XML_PACKAGE) skiboot host-openpower-ffs occ capp-ucode
 
-ifeq ($(BR2_TARGET_SKIBOOT_EMBED_PAYLOAD),n)
+ifeq ($(BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD),n)
 
 ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
-OPENPOWER_PNOR_DEPENDENCIES += linux26-rebuild-with-initramfs
+OPENPOWER_PNOR_DEPENDENCIES += linux-rebuild-with-initramfs
 else
 OPENPOWER_PNOR_DEPENDENCIES += linux
 endif
@@ -38,7 +38,7 @@
 OPENPOWER_VERSION_DIR = $(STAGING_DIR)/openpower_version
 
 # Subpackages we want to include in the version info (do not include openpower-pnor)
-OPENPOWER_VERSIONED_SUBPACKAGES = hostboot occ skiboot hostboot-binaries $(XML_PACKAGE) capp-ucode
+OPENPOWER_VERSIONED_SUBPACKAGES = skiboot hostboot linux petitboot $(XML_PACKAGE) occ hostboot-binaries capp-ucode
 OPENPOWER_PNOR = openpower-pnor
 
 define OPENPOWER_PNOR_INSTALL_IMAGES_CMDS
diff --git a/openpower/package/palmetto-xml/palmetto-xml.mk b/openpower/package/palmetto-xml/palmetto-xml.mk
index 2573450..8130f4e 100644
--- a/openpower/package/palmetto-xml/palmetto-xml.mk
+++ b/openpower/package/palmetto-xml/palmetto-xml.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-PALMETTO_XML_VERSION = a712d271730f1ea28438e8d1bc30793db072510a
+PALMETTO_XML_VERSION ?= 82818682f2c2009c30d700df6d5f8897a3096e4f
 PALMETTO_XML_SITE = $(call github,open-power,palmetto-xml,$(PALMETTO_XML_VERSION))
 
 PALMETTO_XML_LICENSE = Apache-2.0
diff --git a/openpower/package/petitboot/63-md-raid-arrays.rules b/openpower/package/petitboot/63-md-raid-arrays.rules
new file mode 100644
index 0000000..385a8da
--- /dev/null
+++ b/openpower/package/petitboot/63-md-raid-arrays.rules
@@ -0,0 +1,41 @@
+# do not edit this file, it will be overwritten on update
+
+SUBSYSTEM!="block", GOTO="md_end"
+
+# handle md arrays
+ACTION!="add|change", GOTO="md_end"
+KERNEL!="md*", GOTO="md_end"
+
+# partitions have no md/{array_state,metadata_version}, but should not
+# for that reason be ignored.
+ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
+
+# container devices have a metadata version of e.g. 'external:ddf' and
+# never leave state 'inactive'
+ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
+TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end"
+ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end"
+LABEL="md_ignore_state"
+
+IMPORT{program}="/usr/sbin/mdadm --detail --export $devnode"
+ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace"
+ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}"
+ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
+ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace"
+ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n"
+ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n"
+ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n"
+
+IMPORT{builtin}="blkid"
+OPTIONS+="link_priority=100"
+OPTIONS+="watch"
+ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+
+ENV{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service"
+
+# Tell systemd to run mdmon for our container, if we need it.
+ENV{MD_LEVEL}=="raid[1-9]*", ENV{MD_CONTAINER}=="?*", PROGRAM="/usr/bin/readlink $env{MD_CONTAINER}", ENV{MD_MON_THIS}="%c"
+ENV{MD_MON_THIS}=="?*", PROGRAM="/usr/bin/basename $env{MD_MON_THIS}", ENV{SYSTEMD_WANTS}+="mdmon@%c.service"
+
+LABEL="md_end"
diff --git a/openpower/package/petitboot/65-md-incremental.rules b/openpower/package/petitboot/65-md-incremental.rules
new file mode 100644
index 0000000..a8ad636
--- /dev/null
+++ b/openpower/package/petitboot/65-md-incremental.rules
@@ -0,0 +1,69 @@
+# This file causes block devices with Linux RAID (mdadm) signatures to
+# automatically cause mdadm to be run.
+# See udev(8) for syntax
+
+# Don't process any events if anaconda is running as anaconda brings up
+# raid devices manually
+ENV{ANACONDA}=="?*", GOTO="md_end"
+
+# Also don't process disks that are slated to be a multipath device
+ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end"
+
+# We process add events on block devices (since they are ready as soon as
+# they are added to the system), but we must process change events as well
+# on any dm devices (like LUKS partitions or LVM logical volumes) and on
+# md devices because both of these first get added, then get brought live
+# and trigger a change event.  The reason we don't process change events
+# on bare hard disks is because if you stop all arrays on a disk, then
+# run fdisk on the disk to change the partitions, when fdisk exits it
+# triggers a change event, and we want to wait until all the fdisks on
+# all member disks are done before we do anything.  Unfortunately, we have
+# no way of knowing that, so we just have to let those arrays be brought
+# up manually after fdisk has been run on all of the disks.
+
+# First, process all add events (md and dm devices will not really do
+# anything here, just regular disks, and this also won't get any imsm
+# array members either)
+SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid_member", \
+	RUN+="/usr/sbin/mdadm -I --export $env{DEVNAME}"
+
+# Next, check to make sure the BIOS raid stuff wasn't turned off via cmdline
+IMPORT{cmdline}="noiswmd"
+IMPORT{cmdline}="nodmraid"
+ENV{noiswmd}=="?*", GOTO="md_imsm_inc_end"
+ENV{nodmraid}=="?*", GOTO="md_imsm_inc_end"
+SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="isw_raid_member", \
+	RUN+="/usr/sbin/mdadm -I $env{DEVNAME}"
+LABEL="md_imsm_inc_end"
+
+SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}=="?*", \
+	RUN+="/usr/sbin/mdadm -If $name --path $env{ID_PATH}"
+SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}!="?*", \
+	RUN+="/usr/sbin/mdadm -If $name"
+
+# Next make sure that this isn't a dm device we should skip for some reason
+ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_change_end"
+ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_change_end"
+ENV{DM_SUSPENDED}=="1", GOTO="dm_change_end"
+KERNEL=="dm-*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \
+	ACTION=="change", RUN+="/usr/sbin/mdadm -I $env{DEVNAME}"
+LABEL="dm_change_end"
+
+# Finally catch any nested md raid arrays.  If we brought up an md raid
+# array that's part of another md raid array, it won't be ready to be used
+# until the change event that occurs when it becomes live
+KERNEL=="md*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \
+	ACTION=="change", RUN+="/usr/sbin/mdadm -I $env{DEVNAME}"
+
+# In case the initramfs only started some of the arrays in our container,
+# run incremental assembly on the container itself.  Note: we ran mdadm
+# on the container in 64-md-raid.rules, and that's how the MD_LEVEL
+# environment variable is already set.  If that disappears from the other
+# file, we will need to add this line into the middle of the next rule:
+#	IMPORT{program}="/usr/sbin/mdadm -D --export $tempnode", \
+
+SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", \
+	ENV{MD_LEVEL}=="container", RUN+="/usr/sbin/mdadm -I $env{DEVNAME}"
+
+
+LABEL="md_end"
diff --git a/openpower/package/petitboot/Config.in b/openpower/package/petitboot/Config.in
new file mode 100644
index 0000000..e5769de
--- /dev/null
+++ b/openpower/package/petitboot/Config.in
@@ -0,0 +1,33 @@
+config BR2_PACKAGE_PETITBOOT
+	bool "petitboot"
+	# petitboot needs udev /dev management
+	depends on BR2_PACKAGE_HAS_UDEV
+	select BR2_PACKAGE_LVM2
+	select BR2_PACKAGE_NCURSES
+	select BR2_PACKAGE_NCURSES_TARGET_PANEL
+	select BR2_PACKAGE_NCURSES_TARGET_FORM
+	select BR2_PACKAGE_NCURSES_TARGET_MENU
+	# run-time dependency only
+	select BR2_PACKAGE_KEXEC_LITE if !BR2_PACKAGE_KEXEC
+	# run-time dependency only
+	select BR2_PACKAGE_POWERPC_UTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	# run-time dependency only
+	select BR2_PACKAGE_IPRUTILS if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	# run-time dependency only
+	select BR2_PACKAGE_NVME if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	help
+	  Petitboot is a small kexec-based bootloader
+
+	  http://www.kernel.org/pub/linux/kernel/people/geoff/petitboot/petitboot.html
+
+comment "petitboot requires udev to be enabled"
+	depends on !BR2_PACKAGE_HAS_UDEV
+
+config BR2_PACKAGE_PETITBOOT_MTD
+	bool "petitboot-mtd"
+	depends on BR2_PACKAGE_PETITBOOT
+	select BR2_PACKAGE_LIBFLASH
+	help
+	  Adds Petitboot support for MTD devices
+
+comment "Add support for accessing MTD devices"
diff --git a/openpower/package/petitboot/S14silence-console b/openpower/package/petitboot/S14silence-console
new file mode 100755
index 0000000..6570200
--- /dev/null
+++ b/openpower/package/petitboot/S14silence-console
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+case "$1" in
+    start)
+        echo 0 0 7 0 > /proc/sys/kernel/printk
+        ;;
+esac
+
+exit 0
diff --git a/openpower/package/petitboot/S15pb-discover b/openpower/package/petitboot/S15pb-discover
new file mode 100755
index 0000000..8f9638c
--- /dev/null
+++ b/openpower/package/petitboot/S15pb-discover
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+LOGFILE=/var/log/petitboot/pb-discover.log
+PIDFILE=/var/run/petitboot.pid
+
+PATH=/usr/bin:/usr/sbin:/bin:/sbin
+export PATH
+
+verbose=
+if pb-config debug | grep -q enabled
+then
+	verbose=-v
+fi
+
+case "$1" in
+    start)
+        ulimit -c unlimited
+        mkdir -p $(dirname $LOGFILE)
+        export $(cat /etc/locale)
+        pb-discover -l $LOGFILE $verbose &
+        echo $! > $PIDFILE
+        ;;
+    stop)
+        pid=$(cat $PIDFILE)
+        [ -n "$pid" ] && kill -TERM $pid
+        ;;
+    *)
+        echo "Usage: $0 {start|stop}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/openpower/package/petitboot/kexec-restart b/openpower/package/petitboot/kexec-restart
new file mode 100755
index 0000000..0175e76
--- /dev/null
+++ b/openpower/package/petitboot/kexec-restart
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+/usr/sbin/kexec -f -e
+
+while :
+do
+    sleep 1
+done
diff --git a/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch b/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch
new file mode 100644
index 0000000..5c2c0c0
--- /dev/null
+++ b/openpower/package/petitboot/petitboot-01-autotools-Add-autopoint-generated-files.patch
@@ -0,0 +1,6764 @@
+From c99b7d366a5e11414befbe653af3bc4b642aede8 Mon Sep 17 00:00:00 2001
+From: Jeremy Kerr <jk@ozlabs.org>
+Date: Fri, 12 Dec 2014 09:35:40 +0800
+Subject: [PATCH] autotools: Add autopoint-generated files
+
+Since buildroot doesn't give us an autopoint, we're unable to regenerate
+these files. Add the autopoint artefacts required to do an autoreconf
+without autopoint.
+
+Generated with:
+
+  touch .stamp
+  autopoint
+  find . -type f -newer stamp | xargs git add
+
+Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
+---
+ ABOUT-NLS              | 1282 ++++++++++++++++++++++++++++++++++++++++++++++++
+ config.rpath           |  672 +++++++++++++++++++++++++
+ m4/codeset.m4          |   21 +
+ m4/fcntl-o.m4          |   81 +++
+ m4/gettext.m4          |  383 +++++++++++++++
+ m4/glibc2.m4           |   30 ++
+ m4/glibc21.m4          |   30 ++
+ m4/iconv.m4            |  214 ++++++++
+ m4/intdiv0.m4          |   84 ++++
+ m4/intl.m4             |  294 +++++++++++
+ m4/intldir.m4          |   19 +
+ m4/intlmacosx.m4       |   51 ++
+ m4/intmax.m4           |   33 ++
+ m4/inttypes-pri.m4     |   36 ++
+ m4/inttypes_h.m4       |   26 +
+ m4/lcmessage.m4        |   31 ++
+ m4/lib-ld.m4           |  110 +++++
+ m4/lib-link.m4         |  774 +++++++++++++++++++++++++++++
+ m4/lib-prefix.m4       |  224 +++++++++
+ m4/lock.m4             |   37 ++
+ m4/longlong.m4         |  106 ++++
+ m4/nls.m4              |   32 ++
+ m4/po.m4               |  449 +++++++++++++++++
+ m4/printf-posix.m4     |   45 ++
+ m4/progtest.m4         |   92 ++++
+ m4/size_max.m4         |   75 +++
+ m4/stdint_h.m4         |   26 +
+ m4/threadlib.m4        |  347 +++++++++++++
+ m4/uintmax_t.m4        |   30 ++
+ m4/visibility.m4       |   74 +++
+ m4/wchar_t.m4          |   20 +
+ m4/wint_t.m4           |   28 ++
+ m4/xsize.m4            |   13 +
+ po/Makefile.in.in      |  444 +++++++++++++++++
+ po/Makevars.template   |   41 ++
+ po/Rules-quot          |   47 ++
+ po/boldquot.sed        |   10 +
+ po/en@boldquot.header  |   25 +
+ po/en@quot.header      |   22 +
+ po/insert-header.sin   |   23 +
+ po/quot.sed            |    6 +
+ po/remove-potcdate.sin |   19 +
+ 42 files changed, 6406 insertions(+)
+ create mode 100644 ABOUT-NLS
+ create mode 100755 config.rpath
+ create mode 100644 m4/codeset.m4
+ create mode 100644 m4/fcntl-o.m4
+ create mode 100644 m4/gettext.m4
+ create mode 100644 m4/glibc2.m4
+ create mode 100644 m4/glibc21.m4
+ create mode 100644 m4/iconv.m4
+ create mode 100644 m4/intdiv0.m4
+ create mode 100644 m4/intl.m4
+ create mode 100644 m4/intldir.m4
+ create mode 100644 m4/intlmacosx.m4
+ create mode 100644 m4/intmax.m4
+ create mode 100644 m4/inttypes-pri.m4
+ create mode 100644 m4/inttypes_h.m4
+ create mode 100644 m4/lcmessage.m4
+ create mode 100644 m4/lib-ld.m4
+ create mode 100644 m4/lib-link.m4
+ create mode 100644 m4/lib-prefix.m4
+ create mode 100644 m4/lock.m4
+ create mode 100644 m4/longlong.m4
+ create mode 100644 m4/nls.m4
+ create mode 100644 m4/po.m4
+ create mode 100644 m4/printf-posix.m4
+ create mode 100644 m4/progtest.m4
+ create mode 100644 m4/size_max.m4
+ create mode 100644 m4/stdint_h.m4
+ create mode 100644 m4/threadlib.m4
+ create mode 100644 m4/uintmax_t.m4
+ create mode 100644 m4/visibility.m4
+ create mode 100644 m4/wchar_t.m4
+ create mode 100644 m4/wint_t.m4
+ create mode 100644 m4/xsize.m4
+ create mode 100644 po/Makefile.in.in
+ create mode 100644 po/Makevars.template
+ create mode 100644 po/Rules-quot
+ create mode 100644 po/boldquot.sed
+ create mode 100644 po/en@boldquot.header
+ create mode 100644 po/en@quot.header
+ create mode 100644 po/insert-header.sin
+ create mode 100644 po/quot.sed
+ create mode 100644 po/remove-potcdate.sin
+
+diff --git a/ABOUT-NLS b/ABOUT-NLS
+new file mode 100644
+index 0000000..b1de1b6
+--- /dev/null
++++ b/ABOUT-NLS
+@@ -0,0 +1,1282 @@
++1 Notes on the Free Translation Project
++***************************************
++
++Free software is going international!  The Free Translation Project is
++a way to get maintainers of free software, translators, and users all
++together, so that free software will gradually become able to speak many
++languages.  A few packages already provide translations for their
++messages.
++
++   If you found this `ABOUT-NLS' file inside a distribution, you may
++assume that the distributed package does use GNU `gettext' internally,
++itself available at your nearest GNU archive site.  But you do _not_
++need to install GNU `gettext' prior to configuring, installing or using
++this package with messages translated.
++
++   Installers will find here some useful hints.  These notes also
++explain how users should proceed for getting the programs to use the
++available translations.  They tell how people wanting to contribute and
++work on translations can contact the appropriate team.
++
++1.1 INSTALL Matters
++===================
++
++Some packages are "localizable" when properly installed; the programs
++they contain can be made to speak your own native language.  Most such
++packages use GNU `gettext'.  Other packages have their own ways to
++internationalization, predating GNU `gettext'.
++
++   By default, this package will be installed to allow translation of
++messages.  It will automatically detect whether the system already
++provides the GNU `gettext' functions.  Installers may use special
++options at configuration time for changing the default behaviour.  The
++command:
++
++     ./configure --disable-nls
++
++will _totally_ disable translation of messages.
++
++   When you already have GNU `gettext' installed on your system and run
++configure without an option for your new package, `configure' will
++probably detect the previously built and installed `libintl' library
++and will decide to use it.  If not, you may have to to use the
++`--with-libintl-prefix' option to tell `configure' where to look for it.
++
++   Internationalized packages usually have many `po/LL.po' files, where
++LL gives an ISO 639 two-letter code identifying the language.  Unless
++translations have been forbidden at `configure' time by using the
++`--disable-nls' switch, all available translations are installed
++together with the package.  However, the environment variable `LINGUAS'
++may be set, prior to configuration, to limit the installed set.
++`LINGUAS' should then contain a space separated list of two-letter
++codes, stating which languages are allowed.
++
++1.2 Using This Package
++======================
++
++As a user, if your language has been installed for this package, you
++only have to set the `LANG' environment variable to the appropriate
++`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
++`LC_xxx' environment variables set, you should unset them before
++setting `LANG', otherwise the setting of `LANG' will not have the
++desired effect.  Here `LL' is an ISO 639 two-letter language code, and
++`CC' is an ISO 3166 two-letter country code.  For example, let's
++suppose that you speak German and live in Germany.  At the shell
++prompt, merely execute `setenv LANG de_DE' (in `csh'),
++`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
++This can be done from your `.login' or `.profile' file, once and for
++all.
++
++   You might think that the country code specification is redundant.
++But in fact, some languages have dialects in different countries.  For
++example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
++country code serves to distinguish the dialects.
++
++   The locale naming convention of `LL_CC', with `LL' denoting the
++language and `CC' denoting the country, is the one use on systems based
++on GNU libc.  On other systems, some variations of this scheme are
++used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
++locales supported by your system for your language by running the
++command `locale -a | grep '^LL''.
++
++   Not all programs have translations for all languages.  By default, an
++English message is shown in place of a nonexistent translation.  If you
++understand other languages, you can set up a priority list of languages.
++This is done through a different environment variable, called
++`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
++for the purpose of message handling, but you still need to have `LANG'
++set to the primary language; this is required by other parts of the
++system libraries.  For example, some Swedish users who would rather
++read translations in German than English for when Swedish is not
++available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
++
++   Special advice for Norwegian users: The language code for Norwegian
++bokma*l changed from `no' to `nb' recently (in 2003).  During the
++transition period, while some message catalogs for this language are
++installed under `nb' and some older ones under `no', it's recommended
++for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
++older translations are used.
++
++   In the `LANGUAGE' environment variable, but not in the `LANG'
++environment variable, `LL_CC' combinations can be abbreviated as `LL'
++to denote the language's main dialect.  For example, `de' is equivalent
++to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
++(Portuguese as spoken in Portugal) in this context.
++
++1.3 Translating Teams
++=====================
++
++For the Free Translation Project to be a success, we need interested
++people who like their own language and write it well, and who are also
++able to synergize with other translators speaking the same language.
++Each translation team has its own mailing list.  The up-to-date list of
++teams can be found at the Free Translation Project's homepage,
++`http://translationproject.org/', in the "Teams" area.
++
++   If you'd like to volunteer to _work_ at translating messages, you
++should become a member of the translating team for your own language.
++The subscribing address is _not_ the same as the list itself, it has
++`-request' appended.  For example, speakers of Swedish can send a
++message to `sv-request@li.org', having this message body:
++
++     subscribe
++
++   Keep in mind that team members are expected to participate
++_actively_ in translations, or at solving translational difficulties,
++rather than merely lurking around.  If your team does not exist yet and
++you want to start one, or if you are unsure about what to do or how to
++get started, please write to `coordinator@translationproject.org' to
++reach the coordinator for all translator teams.
++
++   The English team is special.  It works at improving and uniformizing
++the terminology in use.  Proven linguistic skills are praised more than
++programming skills, here.
++
++1.4 Available Packages
++======================
++
++Languages are not equally supported in all packages.  The following
++matrix shows the current state of internationalization, as of June
++2010.  The matrix shows, in regard of each package, for which languages
++PO files have been submitted to translation coordination, with a
++translation percentage of at least 50%.
++
++     Ready PO files       af am an ar as ast az be be@latin bg bn_IN bs ca
++                        +--------------------------------------------------+
++     a2ps               |                       []                      [] |
++     aegis              |                                                  |
++     ant-phone          |                                                  |
++     anubis             |                                                  |
++     aspell             |                []                             [] |
++     bash               |                                                  |
++     bfd                |                                                  |
++     bibshelf           |                []                                |
++     binutils           |                                                  |
++     bison              |                                                  |
++     bison-runtime      |                []                                |
++     bluez-pin          | []             []                                |
++     bombono-dvd        |                                                  |
++     buzztard           |                                                  |
++     cflow              |                                                  |
++     clisp              |                                                  |
++     coreutils          |                                   []          [] |
++     cpio               |                                                  |
++     cppi               |                                                  |
++     cpplib             |                                               [] |
++     cryptsetup         |                                                  |
++     dfarc              |                                                  |
++     dialog             |                             []                [] |
++     dico               |                                                  |
++     diffutils          |                                               [] |
++     dink               |                                                  |
++     doodle             |                                                  |
++     e2fsprogs          |                                               [] |
++     enscript           |                                               [] |
++     exif               |                                                  |
++     fetchmail          |                                               [] |
++     findutils          |                                   []             |
++     flex               |                                               [] |
++     freedink           |                                                  |
++     gas                |                                                  |
++     gawk               |                []                             [] |
++     gcal               |                                               [] |
++     gcc                |                                                  |
++     gettext-examples   | []             []                 []          [] |
++     gettext-runtime    |                                   []          [] |
++     gettext-tools      |                                   []          [] |
++     gip                |                                   []             |
++     gjay               |                                                  |
++     gliv               |                                   []             |
++     glunarclock        |                []                 []             |
++     gnubiff            |                                                  |
++     gnucash            |                                               [] |
++     gnuedu             |                                                  |
++     gnulib             |                                                  |
++     gnunet             |                                                  |
++     gnunet-gtk         |                                                  |
++     gnutls             |                                                  |
++     gold               |                                                  |
++     gpe-aerial         |                                                  |
++     gpe-beam           |                                                  |
++     gpe-bluetooth      |                                                  |
++     gpe-calendar       |                                                  |
++     gpe-clock          |                []                                |
++     gpe-conf           |                                                  |
++     gpe-contacts       |                                                  |
++     gpe-edit           |                                                  |
++     gpe-filemanager    |                                                  |
++     gpe-go             |                                                  |
++     gpe-login          |                                                  |
++     gpe-ownerinfo      |                []                                |
++     gpe-package        |                                                  |
++     gpe-sketchbook     |                                                  |
++     gpe-su             |                []                                |
++     gpe-taskmanager    |                []                                |
++     gpe-timesheet      |                []                                |
++     gpe-today          |                []                                |
++     gpe-todo           |                                                  |
++     gphoto2            |                                                  |
++     gprof              |                                   []             |
++     gpsdrive           |                                                  |
++     gramadoir          |                                                  |
++     grep               |                                                  |
++     grub               |                []                             [] |
++     gsasl              |                                                  |
++     gss                |                                                  |
++     gst-plugins-bad    |                                   []             |
++     gst-plugins-base   |                                   []             |
++     gst-plugins-good   |                                   []             |
++     gst-plugins-ugly   |                                   []             |
++     gstreamer          | []                                []          [] |
++     gtick              |                                                  |
++     gtkam              |                       []                         |
++     gtkorphan          |                                   []             |
++     gtkspell           | []             []     []                         |
++     gutenprint         |                                                  |
++     hello              |                                   []             |
++     help2man           |                                                  |
++     hylafax            |                                                  |
++     idutils            |                                                  |
++     indent             |                                   []          [] |
++     iso_15924          |                                                  |
++     iso_3166           | []          []        []          []  []   [] [] |
++     iso_3166_2         |                                                  |
++     iso_4217           |                                                  |
++     iso_639            |             [] []     []              []         |
++     iso_639_3          |                                                  |
++     jwhois             |                                                  |
++     kbd                |                                                  |
++     keytouch           |                                               [] |
++     keytouch-editor    |                                                  |
++     keytouch-keyboa... |                                               [] |
++     klavaro            |          []                                      |
++     latrine            |                                                  |
++     ld                 |                                   []             |
++     leafpad            |                                   []          [] |
++     libc               |                                   []          [] |
++     libexif            |                       ()                         |
++     libextractor       |                                                  |
++     libgnutls          |                                                  |
++     libgpewidget       |                                                  |
++     libgpg-error       |                                                  |
++     libgphoto2         |                                                  |
++     libgphoto2_port    |                                                  |
++     libgsasl           |                                                  |
++     libiconv           |                                   []             |
++     libidn             |                                                  |
++     lifelines          |                                                  |
++     liferea            |                             []                [] |
++     lilypond           |                                                  |
++     linkdr             |          []                                      |
++     lordsawar          |                                                  |
++     lprng              |                                                  |
++     lynx               |                                               [] |
++     m4                 |                                                  |
++     mailfromd          |                                                  |
++     mailutils          |                                                  |
++     make               |                                                  |
++     man-db             |                                                  |
++     man-db-manpages    |                                                  |
++     minicom            |                                                  |
++     mkisofs            |                                                  |
++     myserver           |                                                  |
++     nano               |                                   []          [] |
++     opcodes            |                                                  |
++     parted             |                                                  |
++     pies               |                                                  |
++     popt               |                                                  |
++     psmisc             |                                                  |
++     pspp               |                                               [] |
++     pwdutils           |                                                  |
++     radius             |                                               [] |
++     recode             |                       []                      [] |
++     rosegarden         |                                                  |
++     rpm                |                                                  |
++     rush               |                                                  |
++     sarg               |                                                  |
++     screem             |                                                  |
++     scrollkeeper       |                    [] []                      [] |
++     sed                |                []                             [] |
++     sharutils          |                                   []          [] |
++     shishi             |                                                  |
++     skencil            |                                                  |
++     solfege            |                                                  |
++     solfege-manual     |                                                  |
++     soundtracker       |                                                  |
++     sp                 |                                                  |
++     sysstat            |                                                  |
++     tar                |                                   []             |
++     texinfo            |                                                  |
++     tin                |                                                  |
++     unicode-han-tra... |                                                  |
++     unicode-transla... |                                                  |
++     util-linux-ng      |                                               [] |
++     vice               |                                                  |
++     vmm                |                                                  |
++     vorbis-tools       |                                                  |
++     wastesedge         |                                                  |
++     wdiff              |                                                  |
++     wget               |                       []                      [] |
++     wyslij-po          |                                                  |
++     xchat              |                []     []          []          [] |
++     xdg-user-dirs      | []    []    [] []     []    []    []  []      [] |
++     xkeyboard-config   |                                   []          [] |
++                        +--------------------------------------------------+
++                          af am an ar as ast az be be@latin bg bn_IN bs ca
++                           6  0  1  2  3 19   1 10     3    28   3    1 38
++
++                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
++                        +-------------------------------------------------+
++     a2ps               |     [] []  []  []     []            [] []       |
++     aegis              |        []  []                       []          |
++     ant-phone          |        []  ()                                   |
++     anubis             |        []  []                                   |
++     aspell             |     [] []  []         []            []          |
++     bash               |     []                           [] []          |
++     bfd                |                                     []          |
++     bibshelf           |        []  []                       []          |
++     binutils           |                                     []          |
++     bison              |            []  []                               |
++     bison-runtime      |        []  []  []                      []       |
++     bluez-pin          |     [] []  []  []                [] []          |
++     bombono-dvd        |        []                                       |
++     buzztard           |     [] []  []                                   |
++     cflow              |        []  []                                   |
++     clisp              |        []  []     []                []          |
++     coreutils          |     [] []  []                          []       |
++     cpio               |                                                 |
++     cppi               |                                                 |
++     cpplib             |        []  []                       []          |
++     cryptsetup         |            []                                   |
++     dfarc              |        []  []                       []          |
++     dialog             |        []  []                    [] []    []    |
++     dico               |                                                 |
++     diffutils          |     [] []  []  []                [] []          |
++     dink               |        []  []                       []          |
++     doodle             |            []                                   |
++     e2fsprogs          |     []     []                       []          |
++     enscript           |        []  []         []                        |
++     exif               |     () []  []                                   |
++     fetchmail          |     [] []  ()  []     []            []          |
++     findutils          |     [] []  []                                   |
++     flex               |            []                       []          |
++     freedink           |        []  []                       []          |
++     gas                |                                     []          |
++     gawk               |        []  []                       []          |
++     gcal               |                                     []          |
++     gcc                |            []                       []          |
++     gettext-examples   |            []  []                [] []          |
++     gettext-runtime    |        []  []                    [] []          |
++     gettext-tools      |            []                       []    []    |
++     gip                |        []  []                       []    []    |
++     gjay               |            []                                   |
++     gliv               |     [] []  []                                   |
++     glunarclock        |        []  []                                   |
++     gnubiff            |            ()                                   |
++     gnucash            |     []     ()  ()     ()            ()          |
++     gnuedu             |        []                           []          |
++     gnulib             |            []                       []          |
++     gnunet             |                                                 |
++     gnunet-gtk         |        []                                       |
++     gnutls             |     []     []                                   |
++     gold               |                                     []          |
++     gpe-aerial         |     [] []  []                       []          |
++     gpe-beam           |     [] []  []                       []          |
++     gpe-bluetooth      |        []  []                                   |
++     gpe-calendar       |        []                                       |
++     gpe-clock          |     [] []  []                       []          |
++     gpe-conf           |     [] []  []                                   |
++     gpe-contacts       |        []  []                       []          |
++     gpe-edit           |        []  []                                   |
++     gpe-filemanager    |        []  []                       []          |
++     gpe-go             |     [] []  []                       []          |
++     gpe-login          |        []  []                                   |
++     gpe-ownerinfo      |     [] []  []                       []          |
++     gpe-package        |        []  []                       []          |
++     gpe-sketchbook     |     [] []  []                       []          |
++     gpe-su             |     [] []  []                       []          |
++     gpe-taskmanager    |     [] []  []                       []          |
++     gpe-timesheet      |     [] []  []                       []          |
++     gpe-today          |     [] []  []                       []          |
++     gpe-todo           |        []  []                       []          |
++     gphoto2            |     [] []  ()         []            []    []    |
++     gprof              |        []  []                       []          |
++     gpsdrive           |        []                           [] []       |
++     gramadoir          |        []  []                    []             |
++     grep               |     []                                          |
++     grub               |        []  []                                   |
++     gsasl              |            []                                   |
++     gss                |                                                 |
++     gst-plugins-bad    |     [] []  []                       []    []    |
++     gst-plugins-base   |     [] []  []                       []    []    |
++     gst-plugins-good   |     [] []  []  []                   []    []    |
++     gst-plugins-ugly   |     [] []  []  []                   []    []    |
++     gstreamer          |     [] []  []                       []    []    |
++     gtick              |        []  ()                    []             |
++     gtkam              |     [] []  ()                    [] []          |
++     gtkorphan          |     [] []  []                    []             |
++     gtkspell           |     [] []  []  []                [] []    []    |
++     gutenprint         |        []  []         []                        |
++     hello              |        []  []                    [] []          |
++     help2man           |            []                                   |
++     hylafax            |            []                       []          |
++     idutils            |        []  []                                   |
++     indent             |     [] []  []                    [] [] [] []    |
++     iso_15924          |        []      ()                [] []          |
++     iso_3166           | []  [] []  []  ()                [] [] [] ()    |
++     iso_3166_2         |                ()                               |
++     iso_4217           |     [] []  []  ()                   [] []       |
++     iso_639            | []  [] []  []  ()                [] []          |
++     iso_639_3          | []                                              |
++     jwhois             |                                     []          |
++     kbd                |     [] []  []  []                   []          |
++     keytouch           |        []  []                                   |
++     keytouch-editor    |        []  []                                   |
++     keytouch-keyboa... |        []                                       |
++     klavaro            |     [] []  []                    []             |
++     latrine            |        []  ()                                   |
++     ld                 |        []                           []          |
++     leafpad            |     [] []  []  []                   []    []    |
++     libc               |     [] []  []                       []          |
++     libexif            |        []  []         ()                        |
++     libextractor       |                                                 |
++     libgnutls          |     []                                          |
++     libgpewidget       |        []  []                                   |
++     libgpg-error       |     []     []                                   |
++     libgphoto2         |        []  ()                                   |
++     libgphoto2_port    |        []  ()                             []    |
++     libgsasl           |                                                 |
++     libiconv           |     [] []  []                    []    []       |
++     libidn             |     []     []                    []             |
++     lifelines          |        []  ()                                   |
++     liferea            |     []     []  []                   []    []    |
++     lilypond           |     []     []                       []          |
++     linkdr             |        []  []                       []          |
++     lordsawar          |        []                                       |
++     lprng              |                                                 |
++     lynx               |     [] []  []                          []       |
++     m4                 |     [] []  []  []                               |
++     mailfromd          |                                                 |
++     mailutils          |                                     []          |
++     make               |        []  []                       []          |
++     man-db             |                                                 |
++     man-db-manpages    |                                                 |
++     minicom            |     [] []  []                       []          |
++     mkisofs            |                                                 |
++     myserver           |                                                 |
++     nano               |            []                       []    []    |
++     opcodes            |            []                       []          |
++     parted             |     []     []                                   |
++     pies               |                                                 |
++     popt               |     [] []  []                    [] []          |
++     psmisc             |     []     []                             []    |
++     pspp               |                                     []          |
++     pwdutils           |        []                                       |
++     radius             |                                     []          |
++     recode             |     [] []  []  []                [] []          |
++     rosegarden         |     ()     ()                       ()          |
++     rpm                |        []  []                       []          |
++     rush               |                                                 |
++     sarg               |                                                 |
++     screem             |                                                 |
++     scrollkeeper       |     [] []  []         []            []          |
++     sed                |     []     []  []                [] [] []       |
++     sharutils          |        []  []                       [] []       |
++     shishi             |                                                 |
++     skencil            |        []  ()                       []          |
++     solfege            |            []                    []    []       |
++     solfege-manual     |                                  []    []       |
++     soundtracker       |        []  []                       []          |
++     sp                 |            []                                   |
++     sysstat            |        []  []                             []    |
++     tar                |     []     []                          [] []    |
++     texinfo            |            []                    [] []          |
++     tin                |            []                          []       |
++     unicode-han-tra... |                                                 |
++     unicode-transla... |                                                 |
++     util-linux-ng      |     [] []  []                       []          |
++     vice               |        ()  ()                                   |
++     vmm                |            []                                   |
++     vorbis-tools       |     []                           []             |
++     wastesedge         |        []                                       |
++     wdiff              |            []                       []          |
++     wget               |     []     []                          []       |
++     wyslij-po          |                                                 |
++     xchat              |     []     []  []                   [] []       |
++     xdg-user-dirs      | []  [] []  []  []                [] [] [] []    |
++     xkeyboard-config   | []  [] []  []                    [] []          |
++                        +-------------------------------------------------+
++                          crh cs da  de  el en en_GB en_ZA eo es et eu fa
++                           5  64 105 117 18  1   8     0   28 89 18 19  0
++
++                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
++                        +----------------------------------------------------+
++     a2ps               | []  []                          []        []       |
++     aegis              |     []                                 []          |
++     ant-phone          |     []                                 []          |
++     anubis             | []  []                          []     []          |
++     aspell             |     []  []                      []     []          |
++     bash               | []  []                          []        []       |
++     bfd                | []  []                          []                 |
++     bibshelf           | []  []  []                      []     []          |
++     binutils           | []  []                          []                 |
++     bison              | []  []  []                      []                 |
++     bison-runtime      | []  []  []                      []     [] []       |
++     bluez-pin          | []  []  []                [] [] []  []    []       |
++     bombono-dvd        | []                                                 |
++     buzztard           |                                 []                 |
++     cflow              | []      []                      []                 |
++     clisp              |     []                                             |
++     coreutils          |     []  []                []    []     []          |
++     cpio               | []  []  []                      []                 |
++     cppi               | []  []                                             |
++     cpplib             | []  []                          []                 |
++     cryptsetup         |     []                          []     []          |
++     dfarc              | []  []                                 []          |
++     dialog             |     []  [] []                   []  [] [] []       |
++     dico               |                                                    |
++     diffutils          | []  []  [] []    []       []    []     [] []       |
++     dink               |     []                                             |
++     doodle             |         []                             []          |
++     e2fsprogs          |     []                          []                 |
++     enscript           |     []  []             []       []                 |
++     exif               | []  []                          []  [] [] []       |
++     fetchmail          |     []                          []     [] []       |
++     findutils          | []  []  []                []    []     []          |
++     flex               | []  []  []                                         |
++     freedink           | []  []                          []                 |
++     gas                |     []                          []                 |
++     gawk               |     []  []       []             []     () []       |
++     gcal               |     []                                             |
++     gcc                |                                 []                 |
++     gettext-examples   | []  []  []                []    []     [] []       |
++     gettext-runtime    | []  []  []                      []     [] []       |
++     gettext-tools      |     []                          []     [] []       |
++     gip                | []  []  [] []                   []        []       |
++     gjay               | []                                                 |
++     gliv               | []  ()                                             |
++     glunarclock        | []      []                []    []                 |
++     gnubiff            |     ()                          []     ()          |
++     gnucash            | ()  ()           ()       ()           () []       |
++     gnuedu             |     []                                 []          |
++     gnulib             | []  []  []                []           [] []       |
++     gnunet             |                                                    |
++     gnunet-gtk         |     []                                             |
++     gnutls             |     []                                 []          |
++     gold               | []                              []                 |
++     gpe-aerial         | []  []                          []                 |
++     gpe-beam           | []  []                          []        []       |
++     gpe-bluetooth      | []                              []     [] []       |
++     gpe-calendar       | []                                        []       |
++     gpe-clock          | []  []                    []    []        []       |
++     gpe-conf           | []  []                          []        []       |
++     gpe-contacts       | []  []                          []        []       |
++     gpe-edit           | []                              []        []       |
++     gpe-filemanager    | []                        []    []        []       |
++     gpe-go             | []  []                    []    []        []       |
++     gpe-login          | []                              []        []       |
++     gpe-ownerinfo      | []  []                    []    []        []       |
++     gpe-package        | []                              []        []       |
++     gpe-sketchbook     | []  []                          []        []       |
++     gpe-su             | []  []     []             []    []        []       |
++     gpe-taskmanager    | []  []                    []    []        []       |
++     gpe-timesheet      | []  []  []                      []        []       |
++     gpe-today          | []  []  [] []             []    []        []       |
++     gpe-todo           | []                              []        []       |
++     gphoto2            | []  []                    []    []     [] []       |
++     gprof              | []  []  []                      []                 |
++     gpsdrive           |            []                   []     []          |
++     gramadoir          |     []  []                      []                 |
++     grep               | []                                     []          |
++     grub               | []                        []    []     []          |
++     gsasl              | []  []  []                      []     []          |
++     gss                | []  []  []                      []     []          |
++     gst-plugins-bad    | []  []                    []    []     [] []       |
++     gst-plugins-base   | []  []                    []    []     [] []       |
++     gst-plugins-good   | []  []                    []    []     [] []       |
++     gst-plugins-ugly   | []  []                    []    []     [] []       |
++     gstreamer          | []  []                    []    []     []          |
++     gtick              | []  []  []                      []     []          |
++     gtkam              |     []                    []    []     [] []       |
++     gtkorphan          |     []                          []     []          |
++     gtkspell           | []  []  [] []             [] [] []     [] []       |
++     gutenprint         | []  []                    []           []          |
++     hello              | []      []                      []                 |
++     help2man           | []  []                                             |
++     hylafax            |                                 []                 |
++     idutils            | []  []  []                []    []     []          |
++     indent             | []  []  [] []             []    []     [] []       |
++     iso_15924          | []  ()                          []     []          |
++     iso_3166           | []  ()  [] [] [] [] [] [] []    []     [] []       |
++     iso_3166_2         |     ()                    []    []     []          |
++     iso_4217           | []  ()                    []    []     [] []       |
++     iso_639            | []  ()  []    []          []    []     [] []    [] |
++     iso_639_3          |     ()                                 []       [] |
++     jwhois             | []  []                    []    []     []          |
++     kbd                |     []                          []                 |
++     keytouch           | []  []  []                []    []     []          |
++     keytouch-editor    | []      []                []    []     []          |
++     keytouch-keyboa... | []      []                []    []     []          |
++     klavaro            |            []             []                       |
++     latrine            | []                              []     []          |
++     ld                 | []  []  []                      []                 |
++     leafpad            | []  []  []       []       []    []     [] ()       |
++     libc               | []  []     []                   []        []       |
++     libexif            |                                        []          |
++     libextractor       |                                                    |
++     libgnutls          |     []                                 []          |
++     libgpewidget       | []      []                      []        []       |
++     libgpg-error       |     []                                 []          |
++     libgphoto2         |     []                                 [] []       |
++     libgphoto2_port    |     []                                 [] []       |
++     libgsasl           | []  []  []                      []     []          |
++     libiconv           | []  []  []                      []     [] []       |
++     libidn             | []  []                          []     []          |
++     lifelines          |     ()                                             |
++     liferea            |     []                    []           [] []       |
++     lilypond           | []  []                                             |
++     linkdr             | []               []    [] []           []          |
++     lordsawar          |                                                    |
++     lprng              |                                 []                 |
++     lynx               |     []                    []    []     [] []       |
++     m4                 | []  []  [] []                   []        []       |
++     mailfromd          |                                                    |
++     mailutils          |     []                          []                 |
++     make               | []  []  [] []    []    []       []     [] []       |
++     man-db             |                                 []     []          |
++     man-db-manpages    |                                 []                 |
++     minicom            | []  []                    []    []        []       |
++     mkisofs            | []  []                          []     []          |
++     myserver           |                                                    |
++     nano               | []  []  [] []             []           []          |
++     opcodes            | []  []  []                      []                 |
++     parted             |     []                          []     [] []       |
++     pies               |                                                    |
++     popt               | []  []  [] []             []    []  [] [] []       |
++     psmisc             | []  []                          []                 |
++     pspp               |                                                    |
++     pwdutils           |     []                          []                 |
++     radius             |     []                          []                 |
++     recode             | []  []  [] []    []       []    []     []          |
++     rosegarden         | ()  ()                          ()     () ()       |
++     rpm                |                                 []        []       |
++     rush               |                                                    |
++     sarg               |     []                                             |
++     screem             |                                        [] []       |
++     scrollkeeper       | []                        []    []     []          |
++     sed                | []  []  [] []             []    []     [] []       |
++     sharutils          | []  []  []                []    []     [] []       |
++     shishi             |     []                                             |
++     skencil            |     []                                             |
++     solfege            | []  []     []                          []          |
++     solfege-manual     |     []     []                                      |
++     soundtracker       |     []                                 []          |
++     sp                 |     []                                    ()       |
++     sysstat            | []  []                          []     [] []       |
++     tar                | []  []  []                []    []     [] []       |
++     texinfo            |     []                          []     [] []       |
++     tin                |     []                                             |
++     unicode-han-tra... |                                                    |
++     unicode-transla... |     []  []                                         |
++     util-linux-ng      | []  []                    []    []     [] []       |
++     vice               |     ()                    ()           ()          |
++     vmm                |     []                                             |
++     vorbis-tools       |                                 []                 |
++     wastesedge         |     ()                                 ()          |
++     wdiff              | []                                                 |
++     wget               | []  []  []             [] []    []     [] []       |
++     wyslij-po          | []  []                          []                 |
++     xchat              | []  []        []    []    []    []     [] []    [] |
++     xdg-user-dirs      | []  []  [] [] [] [] []    []    []  [] [] []    [] |
++     xkeyboard-config   | []  []                    []    []     []          |
++                        +----------------------------------------------------+
++                          fi  fr  ga gl gu he hi hr hu hy id  is it ja ka kn
++                          105 121 53 20  4  8  3  5 53  2 120  5 84 67  0  4
++
++                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
++                        +-----------------------------------------------+
++     a2ps               |                               []              |
++     aegis              |                                               |
++     ant-phone          |                                               |
++     anubis             |                               []    []        |
++     aspell             |                         []                    |
++     bash               |                                               |
++     bfd                |                                               |
++     bibshelf           |                []             []              |
++     binutils           |                                               |
++     bison              |                               []              |
++     bison-runtime      |       []    [] []             []    []        |
++     bluez-pin          |    [] []    [] []             []              |
++     bombono-dvd        |                                               |
++     buzztard           |                                               |
++     cflow              |                                               |
++     clisp              |                                               |
++     coreutils          |          []                                   |
++     cpio               |                                               |
++     cppi               |                                               |
++     cpplib             |                                               |
++     cryptsetup         |                                               |
++     dfarc              |                   []                          |
++     dialog             |    []       [] []             []    []        |
++     dico               |                                               |
++     diffutils          |                []             []              |
++     dink               |                                               |
++     doodle             |                                               |
++     e2fsprogs          |                                               |
++     enscript           |                                               |
++     exif               |                []                             |
++     fetchmail          |                                               |
++     findutils          |                                               |
++     flex               |                                               |
++     freedink           |                                     []        |
++     gas                |                                               |
++     gawk               |                                               |
++     gcal               |                                               |
++     gcc                |                                               |
++     gettext-examples   |       []       []             [] []           |
++     gettext-runtime    | []                                            |
++     gettext-tools      | []                                            |
++     gip                |                []             []              |
++     gjay               |                                               |
++     gliv               |                                               |
++     glunarclock        |                []                             |
++     gnubiff            |                                               |
++     gnucash            | ()          ()                      ()     () |
++     gnuedu             |                                               |
++     gnulib             |                                               |
++     gnunet             |                                               |
++     gnunet-gtk         |                                               |
++     gnutls             |                               []              |
++     gold               |                                               |
++     gpe-aerial         |                []                             |
++     gpe-beam           |                []                             |
++     gpe-bluetooth      |                []                []           |
++     gpe-calendar       |                []                             |
++     gpe-clock          | []    []       []             [] []           |
++     gpe-conf           | []             []                             |
++     gpe-contacts       | []             []                             |
++     gpe-edit           |                []                             |
++     gpe-filemanager    | []             []                             |
++     gpe-go             | []             []                []           |
++     gpe-login          |                []                             |
++     gpe-ownerinfo      |                []             []              |
++     gpe-package        | []             []                             |
++     gpe-sketchbook     | []             []                             |
++     gpe-su             | []    []       []             [] [] []        |
++     gpe-taskmanager    | [] [] []       []             [] []           |
++     gpe-timesheet      |                []             []              |
++     gpe-today          |       []       []             [] []           |
++     gpe-todo           |                []                   []        |
++     gphoto2            |                                               |
++     gprof              |                               []              |
++     gpsdrive           |                                               |
++     gramadoir          |                                               |
++     grep               |                                               |
++     grub               |                                               |
++     gsasl              |                                               |
++     gss                |                                               |
++     gst-plugins-bad    |             [] []                [] []        |
++     gst-plugins-base   |             [] []                             |
++     gst-plugins-good   |                []                []           |
++     gst-plugins-ugly   |             [] []             [] [] []        |
++     gstreamer          |                                               |
++     gtick              |                                               |
++     gtkam              |                                     []        |
++     gtkorphan          |                []                      []     |
++     gtkspell           |       []    [] []       []    []    [] []     |
++     gutenprint         |                                               |
++     hello              | []             []             []              |
++     help2man           |                                               |
++     hylafax            |                                               |
++     idutils            |                                               |
++     indent             |                                               |
++     iso_15924          |             [] []                             |
++     iso_3166           | [] []       () [] [] []    []       []        |
++     iso_3166_2         |                                               |
++     iso_4217           |             []                      []        |
++     iso_639            |                      []    []                 |
++     iso_639_3          |                            []                 |
++     jwhois             |                []                             |
++     kbd                |                                               |
++     keytouch           |                []                             |
++     keytouch-editor    |                []                             |
++     keytouch-keyboa... |                []                             |
++     klavaro            |                                     []        |
++     latrine            |                []                             |
++     ld                 |                                               |
++     leafpad            | []          [] []                             |
++     libc               | []                                            |
++     libexif            |                                               |
++     libextractor       |                                               |
++     libgnutls          |                               []              |
++     libgpewidget       |                []             []              |
++     libgpg-error       |                                               |
++     libgphoto2         |                                               |
++     libgphoto2_port    |                                               |
++     libgsasl           |                                               |
++     libiconv           |                                               |
++     libidn             |                                               |
++     lifelines          |                                               |
++     liferea            |                                               |
++     lilypond           |                                               |
++     linkdr             |                                               |
++     lordsawar          |                                               |
++     lprng              |                                               |
++     lynx               |                                               |
++     m4                 |                                               |
++     mailfromd          |                                               |
++     mailutils          |                                               |
++     make               | []                                            |
++     man-db             |                                               |
++     man-db-manpages    |                                               |
++     minicom            |                                     []        |
++     mkisofs            |                                               |
++     myserver           |                                               |
++     nano               |                               []    []        |
++     opcodes            |                                               |
++     parted             |                                               |
++     pies               |                                               |
++     popt               | []             []                   []        |
++     psmisc             |                                               |
++     pspp               |                                               |
++     pwdutils           |                                               |
++     radius             |                                               |
++     recode             |                                               |
++     rosegarden         |                                               |
++     rpm                |                                               |
++     rush               |                                               |
++     sarg               |                                               |
++     screem             |                                               |
++     scrollkeeper       |                                     []     [] |
++     sed                |                                               |
++     sharutils          |                                               |
++     shishi             |                                               |
++     skencil            |                                               |
++     solfege            |                                     []        |
++     solfege-manual     |                                               |
++     soundtracker       |                                               |
++     sp                 |                                               |
++     sysstat            |                []                             |
++     tar                |       []                                      |
++     texinfo            |                                     []        |
++     tin                |                                               |
++     unicode-han-tra... |                                               |
++     unicode-transla... |                                               |
++     util-linux-ng      |                                               |
++     vice               |                                               |
++     vmm                |                                               |
++     vorbis-tools       |                                               |
++     wastesedge         |                                               |
++     wdiff              |                                               |
++     wget               |             []                                |
++     wyslij-po          |                                               |
++     xchat              | []             [] []                          |
++     xdg-user-dirs      | [] []       [] [] []       []       [] []     |
++     xkeyboard-config   | []    []    []                                |
++                        +-----------------------------------------------+
++                          ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
++                          20  5 10  1 13 48  4  2  2  4 24 10 20  3   1
++
++                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
++                        +---------------------------------------------------+
++     a2ps               | []           []     []  []   [] []       []    [] |
++     aegis              | []                      []      []                |
++     ant-phone          |                         []   []                   |
++     anubis             | []           []                 []                |
++     aspell             | []                           [] []    [] []       |
++     bash               | []                                    []          |
++     bfd                |                                 []                |
++     bibshelf           | []  []                                            |
++     binutils           |                                 []    []          |
++     bison              | []           []                 []                |
++     bison-runtime      | []           []     []  []   [] []       []       |
++     bluez-pin          | []           []         []   [] []    [] []    [] |
++     bombono-dvd        |     []                          ()                |
++     buzztard           | []  []                                            |
++     cflow              |              []                                   |
++     clisp              | []                              []                |
++     coreutils          | []           []     []  []      []       []       |
++     cpio               | []           []                 []                |
++     cppi               |              []                                   |
++     cpplib             | []                                                |
++     cryptsetup         | []                                                |
++     dfarc              |              []                                   |
++     dialog             | []           []         []      []                |
++     dico               |              []                                   |
++     diffutils          | []           []         []   [] []             [] |
++     dink               | ()                                                |
++     doodle             | []                                          []    |
++     e2fsprogs          | []           []                                   |
++     enscript           | []                      []   [] []       []       |
++     exif               | []           []              [] ()    []          |
++     fetchmail          | []           []                 []          []    |
++     findutils          | []           []     []          []       []       |
++     flex               | []           []         []   [] []                |
++     freedink           | []           []                                   |
++     gas                |                                                   |
++     gawk               | []           []         []   []                   |
++     gcal               |                                                   |
++     gcc                |                                                [] |
++     gettext-examples   | []           []     []       [] []    [] []    [] |
++     gettext-runtime    | []  []       []     []       [] []    [] []    [] |
++     gettext-tools      |              []              [] []    [] []    [] |
++     gip                | []           []                 []    []       [] |
++     gjay               |                                                   |
++     gliv               | []           []         []   [] []    []          |
++     glunarclock        | []                      []   []       []       [] |
++     gnubiff            | []                           ()                   |
++     gnucash            | []           ()         ()      ()                |
++     gnuedu             | []                                                |
++     gnulib             | []           []                 []       []       |
++     gnunet             |                                                   |
++     gnunet-gtk         |                                                   |
++     gnutls             | []           []                                   |
++     gold               |                                                   |
++     gpe-aerial         | []                  []  []   [] []       []    [] |
++     gpe-beam           | []                  []  []   [] []       []    [] |
++     gpe-bluetooth      | []                      []                        |
++     gpe-calendar       |                         []      []       []    [] |
++     gpe-clock          | []                  []  []   [] []    [] []    [] |
++     gpe-conf           | []                  []  []   [] []    [] []       |
++     gpe-contacts       |                         []   [] []       []    [] |
++     gpe-edit           | []           []                          []       |
++     gpe-filemanager    | []                              []       []       |
++     gpe-go             | []           []         []   [] []    [] []    [] |
++     gpe-login          | []                      []                        |
++     gpe-ownerinfo      | []                  []  []   [] []    [] []    [] |
++     gpe-package        | []                                       []       |
++     gpe-sketchbook     | []                  []  []   [] []       []    [] |
++     gpe-su             | []                  []  []   [] []    [] []    [] |
++     gpe-taskmanager    | []                  []  []   [] []    [] []    [] |
++     gpe-timesheet      | []                  []  []   [] []    [] []    [] |
++     gpe-today          | []                  []  []   [] []    [] []    [] |
++     gpe-todo           | []                      []      []       []    [] |
++     gphoto2            | []        [] []         []   [] []    []       [] |
++     gprof              | []                      []   []                   |
++     gpsdrive           | []                              []                |
++     gramadoir          | []                                    []          |
++     grep               | []           []                 []    []          |
++     grub               | []           []                 []                |
++     gsasl              | []           []                       []       [] |
++     gss                |              []              []       []          |
++     gst-plugins-bad    | []           []         []      []    []    []    |
++     gst-plugins-base   | []           []         []      []    []          |
++     gst-plugins-good   | []           []         []      []    []          |
++     gst-plugins-ugly   | []           []         []      []    [] []       |
++     gstreamer          | []           []         []      []    []          |
++     gtick              | []                              []    []          |
++     gtkam              | []        [] []         []      []    []          |
++     gtkorphan          | []                                                |
++     gtkspell           | []           []     []  []   [] []    [] [] [] [] |
++     gutenprint         | []                              []                |
++     hello              | []           []                       [] []       |
++     help2man           |              []                 []                |
++     hylafax            | []                                                |
++     idutils            | []           []         []   [] []                |
++     indent             | []           []         []   [] []    []       [] |
++     iso_15924          | []           []                 []       []       |
++     iso_3166           | []  [] [] [] []     ()  []   [] [] [] [] [] [] [] |
++     iso_3166_2         | []           []                          []       |
++     iso_4217           | []  []       []     []          [] []    []    [] |
++     iso_639            | []     [] [] []                 [] [] [] []    [] |
++     iso_639_3          |        [] []                                      |
++     jwhois             | []           []         []   []                   |
++     kbd                | []           []              []                   |
++     keytouch           | []           []                       []          |
++     keytouch-editor    | []           []                       []          |
++     keytouch-keyboa... | []           []                       []          |
++     klavaro            | []                      []                        |
++     latrine            |              []                 []                |
++     ld                 |                                                   |
++     leafpad            | []  []       []     []  []      []    [] []    [] |
++     libc               | []           []                 []    []          |
++     libexif            | []           []         ()            []          |
++     libextractor       |                                                   |
++     libgnutls          | []           []                                   |
++     libgpewidget       | []           []                          []       |
++     libgpg-error       |              []              []                   |
++     libgphoto2         | []           []                                   |
++     libgphoto2_port    | []           []         []      []    []          |
++     libgsasl           | []           []              []       []       [] |
++     libiconv           | []           []                       [] []    [] |
++     libidn             | []           []                                   |
++     lifelines          | []           []                                   |
++     liferea            | []           []     []  []   [] ()    ()    []    |
++     lilypond           | []                                                |
++     linkdr             | []                  []          []                |
++     lordsawar          |                                                   |
++     lprng              |              []                                   |
++     lynx               | []                      []      []                |
++     m4                 | []           []         []   [] []                |
++     mailfromd          |              []                                   |
++     mailutils          |              []                                   |
++     make               | []           []         []      []                |
++     man-db             | []           []                 []                |
++     man-db-manpages    | []           []                 []                |
++     minicom            |              []         []   [] []                |
++     mkisofs            | []           []                 []                |
++     myserver           |                                                   |
++     nano               | []           []         []      []                |
++     opcodes            | []                           []                   |
++     parted             | []           []                 []    []          |
++     pies               |              []                                   |
++     popt               | []           []     []          []                |
++     psmisc             | []           []                 []                |
++     pspp               | []                      []                        |
++     pwdutils           |              []                                   |
++     radius             | []           []                 []                |
++     recode             | []           []     []  []   [] []    [] []       |
++     rosegarden         |              ()                 ()                |
++     rpm                | []           []     []                            |
++     rush               | []           []                                   |
++     sarg               |                                                   |
++     screem             |                                                   |
++     scrollkeeper       | []  []       []              [] []    []    [] [] |
++     sed                | []           []     []  []   [] []    [] []    [] |
++     sharutils          | []           []                 []             [] |
++     shishi             |              []                                   |
++     skencil            |                     []  []                        |
++     solfege            | []           []         []      []                |
++     solfege-manual     | []           []         []                        |
++     soundtracker       |                                       []          |
++     sp                 |                                                   |
++     sysstat            | []           []         []      []                |
++     tar                | []           []                 []       []       |
++     texinfo            | []           []              [] []                |
++     tin                |                                 []                |
++     unicode-han-tra... |                                                   |
++     unicode-transla... |                                                   |
++     util-linux-ng      | []           []         []      []       []       |
++     vice               | []                                                |
++     vmm                | []                                                |
++     vorbis-tools       | []           []                                   |
++     wastesedge         | []                                                |
++     wdiff              | []           []                                   |
++     wget               | []           []     []  []      []    [] []       |
++     wyslij-po          | []  []       []                                   |
++     xchat              | []        [] []     []          []    [] [] [] [] |
++     xdg-user-dirs      | []  [] [] [] []  [] []  []   [] []    [] [] [] [] |
++     xkeyboard-config   | []           []                 []                |
++                        +---------------------------------------------------+
++                          nl  nn or pa pl  ps pt pt_BR ro ru rw sk sl sq sr
++                          135 10  4  7 105  1 29  62   47 91  3 54 46  9 37
++
++                          sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
++                        +---------------------------------------------------+
++     a2ps               | []              [] [] [] []                       | 27
++     aegis              |                          []                       |  9
++     ant-phone          | []                 []    []      []               |  9
++     anubis             | []                 [] [] []                       | 15
++     aspell             |                       [] []  []                   | 20
++     bash               | []                    [] []                       | 12
++     bfd                |                          []                       |  6
++     bibshelf           | []                       []      []               | 16
++     binutils           |                       [] []                       |  8
++     bison              | []                       []                       | 12
++     bison-runtime      | []              []    [] []      []          []   | 29
++     bluez-pin          | []              [] [] [] []  []  []          []   | 37
++     bombono-dvd        |                          []                       |  4
++     buzztard           |                          []                       |  7
++     cflow              |                       [] []      []               |  9
++     clisp              |                                                   | 10
++     coreutils          | []                    [] []      []               | 22
++     cpio               | []                 [] [] []      []          []   | 13
++     cppi               |                       [] []                       |  5
++     cpplib             | []                 [] [] []      []          []   | 14
++     cryptsetup         | []                       []                       |  7
++     dfarc              |                          []                       |  9
++     dialog             | []  []          []       []  []  []          []   | 30
++     dico               |                       []                          |  2
++     diffutils          | []                 [] [] []      []          []   | 30
++     dink               |                                                   |  4
++     doodle             | []                       []                       |  7
++     e2fsprogs          | []                 []    []                       | 11
++     enscript           | []                 [] [] []                       | 17
++     exif               | []                       []      []               | 16
++     fetchmail          |                    []    []      []               | 17
++     findutils          | []                 [] [] []      []               | 20
++     flex               | []                 []    []                  []   | 15
++     freedink           |                          []                       | 10
++     gas                |                    []                             |  4
++     gawk               | []                 []    []      []               | 18
++     gcal               | []                 []                             |  5
++     gcc                | []                 []            []               |  7
++     gettext-examples   | []                 [] [] []      []    []    []   | 34
++     gettext-runtime    | []                 [] [] []      []    []    []   | 29
++     gettext-tools      | []                 [] [] []      []          []   | 22
++     gip                | []                       []      []          []   | 22
++     gjay               |                          []                       |  3
++     gliv               | []                 []    []                       | 14
++     glunarclock        | []                       []  []  []          []   | 19
++     gnubiff            | []                       []                       |  4
++     gnucash            |                    () [] ()      []          ()   | 10
++     gnuedu             |                          []                  []   |  7
++     gnulib             | []                    [] []      []               | 16
++     gnunet             |                          []                       |  1
++     gnunet-gtk         | []                 []    []                       |  5
++     gnutls             | []                       []      []               | 10
++     gold               |                          []                       |  4
++     gpe-aerial         | []                       []      []               | 18
++     gpe-beam           | []                       []      []               | 19
++     gpe-bluetooth      | []                       []      []               | 13
++     gpe-calendar       | []                       []  []  []               | 12
++     gpe-clock          | []                 []    []  []  []               | 28
++     gpe-conf           | []                       []  []  []               | 20
++     gpe-contacts       | []                       []      []               | 17
++     gpe-edit           | []                       []      []               | 12
++     gpe-filemanager    | []                       []  []  []               | 16
++     gpe-go             | []                 []    []  []  []               | 25
++     gpe-login          | []                       []      []               | 11
++     gpe-ownerinfo      | []                 []    []      []          []   | 25
++     gpe-package        | []                       []      []               | 13
++     gpe-sketchbook     | []                       []      []               | 20
++     gpe-su             | []                 []    []  []  []               | 30
++     gpe-taskmanager    | []                 []    []  []  []               | 29
++     gpe-timesheet      | []                 []    []      []          []   | 25
++     gpe-today          | []                 []    []  []  []          []   | 30
++     gpe-todo           | []                       []  []  []               | 17
++     gphoto2            | []                    [] []      []          []   | 24
++     gprof              | []                 []    []                       | 15
++     gpsdrive           | []                       []      []               | 11
++     gramadoir          | []                       []      []               | 11
++     grep               |                 []       []      []               | 10
++     grub               | []                       []      []               | 14
++     gsasl              | []                       []      []          []   | 14
++     gss                | []                       []      []               | 11
++     gst-plugins-bad    | []                 []    []      []               | 26
++     gst-plugins-base   | []                 [] [] []      []               | 24
++     gst-plugins-good   | []                 []    []      []               | 24
++     gst-plugins-ugly   | []                 [] [] []      []               | 29
++     gstreamer          | []                    [] []      []               | 22
++     gtick              |                       [] []      []               | 13
++     gtkam              | []                       []      []               | 20
++     gtkorphan          | []                       []      []               | 14
++     gtkspell           | []              [] [] [] []  []  []    []    []   | 45
++     gutenprint         | []                                                | 10
++     hello              | []              [] []    []      []          []   | 21
++     help2man           | []                       []                       |  7
++     hylafax            |                          []                       |  5
++     idutils            | []                 []    []      []               | 17
++     indent             | []                 [] [] []      []          []   | 30
++     iso_15924          |                 ()    [] ()      []          []   | 16
++     iso_3166           | []        []    () [] [] ()  []  []    []    ()   | 53
++     iso_3166_2         |                 ()    [] ()      []               |  9
++     iso_4217           | []              () [] [] ()      []    []         | 26
++     iso_639            | []     [] []    ()    [] ()  []  []    []    []   | 38
++     iso_639_3          |        []                ()                       |  8
++     jwhois             | []                 []    []      []          []   | 16
++     kbd                | []                 [] [] []      []               | 15
++     keytouch           | []                       []      []               | 16
++     keytouch-editor    | []                       []      []               | 14
++     keytouch-keyboa... | []                       []      []               | 14
++     klavaro            |                          []                       | 11
++     latrine            |                    []    []      []               | 10
++     ld                 | []                 []    []                  []   | 11
++     leafpad            | []                 [] [] []      []          []   | 33
++     libc               | []                 []    []      []          []   | 21
++     libexif            |                          []      ()               |  7
++     libextractor       |                          []                       |  1
++     libgnutls          | []                       []      []               |  9
++     libgpewidget       | []                       []      []               | 14
++     libgpg-error       | []                       []      []               |  9
++     libgphoto2         |                       [] []                       |  8
++     libgphoto2_port    | []                    [] []                  []   | 14
++     libgsasl           | []                       []      []               | 13
++     libiconv           | []                       []  []  []               | 21
++     libidn             | ()                       []      []               | 11
++     lifelines          | []                                                |  4
++     liferea            | []                 []            []               | 21
++     lilypond           |                          []                       |  7
++     linkdr             | []                 []    []      []          []   | 17
++     lordsawar          |                                                   |  1
++     lprng              |                          []                       |  3
++     lynx               | []                 [] [] []                       | 17
++     m4                 | []                       []      []          []   | 19
++     mailfromd          |                       [] []                       |  3
++     mailutils          |                          []                       |  5
++     make               | []                 []    []      []               | 21
++     man-db             | []                       []      []               |  8
++     man-db-manpages    |                                                   |  4
++     minicom            | []                       []                       | 16
++     mkisofs            |                          []      []               |  9
++     myserver           |                                                   |  0
++     nano               | []                       []      []          []   | 21
++     opcodes            | []                 []    []                       | 11
++     parted             | []                 [] [] []                  []   | 15
++     pies               |                       [] []                       |  3
++     popt               | []              [] []    []      []          []   | 27
++     psmisc             | []                       []                       | 11
++     pspp               |                                                   |  4
++     pwdutils           | []                       []                       |  6
++     radius             |                       [] []                       |  9
++     recode             | []                 []    []      []               | 28
++     rosegarden         | ()                                                |  0
++     rpm                | []                       []                  []   | 11
++     rush               |                       [] []                       |  4
++     sarg               |                                                   |  1
++     screem             |                          []                       |  3
++     scrollkeeper       | []                 [] [] []                  []   | 27
++     sed                | []                 []    []      []          []   | 30
++     sharutils          | []                 []    []      []          []   | 22
++     shishi             |                          []                       |  3
++     skencil            | []                       []                       |  7
++     solfege            | []                 []    []      []               | 16
++     solfege-manual     |                    []                             |  8
++     soundtracker       | []                 []    []                       |  9
++     sp                 |                    []                             |  3
++     sysstat            |                          []      []               | 15
++     tar                | []                 [] [] []      []          []   | 23
++     texinfo            | []                 [] [] []      []               | 17
++     tin                |                                                   |  4
++     unicode-han-tra... |                                                   |  0
++     unicode-transla... |                                                   |  2
++     util-linux-ng      | []                 [] [] []                       | 20
++     vice               | ()                 ()                             |  1
++     vmm                |                          []                       |  4
++     vorbis-tools       |                          []                       |  6
++     wastesedge         |                                                   |  2
++     wdiff              | []                       []                       |  7
++     wget               | []                 []    []      []          []   | 26
++     wyslij-po          |                       [] []                       |  8
++     xchat              | []              []    [] []      []          []   | 36
++     xdg-user-dirs      | []     [] []    [] [] [] []      []    []    []   | 63
++     xkeyboard-config   | []                    [] []                       | 22
++                        +---------------------------------------------------+
++       85 teams           sv  sw ta te tg th tr uk vi  wa zh_CN zh_HK zh_TW
++      178 domains         119  1  3  3  0 10 65 51 155 17  98     7    41    2618
++
++   Some counters in the preceding matrix are higher than the number of
++visible blocks let us expect.  This is because a few extra PO files are
++used for implementing regional variants of languages, or language
++dialects.
++
++   For a PO file in the matrix above to be effective, the package to
++which it applies should also have been internationalized and
++distributed as such by its maintainer.  There might be an observable
++lag between the mere existence a PO file and its wide availability in a
++distribution.
++
++   If June 2010 seems to be old, you may fetch a more recent copy of
++this `ABOUT-NLS' file on most GNU archive sites.  The most up-to-date
++matrix with full percentage details can be found at
++`http://translationproject.org/extra/matrix.html'.
++
++1.5 Using `gettext' in new packages
++===================================
++
++If you are writing a freely available program and want to
++internationalize it you are welcome to use GNU `gettext' in your
++package.  Of course you have to respect the GNU Library General Public
++License which covers the use of the GNU `gettext' library.  This means
++in particular that even non-free programs can use `libintl' as a shared
++library, whereas only free software can use `libintl' as a static
++library or use modified versions of `libintl'.
++
++   Once the sources are changed appropriately and the setup can handle
++the use of `gettext' the only thing missing are the translations.  The
++Free Translation Project is also available for packages which are not
++developed inside the GNU project.  Therefore the information given above
++applies also for every other Free Software Project.  Contact
++`coordinator@translationproject.org' to make the `.pot' files available
++to the translation teams.
++
+diff --git a/config.rpath b/config.rpath
+new file mode 100755
+index 0000000..17298f2
+--- /dev/null
++++ b/config.rpath
+@@ -0,0 +1,672 @@
++#! /bin/sh
++# Output a system dependent set of variables, describing how to set the
++# run time search path of shared libraries in an executable.
++#
++#   Copyright 1996-2010 Free Software Foundation, Inc.
++#   Taken from GNU libtool, 2001
++#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
++#
++#   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.
++#
++# The first argument passed to this file is the canonical host specification,
++#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
++# or
++#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
++# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
++# should be set by the caller.
++#
++# The set of defined variables is at the end of this script.
++
++# Known limitations:
++# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
++#   than 256 bytes, otherwise the compiler driver will dump core. The only
++#   known workaround is to choose shorter directory names for the build
++#   directory and/or the installation directory.
++
++# All known linkers require a `.a' archive for static linking (except MSVC,
++# which needs '.lib').
++libext=a
++shrext=.so
++
++host="$1"
++host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++
++# Code taken from libtool.m4's _LT_CC_BASENAME.
++
++for cc_temp in $CC""; do
++  case $cc_temp in
++    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
++    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
++    \-*) ;;
++    *) break;;
++  esac
++done
++cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
++
++# Code taken from libtool.m4's _LT_COMPILER_PIC.
++
++wl=
++if test "$GCC" = yes; then
++  wl='-Wl,'
++else
++  case "$host_os" in
++    aix*)
++      wl='-Wl,'
++      ;;
++    darwin*)
++      case $cc_basename in
++        xlc*)
++          wl='-Wl,'
++          ;;
++      esac
++      ;;
++    mingw* | cygwin* | pw32* | os2* | cegcc*)
++      ;;
++    hpux9* | hpux10* | hpux11*)
++      wl='-Wl,'
++      ;;
++    irix5* | irix6* | nonstopux*)
++      wl='-Wl,'
++      ;;
++    newsos6)
++      ;;
++    linux* | k*bsd*-gnu)
++      case $cc_basename in
++        ecc*)
++          wl='-Wl,'
++          ;;
++        icc* | ifort*)
++          wl='-Wl,'
++          ;;
++        lf95*)
++          wl='-Wl,'
++          ;;
++        pgcc | pgf77 | pgf90)
++          wl='-Wl,'
++          ;;
++        ccc*)
++          wl='-Wl,'
++          ;;
++        como)
++          wl='-lopt='
++          ;;
++        *)
++          case `$CC -V 2>&1 | sed 5q` in
++            *Sun\ C*)
++              wl='-Wl,'
++              ;;
++          esac
++          ;;
++      esac
++      ;;
++    osf3* | osf4* | osf5*)
++      wl='-Wl,'
++      ;;
++    rdos*)
++      ;;
++    solaris*)
++      wl='-Wl,'
++      ;;
++    sunos4*)
++      wl='-Qoption ld '
++      ;;
++    sysv4 | sysv4.2uw2* | sysv4.3*)
++      wl='-Wl,'
++      ;;
++    sysv4*MP*)
++      ;;
++    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
++      wl='-Wl,'
++      ;;
++    unicos*)
++      wl='-Wl,'
++      ;;
++    uts4*)
++      ;;
++  esac
++fi
++
++# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
++
++hardcode_libdir_flag_spec=
++hardcode_libdir_separator=
++hardcode_direct=no
++hardcode_minus_L=no
++
++case "$host_os" in
++  cygwin* | mingw* | pw32* | cegcc*)
++    # FIXME: the MSVC++ port hasn't been tested in a loooong time
++    # When not using gcc, we currently assume that we are using
++    # Microsoft Visual C++.
++    if test "$GCC" != yes; then
++      with_gnu_ld=no
++    fi
++    ;;
++  interix*)
++    # we just hope/assume this is gcc and not c89 (= MSVC++)
++    with_gnu_ld=yes
++    ;;
++  openbsd*)
++    with_gnu_ld=no
++    ;;
++esac
++
++ld_shlibs=yes
++if test "$with_gnu_ld" = yes; then
++  # Set some defaults for GNU ld with shared library support. These
++  # are reset later if shared libraries are not supported. Putting them
++  # here allows them to be overridden if necessary.
++  # Unlike libtool, we use -rpath here, not --rpath, since the documented
++  # option of GNU ld is called -rpath, not --rpath.
++  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++  case "$host_os" in
++    aix[3-9]*)
++      # On AIX/PPC, the GNU linker is very broken
++      if test "$host_cpu" != ia64; then
++        ld_shlibs=no
++      fi
++      ;;
++    amigaos*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
++      # that the semantics of dynamic libraries on AmigaOS, at least up
++      # to version 4, is to share data among multiple programs linked
++      # with the same dynamic library.  Since this doesn't match the
++      # behavior of shared libraries on other platforms, we cannot use
++      # them.
++      ld_shlibs=no
++      ;;
++    beos*)
++      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    cygwin* | mingw* | pw32* | cegcc*)
++      # hardcode_libdir_flag_spec is actually meaningless, as there is
++      # no search path for DLLs.
++      hardcode_libdir_flag_spec='-L$libdir'
++      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    interix[3-9]*)
++      hardcode_direct=no
++      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++      ;;
++    gnu* | linux* | k*bsd*-gnu)
++      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    netbsd*)
++      ;;
++    solaris*)
++      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
++        ld_shlibs=no
++      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
++      case `$LD -v 2>&1` in
++        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
++          ld_shlibs=no
++          ;;
++        *)
++          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
++          else
++            ld_shlibs=no
++          fi
++          ;;
++      esac
++      ;;
++    sunos4*)
++      hardcode_direct=yes
++      ;;
++    *)
++      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
++        :
++      else
++        ld_shlibs=no
++      fi
++      ;;
++  esac
++  if test "$ld_shlibs" = no; then
++    hardcode_libdir_flag_spec=
++  fi
++else
++  case "$host_os" in
++    aix3*)
++      # Note: this linker hardcodes the directories in LIBPATH if there
++      # are no directories specified by -L.
++      hardcode_minus_L=yes
++      if test "$GCC" = yes; then
++        # Neither direct hardcoding nor static linking is supported with a
++        # broken collect2.
++        hardcode_direct=unsupported
++      fi
++      ;;
++    aix[4-9]*)
++      if test "$host_cpu" = ia64; then
++        # On IA64, the linker does run time linking by default, so we don't
++        # have to do anything special.
++        aix_use_runtimelinking=no
++      else
++        aix_use_runtimelinking=no
++        # Test if we are trying to use run time linking or normal
++        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
++        # need to do runtime linking.
++        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
++          for ld_flag in $LDFLAGS; do
++            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
++              aix_use_runtimelinking=yes
++              break
++            fi
++          done
++          ;;
++        esac
++      fi
++      hardcode_direct=yes
++      hardcode_libdir_separator=':'
++      if test "$GCC" = yes; then
++        case $host_os in aix4.[012]|aix4.[012].*)
++          collect2name=`${CC} -print-prog-name=collect2`
++          if test -f "$collect2name" && \
++            strings "$collect2name" | grep resolve_lib_name >/dev/null
++          then
++            # We have reworked collect2
++            :
++          else
++            # We have old collect2
++            hardcode_direct=unsupported
++            hardcode_minus_L=yes
++            hardcode_libdir_flag_spec='-L$libdir'
++            hardcode_libdir_separator=
++          fi
++          ;;
++        esac
++      fi
++      # Begin _LT_AC_SYS_LIBPATH_AIX.
++      echo 'int main () { return 0; }' > conftest.c
++      ${CC} ${LDFLAGS} conftest.c -o conftest
++      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
++}'`
++      if test -z "$aix_libpath"; then
++        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
++}'`
++      fi
++      if test -z "$aix_libpath"; then
++        aix_libpath="/usr/lib:/lib"
++      fi
++      rm -f conftest.c conftest
++      # End _LT_AC_SYS_LIBPATH_AIX.
++      if test "$aix_use_runtimelinking" = yes; then
++        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
++      else
++        if test "$host_cpu" = ia64; then
++          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
++        else
++          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
++        fi
++      fi
++      ;;
++    amigaos*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      # see comment about different semantics on the GNU ld section
++      ld_shlibs=no
++      ;;
++    bsdi[45]*)
++      ;;
++    cygwin* | mingw* | pw32* | cegcc*)
++      # When not using gcc, we currently assume that we are using
++      # Microsoft Visual C++.
++      # hardcode_libdir_flag_spec is actually meaningless, as there is
++      # no search path for DLLs.
++      hardcode_libdir_flag_spec=' '
++      libext=lib
++      ;;
++    darwin* | rhapsody*)
++      hardcode_direct=no
++      if test "$GCC" = yes ; then
++        :
++      else
++        case $cc_basename in
++          xlc*)
++            ;;
++          *)
++            ld_shlibs=no
++            ;;
++        esac
++      fi
++      ;;
++    dgux*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      ;;
++    freebsd1*)
++      ld_shlibs=no
++      ;;
++    freebsd2.2*)
++      hardcode_libdir_flag_spec='-R$libdir'
++      hardcode_direct=yes
++      ;;
++    freebsd2*)
++      hardcode_direct=yes
++      hardcode_minus_L=yes
++      ;;
++    freebsd* | dragonfly*)
++      hardcode_libdir_flag_spec='-R$libdir'
++      hardcode_direct=yes
++      ;;
++    hpux9*)
++      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++      hardcode_libdir_separator=:
++      hardcode_direct=yes
++      # hardcode_minus_L: Not really in the search PATH,
++      # but as the default location of the library.
++      hardcode_minus_L=yes
++      ;;
++    hpux10*)
++      if test "$with_gnu_ld" = no; then
++        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++        hardcode_libdir_separator=:
++        hardcode_direct=yes
++        # hardcode_minus_L: Not really in the search PATH,
++        # but as the default location of the library.
++        hardcode_minus_L=yes
++      fi
++      ;;
++    hpux11*)
++      if test "$with_gnu_ld" = no; then
++        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
++        hardcode_libdir_separator=:
++        case $host_cpu in
++          hppa*64*|ia64*)
++            hardcode_direct=no
++            ;;
++          *)
++            hardcode_direct=yes
++            # hardcode_minus_L: Not really in the search PATH,
++            # but as the default location of the library.
++            hardcode_minus_L=yes
++            ;;
++        esac
++      fi
++      ;;
++    irix5* | irix6* | nonstopux*)
++      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      hardcode_libdir_separator=:
++      ;;
++    netbsd*)
++      hardcode_libdir_flag_spec='-R$libdir'
++      hardcode_direct=yes
++      ;;
++    newsos6)
++      hardcode_direct=yes
++      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      hardcode_libdir_separator=:
++      ;;
++    openbsd*)
++      if test -f /usr/libexec/ld.so; then
++        hardcode_direct=yes
++        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
++          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++        else
++          case "$host_os" in
++            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
++              hardcode_libdir_flag_spec='-R$libdir'
++              ;;
++            *)
++              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
++              ;;
++          esac
++        fi
++      else
++        ld_shlibs=no
++      fi
++      ;;
++    os2*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_minus_L=yes
++      ;;
++    osf3*)
++      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      hardcode_libdir_separator=:
++      ;;
++    osf4* | osf5*)
++      if test "$GCC" = yes; then
++        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
++      else
++        # Both cc and cxx compiler support -rpath directly
++        hardcode_libdir_flag_spec='-rpath $libdir'
++      fi
++      hardcode_libdir_separator=:
++      ;;
++    solaris*)
++      hardcode_libdir_flag_spec='-R$libdir'
++      ;;
++    sunos4*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      hardcode_direct=yes
++      hardcode_minus_L=yes
++      ;;
++    sysv4)
++      case $host_vendor in
++        sni)
++          hardcode_direct=yes # is this really true???
++          ;;
++        siemens)
++          hardcode_direct=no
++          ;;
++        motorola)
++          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
++          ;;
++      esac
++      ;;
++    sysv4.3*)
++      ;;
++    sysv4*MP*)
++      if test -d /usr/nec; then
++        ld_shlibs=yes
++      fi
++      ;;
++    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
++      ;;
++    sysv5* | sco3.2v5* | sco5v6*)
++      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
++      hardcode_libdir_separator=':'
++      ;;
++    uts4*)
++      hardcode_libdir_flag_spec='-L$libdir'
++      ;;
++    *)
++      ld_shlibs=no
++      ;;
++  esac
++fi
++
++# Check dynamic linker characteristics
++# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
++# Unlike libtool.m4, here we don't care about _all_ names of the library, but
++# only about the one the linker finds when passed -lNAME. This is the last
++# element of library_names_spec in libtool.m4, or possibly two of them if the
++# linker has special search rules.
++library_names_spec=      # the last element of library_names_spec in libtool.m4
++libname_spec='lib$name'
++case "$host_os" in
++  aix3*)
++    library_names_spec='$libname.a'
++    ;;
++  aix[4-9]*)
++    library_names_spec='$libname$shrext'
++    ;;
++  amigaos*)
++    library_names_spec='$libname.a'
++    ;;
++  beos*)
++    library_names_spec='$libname$shrext'
++    ;;
++  bsdi[45]*)
++    library_names_spec='$libname$shrext'
++    ;;
++  cygwin* | mingw* | pw32* | cegcc*)
++    shrext=.dll
++    library_names_spec='$libname.dll.a $libname.lib'
++    ;;
++  darwin* | rhapsody*)
++    shrext=.dylib
++    library_names_spec='$libname$shrext'
++    ;;
++  dgux*)
++    library_names_spec='$libname$shrext'
++    ;;
++  freebsd1*)
++    ;;
++  freebsd* | dragonfly*)
++    case "$host_os" in
++      freebsd[123]*)
++        library_names_spec='$libname$shrext$versuffix' ;;
++      *)
++        library_names_spec='$libname$shrext' ;;
++    esac
++    ;;
++  gnu*)
++    library_names_spec='$libname$shrext'
++    ;;
++  hpux9* | hpux10* | hpux11*)
++    case $host_cpu in
++      ia64*)
++        shrext=.so
++        ;;
++      hppa*64*)
++        shrext=.sl
++        ;;
++      *)
++        shrext=.sl
++        ;;
++    esac
++    library_names_spec='$libname$shrext'
++    ;;
++  interix[3-9]*)
++    library_names_spec='$libname$shrext'
++    ;;
++  irix5* | irix6* | nonstopux*)
++    library_names_spec='$libname$shrext'
++    case "$host_os" in
++      irix5* | nonstopux*)
++        libsuff= shlibsuff=
++        ;;
++      *)
++        case $LD in
++          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
++          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
++          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
++          *) libsuff= shlibsuff= ;;
++        esac
++        ;;
++    esac
++    ;;
++  linux*oldld* | linux*aout* | linux*coff*)
++    ;;
++  linux* | k*bsd*-gnu)
++    library_names_spec='$libname$shrext'
++    ;;
++  knetbsd*-gnu)
++    library_names_spec='$libname$shrext'
++    ;;
++  netbsd*)
++    library_names_spec='$libname$shrext'
++    ;;
++  newsos6)
++    library_names_spec='$libname$shrext'
++    ;;
++  nto-qnx*)
++    library_names_spec='$libname$shrext'
++    ;;
++  openbsd*)
++    library_names_spec='$libname$shrext$versuffix'
++    ;;
++  os2*)
++    libname_spec='$name'
++    shrext=.dll
++    library_names_spec='$libname.a'
++    ;;
++  osf3* | osf4* | osf5*)
++    library_names_spec='$libname$shrext'
++    ;;
++  rdos*)
++    ;;
++  solaris*)
++    library_names_spec='$libname$shrext'
++    ;;
++  sunos4*)
++    library_names_spec='$libname$shrext$versuffix'
++    ;;
++  sysv4 | sysv4.3*)
++    library_names_spec='$libname$shrext'
++    ;;
++  sysv4*MP*)
++    library_names_spec='$libname$shrext'
++    ;;
++  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
++    library_names_spec='$libname$shrext'
++    ;;
++  uts4*)
++    library_names_spec='$libname$shrext'
++    ;;
++esac
++
++sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
++escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
++shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
++escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
++
++LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
++
++# How to pass a linker flag through the compiler.
++wl="$escaped_wl"
++
++# Static library suffix (normally "a").
++libext="$libext"
++
++# Shared library suffix (normally "so").
++shlibext="$shlibext"
++
++# Format of library name prefix.
++libname_spec="$escaped_libname_spec"
++
++# Library names that the linker finds when passed -lNAME.
++library_names_spec="$escaped_library_names_spec"
++
++# Flag to hardcode \$libdir into a binary during linking.
++# This must work even if \$libdir does not exist.
++hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
++
++# Whether we need a single -rpath flag with a separated argument.
++hardcode_libdir_separator="$hardcode_libdir_separator"
++
++# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
++# resulting binary.
++hardcode_direct="$hardcode_direct"
++
++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
++# resulting binary.
++hardcode_minus_L="$hardcode_minus_L"
++
++EOF
+diff --git a/m4/codeset.m4 b/m4/codeset.m4
+new file mode 100644
+index 0000000..a53c042
+--- /dev/null
++++ b/m4/codeset.m4
+@@ -0,0 +1,21 @@
++# codeset.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_LANGINFO_CODESET],
++[
++  AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
++    [AC_TRY_LINK([#include <langinfo.h>],
++      [char* cs = nl_langinfo(CODESET); return !cs;],
++      [am_cv_langinfo_codeset=yes],
++      [am_cv_langinfo_codeset=no])
++    ])
++  if test $am_cv_langinfo_codeset = yes; then
++    AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
++      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
++  fi
++])
+diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
+new file mode 100644
+index 0000000..d416a61
+--- /dev/null
++++ b/m4/fcntl-o.m4
+@@ -0,0 +1,81 @@
++# fcntl-o.m4 serial 1
++dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Written by Paul Eggert.
++
++# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
++# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
++# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
++AC_DEFUN([gl_FCNTL_O_FLAGS],
++[
++  dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
++  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
++  AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
++    [AC_RUN_IFELSE(
++       [AC_LANG_PROGRAM(
++          [[#include <sys/types.h>
++           #include <sys/stat.h>
++           #include <unistd.h>
++           #include <fcntl.h>
++           #ifndef O_NOATIME
++            #define O_NOATIME 0
++           #endif
++           #ifndef O_NOFOLLOW
++            #define O_NOFOLLOW 0
++           #endif
++           static int const constants[] =
++            {
++              O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
++              O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
++            };
++          ]],
++          [[
++            int status = !constants;
++            {
++              static char const sym[] = "conftest.sym";
++              if (symlink (".", sym) != 0
++                  || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
++                status |= 32;
++              unlink (sym);
++            }
++            {
++              static char const file[] = "confdefs.h";
++              int fd = open (file, O_RDONLY | O_NOATIME);
++              char c;
++              struct stat st0, st1;
++              if (fd < 0
++                  || fstat (fd, &st0) != 0
++                  || sleep (1) != 0
++                  || read (fd, &c, 1) != 1
++                  || close (fd) != 0
++                  || stat (file, &st1) != 0
++                  || st0.st_atime != st1.st_atime)
++                status |= 64;
++            }
++            return status;]])],
++       [gl_cv_header_working_fcntl_h=yes],
++       [case $? in #(
++        32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
++        64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
++        96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
++         *) gl_cv_header_working_fcntl_h='no';;
++        esac],
++       [gl_cv_header_working_fcntl_h=cross-compiling])])
++
++  case $gl_cv_header_working_fcntl_h in #(
++  *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
++  *) ac_val=1;;
++  esac
++  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
++    [Define to 1 if O_NOATIME works.])
++
++  case $gl_cv_header_working_fcntl_h in #(
++  *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
++  *) ac_val=1;;
++  esac
++  AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
++    [Define to 1 if O_NOFOLLOW works.])
++])
+diff --git a/m4/gettext.m4 b/m4/gettext.m4
+new file mode 100644
+index 0000000..f84e6a5
+--- /dev/null
++++ b/m4/gettext.m4
+@@ -0,0 +1,383 @@
++# gettext.m4 serial 63 (gettext-0.18)
++dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
++
++dnl Macro to add for using GNU gettext.
++
++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
++dnl    default (if it is not specified or empty) is 'no-libtool'.
++dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
++dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
++dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
++dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
++dnl    depending on --{enable,disable}-{shared,static} and on the presence of
++dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
++dnl    $(top_builddir)/intl/libintl.a will be created.
++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
++dnl    implementations (in libc or libintl) without the ngettext() function
++dnl    will be ignored.  If NEEDSYMBOL is specified and is
++dnl    'need-formatstring-macros', then GNU gettext implementations that don't
++dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
++dnl INTLDIR is used to find the intl libraries.  If empty,
++dnl    the value `$(top_builddir)/intl/' is used.
++dnl
++dnl The result of the configuration is one of three cases:
++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
++dnl    and used.
++dnl    Catalog format: GNU --> install in $(datadir)
++dnl    Catalog extension: .mo after installation, .gmo in source tree
++dnl 2) GNU gettext has been found in the system's C library.
++dnl    Catalog format: GNU --> install in $(datadir)
++dnl    Catalog extension: .mo after installation, .gmo in source tree
++dnl 3) No internationalization, always use English msgid.
++dnl    Catalog format: none
++dnl    Catalog extension: none
++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
++dnl The use of .gmo is historical (it was needed to avoid overwriting the
++dnl GNU format catalogs when building on a platform with an X/Open gettext),
++dnl but we keep it in order not to force irrelevant filename changes on the
++dnl maintainers.
++dnl
++AC_DEFUN([AM_GNU_GETTEXT],
++[
++  dnl Argument checking.
++  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
++    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
++])])])])])
++  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
++    [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
++  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
++    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
++])])])])
++  define([gt_included_intl],
++    ifelse([$1], [external],
++      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
++      [yes]))
++  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
++  gt_NEEDS_INIT
++  AM_GNU_GETTEXT_NEED([$2])
++
++  AC_REQUIRE([AM_PO_SUBDIRS])dnl
++  ifelse(gt_included_intl, yes, [
++    AC_REQUIRE([AM_INTL_SUBDIR])dnl
++  ])
++
++  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++
++  dnl Sometimes libintl requires libiconv, so first search for libiconv.
++  dnl Ideally we would do this search only after the
++  dnl      if test "$USE_NLS" = "yes"; then
++  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
++  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
++  dnl the configure script would need to contain the same shell code
++  dnl again, outside any 'if'. There are two solutions:
++  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
++  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
++  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
++  dnl documented, we avoid it.
++  ifelse(gt_included_intl, yes, , [
++    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++  ])
++
++  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
++  gt_INTL_MACOSX
++
++  dnl Set USE_NLS.
++  AC_REQUIRE([AM_NLS])
++
++  ifelse(gt_included_intl, yes, [
++    BUILD_INCLUDED_LIBINTL=no
++    USE_INCLUDED_LIBINTL=no
++  ])
++  LIBINTL=
++  LTLIBINTL=
++  POSUB=
++
++  dnl Add a version number to the cache macros.
++  case " $gt_needs " in
++    *" need-formatstring-macros "*) gt_api_version=3 ;;
++    *" need-ngettext "*) gt_api_version=2 ;;
++    *) gt_api_version=1 ;;
++  esac
++  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
++  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
++
++  dnl If we use NLS figure out what method
++  if test "$USE_NLS" = "yes"; then
++    gt_use_preinstalled_gnugettext=no
++    ifelse(gt_included_intl, yes, [
++      AC_MSG_CHECKING([whether included gettext is requested])
++      AC_ARG_WITH([included-gettext],
++        [  --with-included-gettext use the GNU gettext library included here],
++        nls_cv_force_use_gnu_gettext=$withval,
++        nls_cv_force_use_gnu_gettext=no)
++      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
++
++      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
++      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
++    ])
++        dnl User does not insist on using GNU NLS library.  Figure out what
++        dnl to use.  If GNU gettext is available we use this.  Else we have
++        dnl to fall back to GNU NLS library.
++
++        if test $gt_api_version -ge 3; then
++          gt_revision_test_code='
++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++#endif
++changequote(,)dnl
++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
++changequote([,])dnl
++'
++        else
++          gt_revision_test_code=
++        fi
++        if test $gt_api_version -ge 2; then
++          gt_expression_test_code=' + * ngettext ("", "", 0)'
++        else
++          gt_expression_test_code=
++        fi
++
++        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
++         [AC_TRY_LINK([#include <libintl.h>
++$gt_revision_test_code
++extern int _nl_msg_cat_cntr;
++extern int *_nl_domain_bindings;],
++            [bindtextdomain ("", "");
++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
++            [eval "$gt_func_gnugettext_libc=yes"],
++            [eval "$gt_func_gnugettext_libc=no"])])
++
++        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
++          dnl Sometimes libintl requires libiconv, so first search for libiconv.
++          ifelse(gt_included_intl, yes, , [
++            AM_ICONV_LINK
++          ])
++          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
++          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
++          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
++          dnl even if libiconv doesn't exist.
++          AC_LIB_LINKFLAGS_BODY([intl])
++          AC_CACHE_CHECK([for GNU gettext in libintl],
++            [$gt_func_gnugettext_libintl],
++           [gt_save_CPPFLAGS="$CPPFLAGS"
++            CPPFLAGS="$CPPFLAGS $INCINTL"
++            gt_save_LIBS="$LIBS"
++            LIBS="$LIBS $LIBINTL"
++            dnl Now see whether libintl exists and does not depend on libiconv.
++            AC_TRY_LINK([#include <libintl.h>
++$gt_revision_test_code
++extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias (const char *);],
++              [bindtextdomain ("", "");
++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
++              [eval "$gt_func_gnugettext_libintl=yes"],
++              [eval "$gt_func_gnugettext_libintl=no"])
++            dnl Now see whether libintl exists and depends on libiconv.
++            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
++              LIBS="$LIBS $LIBICONV"
++              AC_TRY_LINK([#include <libintl.h>
++$gt_revision_test_code
++extern int _nl_msg_cat_cntr;
++extern
++#ifdef __cplusplus
++"C"
++#endif
++const char *_nl_expand_alias (const char *);],
++                [bindtextdomain ("", "");
++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
++               [LIBINTL="$LIBINTL $LIBICONV"
++                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
++                eval "$gt_func_gnugettext_libintl=yes"
++               ])
++            fi
++            CPPFLAGS="$gt_save_CPPFLAGS"
++            LIBS="$gt_save_LIBS"])
++        fi
++
++        dnl If an already present or preinstalled GNU gettext() is found,
++        dnl use it.  But if this macro is used in GNU gettext, and GNU
++        dnl gettext is already preinstalled in libintl, we update this
++        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
++        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
++           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
++                && test "$PACKAGE" != gettext-runtime \
++                && test "$PACKAGE" != gettext-tools; }; then
++          gt_use_preinstalled_gnugettext=yes
++        else
++          dnl Reset the values set by searching for libintl.
++          LIBINTL=
++          LTLIBINTL=
++          INCINTL=
++        fi
++
++    ifelse(gt_included_intl, yes, [
++        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
++          dnl GNU gettext is not found in the C library.
++          dnl Fall back on included GNU gettext library.
++          nls_cv_use_gnu_gettext=yes
++        fi
++      fi
++
++      if test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Mark actions used to generate GNU NLS library.
++        BUILD_INCLUDED_LIBINTL=yes
++        USE_INCLUDED_LIBINTL=yes
++        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
++        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
++        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
++      fi
++
++      CATOBJEXT=
++      if test "$gt_use_preinstalled_gnugettext" = "yes" \
++         || test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Mark actions to use GNU gettext tools.
++        CATOBJEXT=.gmo
++      fi
++    ])
++
++    if test -n "$INTL_MACOSX_LIBS"; then
++      if test "$gt_use_preinstalled_gnugettext" = "yes" \
++         || test "$nls_cv_use_gnu_gettext" = "yes"; then
++        dnl Some extra flags are needed during linking.
++        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
++        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
++      fi
++    fi
++
++    if test "$gt_use_preinstalled_gnugettext" = "yes" \
++       || test "$nls_cv_use_gnu_gettext" = "yes"; then
++      AC_DEFINE([ENABLE_NLS], [1],
++        [Define to 1 if translation of program messages to the user's native language
++   is requested.])
++    else
++      USE_NLS=no
++    fi
++  fi
++
++  AC_MSG_CHECKING([whether to use NLS])
++  AC_MSG_RESULT([$USE_NLS])
++  if test "$USE_NLS" = "yes"; then
++    AC_MSG_CHECKING([where the gettext function comes from])
++    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
++        gt_source="external libintl"
++      else
++        gt_source="libc"
++      fi
++    else
++      gt_source="included intl directory"
++    fi
++    AC_MSG_RESULT([$gt_source])
++  fi
++
++  if test "$USE_NLS" = "yes"; then
++
++    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
++      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
++        AC_MSG_CHECKING([how to link with libintl])
++        AC_MSG_RESULT([$LIBINTL])
++        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
++      fi
++
++      dnl For backward compatibility. Some packages may be using this.
++      AC_DEFINE([HAVE_GETTEXT], [1],
++       [Define if the GNU gettext() function is already present or preinstalled.])
++      AC_DEFINE([HAVE_DCGETTEXT], [1],
++       [Define if the GNU dcgettext() function is already present or preinstalled.])
++    fi
++
++    dnl We need to process the po/ directory.
++    POSUB=po
++  fi
++
++  ifelse(gt_included_intl, yes, [
++    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
++    dnl to 'yes' because some of the testsuite requires it.
++    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
++      BUILD_INCLUDED_LIBINTL=yes
++    fi
++
++    dnl Make all variables we use known to autoconf.
++    AC_SUBST([BUILD_INCLUDED_LIBINTL])
++    AC_SUBST([USE_INCLUDED_LIBINTL])
++    AC_SUBST([CATOBJEXT])
++
++    dnl For backward compatibility. Some configure.ins may be using this.
++    nls_cv_header_intl=
++    nls_cv_header_libgt=
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    DATADIRNAME=share
++    AC_SUBST([DATADIRNAME])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    INSTOBJEXT=.mo
++    AC_SUBST([INSTOBJEXT])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    GENCAT=gencat
++    AC_SUBST([GENCAT])
++
++    dnl For backward compatibility. Some Makefiles may be using this.
++    INTLOBJS=
++    if test "$USE_INCLUDED_LIBINTL" = yes; then
++      INTLOBJS="\$(GETTOBJS)"
++    fi
++    AC_SUBST([INTLOBJS])
++
++    dnl Enable libtool support if the surrounding package wishes it.
++    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
++    AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
++  ])
++
++  dnl For backward compatibility. Some Makefiles may be using this.
++  INTLLIBS="$LIBINTL"
++  AC_SUBST([INTLLIBS])
++
++  dnl Make all documented variables known to autoconf.
++  AC_SUBST([LIBINTL])
++  AC_SUBST([LTLIBINTL])
++  AC_SUBST([POSUB])
++])
++
++
++dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
++m4_define([gt_NEEDS_INIT],
++[
++  m4_divert_text([DEFAULTS], [gt_needs=])
++  m4_define([gt_NEEDS_INIT], [])
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
++AC_DEFUN([AM_GNU_GETTEXT_NEED],
++[
++  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
++])
++
++
++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
++AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
+new file mode 100644
+index 0000000..f148c12
+--- /dev/null
++++ b/m4/glibc2.m4
+@@ -0,0 +1,30 @@
++# glibc2.m4 serial 2
++dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# Test for the GNU C Library, version 2.0 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([gt_GLIBC2],
++  [
++    AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
++      [ac_cv_gnu_library_2],
++      [AC_EGREP_CPP([Lucky GNU user],
++        [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ >= 2)
++  Lucky GNU user
++ #endif
++#endif
++        ],
++        [ac_cv_gnu_library_2=yes],
++        [ac_cv_gnu_library_2=no])
++      ]
++    )
++    AC_SUBST([GLIBC2])
++    GLIBC2="$ac_cv_gnu_library_2"
++  ]
++)
+diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
+new file mode 100644
+index 0000000..68ada9d
+--- /dev/null
++++ b/m4/glibc21.m4
+@@ -0,0 +1,30 @@
++# glibc21.m4 serial 4
++dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# Test for the GNU C Library, version 2.1 or newer.
++# From Bruno Haible.
++
++AC_DEFUN([gl_GLIBC21],
++  [
++    AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
++      [ac_cv_gnu_library_2_1],
++      [AC_EGREP_CPP([Lucky GNU user],
++        [
++#include <features.h>
++#ifdef __GNU_LIBRARY__
++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
++  Lucky GNU user
++ #endif
++#endif
++        ],
++        [ac_cv_gnu_library_2_1=yes],
++        [ac_cv_gnu_library_2_1=no])
++      ]
++    )
++    AC_SUBST([GLIBC21])
++    GLIBC21="$ac_cv_gnu_library_2_1"
++  ]
++)
+diff --git a/m4/iconv.m4 b/m4/iconv.m4
+new file mode 100644
+index 0000000..e2041b9
+--- /dev/null
++++ b/m4/iconv.m4
+@@ -0,0 +1,214 @@
++# iconv.m4 serial 11 (gettext-0.18.1)
++dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
++[
++  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++
++  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++  dnl accordingly.
++  AC_LIB_LINKFLAGS_BODY([iconv])
++])
++
++AC_DEFUN([AM_ICONV_LINK],
++[
++  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
++  dnl those with the standalone portable GNU libiconv installed).
++  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
++
++  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
++  dnl accordingly.
++  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
++
++  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
++  dnl because if the user has installed libiconv and not disabled its use
++  dnl via --without-libiconv-prefix, he wants to use it. The first
++  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
++  am_save_CPPFLAGS="$CPPFLAGS"
++  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
++
++  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
++    am_cv_func_iconv="no, consider installing GNU libiconv"
++    am_cv_lib_iconv=no
++    AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++      [iconv_t cd = iconv_open("","");
++       iconv(cd,NULL,NULL,NULL,NULL);
++       iconv_close(cd);],
++      [am_cv_func_iconv=yes])
++    if test "$am_cv_func_iconv" != yes; then
++      am_save_LIBS="$LIBS"
++      LIBS="$LIBS $LIBICONV"
++      AC_TRY_LINK([#include <stdlib.h>
++#include <iconv.h>],
++        [iconv_t cd = iconv_open("","");
++         iconv(cd,NULL,NULL,NULL,NULL);
++         iconv_close(cd);],
++        [am_cv_lib_iconv=yes]
++        [am_cv_func_iconv=yes])
++      LIBS="$am_save_LIBS"
++    fi
++  ])
++  if test "$am_cv_func_iconv" = yes; then
++    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
++      dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
++      am_save_LIBS="$LIBS"
++      if test $am_cv_lib_iconv = yes; then
++        LIBS="$LIBS $LIBICONV"
++      fi
++      AC_TRY_RUN([
++#include <iconv.h>
++#include <string.h>
++int main ()
++{
++  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
++     returns.  */
++  {
++    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
++    if (cd_utf8_to_88591 != (iconv_t)(-1))
++      {
++        static const char input[] = "\342\202\254"; /* EURO SIGN */
++        char buf[10];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_utf8_to_88591,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if (res == 0)
++          return 1;
++      }
++  }
++  /* Test against Solaris 10 bug: Failures are not distinguishable from
++     successful returns.  */
++  {
++    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
++    if (cd_ascii_to_88591 != (iconv_t)(-1))
++      {
++        static const char input[] = "\263";
++        char buf[10];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_ascii_to_88591,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if (res == 0)
++          return 1;
++      }
++  }
++#if 0 /* This bug could be worked around by the caller.  */
++  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
++  {
++    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
++    if (cd_88591_to_utf8 != (iconv_t)(-1))
++      {
++        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
++        char buf[50];
++        const char *inptr = input;
++        size_t inbytesleft = strlen (input);
++        char *outptr = buf;
++        size_t outbytesleft = sizeof (buf);
++        size_t res = iconv (cd_88591_to_utf8,
++                            (char **) &inptr, &inbytesleft,
++                            &outptr, &outbytesleft);
++        if ((int)res > 0)
++          return 1;
++      }
++  }
++#endif
++  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
++     provided.  */
++  if (/* Try standardized names.  */
++      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
++      /* Try IRIX, OSF/1 names.  */
++      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
++      /* Try AIX names.  */
++      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
++      /* Try HP-UX names.  */
++      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
++    return 1;
++  return 0;
++}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
++        [case "$host_os" in
++           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
++           *)            am_cv_func_iconv_works="guessing yes" ;;
++         esac])
++      LIBS="$am_save_LIBS"
++    ])
++    case "$am_cv_func_iconv_works" in
++      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
++      *)   am_func_iconv=yes ;;
++    esac
++  else
++    am_func_iconv=no am_cv_lib_iconv=no
++  fi
++  if test "$am_func_iconv" = yes; then
++    AC_DEFINE([HAVE_ICONV], [1],
++      [Define if you have the iconv() function and it works.])
++  fi
++  if test "$am_cv_lib_iconv" = yes; then
++    AC_MSG_CHECKING([how to link with libiconv])
++    AC_MSG_RESULT([$LIBICONV])
++  else
++    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
++    dnl either.
++    CPPFLAGS="$am_save_CPPFLAGS"
++    LIBICONV=
++    LTLIBICONV=
++  fi
++  AC_SUBST([LIBICONV])
++  AC_SUBST([LTLIBICONV])
++])
++
++dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
++dnl avoid warnings like
++dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
++dnl This is tricky because of the way 'aclocal' is implemented:
++dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
++dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
++dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
++dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
++dnl   warnings.
++m4_define([gl_iconv_AC_DEFUN],
++  m4_version_prereq([2.64],
++    [[AC_DEFUN_ONCE(
++        [$1], [$2])]],
++    [[AC_DEFUN(
++        [$1], [$2])]]))
++gl_iconv_AC_DEFUN([AM_ICONV],
++[
++  AM_ICONV_LINK
++  if test "$am_cv_func_iconv" = yes; then
++    AC_MSG_CHECKING([for iconv declaration])
++    AC_CACHE_VAL([am_cv_proto_iconv], [
++      AC_TRY_COMPILE([
++#include <stdlib.h>
++#include <iconv.h>
++extern
++#ifdef __cplusplus
++"C"
++#endif
++#if defined(__STDC__) || defined(__cplusplus)
++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
++#else
++size_t iconv();
++#endif
++], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
++      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
++    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
++    AC_MSG_RESULT([
++         $am_cv_proto_iconv])
++    AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
++      [Define as const if the declaration of iconv() needs const.])
++  fi
++])
+diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
+new file mode 100644
+index 0000000..289c4df
+--- /dev/null
++++ b/m4/intdiv0.m4
+@@ -0,0 +1,84 @@
++# intdiv0.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gt_INTDIV0],
++[
++  AC_REQUIRE([AC_PROG_CC])dnl
++  AC_REQUIRE([AC_CANONICAL_HOST])dnl
++
++  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
++    gt_cv_int_divbyzero_sigfpe,
++    [
++      gt_cv_int_divbyzero_sigfpe=
++changequote(,)dnl
++      case "$host_os" in
++        macos* | darwin[6-9]* | darwin[1-9][0-9]*)
++          # On MacOS X 10.2 or newer, just assume the same as when cross-
++          # compiling. If we were to perform the real test, 1 Crash Report
++          # dialog window would pop up.
++          case "$host_cpu" in
++            i[34567]86 | x86_64)
++              gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
++          esac
++          ;;
++      esac
++changequote([,])dnl
++      if test -z "$gt_cv_int_divbyzero_sigfpe"; then
++        AC_TRY_RUN([
++#include <stdlib.h>
++#include <signal.h>
++
++static void
++sigfpe_handler (int sig)
++{
++  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
++  exit (sig != SIGFPE);
++}
++
++int x = 1;
++int y = 0;
++int z;
++int nan;
++
++int main ()
++{
++  signal (SIGFPE, sigfpe_handler);
++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
++  signal (SIGTRAP, sigfpe_handler);
++#endif
++/* Linux/SPARC yields signal SIGILL.  */
++#if defined (__sparc__) && defined (__linux__)
++  signal (SIGILL, sigfpe_handler);
++#endif
++
++  z = x / y;
++  nan = y / y;
++  exit (1);
++}
++], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
++          [
++            # Guess based on the CPU.
++changequote(,)dnl
++            case "$host_cpu" in
++              alpha* | i[34567]86 | x86_64 | m68k | s390*)
++                gt_cv_int_divbyzero_sigfpe="guessing yes";;
++              *)
++                gt_cv_int_divbyzero_sigfpe="guessing no";;
++            esac
++changequote([,])dnl
++          ])
++      fi
++    ])
++  case "$gt_cv_int_divbyzero_sigfpe" in
++    *yes) value=1;;
++    *) value=0;;
++  esac
++  AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
++    [Define if integer division by zero raises signal SIGFPE.])
++])
+diff --git a/m4/intl.m4 b/m4/intl.m4
+new file mode 100644
+index 0000000..335b23c
+--- /dev/null
++++ b/m4/intl.m4
+@@ -0,0 +1,294 @@
++# intl.m4 serial 17 (gettext-0.18)
++dnl Copyright (C) 1995-2009 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2009.
++
++AC_PREREQ([2.52])
++
++dnl Checks for all prerequisites of the intl subdirectory,
++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
++dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
++AC_DEFUN([AM_INTL_SUBDIR],
++[
++  AC_REQUIRE([AC_PROG_INSTALL])dnl
++  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
++  AC_REQUIRE([AC_PROG_CC])dnl
++  AC_REQUIRE([AC_CANONICAL_HOST])dnl
++  AC_REQUIRE([gt_GLIBC2])dnl
++  AC_REQUIRE([AC_PROG_RANLIB])dnl
++  AC_REQUIRE([gl_VISIBILITY])dnl
++  AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
++  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
++  AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
++  AC_REQUIRE([gt_TYPE_WINT_T])dnl
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gt_TYPE_INTMAX_T])
++  AC_REQUIRE([gt_PRINTF_POSIX])
++  AC_REQUIRE([gl_GLIBC21])dnl
++  AC_REQUIRE([gl_XSIZE])dnl
++  AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
++  AC_REQUIRE([gt_INTL_MACOSX])dnl
++
++  dnl Support for automake's --enable-silent-rules.
++  case "$enable_silent_rules" in
++    yes) INTL_DEFAULT_VERBOSITY=0;;
++    no)  INTL_DEFAULT_VERBOSITY=1;;
++    *)   INTL_DEFAULT_VERBOSITY=1;;
++  esac
++  AC_SUBST([INTL_DEFAULT_VERBOSITY])
++
++  AC_CHECK_TYPE([ptrdiff_t], ,
++    [AC_DEFINE([ptrdiff_t], [long],
++       [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
++    ])
++  AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
++  AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
++    snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
++
++  dnl Use the _snprintf function only if it is declared (because on NetBSD it
++  dnl is defined as a weak alias of snprintf; we prefer to use the latter).
++  gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
++  gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
++
++  dnl Use the *_unlocked functions only if they are declared.
++  dnl (because some of them were defined without being declared in Solaris
++  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
++  dnl on Solaris 2.5.1 to run on Solaris 2.6).
++  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
++  gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
++
++  case $gt_cv_func_printf_posix in
++    *yes) HAVE_POSIX_PRINTF=1 ;;
++    *) HAVE_POSIX_PRINTF=0 ;;
++  esac
++  AC_SUBST([HAVE_POSIX_PRINTF])
++  if test "$ac_cv_func_asprintf" = yes; then
++    HAVE_ASPRINTF=1
++  else
++    HAVE_ASPRINTF=0
++  fi
++  AC_SUBST([HAVE_ASPRINTF])
++  if test "$ac_cv_func_snprintf" = yes; then
++    HAVE_SNPRINTF=1
++  else
++    HAVE_SNPRINTF=0
++  fi
++  AC_SUBST([HAVE_SNPRINTF])
++  if test "$ac_cv_func_newlocale" = yes; then
++    HAVE_NEWLOCALE=1
++  else
++    HAVE_NEWLOCALE=0
++  fi
++  AC_SUBST([HAVE_NEWLOCALE])
++  if test "$ac_cv_func_wprintf" = yes; then
++    HAVE_WPRINTF=1
++  else
++    HAVE_WPRINTF=0
++  fi
++  AC_SUBST([HAVE_WPRINTF])
++
++  AM_LANGINFO_CODESET
++  gt_LC_MESSAGES
++
++  dnl Compilation on mingw and Cygwin needs special Makefile rules, because
++  dnl 1. when we install a shared library, we must arrange to export
++  dnl    auxiliary pointer variables for every exported variable,
++  dnl 2. when we install a shared library and a static library simultaneously,
++  dnl    the include file specifies __declspec(dllimport) and therefore we
++  dnl    must arrange to define the auxiliary pointer variables for the
++  dnl    exported variables _also_ in the static library.
++  if test "$enable_shared" = yes; then
++    case "$host_os" in
++      mingw* | cygwin*) is_woe32dll=yes ;;
++      *) is_woe32dll=no ;;
++    esac
++  else
++    is_woe32dll=no
++  fi
++  WOE32DLL=$is_woe32dll
++  AC_SUBST([WOE32DLL])
++
++  dnl On mingw and Cygwin, we can activate special Makefile rules which add
++  dnl version information to the shared libraries and executables.
++  case "$host_os" in
++    mingw* | cygwin*) is_woe32=yes ;;
++    *) is_woe32=no ;;
++  esac
++  WOE32=$is_woe32
++  AC_SUBST([WOE32])
++  if test $WOE32 = yes; then
++    dnl Check for a program that compiles Windows resource files.
++    AC_CHECK_TOOL([WINDRES], [windres])
++  fi
++
++  dnl Determine whether when creating a library, "-lc" should be passed to
++  dnl libtool or not. On many platforms, it is required for the libtool option
++  dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
++  dnl in the *.la files - makes it impossible to create multithreaded programs,
++  dnl because libtool also reorders the -lc to come before the -pthread, and
++  dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
++  case "$host_os" in
++    hpux*) LTLIBC="" ;;
++    *)     LTLIBC="-lc" ;;
++  esac
++  AC_SUBST([LTLIBC])
++
++  dnl Rename some macros and functions used for locking.
++  AH_BOTTOM([
++#define __libc_lock_t                   gl_lock_t
++#define __libc_lock_define              gl_lock_define
++#define __libc_lock_define_initialized  gl_lock_define_initialized
++#define __libc_lock_init                gl_lock_init
++#define __libc_lock_lock                gl_lock_lock
++#define __libc_lock_unlock              gl_lock_unlock
++#define __libc_lock_recursive_t                   gl_recursive_lock_t
++#define __libc_lock_define_recursive              gl_recursive_lock_define
++#define __libc_lock_define_initialized_recursive  gl_recursive_lock_define_initialized
++#define __libc_lock_init_recursive                gl_recursive_lock_init
++#define __libc_lock_lock_recursive                gl_recursive_lock_lock
++#define __libc_lock_unlock_recursive              gl_recursive_lock_unlock
++#define glthread_in_use  libintl_thread_in_use
++#define glthread_lock_init_func     libintl_lock_init_func
++#define glthread_lock_lock_func     libintl_lock_lock_func
++#define glthread_lock_unlock_func   libintl_lock_unlock_func
++#define glthread_lock_destroy_func  libintl_lock_destroy_func
++#define glthread_rwlock_init_multithreaded     libintl_rwlock_init_multithreaded
++#define glthread_rwlock_init_func              libintl_rwlock_init_func
++#define glthread_rwlock_rdlock_multithreaded   libintl_rwlock_rdlock_multithreaded
++#define glthread_rwlock_rdlock_func            libintl_rwlock_rdlock_func
++#define glthread_rwlock_wrlock_multithreaded   libintl_rwlock_wrlock_multithreaded
++#define glthread_rwlock_wrlock_func            libintl_rwlock_wrlock_func
++#define glthread_rwlock_unlock_multithreaded   libintl_rwlock_unlock_multithreaded
++#define glthread_rwlock_unlock_func            libintl_rwlock_unlock_func
++#define glthread_rwlock_destroy_multithreaded  libintl_rwlock_destroy_multithreaded
++#define glthread_rwlock_destroy_func           libintl_rwlock_destroy_func
++#define glthread_recursive_lock_init_multithreaded     libintl_recursive_lock_init_multithreaded
++#define glthread_recursive_lock_init_func              libintl_recursive_lock_init_func
++#define glthread_recursive_lock_lock_multithreaded     libintl_recursive_lock_lock_multithreaded
++#define glthread_recursive_lock_lock_func              libintl_recursive_lock_lock_func
++#define glthread_recursive_lock_unlock_multithreaded   libintl_recursive_lock_unlock_multithreaded
++#define glthread_recursive_lock_unlock_func            libintl_recursive_lock_unlock_func
++#define glthread_recursive_lock_destroy_multithreaded  libintl_recursive_lock_destroy_multithreaded
++#define glthread_recursive_lock_destroy_func           libintl_recursive_lock_destroy_func
++#define glthread_once_func            libintl_once_func
++#define glthread_once_singlethreaded  libintl_once_singlethreaded
++#define glthread_once_multithreaded   libintl_once_multithreaded
++])
++])
++
++
++dnl Checks for the core files of the intl subdirectory:
++dnl   dcigettext.c
++dnl   eval-plural.h
++dnl   explodename.c
++dnl   finddomain.c
++dnl   gettextP.h
++dnl   gmo.h
++dnl   hash-string.h hash-string.c
++dnl   l10nflist.c
++dnl   libgnuintl.h.in (except the *printf stuff)
++dnl   loadinfo.h
++dnl   loadmsgcat.c
++dnl   localealias.c
++dnl   log.c
++dnl   plural-exp.h plural-exp.c
++dnl   plural.y
++dnl Used by libglocale.
++AC_DEFUN([gt_INTL_SUBDIR_CORE],
++[
++  AC_REQUIRE([AC_C_INLINE])dnl
++  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
++  AC_REQUIRE([AC_FUNC_MMAP])dnl
++  AC_REQUIRE([gt_INTDIV0])dnl
++  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
++  AC_REQUIRE([gt_INTTYPES_PRI])dnl
++  AC_REQUIRE([gl_LOCK])dnl
++
++  AC_TRY_LINK(
++    [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
++    [],
++    [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
++       [Define to 1 if the compiler understands __builtin_expect.])])
++
++  AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
++  AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
++    stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
++    argz_stringify argz_next __fsetlocking])
++
++  dnl Use the *_unlocked functions only if they are declared.
++  dnl (because some of them were defined without being declared in Solaris
++  dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
++  dnl on Solaris 2.5.1 to run on Solaris 2.6).
++  dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
++  gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
++  gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
++
++  AM_ICONV
++
++  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
++  dnl because plural.y uses bison specific features. It requires at least
++  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
++  dnl compile.
++  dnl bison is only needed for the maintainer (who touches plural.y). But in
++  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
++  dnl the rule in general Makefile. Now, some people carelessly touch the
++  dnl files or have a broken "make" program, hence the plural.c rule will
++  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
++  dnl present or too old.
++  AC_CHECK_PROGS([INTLBISON], [bison])
++  if test -z "$INTLBISON"; then
++    ac_verc_fail=yes
++  else
++    dnl Found it, now check the version.
++    AC_MSG_CHECKING([version of bison])
++changequote(<<,>>)dnl
++    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++    case $ac_prog_version in
++      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
++changequote([,])dnl
++         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++    esac
++    AC_MSG_RESULT([$ac_prog_version])
++  fi
++  if test $ac_verc_fail = yes; then
++    INTLBISON=:
++  fi
++])
++
++
++dnl gt_CHECK_DECL(FUNC, INCLUDES)
++dnl Check whether a function is declared.
++AC_DEFUN([gt_CHECK_DECL],
++[
++  AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
++    [AC_TRY_COMPILE([$2], [
++#ifndef $1
++  char *p = (char *) $1;
++#endif
++], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
++  if test $ac_cv_have_decl_$1 = yes; then
++    gt_value=1
++  else
++    gt_value=0
++  fi
++  AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
++    [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
++])
+diff --git a/m4/intldir.m4 b/m4/intldir.m4
+new file mode 100644
+index 0000000..ebae76d
+--- /dev/null
++++ b/m4/intldir.m4
+@@ -0,0 +1,19 @@
++# intldir.m4 serial 2 (gettext-0.18)
++dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++AC_PREREQ([2.52])
++
++dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
++AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
+diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
+new file mode 100644
+index 0000000..dd91025
+--- /dev/null
++++ b/m4/intlmacosx.m4
+@@ -0,0 +1,51 @@
++# intlmacosx.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Checks for special options needed on MacOS X.
++dnl Defines INTL_MACOSX_LIBS.
++AC_DEFUN([gt_INTL_MACOSX],
++[
++  dnl Check for API introduced in MacOS X 10.2.
++  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
++    [gt_cv_func_CFPreferencesCopyAppValue],
++    [gt_save_LIBS="$LIBS"
++     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
++     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
++       [CFPreferencesCopyAppValue(NULL, NULL)],
++       [gt_cv_func_CFPreferencesCopyAppValue=yes],
++       [gt_cv_func_CFPreferencesCopyAppValue=no])
++     LIBS="$gt_save_LIBS"])
++  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
++    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
++      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
++  fi
++  dnl Check for API introduced in MacOS X 10.3.
++  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
++    [gt_save_LIBS="$LIBS"
++     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
++     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
++       [gt_cv_func_CFLocaleCopyCurrent=yes],
++       [gt_cv_func_CFLocaleCopyCurrent=no])
++     LIBS="$gt_save_LIBS"])
++  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
++    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
++      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
++  fi
++  INTL_MACOSX_LIBS=
++  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
++    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
++  fi
++  AC_SUBST([INTL_MACOSX_LIBS])
++])
+diff --git a/m4/intmax.m4 b/m4/intmax.m4
+new file mode 100644
+index 0000000..74aaaf5
+--- /dev/null
++++ b/m4/intmax.m4
+@@ -0,0 +1,33 @@
++# intmax.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether the system has the 'intmax_t' type, but don't attempt to
++dnl find a replacement if it is lacking.
++
++AC_DEFUN([gt_TYPE_INTMAX_T],
++[
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
++    [AC_TRY_COMPILE([
++#include <stddef.h>
++#include <stdlib.h>
++#if HAVE_STDINT_H_WITH_UINTMAX
++#include <stdint.h>
++#endif
++#if HAVE_INTTYPES_H_WITH_UINTMAX
++#include <inttypes.h>
++#endif
++],     [intmax_t x = -1;
++        return !x;],
++       [gt_cv_c_intmax_t=yes],
++       [gt_cv_c_intmax_t=no])])
++  if test $gt_cv_c_intmax_t = yes; then
++    AC_DEFINE([HAVE_INTMAX_T], [1],
++      [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
++  fi
++])
+diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
+new file mode 100644
+index 0000000..718a4f4
+--- /dev/null
++++ b/m4/inttypes-pri.m4
+@@ -0,0 +1,36 @@
++# inttypes-pri.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_PREREQ([2.52])
++
++# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
++# macros to non-string values.  This is the case on AIX 4.3.3.
++
++AC_DEFUN([gt_INTTYPES_PRI],
++[
++  AC_CHECK_HEADERS([inttypes.h])
++  if test $ac_cv_header_inttypes_h = yes; then
++    AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
++      [gt_cv_inttypes_pri_broken],
++      [
++        AC_TRY_COMPILE([#include <inttypes.h>
++#ifdef PRId32
++char *p = PRId32;
++#endif
++], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
++      ])
++  fi
++  if test "$gt_cv_inttypes_pri_broken" = yes; then
++    AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
++      [Define if <inttypes.h> exists and defines unusable PRI* macros.])
++    PRI_MACROS_BROKEN=1
++  else
++    PRI_MACROS_BROKEN=0
++  fi
++  AC_SUBST([PRI_MACROS_BROKEN])
++])
+diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
+new file mode 100644
+index 0000000..782d77e
+--- /dev/null
++++ b/m4/inttypes_h.m4
+@@ -0,0 +1,26 @@
++# inttypes_h.m4 serial 9
++dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
++[
++  AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
++  [AC_TRY_COMPILE(
++    [#include <sys/types.h>
++#include <inttypes.h>],
++    [uintmax_t i = (uintmax_t) -1; return !i;],
++    [gl_cv_header_inttypes_h=yes],
++    [gl_cv_header_inttypes_h=no])])
++  if test $gl_cv_header_inttypes_h = yes; then
++    AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
++      [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
++       and declares uintmax_t. ])
++  fi
++])
+diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
+new file mode 100644
+index 0000000..1a70543
+--- /dev/null
++++ b/m4/lcmessage.m4
+@@ -0,0 +1,31 @@
++# lcmessage.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
++dnl Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995.
++
++# Check whether LC_MESSAGES is available in <locale.h>.
++
++AC_DEFUN([gt_LC_MESSAGES],
++[
++  AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
++    [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
++       [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
++  if test $gt_cv_val_LC_MESSAGES = yes; then
++    AC_DEFINE([HAVE_LC_MESSAGES], [1],
++      [Define if your <locale.h> file defines LC_MESSAGES.])
++  fi
++])
+diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
+new file mode 100644
+index 0000000..ebb3052
+--- /dev/null
++++ b/m4/lib-ld.m4
+@@ -0,0 +1,110 @@
++# lib-ld.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Subroutines of libtool.m4,
++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
++dnl with libtool.m4.
++
++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
++AC_DEFUN([AC_LIB_PROG_LD_GNU],
++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
++[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
++case `$LD -v 2>&1 </dev/null` in
++*GNU* | *'with BFD'*)
++  acl_cv_prog_gnu_ld=yes ;;
++*)
++  acl_cv_prog_gnu_ld=no ;;
++esac])
++with_gnu_ld=$acl_cv_prog_gnu_ld
++])
++
++dnl From libtool-1.4. Sets the variable LD.
++AC_DEFUN([AC_LIB_PROG_LD],
++[AC_ARG_WITH([gnu-ld],
++[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_CANONICAL_HOST])dnl
++# Prepare PATH_SEPARATOR.
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++  echo "#! /bin/sh" >conf$$.sh
++  echo  "exit 0"   >>conf$$.sh
++  chmod +x conf$$.sh
++  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++    PATH_SEPARATOR=';'
++  else
++    PATH_SEPARATOR=:
++  fi
++  rm -f conf$$.sh
++fi
++ac_prog=ld
++if test "$GCC" = yes; then
++  # Check if gcc -print-prog-name=ld gives a path.
++  AC_MSG_CHECKING([for ld used by GCC])
++  case $host in
++  *-*-mingw*)
++    # gcc leaves a trailing carriage return which upsets mingw
++    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
++  *)
++    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
++  esac
++  case $ac_prog in
++    # Accept absolute paths.
++    [[\\/]* | [A-Za-z]:[\\/]*)]
++      [re_direlt='/[^/][^/]*/\.\./']
++      # Canonicalize the path of ld
++      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
++      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
++        ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
++      done
++      test -z "$LD" && LD="$ac_prog"
++      ;;
++  "")
++    # If it fails, then pretend we aren't using GCC.
++    ac_prog=ld
++    ;;
++  *)
++    # If it is relative, then search for the first ld in PATH.
++    with_gnu_ld=unknown
++    ;;
++  esac
++elif test "$with_gnu_ld" = yes; then
++  AC_MSG_CHECKING([for GNU ld])
++else
++  AC_MSG_CHECKING([for non-GNU ld])
++fi
++AC_CACHE_VAL([acl_cv_path_LD],
++[if test -z "$LD"; then
++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
++  for ac_dir in $PATH; do
++    test -z "$ac_dir" && ac_dir=.
++    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
++      acl_cv_path_LD="$ac_dir/$ac_prog"
++      # Check to see if the program is GNU ld.  I'd rather use --version,
++      # but apparently some GNU ld's only accept -v.
++      # Break only if it was the GNU/non-GNU ld that we prefer.
++      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
++      *GNU* | *'with BFD'*)
++        test "$with_gnu_ld" != no && break ;;
++      *)
++        test "$with_gnu_ld" != yes && break ;;
++      esac
++    fi
++  done
++  IFS="$ac_save_ifs"
++else
++  acl_cv_path_LD="$LD" # Let the user override the test with a path.
++fi])
++LD="$acl_cv_path_LD"
++if test -n "$LD"; then
++  AC_MSG_RESULT([$LD])
++else
++  AC_MSG_RESULT([no])
++fi
++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
++AC_LIB_PROG_LD_GNU
++])
+diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
+new file mode 100644
+index 0000000..c73bd8e
+--- /dev/null
++++ b/m4/lib-link.m4
+@@ -0,0 +1,774 @@
++# lib-link.m4 serial 21 (gettext-0.18)
++dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_PREREQ([2.54])
++
++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
++dnl augments the CPPFLAGS variable.
++dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
++dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
++AC_DEFUN([AC_LIB_LINKFLAGS],
++[
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++  pushdef([Name],[translit([$1],[./-], [___])])
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
++    AC_LIB_LINKFLAGS_BODY([$1], [$2])
++    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
++    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
++    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
++    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
++  ])
++  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
++  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
++  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
++  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
++  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++  AC_SUBST([LIB]NAME)
++  AC_SUBST([LTLIB]NAME)
++  AC_SUBST([LIB]NAME[_PREFIX])
++  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
++  dnl results of this search when this library appears as a dependency.
++  HAVE_LIB[]NAME=yes
++  popdef([NAME])
++  popdef([Name])
++])
++
++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
++dnl searches for libname and the libraries corresponding to explicit and
++dnl implicit dependencies, together with the specified include files and
++dnl the ability to compile and link the specified testcode. The missing-message
++dnl defaults to 'no' and may contain additional hints for the user.
++dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
++dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
++dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
++dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
++[
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  AC_REQUIRE([AC_LIB_RPATH])
++  pushdef([Name],[translit([$1],[./-], [___])])
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++
++  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
++  dnl accordingly.
++  AC_LIB_LINKFLAGS_BODY([$1], [$2])
++
++  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
++  dnl because if the user has installed lib[]Name and not disabled its use
++  dnl via --without-lib[]Name-prefix, he wants to use it.
++  ac_save_CPPFLAGS="$CPPFLAGS"
++  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
++
++  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
++    ac_save_LIBS="$LIBS"
++    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
++    dnl because these -l options might require -L options that are present in
++    dnl LIBS. -l options benefit only from the -L options listed before it.
++    dnl Otherwise, add it to the front of LIBS, because it may be a static
++    dnl library that depends on another static library that is present in LIBS.
++    dnl Static libraries benefit only from the static libraries listed after
++    dnl it.
++    case " $LIB[]NAME" in
++      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
++      *)       LIBS="$LIB[]NAME $LIBS" ;;
++    esac
++    AC_TRY_LINK([$3], [$4],
++      [ac_cv_lib[]Name=yes],
++      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
++    LIBS="$ac_save_LIBS"
++  ])
++  if test "$ac_cv_lib[]Name" = yes; then
++    HAVE_LIB[]NAME=yes
++    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
++    AC_MSG_CHECKING([how to link with lib[]$1])
++    AC_MSG_RESULT([$LIB[]NAME])
++  else
++    HAVE_LIB[]NAME=no
++    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
++    dnl $INC[]NAME either.
++    CPPFLAGS="$ac_save_CPPFLAGS"
++    LIB[]NAME=
++    LTLIB[]NAME=
++    LIB[]NAME[]_PREFIX=
++  fi
++  AC_SUBST([HAVE_LIB]NAME)
++  AC_SUBST([LIB]NAME)
++  AC_SUBST([LTLIB]NAME)
++  AC_SUBST([LIB]NAME[_PREFIX])
++  popdef([NAME])
++  popdef([Name])
++])
++
++dnl Determine the platform dependent parameters needed to use rpath:
++dnl   acl_libext,
++dnl   acl_shlibext,
++dnl   acl_hardcode_libdir_flag_spec,
++dnl   acl_hardcode_libdir_separator,
++dnl   acl_hardcode_direct,
++dnl   acl_hardcode_minus_L.
++AC_DEFUN([AC_LIB_RPATH],
++[
++  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
++  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
++  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
++  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
++  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
++  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
++  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
++    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
++    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
++    . ./conftest.sh
++    rm -f ./conftest.sh
++    acl_cv_rpath=done
++  ])
++  wl="$acl_cv_wl"
++  acl_libext="$acl_cv_libext"
++  acl_shlibext="$acl_cv_shlibext"
++  acl_libname_spec="$acl_cv_libname_spec"
++  acl_library_names_spec="$acl_cv_library_names_spec"
++  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
++  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
++  acl_hardcode_direct="$acl_cv_hardcode_direct"
++  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
++  dnl Determine whether the user wants rpath handling at all.
++  AC_ARG_ENABLE([rpath],
++    [  --disable-rpath         do not hardcode runtime library paths],
++    :, enable_rpath=yes)
++])
++
++dnl AC_LIB_FROMPACKAGE(name, package)
++dnl declares that libname comes from the given package. The configure file
++dnl will then not have a --with-libname-prefix option but a
++dnl --with-package-prefix option. Several libraries can come from the same
++dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
++dnl macro call that searches for libname.
++AC_DEFUN([AC_LIB_FROMPACKAGE],
++[
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  define([acl_frompackage_]NAME, [$2])
++  popdef([NAME])
++  pushdef([PACK],[$2])
++  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
++                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  define([acl_libsinpackage_]PACKUP,
++    m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
++  popdef([PACKUP])
++  popdef([PACK])
++])
++
++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
++dnl the libraries corresponding to explicit and implicit dependencies.
++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
++dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
++dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
++AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
++[
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
++                                [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
++  pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
++                                  [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
++  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
++  dnl Autoconf >= 2.61 supports dots in --with options.
++  pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
++  dnl By default, look in $includedir and $libdir.
++  use_additional=yes
++  AC_LIB_WITH_FINAL_PREFIX([
++    eval additional_includedir=\"$includedir\"
++    eval additional_libdir=\"$libdir\"
++  ])
++  AC_ARG_WITH(P_A_C_K[-prefix],
++[[  --with-]]P_A_C_K[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
++  --without-]]P_A_C_K[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
++[
++    if test "X$withval" = "Xno"; then
++      use_additional=no
++    else
++      if test "X$withval" = "X"; then
++        AC_LIB_WITH_FINAL_PREFIX([
++          eval additional_includedir=\"$includedir\"
++          eval additional_libdir=\"$libdir\"
++        ])
++      else
++        additional_includedir="$withval/include"
++        additional_libdir="$withval/$acl_libdirstem"
++        if test "$acl_libdirstem2" != "$acl_libdirstem" \
++           && ! test -d "$withval/$acl_libdirstem"; then
++          additional_libdir="$withval/$acl_libdirstem2"
++        fi
++      fi
++    fi
++])
++  dnl Search the library and its dependencies in $additional_libdir and
++  dnl $LDFLAGS. Using breadth-first-seach.
++  LIB[]NAME=
++  LTLIB[]NAME=
++  INC[]NAME=
++  LIB[]NAME[]_PREFIX=
++  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
++  dnl computed. So it has to be reset here.
++  HAVE_LIB[]NAME=
++  rpathdirs=
++  ltrpathdirs=
++  names_already_handled=
++  names_next_round='$1 $2'
++  while test -n "$names_next_round"; do
++    names_this_round="$names_next_round"
++    names_next_round=
++    for name in $names_this_round; do
++      already_handled=
++      for n in $names_already_handled; do
++        if test "$n" = "$name"; then
++          already_handled=yes
++          break
++        fi
++      done
++      if test -z "$already_handled"; then
++        names_already_handled="$names_already_handled $name"
++        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
++        dnl or AC_LIB_HAVE_LINKFLAGS call.
++        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
++        eval value=\"\$HAVE_LIB$uppername\"
++        if test -n "$value"; then
++          if test "$value" = yes; then
++            eval value=\"\$LIB$uppername\"
++            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
++            eval value=\"\$LTLIB$uppername\"
++            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
++          else
++            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
++            dnl that this library doesn't exist. So just drop it.
++            :
++          fi
++        else
++          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
++          dnl and the already constructed $LIBNAME/$LTLIBNAME.
++          found_dir=
++          found_la=
++          found_so=
++          found_a=
++          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
++          if test -n "$acl_shlibext"; then
++            shrext=".$acl_shlibext"             # typically: shrext=.so
++          else
++            shrext=
++          fi
++          if test $use_additional = yes; then
++            dir="$additional_libdir"
++            dnl The same code as in the loop below:
++            dnl First look for a shared library.
++            if test -n "$acl_shlibext"; then
++              if test -f "$dir/$libname$shrext"; then
++                found_dir="$dir"
++                found_so="$dir/$libname$shrext"
++              else
++                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
++                  ver=`(cd "$dir" && \
++                        for f in "$libname$shrext".*; do echo "$f"; done \
++                        | sed -e "s,^$libname$shrext\\\\.,," \
++                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
++                        | sed 1q ) 2>/dev/null`
++                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
++                    found_dir="$dir"
++                    found_so="$dir/$libname$shrext.$ver"
++                  fi
++                else
++                  eval library_names=\"$acl_library_names_spec\"
++                  for f in $library_names; do
++                    if test -f "$dir/$f"; then
++                      found_dir="$dir"
++                      found_so="$dir/$f"
++                      break
++                    fi
++                  done
++                fi
++              fi
++            fi
++            dnl Then look for a static library.
++            if test "X$found_dir" = "X"; then
++              if test -f "$dir/$libname.$acl_libext"; then
++                found_dir="$dir"
++                found_a="$dir/$libname.$acl_libext"
++              fi
++            fi
++            if test "X$found_dir" != "X"; then
++              if test -f "$dir/$libname.la"; then
++                found_la="$dir/$libname.la"
++              fi
++            fi
++          fi
++          if test "X$found_dir" = "X"; then
++            for x in $LDFLAGS $LTLIB[]NAME; do
++              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++              case "$x" in
++                -L*)
++                  dir=`echo "X$x" | sed -e 's/^X-L//'`
++                  dnl First look for a shared library.
++                  if test -n "$acl_shlibext"; then
++                    if test -f "$dir/$libname$shrext"; then
++                      found_dir="$dir"
++                      found_so="$dir/$libname$shrext"
++                    else
++                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
++                        ver=`(cd "$dir" && \
++                              for f in "$libname$shrext".*; do echo "$f"; done \
++                              | sed -e "s,^$libname$shrext\\\\.,," \
++                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
++                              | sed 1q ) 2>/dev/null`
++                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
++                          found_dir="$dir"
++                          found_so="$dir/$libname$shrext.$ver"
++                        fi
++                      else
++                        eval library_names=\"$acl_library_names_spec\"
++                        for f in $library_names; do
++                          if test -f "$dir/$f"; then
++                            found_dir="$dir"
++                            found_so="$dir/$f"
++                            break
++                          fi
++                        done
++                      fi
++                    fi
++                  fi
++                  dnl Then look for a static library.
++                  if test "X$found_dir" = "X"; then
++                    if test -f "$dir/$libname.$acl_libext"; then
++                      found_dir="$dir"
++                      found_a="$dir/$libname.$acl_libext"
++                    fi
++                  fi
++                  if test "X$found_dir" != "X"; then
++                    if test -f "$dir/$libname.la"; then
++                      found_la="$dir/$libname.la"
++                    fi
++                  fi
++                  ;;
++              esac
++              if test "X$found_dir" != "X"; then
++                break
++              fi
++            done
++          fi
++          if test "X$found_dir" != "X"; then
++            dnl Found the library.
++            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
++            if test "X$found_so" != "X"; then
++              dnl Linking with a shared library. We attempt to hardcode its
++              dnl directory into the executable's runpath, unless it's the
++              dnl standard /usr/lib.
++              if test "$enable_rpath" = no \
++                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
++                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
++                dnl No hardcoding is needed.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++              else
++                dnl Use an explicit option to hardcode DIR into the resulting
++                dnl binary.
++                dnl Potentially add DIR to ltrpathdirs.
++                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++                haveit=
++                for x in $ltrpathdirs; do
++                  if test "X$x" = "X$found_dir"; then
++                    haveit=yes
++                    break
++                  fi
++                done
++                if test -z "$haveit"; then
++                  ltrpathdirs="$ltrpathdirs $found_dir"
++                fi
++                dnl The hardcoding into $LIBNAME is system dependent.
++                if test "$acl_hardcode_direct" = yes; then
++                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
++                  dnl resulting binary.
++                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                else
++                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
++                    dnl Use an explicit option to hardcode DIR into the resulting
++                    dnl binary.
++                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                    dnl Potentially add DIR to rpathdirs.
++                    dnl The rpathdirs will be appended to $LIBNAME at the end.
++                    haveit=
++                    for x in $rpathdirs; do
++                      if test "X$x" = "X$found_dir"; then
++                        haveit=yes
++                        break
++                      fi
++                    done
++                    if test -z "$haveit"; then
++                      rpathdirs="$rpathdirs $found_dir"
++                    fi
++                  else
++                    dnl Rely on "-L$found_dir".
++                    dnl But don't add it if it's already contained in the LDFLAGS
++                    dnl or the already constructed $LIBNAME
++                    haveit=
++                    for x in $LDFLAGS $LIB[]NAME; do
++                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                      if test "X$x" = "X-L$found_dir"; then
++                        haveit=yes
++                        break
++                      fi
++                    done
++                    if test -z "$haveit"; then
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
++                    fi
++                    if test "$acl_hardcode_minus_L" != no; then
++                      dnl FIXME: Not sure whether we should use
++                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++                      dnl here.
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
++                    else
++                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
++                      dnl here, because this doesn't fit in flags passed to the
++                      dnl compiler. So give up. No hardcoding. This affects only
++                      dnl very old systems.
++                      dnl FIXME: Not sure whether we should use
++                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
++                      dnl here.
++                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++                    fi
++                  fi
++                fi
++              fi
++            else
++              if test "X$found_a" != "X"; then
++                dnl Linking with a static library.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
++              else
++                dnl We shouldn't come here, but anyway it's good to have a
++                dnl fallback.
++                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
++              fi
++            fi
++            dnl Assume the include files are nearby.
++            additional_includedir=
++            case "$found_dir" in
++              */$acl_libdirstem | */$acl_libdirstem/)
++                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
++                if test "$name" = '$1'; then
++                  LIB[]NAME[]_PREFIX="$basedir"
++                fi
++                additional_includedir="$basedir/include"
++                ;;
++              */$acl_libdirstem2 | */$acl_libdirstem2/)
++                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
++                if test "$name" = '$1'; then
++                  LIB[]NAME[]_PREFIX="$basedir"
++                fi
++                additional_includedir="$basedir/include"
++                ;;
++            esac
++            if test "X$additional_includedir" != "X"; then
++              dnl Potentially add $additional_includedir to $INCNAME.
++              dnl But don't add it
++              dnl   1. if it's the standard /usr/include,
++              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
++              dnl   3. if it's already present in $CPPFLAGS or the already
++              dnl      constructed $INCNAME,
++              dnl   4. if it doesn't exist as a directory.
++              if test "X$additional_includedir" != "X/usr/include"; then
++                haveit=
++                if test "X$additional_includedir" = "X/usr/local/include"; then
++                  if test -n "$GCC"; then
++                    case $host_os in
++                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++                    esac
++                  fi
++                fi
++                if test -z "$haveit"; then
++                  for x in $CPPFLAGS $INC[]NAME; do
++                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                    if test "X$x" = "X-I$additional_includedir"; then
++                      haveit=yes
++                      break
++                    fi
++                  done
++                  if test -z "$haveit"; then
++                    if test -d "$additional_includedir"; then
++                      dnl Really add $additional_includedir to $INCNAME.
++                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
++                    fi
++                  fi
++                fi
++              fi
++            fi
++            dnl Look for dependencies.
++            if test -n "$found_la"; then
++              dnl Read the .la file. It defines the variables
++              dnl dlname, library_names, old_library, dependency_libs, current,
++              dnl age, revision, installed, dlopen, dlpreopen, libdir.
++              save_libdir="$libdir"
++              case "$found_la" in
++                */* | *\\*) . "$found_la" ;;
++                *) . "./$found_la" ;;
++              esac
++              libdir="$save_libdir"
++              dnl We use only dependency_libs.
++              for dep in $dependency_libs; do
++                case "$dep" in
++                  -L*)
++                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
++                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
++                    dnl But don't add it
++                    dnl   1. if it's the standard /usr/lib,
++                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
++                    dnl   3. if it's already present in $LDFLAGS or the already
++                    dnl      constructed $LIBNAME,
++                    dnl   4. if it doesn't exist as a directory.
++                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
++                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
++                      haveit=
++                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
++                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
++                        if test -n "$GCC"; then
++                          case $host_os in
++                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++                          esac
++                        fi
++                      fi
++                      if test -z "$haveit"; then
++                        haveit=
++                        for x in $LDFLAGS $LIB[]NAME; do
++                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                          if test "X$x" = "X-L$additional_libdir"; then
++                            haveit=yes
++                            break
++                          fi
++                        done
++                        if test -z "$haveit"; then
++                          if test -d "$additional_libdir"; then
++                            dnl Really add $additional_libdir to $LIBNAME.
++                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
++                          fi
++                        fi
++                        haveit=
++                        for x in $LDFLAGS $LTLIB[]NAME; do
++                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++                          if test "X$x" = "X-L$additional_libdir"; then
++                            haveit=yes
++                            break
++                          fi
++                        done
++                        if test -z "$haveit"; then
++                          if test -d "$additional_libdir"; then
++                            dnl Really add $additional_libdir to $LTLIBNAME.
++                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
++                          fi
++                        fi
++                      fi
++                    fi
++                    ;;
++                  -R*)
++                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
++                    if test "$enable_rpath" != no; then
++                      dnl Potentially add DIR to rpathdirs.
++                      dnl The rpathdirs will be appended to $LIBNAME at the end.
++                      haveit=
++                      for x in $rpathdirs; do
++                        if test "X$x" = "X$dir"; then
++                          haveit=yes
++                          break
++                        fi
++                      done
++                      if test -z "$haveit"; then
++                        rpathdirs="$rpathdirs $dir"
++                      fi
++                      dnl Potentially add DIR to ltrpathdirs.
++                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
++                      haveit=
++                      for x in $ltrpathdirs; do
++                        if test "X$x" = "X$dir"; then
++                          haveit=yes
++                          break
++                        fi
++                      done
++                      if test -z "$haveit"; then
++                        ltrpathdirs="$ltrpathdirs $dir"
++                      fi
++                    fi
++                    ;;
++                  -l*)
++                    dnl Handle this in the next round.
++                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
++                    ;;
++                  *.la)
++                    dnl Handle this in the next round. Throw away the .la's
++                    dnl directory; it is already contained in a preceding -L
++                    dnl option.
++                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
++                    ;;
++                  *)
++                    dnl Most likely an immediate library name.
++                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
++                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
++                    ;;
++                esac
++              done
++            fi
++          else
++            dnl Didn't find the library; assume it is in the system directories
++            dnl known to the linker and runtime loader. (All the system
++            dnl directories known to the linker should also be known to the
++            dnl runtime loader, otherwise the system is severely misconfigured.)
++            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
++            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
++          fi
++        fi
++      fi
++    done
++  done
++  if test "X$rpathdirs" != "X"; then
++    if test -n "$acl_hardcode_libdir_separator"; then
++      dnl Weird platform: only the last -rpath option counts, the user must
++      dnl pass all path elements in one option. We can arrange that for a
++      dnl single library, but not when more than one $LIBNAMEs are used.
++      alldirs=
++      for found_dir in $rpathdirs; do
++        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
++      done
++      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
++      acl_save_libdir="$libdir"
++      libdir="$alldirs"
++      eval flag=\"$acl_hardcode_libdir_flag_spec\"
++      libdir="$acl_save_libdir"
++      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++    else
++      dnl The -rpath options are cumulative.
++      for found_dir in $rpathdirs; do
++        acl_save_libdir="$libdir"
++        libdir="$found_dir"
++        eval flag=\"$acl_hardcode_libdir_flag_spec\"
++        libdir="$acl_save_libdir"
++        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
++      done
++    fi
++  fi
++  if test "X$ltrpathdirs" != "X"; then
++    dnl When using libtool, the option that works for both libraries and
++    dnl executables is -R. The -R options are cumulative.
++    for found_dir in $ltrpathdirs; do
++      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
++    done
++  fi
++  popdef([P_A_C_K])
++  popdef([PACKLIBS])
++  popdef([PACKUP])
++  popdef([PACK])
++  popdef([NAME])
++])
++
++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
++dnl unless already present in VAR.
++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
++dnl contains two or three consecutive elements that belong together.
++AC_DEFUN([AC_LIB_APPENDTOVAR],
++[
++  for element in [$2]; do
++    haveit=
++    for x in $[$1]; do
++      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++      if test "X$x" = "X$element"; then
++        haveit=yes
++        break
++      fi
++    done
++    if test -z "$haveit"; then
++      [$1]="${[$1]}${[$1]:+ }$element"
++    fi
++  done
++])
++
++dnl For those cases where a variable contains several -L and -l options
++dnl referring to unknown libraries and directories, this macro determines the
++dnl necessary additional linker options for the runtime path.
++dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
++dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
++dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
++dnl otherwise linking without libtool is assumed.
++AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
++[
++  AC_REQUIRE([AC_LIB_RPATH])
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  $1=
++  if test "$enable_rpath" != no; then
++    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
++      dnl Use an explicit option to hardcode directories into the resulting
++      dnl binary.
++      rpathdirs=
++      next=
++      for opt in $2; do
++        if test -n "$next"; then
++          dir="$next"
++          dnl No need to hardcode the standard /usr/lib.
++          if test "X$dir" != "X/usr/$acl_libdirstem" \
++             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
++            rpathdirs="$rpathdirs $dir"
++          fi
++          next=
++        else
++          case $opt in
++            -L) next=yes ;;
++            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
++                 dnl No need to hardcode the standard /usr/lib.
++                 if test "X$dir" != "X/usr/$acl_libdirstem" \
++                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
++                   rpathdirs="$rpathdirs $dir"
++                 fi
++                 next= ;;
++            *) next= ;;
++          esac
++        fi
++      done
++      if test "X$rpathdirs" != "X"; then
++        if test -n ""$3""; then
++          dnl libtool is used for linking. Use -R options.
++          for dir in $rpathdirs; do
++            $1="${$1}${$1:+ }-R$dir"
++          done
++        else
++          dnl The linker is used for linking directly.
++          if test -n "$acl_hardcode_libdir_separator"; then
++            dnl Weird platform: only the last -rpath option counts, the user
++            dnl must pass all path elements in one option.
++            alldirs=
++            for dir in $rpathdirs; do
++              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
++            done
++            acl_save_libdir="$libdir"
++            libdir="$alldirs"
++            eval flag=\"$acl_hardcode_libdir_flag_spec\"
++            libdir="$acl_save_libdir"
++            $1="$flag"
++          else
++            dnl The -rpath options are cumulative.
++            for dir in $rpathdirs; do
++              acl_save_libdir="$libdir"
++              libdir="$dir"
++              eval flag=\"$acl_hardcode_libdir_flag_spec\"
++              libdir="$acl_save_libdir"
++              $1="${$1}${$1:+ }$flag"
++            done
++          fi
++        fi
++      fi
++    fi
++  fi
++  AC_SUBST([$1])
++])
+diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
+new file mode 100644
+index 0000000..1601cea
+--- /dev/null
++++ b/m4/lib-prefix.m4
+@@ -0,0 +1,224 @@
++# lib-prefix.m4 serial 7 (gettext-0.18)
++dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
++dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
++dnl require excessive bracketing.
++ifdef([AC_HELP_STRING],
++[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
++[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
++
++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
++dnl to access previously installed libraries. The basic assumption is that
++dnl a user will want packages to use other packages he previously installed
++dnl with the same --prefix option.
++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
++dnl libraries, but is otherwise very convenient.
++AC_DEFUN([AC_LIB_PREFIX],
++[
++  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
++  AC_REQUIRE([AC_PROG_CC])
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
++  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
++  dnl By default, look in $includedir and $libdir.
++  use_additional=yes
++  AC_LIB_WITH_FINAL_PREFIX([
++    eval additional_includedir=\"$includedir\"
++    eval additional_libdir=\"$libdir\"
++  ])
++  AC_LIB_ARG_WITH([lib-prefix],
++[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
++  --without-lib-prefix    don't search for libraries in includedir and libdir],
++[
++    if test "X$withval" = "Xno"; then
++      use_additional=no
++    else
++      if test "X$withval" = "X"; then
++        AC_LIB_WITH_FINAL_PREFIX([
++          eval additional_includedir=\"$includedir\"
++          eval additional_libdir=\"$libdir\"
++        ])
++      else
++        additional_includedir="$withval/include"
++        additional_libdir="$withval/$acl_libdirstem"
++      fi
++    fi
++])
++  if test $use_additional = yes; then
++    dnl Potentially add $additional_includedir to $CPPFLAGS.
++    dnl But don't add it
++    dnl   1. if it's the standard /usr/include,
++    dnl   2. if it's already present in $CPPFLAGS,
++    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
++    dnl   4. if it doesn't exist as a directory.
++    if test "X$additional_includedir" != "X/usr/include"; then
++      haveit=
++      for x in $CPPFLAGS; do
++        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++        if test "X$x" = "X-I$additional_includedir"; then
++          haveit=yes
++          break
++        fi
++      done
++      if test -z "$haveit"; then
++        if test "X$additional_includedir" = "X/usr/local/include"; then
++          if test -n "$GCC"; then
++            case $host_os in
++              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
++            esac
++          fi
++        fi
++        if test -z "$haveit"; then
++          if test -d "$additional_includedir"; then
++            dnl Really add $additional_includedir to $CPPFLAGS.
++            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
++          fi
++        fi
++      fi
++    fi
++    dnl Potentially add $additional_libdir to $LDFLAGS.
++    dnl But don't add it
++    dnl   1. if it's the standard /usr/lib,
++    dnl   2. if it's already present in $LDFLAGS,
++    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
++    dnl   4. if it doesn't exist as a directory.
++    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
++      haveit=
++      for x in $LDFLAGS; do
++        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
++        if test "X$x" = "X-L$additional_libdir"; then
++          haveit=yes
++          break
++        fi
++      done
++      if test -z "$haveit"; then
++        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
++          if test -n "$GCC"; then
++            case $host_os in
++              linux*) haveit=yes;;
++            esac
++          fi
++        fi
++        if test -z "$haveit"; then
++          if test -d "$additional_libdir"; then
++            dnl Really add $additional_libdir to $LDFLAGS.
++            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
++          fi
++        fi
++      fi
++    fi
++  fi
++])
++
++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
++dnl acl_final_exec_prefix, containing the values to which $prefix and
++dnl $exec_prefix will expand at the end of the configure script.
++AC_DEFUN([AC_LIB_PREPARE_PREFIX],
++[
++  dnl Unfortunately, prefix and exec_prefix get only finally determined
++  dnl at the end of configure.
++  if test "X$prefix" = "XNONE"; then
++    acl_final_prefix="$ac_default_prefix"
++  else
++    acl_final_prefix="$prefix"
++  fi
++  if test "X$exec_prefix" = "XNONE"; then
++    acl_final_exec_prefix='${prefix}'
++  else
++    acl_final_exec_prefix="$exec_prefix"
++  fi
++  acl_save_prefix="$prefix"
++  prefix="$acl_final_prefix"
++  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
++  prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
++dnl variables prefix and exec_prefix bound to the values they will have
++dnl at the end of the configure script.
++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
++[
++  acl_save_prefix="$prefix"
++  prefix="$acl_final_prefix"
++  acl_save_exec_prefix="$exec_prefix"
++  exec_prefix="$acl_final_exec_prefix"
++  $1
++  exec_prefix="$acl_save_exec_prefix"
++  prefix="$acl_save_prefix"
++])
++
++dnl AC_LIB_PREPARE_MULTILIB creates
++dnl - a variable acl_libdirstem, containing the basename of the libdir, either
++dnl   "lib" or "lib64" or "lib/64",
++dnl - a variable acl_libdirstem2, as a secondary possible value for
++dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
++dnl   "lib/amd64".
++AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
++[
++  dnl There is no formal standard regarding lib and lib64.
++  dnl On glibc systems, the current practice is that on a system supporting
++  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
++  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
++  dnl the compiler's default mode by looking at the compiler's library search
++  dnl path. If at least one of its elements ends in /lib64 or points to a
++  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
++  dnl Otherwise we use the default, namely "lib".
++  dnl On Solaris systems, the current practice is that on a system supporting
++  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
++  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
++  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  acl_libdirstem=lib
++  acl_libdirstem2=
++  case "$host_os" in
++    solaris*)
++      dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
++      dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
++      dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
++      dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
++      dnl symlink is missing, so we set acl_libdirstem2 too.
++      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
++        [AC_EGREP_CPP([sixtyfour bits], [
++#ifdef _LP64
++sixtyfour bits
++#endif
++           ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
++        ])
++      if test $gl_cv_solaris_64bit = yes; then
++        acl_libdirstem=lib/64
++        case "$host_cpu" in
++          sparc*)        acl_libdirstem2=lib/sparcv9 ;;
++          i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
++        esac
++      fi
++      ;;
++    *)
++      searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
++      if test -n "$searchpath"; then
++        acl_save_IFS="${IFS= 	}"; IFS=":"
++        for searchdir in $searchpath; do
++          if test -d "$searchdir"; then
++            case "$searchdir" in
++              */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
++              */../ | */.. )
++                # Better ignore directories of this form. They are misleading.
++                ;;
++              *) searchdir=`cd "$searchdir" && pwd`
++                 case "$searchdir" in
++                   */lib64 ) acl_libdirstem=lib64 ;;
++                 esac ;;
++            esac
++          fi
++        done
++        IFS="$acl_save_IFS"
++      fi
++      ;;
++  esac
++  test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
++])
+diff --git a/m4/lock.m4 b/m4/lock.m4
+new file mode 100644
+index 0000000..9da8465
+--- /dev/null
++++ b/m4/lock.m4
+@@ -0,0 +1,37 @@
++# lock.m4 serial 10 (gettext-0.18)
++dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_LOCK],
++[
++  AC_REQUIRE([gl_THREADLIB])
++  if test "$gl_threads_api" = posix; then
++    # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
++    # pthread_rwlock_* functions.
++    AC_CHECK_TYPE([pthread_rwlock_t],
++      [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
++         [Define if the POSIX multithreading library has read/write locks.])],
++      [],
++      [#include <pthread.h>])
++    # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
++    AC_TRY_COMPILE([#include <pthread.h>],
++      [#if __FreeBSD__ == 4
++error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
++#else
++int x = (int)PTHREAD_MUTEX_RECURSIVE;
++return !x;
++#endif],
++      [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
++         [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
++  fi
++  gl_PREREQ_LOCK
++])
++
++# Prerequisites of lib/lock.c.
++AC_DEFUN([gl_PREREQ_LOCK], [
++  AC_REQUIRE([AC_C_INLINE])
++])
+diff --git a/m4/longlong.m4 b/m4/longlong.m4
+new file mode 100644
+index 0000000..cca3c1a
+--- /dev/null
++++ b/m4/longlong.m4
+@@ -0,0 +1,106 @@
++# longlong.m4 serial 14
++dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_LONG_LONG_INT if 'long long int' works.
++# This fixes a bug in Autoconf 2.61, but can be removed once we
++# assume 2.62 everywhere.
++
++# Note: If the type 'long long int' exists but is only 32 bits large
++# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
++# defined. In this case you can treat 'long long int' like 'long int'.
++
++AC_DEFUN([AC_TYPE_LONG_LONG_INT],
++[
++  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
++    [AC_LINK_IFELSE(
++       [_AC_TYPE_LONG_LONG_SNIPPET],
++       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
++        dnl If cross compiling, assume the bug isn't important, since
++        dnl nobody cross compiles for this platform as far as we know.
++        AC_RUN_IFELSE(
++          [AC_LANG_PROGRAM(
++             [[@%:@include <limits.h>
++               @%:@ifndef LLONG_MAX
++               @%:@ define HALF \
++                        (1LL << (sizeof (long long int) * CHAR_BIT - 2))
++               @%:@ define LLONG_MAX (HALF - 1 + HALF)
++               @%:@endif]],
++             [[long long int n = 1;
++               int i;
++               for (i = 0; ; i++)
++                 {
++                   long long int m = n << i;
++                   if (m >> i != n)
++                     return 1;
++                   if (LLONG_MAX / 2 < m)
++                     break;
++                 }
++               return 0;]])],
++          [ac_cv_type_long_long_int=yes],
++          [ac_cv_type_long_long_int=no],
++          [ac_cv_type_long_long_int=yes])],
++       [ac_cv_type_long_long_int=no])])
++  if test $ac_cv_type_long_long_int = yes; then
++    AC_DEFINE([HAVE_LONG_LONG_INT], [1],
++      [Define to 1 if the system has the type `long long int'.])
++  fi
++])
++
++# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
++# This fixes a bug in Autoconf 2.61, but can be removed once we
++# assume 2.62 everywhere.
++
++# Note: If the type 'unsigned long long int' exists but is only 32 bits
++# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
++# will not be defined. In this case you can treat 'unsigned long long int'
++# like 'unsigned long int'.
++
++AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
++[
++  AC_CACHE_CHECK([for unsigned long long int],
++    [ac_cv_type_unsigned_long_long_int],
++    [AC_LINK_IFELSE(
++       [_AC_TYPE_LONG_LONG_SNIPPET],
++       [ac_cv_type_unsigned_long_long_int=yes],
++       [ac_cv_type_unsigned_long_long_int=no])])
++  if test $ac_cv_type_unsigned_long_long_int = yes; then
++    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
++      [Define to 1 if the system has the type `unsigned long long int'.])
++  fi
++])
++
++# Expands to a C program that can be used to test for simultaneous support
++# of 'long long' and 'unsigned long long'. We don't want to say that
++# 'long long' is available if 'unsigned long long' is not, or vice versa,
++# because too many programs rely on the symmetry between signed and unsigned
++# integer types (excluding 'bool').
++AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
++[
++  AC_LANG_PROGRAM(
++    [[/* For now, do not test the preprocessor; as of 2007 there are too many
++         implementations with broken preprocessors.  Perhaps this can
++         be revisited in 2012.  In the meantime, code should not expect
++         #if to work with literals wider than 32 bits.  */
++      /* Test literals.  */
++      long long int ll = 9223372036854775807ll;
++      long long int nll = -9223372036854775807LL;
++      unsigned long long int ull = 18446744073709551615ULL;
++      /* Test constant expressions.   */
++      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
++                     ? 1 : -1)];
++      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
++                     ? 1 : -1)];
++      int i = 63;]],
++    [[/* Test availability of runtime routines for shift and division.  */
++      long long int llmax = 9223372036854775807ll;
++      unsigned long long int ullmax = 18446744073709551615ull;
++      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
++              | (llmax / ll) | (llmax % ll)
++              | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
++              | (ullmax / ull) | (ullmax % ull));]])
++])
+diff --git a/m4/nls.m4 b/m4/nls.m4
+new file mode 100644
+index 0000000..003704c
+--- /dev/null
++++ b/m4/nls.m4
+@@ -0,0 +1,32 @@
++# nls.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
++dnl Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++AC_PREREQ([2.50])
++
++AC_DEFUN([AM_NLS],
++[
++  AC_MSG_CHECKING([whether NLS is requested])
++  dnl Default is enabled NLS
++  AC_ARG_ENABLE([nls],
++    [  --disable-nls           do not use Native Language Support],
++    USE_NLS=$enableval, USE_NLS=yes)
++  AC_MSG_RESULT([$USE_NLS])
++  AC_SUBST([USE_NLS])
++])
+diff --git a/m4/po.m4 b/m4/po.m4
+new file mode 100644
+index 0000000..47f36a4
+--- /dev/null
++++ b/m4/po.m4
+@@ -0,0 +1,449 @@
++# po.m4 serial 17 (gettext-0.18)
++dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
++dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
++
++AC_PREREQ([2.50])
++
++dnl Checks for all prerequisites of the po subdirectory.
++AC_DEFUN([AM_PO_SUBDIRS],
++[
++  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
++  AC_REQUIRE([AC_PROG_INSTALL])dnl
++  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
++  AC_REQUIRE([AM_NLS])dnl
++
++  dnl Release version of the gettext macros. This is used to ensure that
++  dnl the gettext macros and po/Makefile.in.in are in sync.
++  AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
++
++  dnl Perform the following tests also if --disable-nls has been given,
++  dnl because they are needed for "make dist" to work.
++
++  dnl Search for GNU msgfmt in the PATH.
++  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
++  dnl The second test excludes FreeBSD msgfmt.
++  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
++     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++    :)
++  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
++
++  dnl Test whether it is GNU msgfmt >= 0.15.
++changequote(,)dnl
++  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
++    *) MSGFMT_015=$MSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([MSGFMT_015])
++changequote(,)dnl
++  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
++    *) GMSGFMT_015=$GMSGFMT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([GMSGFMT_015])
++
++  dnl Search for GNU xgettext 0.12 or newer in the PATH.
++  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
++  dnl The second test excludes FreeBSD xgettext.
++  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
++     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++    :)
++  dnl Remove leftover from FreeBSD xgettext call.
++  rm -f messages.po
++
++  dnl Test whether it is GNU xgettext >= 0.15.
++changequote(,)dnl
++  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
++    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
++    *) XGETTEXT_015=$XGETTEXT ;;
++  esac
++changequote([,])dnl
++  AC_SUBST([XGETTEXT_015])
++
++  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
++  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
++    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
++
++  dnl Installation directories.
++  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
++  dnl have to define it here, so that it can be used in po/Makefile.
++  test -n "$localedir" || localedir='${datadir}/locale'
++  AC_SUBST([localedir])
++
++  dnl Support for AM_XGETTEXT_OPTION.
++  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
++  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
++
++  AC_CONFIG_COMMANDS([po-directories], [[
++    for ac_file in $CONFIG_FILES; do
++      # Support "outfile[:infile[:infile...]]"
++      case "$ac_file" in
++        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++      esac
++      # PO directories have a Makefile.in generated from Makefile.in.in.
++      case "$ac_file" in */Makefile.in)
++        # Adjust a relative srcdir.
++        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++        # In autoconf-2.13 it is called $ac_given_srcdir.
++        # In autoconf-2.50 it is called $srcdir.
++        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++        case "$ac_given_srcdir" in
++          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++          /*) top_srcdir="$ac_given_srcdir" ;;
++          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
++        esac
++        # Treat a directory as a PO directory if and only if it has a
++        # POTFILES.in file. This allows packages to have multiple PO
++        # directories under different names or in different locations.
++        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
++          rm -f "$ac_dir/POTFILES"
++          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
++          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ 	]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
++          POMAKEFILEDEPS="POTFILES.in"
++          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
++          # on $ac_dir but don't depend on user-specified configuration
++          # parameters.
++          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++            # The LINGUAS file contains the set of available languages.
++            if test -n "$OBSOLETE_ALL_LINGUAS"; then
++              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++            fi
++            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++            # Hide the ALL_LINGUAS assigment from automake < 1.5.
++            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++          else
++            # The set of available languages was given in configure.in.
++            # Hide the ALL_LINGUAS assigment from automake < 1.5.
++            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
++          fi
++          # Compute POFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
++          # Compute UPDATEPOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
++          # Compute DUMMYPOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
++          # Compute GMOFILES
++          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
++          case "$ac_given_srcdir" in
++            .) srcdirpre= ;;
++            *) srcdirpre='$(srcdir)/' ;;
++          esac
++          POFILES=
++          UPDATEPOFILES=
++          DUMMYPOFILES=
++          GMOFILES=
++          for lang in $ALL_LINGUAS; do
++            POFILES="$POFILES $srcdirpre$lang.po"
++            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++          done
++          # CATALOGS depends on both $ac_dir and the user's LINGUAS
++          # environment variable.
++          INST_LINGUAS=
++          if test -n "$ALL_LINGUAS"; then
++            for presentlang in $ALL_LINGUAS; do
++              useit=no
++              if test "%UNSET%" != "$LINGUAS"; then
++                desiredlanguages="$LINGUAS"
++              else
++                desiredlanguages="$ALL_LINGUAS"
++              fi
++              for desiredlang in $desiredlanguages; do
++                # Use the presentlang catalog if desiredlang is
++                #   a. equal to presentlang, or
++                #   b. a variant of presentlang (because in this case,
++                #      presentlang can be used as a fallback for messages
++                #      which are not translated in the desiredlang catalog).
++                case "$desiredlang" in
++                  "$presentlang"*) useit=yes;;
++                esac
++              done
++              if test $useit = yes; then
++                INST_LINGUAS="$INST_LINGUAS $presentlang"
++              fi
++            done
++          fi
++          CATALOGS=
++          if test -n "$INST_LINGUAS"; then
++            for lang in $INST_LINGUAS; do
++              CATALOGS="$CATALOGS $lang.gmo"
++            done
++          fi
++          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
++          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
++          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
++            if test -f "$f"; then
++              case "$f" in
++                *.orig | *.bak | *~) ;;
++                *) cat "$f" >> "$ac_dir/Makefile" ;;
++              esac
++            fi
++          done
++        fi
++        ;;
++      esac
++    done]],
++   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
++    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
++    # from automake < 1.5.
++    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
++    # Capture the value of LINGUAS because we need it to compute CATALOGS.
++    LINGUAS="${LINGUAS-%UNSET%}"
++   ])
++])
++
++dnl Postprocesses a Makefile in a directory containing PO files.
++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
++[
++  # When this code is run, in config.status, two variables have already been
++  # set:
++  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
++  # - LINGUAS is the value of the environment variable LINGUAS at configure
++  #   time.
++
++changequote(,)dnl
++  # Adjust a relative srcdir.
++  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
++  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
++  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
++  # In autoconf-2.13 it is called $ac_given_srcdir.
++  # In autoconf-2.50 it is called $srcdir.
++  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
++  case "$ac_given_srcdir" in
++    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
++    /*) top_srcdir="$ac_given_srcdir" ;;
++    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
++  esac
++
++  # Find a way to echo strings without interpreting backslash.
++  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
++    gt_echo='echo'
++  else
++    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
++      gt_echo='printf %s\n'
++    else
++      echo_func () {
++        cat <<EOT
++$*
++EOT
++      }
++      gt_echo='echo_func'
++    fi
++  fi
++
++  # A sed script that extracts the value of VARIABLE from a Makefile.
++  sed_x_variable='
++# Test if the hold space is empty.
++x
++s/P/P/
++x
++ta
++# Yes it was empty. Look if we have the expected variable definition.
++/^[	 ]*VARIABLE[	 ]*=/{
++  # Seen the first line of the variable definition.
++  s/^[	 ]*VARIABLE[	 ]*=//
++  ba
++}
++bd
++:a
++# Here we are processing a line from the variable definition.
++# Remove comment, more precisely replace it with a space.
++s/#.*$/ /
++# See if the line ends in a backslash.
++tb
++:b
++s/\\$//
++# Print the line, without the trailing backslash.
++p
++tc
++# There was no trailing backslash. The end of the variable definition is
++# reached. Clear the hold space.
++s/^.*$//
++x
++bd
++:c
++# A trailing backslash means that the variable definition continues in the
++# next line. Put a nonempty string into the hold space to indicate this.
++s/^.*$/P/
++x
++:d
++'
++changequote([,])dnl
++
++  # Set POTFILES to the value of the Makefile variable POTFILES.
++  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
++  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
++  # Compute POTFILES_DEPS as
++  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
++  POTFILES_DEPS=
++  for file in $POTFILES; do
++    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
++  done
++  POMAKEFILEDEPS=""
++
++  if test -n "$OBSOLETE_ALL_LINGUAS"; then
++    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
++  fi
++  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
++    # The LINGUAS file contains the set of available languages.
++    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
++    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
++  else
++    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
++    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
++    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
++  fi
++  # Hide the ALL_LINGUAS assigment from automake < 1.5.
++  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
++  # Compute POFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
++  # Compute UPDATEPOFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
++  # Compute DUMMYPOFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
++  # Compute GMOFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
++  # Compute PROPERTIESFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
++  # Compute CLASSFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
++  # Compute QMFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
++  # Compute MSGFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
++  # Compute RESOURCESDLLFILES
++  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
++  case "$ac_given_srcdir" in
++    .) srcdirpre= ;;
++    *) srcdirpre='$(srcdir)/' ;;
++  esac
++  POFILES=
++  UPDATEPOFILES=
++  DUMMYPOFILES=
++  GMOFILES=
++  PROPERTIESFILES=
++  CLASSFILES=
++  QMFILES=
++  MSGFILES=
++  RESOURCESDLLFILES=
++  for lang in $ALL_LINGUAS; do
++    POFILES="$POFILES $srcdirpre$lang.po"
++    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
++    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
++    QMFILES="$QMFILES $srcdirpre$lang.qm"
++    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
++    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
++  done
++  # CATALOGS depends on both $ac_dir and the user's LINGUAS
++  # environment variable.
++  INST_LINGUAS=
++  if test -n "$ALL_LINGUAS"; then
++    for presentlang in $ALL_LINGUAS; do
++      useit=no
++      if test "%UNSET%" != "$LINGUAS"; then
++        desiredlanguages="$LINGUAS"
++      else
++        desiredlanguages="$ALL_LINGUAS"
++      fi
++      for desiredlang in $desiredlanguages; do
++        # Use the presentlang catalog if desiredlang is
++        #   a. equal to presentlang, or
++        #   b. a variant of presentlang (because in this case,
++        #      presentlang can be used as a fallback for messages
++        #      which are not translated in the desiredlang catalog).
++        case "$desiredlang" in
++          "$presentlang"*) useit=yes;;
++        esac
++      done
++      if test $useit = yes; then
++        INST_LINGUAS="$INST_LINGUAS $presentlang"
++      fi
++    done
++  fi
++  CATALOGS=
++  JAVACATALOGS=
++  QTCATALOGS=
++  TCLCATALOGS=
++  CSHARPCATALOGS=
++  if test -n "$INST_LINGUAS"; then
++    for lang in $INST_LINGUAS; do
++      CATALOGS="$CATALOGS $lang.gmo"
++      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
++      QTCATALOGS="$QTCATALOGS $lang.qm"
++      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
++      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
++    done
++  fi
++
++  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
++  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
++    # Add dependencies that cannot be formulated as a simple suffix rule.
++    for lang in $ALL_LINGUAS; do
++      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
++      cat >> "$ac_file.tmp" <<EOF
++$frobbedlang.msg: $lang.po
++	@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
++	\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++EOF
++    done
++  fi
++  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
++    # Add dependencies that cannot be formulated as a simple suffix rule.
++    for lang in $ALL_LINGUAS; do
++      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
++      cat >> "$ac_file.tmp" <<EOF
++$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
++	@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
++	\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
++EOF
++    done
++  fi
++  if test -n "$POMAKEFILEDEPS"; then
++    cat >> "$ac_file.tmp" <<EOF
++Makefile: $POMAKEFILEDEPS
++EOF
++  fi
++  mv "$ac_file.tmp" "$ac_file"
++])
++
++dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
++AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
++[
++  XGETTEXT_EXTRA_OPTIONS=
++])
++
++dnl Registers an option to be passed to xgettext in the po subdirectory.
++AC_DEFUN([AM_XGETTEXT_OPTION],
++[
++  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
++  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
++])
+diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
+new file mode 100644
+index 0000000..1eacf95
+--- /dev/null
++++ b/m4/printf-posix.m4
+@@ -0,0 +1,45 @@
++# printf-posix.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether the printf() function supports POSIX/XSI format strings with
++dnl positions.
++
++AC_DEFUN([gt_PRINTF_POSIX],
++[
++  AC_REQUIRE([AC_PROG_CC])
++  AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
++    gt_cv_func_printf_posix,
++    [
++      AC_TRY_RUN([
++#include <stdio.h>
++#include <string.h>
++/* The string "%2$d %1$d", with dollar characters protected from the shell's
++   dollar expansion (possibly an autoconf bug).  */
++static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
++static char buf[100];
++int main ()
++{
++  sprintf (buf, format, 33, 55);
++  return (strcmp (buf, "55 33") != 0);
++}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
++      [
++        AC_EGREP_CPP([notposix], [
++#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
++  notposix
++#endif
++          ],
++          [gt_cv_func_printf_posix="guessing no"],
++          [gt_cv_func_printf_posix="guessing yes"])
++      ])
++    ])
++  case $gt_cv_func_printf_posix in
++    *yes)
++      AC_DEFINE([HAVE_POSIX_PRINTF], [1],
++        [Define if your printf() function supports format strings with positions.])
++      ;;
++  esac
++])
+diff --git a/m4/progtest.m4 b/m4/progtest.m4
+new file mode 100644
+index 0000000..2d804ac
+--- /dev/null
++++ b/m4/progtest.m4
+@@ -0,0 +1,92 @@
++# progtest.m4 serial 6 (gettext-0.18)
++dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++dnl
++dnl This file can can be used in projects which are not available under
++dnl the GNU General Public License or the GNU Library General Public
++dnl License but which still want to provide support for the GNU gettext
++dnl functionality.
++dnl Please note that the actual code of the GNU gettext library is covered
++dnl by the GNU Library General Public License, and the rest of the GNU
++dnl gettext package package is covered by the GNU General Public License.
++dnl They are *not* in the public domain.
++
++dnl Authors:
++dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++AC_PREREQ([2.50])
++
++# Search path for a program which passes the given test.
++
++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
++dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
++AC_DEFUN([AM_PATH_PROG_WITH_TEST],
++[
++# Prepare PATH_SEPARATOR.
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++  echo "#! /bin/sh" >conf$$.sh
++  echo  "exit 0"   >>conf$$.sh
++  chmod +x conf$$.sh
++  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++    PATH_SEPARATOR=';'
++  else
++    PATH_SEPARATOR=:
++  fi
++  rm -f conf$$.sh
++fi
++
++# Find out how to test for executable files. Don't use a zero-byte file,
++# as systems may use methods other than mode bits to determine executability.
++cat >conf$$.file <<_ASEOF
++#! /bin/sh
++exit 0
++_ASEOF
++chmod +x conf$$.file
++if test -x conf$$.file >/dev/null 2>&1; then
++  ac_executable_p="test -x"
++else
++  ac_executable_p="test -f"
++fi
++rm -f conf$$.file
++
++# Extract the first word of "$2", so it can be a program name with args.
++set dummy $2; ac_word=[$]2
++AC_MSG_CHECKING([for $ac_word])
++AC_CACHE_VAL([ac_cv_path_$1],
++[case "[$]$1" in
++  [[\\/]]* | ?:[[\\/]]*)
++    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
++    ;;
++  *)
++    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
++    for ac_dir in ifelse([$5], , $PATH, [$5]); do
++      IFS="$ac_save_IFS"
++      test -z "$ac_dir" && ac_dir=.
++      for ac_exec_ext in '' $ac_executable_extensions; do
++        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
++          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
++          if [$3]; then
++            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
++            break 2
++          fi
++        fi
++      done
++    done
++    IFS="$ac_save_IFS"
++dnl If no 4th arg is given, leave the cache variable unset,
++dnl so AC_PATH_PROGS will keep looking.
++ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
++])dnl
++    ;;
++esac])dnl
++$1="$ac_cv_path_$1"
++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
++  AC_MSG_RESULT([$][$1])
++else
++  AC_MSG_RESULT([no])
++fi
++AC_SUBST([$1])dnl
++])
+diff --git a/m4/size_max.m4 b/m4/size_max.m4
+new file mode 100644
+index 0000000..ce992db
+--- /dev/null
++++ b/m4/size_max.m4
+@@ -0,0 +1,75 @@
++# size_max.m4 serial 9
++dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++AC_DEFUN([gl_SIZE_MAX],
++[
++  AC_CHECK_HEADERS([stdint.h])
++  dnl First test whether the system already has SIZE_MAX.
++  AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
++    gl_cv_size_max=
++    AC_EGREP_CPP([Found it], [
++#include <limits.h>
++#if HAVE_STDINT_H
++#include <stdint.h>
++#endif
++#ifdef SIZE_MAX
++Found it
++#endif
++], [gl_cv_size_max=yes])
++    if test -z "$gl_cv_size_max"; then
++      dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
++      dnl than the type 'unsigned long'. Try hard to find a definition that can
++      dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
++      AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
++        [#include <stddef.h>
++#include <limits.h>], [size_t_bits_minus_1=])
++      AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
++        [#include <stddef.h>], [fits_in_uint=])
++      if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
++        if test $fits_in_uint = 1; then
++          dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
++          dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
++          AC_TRY_COMPILE([#include <stddef.h>
++            extern size_t foo;
++            extern unsigned long foo;
++            ], [], [fits_in_uint=0])
++        fi
++        dnl We cannot use 'expr' to simplify this expression, because 'expr'
++        dnl works only with 'long' integers in the host environment, while we
++        dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
++        if test $fits_in_uint = 1; then
++          gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
++        else
++          gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
++        fi
++      else
++        dnl Shouldn't happen, but who knows...
++        gl_cv_size_max='((size_t)~(size_t)0)'
++      fi
++    fi
++  ])
++  if test "$gl_cv_size_max" != yes; then
++    AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
++      [Define as the maximum value of type 'size_t', if the system doesn't define it.])
++  fi
++  dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
++  dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
++  dnl #define by AC_DEFINE_UNQUOTED.
++  AH_VERBATIM([SIZE_MAX],
++[/* Define as the maximum value of type 'size_t', if the system doesn't define
++   it. */
++#ifndef SIZE_MAX
++# undef SIZE_MAX
++#endif])
++])
++
++dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
++dnl Remove this when we can assume autoconf >= 2.61.
++m4_ifdef([AC_COMPUTE_INT], [], [
++  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
++])
+diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
+new file mode 100644
+index 0000000..b8e3c6c
+--- /dev/null
++++ b/m4/stdint_h.m4
+@@ -0,0 +1,26 @@
++# stdint_h.m4 serial 8
++dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
++# doesn't clash with <sys/types.h>, and declares uintmax_t.
++
++AC_DEFUN([gl_AC_HEADER_STDINT_H],
++[
++  AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
++  [AC_TRY_COMPILE(
++    [#include <sys/types.h>
++#include <stdint.h>],
++    [uintmax_t i = (uintmax_t) -1; return !i;],
++    [gl_cv_header_stdint_h=yes],
++    [gl_cv_header_stdint_h=no])])
++  if test $gl_cv_header_stdint_h = yes; then
++    AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
++      [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
++       and declares uintmax_t. ])
++  fi
++])
+diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
+new file mode 100644
+index 0000000..05cc4ff
+--- /dev/null
++++ b/m4/threadlib.m4
+@@ -0,0 +1,347 @@
++# threadlib.m4 serial 5 (gettext-0.18)
++dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl gl_THREADLIB
++dnl ------------
++dnl Tests for a multithreading library to be used.
++dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
++dnl USE_PTH_THREADS, USE_WIN32_THREADS
++dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
++dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
++dnl libtool).
++dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
++dnl programs that really need multithread functionality. The difference
++dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
++dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
++dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
++dnl multithread-safe programs.
++
++AC_DEFUN([gl_THREADLIB_EARLY],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
++])
++
++dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
++
++AC_DEFUN([gl_THREADLIB_EARLY_BODY],
++[
++  dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
++  dnl influences the result of the autoconf tests that test for *_unlocked
++  dnl declarations, on AIX 5 at least. Therefore it must come early.
++  AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
++  AC_BEFORE([$0], [gl_ARGP])dnl
++
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
++  dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
++  dnl AC_GNU_SOURCE.
++  m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
++    [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
++    [AC_REQUIRE([AC_GNU_SOURCE])])
++  dnl Check for multithreading.
++  m4_divert_text([DEFAULTS], [gl_use_threads_default=])
++  AC_ARG_ENABLE([threads],
++AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
++AC_HELP_STRING([--disable-threads], [build without multithread safety]),
++    [gl_use_threads=$enableval],
++    [if test -n "$gl_use_threads_default"; then
++       gl_use_threads="$gl_use_threads_default"
++     else
++changequote(,)dnl
++       case "$host_os" in
++         dnl Disable multithreading by default on OSF/1, because it interferes
++         dnl with fork()/exec(): When msgexec is linked with -lpthread, its
++         dnl child process gets an endless segmentation fault inside execvp().
++         dnl Disable multithreading by default on Cygwin 1.5.x, because it has
++         dnl bugs that lead to endless loops or crashes. See
++         dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
++         osf*) gl_use_threads=no ;;
++         cygwin*)
++               case `uname -r` in
++                 1.[0-5].*) gl_use_threads=no ;;
++                 *)         gl_use_threads=yes ;;
++               esac
++               ;;
++         *)    gl_use_threads=yes ;;
++       esac
++changequote([,])dnl
++     fi
++    ])
++  if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
++    # For using <pthread.h>:
++    case "$host_os" in
++      osf*)
++        # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
++        # groks <pthread.h>. cc also understands the flag -pthread, but
++        # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
++        # 2. putting a flag into CPPFLAGS that has an effect on the linker
++        # causes the AC_TRY_LINK test below to succeed unexpectedly,
++        # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
++        CPPFLAGS="$CPPFLAGS -D_REENTRANT"
++        ;;
++    esac
++    # Some systems optimize for single-threaded programs by default, and
++    # need special flags to disable these optimizations. For example, the
++    # definition of 'errno' in <errno.h>.
++    case "$host_os" in
++      aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
++      solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
++    esac
++  fi
++])
++
++dnl The guts of gl_THREADLIB. Needs to be expanded only once.
++
++AC_DEFUN([gl_THREADLIB_BODY],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
++  gl_threads_api=none
++  LIBTHREAD=
++  LTLIBTHREAD=
++  LIBMULTITHREAD=
++  LTLIBMULTITHREAD=
++  if test "$gl_use_threads" != no; then
++    dnl Check whether the compiler and linker support weak declarations.
++    AC_CACHE_CHECK([whether imported symbols can be declared weak],
++      [gl_cv_have_weak],
++      [gl_cv_have_weak=no
++       dnl First, test whether the compiler accepts it syntactically.
++       AC_TRY_LINK([extern void xyzzy ();
++#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
++       if test $gl_cv_have_weak = maybe; then
++         dnl Second, test whether it actually works. On Cygwin 1.7.2, with
++         dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
++         AC_TRY_RUN([
++#include <stdio.h>
++#pragma weak fputs
++int main ()
++{
++  return (fputs == NULL);
++}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
++           [dnl When cross-compiling, assume that only ELF platforms support
++            dnl weak symbols.
++            AC_EGREP_CPP([Extensible Linking Format],
++              [#ifdef __ELF__
++               Extensible Linking Format
++               #endif
++              ],
++              [gl_cv_have_weak="guessing yes"],
++              [gl_cv_have_weak="guessing no"])
++           ])
++       fi
++      ])
++    if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
++      # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
++      # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
++      AC_CHECK_HEADER([pthread.h],
++        [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
++      if test "$gl_have_pthread_h" = yes; then
++        # Other possible tests:
++        #   -lpthreads (FSU threads, PCthreads)
++        #   -lgthreads
++        gl_have_pthread=
++        # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
++        # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
++        # the second one only in libpthread, and lock.c needs it.
++        AC_TRY_LINK([#include <pthread.h>],
++          [pthread_mutex_lock((pthread_mutex_t*)0);
++           pthread_mutexattr_init((pthread_mutexattr_t*)0);],
++          [gl_have_pthread=yes])
++        # Test for libpthread by looking for pthread_kill. (Not pthread_self,
++        # since it is defined as a macro on OSF/1.)
++        if test -n "$gl_have_pthread"; then
++          # The program links fine without libpthread. But it may actually
++          # need to link with libpthread in order to create multiple threads.
++          AC_CHECK_LIB([pthread], [pthread_kill],
++            [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
++             # On Solaris and HP-UX, most pthread functions exist also in libc.
++             # Therefore pthread_in_use() needs to actually try to create a
++             # thread: pthread_create from libc will fail, whereas
++             # pthread_create will actually create a thread.
++             case "$host_os" in
++               solaris* | hpux*)
++                 AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
++                   [Define if the pthread_in_use() detection is hard.])
++             esac
++            ])
++        else
++          # Some library is needed. Try libpthread and libc_r.
++          AC_CHECK_LIB([pthread], [pthread_kill],
++            [gl_have_pthread=yes
++             LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
++             LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
++          if test -z "$gl_have_pthread"; then
++            # For FreeBSD 4.
++            AC_CHECK_LIB([c_r], [pthread_kill],
++              [gl_have_pthread=yes
++               LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
++               LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
++          fi
++        fi
++        if test -n "$gl_have_pthread"; then
++          gl_threads_api=posix
++          AC_DEFINE([USE_POSIX_THREADS], [1],
++            [Define if the POSIX multithreading library can be used.])
++          if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
++            if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++              AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
++                [Define if references to the POSIX multithreading library should be made weak.])
++              LIBTHREAD=
++              LTLIBTHREAD=
++            fi
++          fi
++        fi
++      fi
++    fi
++    if test -z "$gl_have_pthread"; then
++      if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
++        gl_have_solaristhread=
++        gl_save_LIBS="$LIBS"
++        LIBS="$LIBS -lthread"
++        AC_TRY_LINK([#include <thread.h>
++#include <synch.h>],
++          [thr_self();],
++          [gl_have_solaristhread=yes])
++        LIBS="$gl_save_LIBS"
++        if test -n "$gl_have_solaristhread"; then
++          gl_threads_api=solaris
++          LIBTHREAD=-lthread
++          LTLIBTHREAD=-lthread
++          LIBMULTITHREAD="$LIBTHREAD"
++          LTLIBMULTITHREAD="$LTLIBTHREAD"
++          AC_DEFINE([USE_SOLARIS_THREADS], [1],
++            [Define if the old Solaris multithreading library can be used.])
++          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++            AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
++              [Define if references to the old Solaris multithreading library should be made weak.])
++            LIBTHREAD=
++            LTLIBTHREAD=
++          fi
++        fi
++      fi
++    fi
++    if test "$gl_use_threads" = pth; then
++      gl_save_CPPFLAGS="$CPPFLAGS"
++      AC_LIB_LINKFLAGS([pth])
++      gl_have_pth=
++      gl_save_LIBS="$LIBS"
++      LIBS="$LIBS -lpth"
++      AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
++      LIBS="$gl_save_LIBS"
++      if test -n "$gl_have_pth"; then
++        gl_threads_api=pth
++        LIBTHREAD="$LIBPTH"
++        LTLIBTHREAD="$LTLIBPTH"
++        LIBMULTITHREAD="$LIBTHREAD"
++        LTLIBMULTITHREAD="$LTLIBTHREAD"
++        AC_DEFINE([USE_PTH_THREADS], [1],
++          [Define if the GNU Pth multithreading library can be used.])
++        if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
++          if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
++            AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
++              [Define if references to the GNU Pth multithreading library should be made weak.])
++            LIBTHREAD=
++            LTLIBTHREAD=
++          fi
++        fi
++      else
++        CPPFLAGS="$gl_save_CPPFLAGS"
++      fi
++    fi
++    if test -z "$gl_have_pthread"; then
++      if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
++        if { case "$host_os" in
++               mingw*) true;;
++               *) false;;
++             esac
++           }; then
++          gl_threads_api=win32
++          AC_DEFINE([USE_WIN32_THREADS], [1],
++            [Define if the Win32 multithreading API can be used.])
++        fi
++      fi
++    fi
++  fi
++  AC_MSG_CHECKING([for multithread API to use])
++  AC_MSG_RESULT([$gl_threads_api])
++  AC_SUBST([LIBTHREAD])
++  AC_SUBST([LTLIBTHREAD])
++  AC_SUBST([LIBMULTITHREAD])
++  AC_SUBST([LTLIBMULTITHREAD])
++])
++
++AC_DEFUN([gl_THREADLIB],
++[
++  AC_REQUIRE([gl_THREADLIB_EARLY])
++  AC_REQUIRE([gl_THREADLIB_BODY])
++])
++
++
++dnl gl_DISABLE_THREADS
++dnl ------------------
++dnl Sets the gl_THREADLIB default so that threads are not used by default.
++dnl The user can still override it at installation time, by using the
++dnl configure option '--enable-threads'.
++
++AC_DEFUN([gl_DISABLE_THREADS], [
++  m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
++])
++
++
++dnl Survey of platforms:
++dnl
++dnl Platform          Available   Compiler    Supports   test-lock
++dnl                   flavours    option      weak       result
++dnl ---------------   ---------   ---------   --------   ---------
++dnl Linux 2.4/glibc   posix       -lpthread       Y      OK
++dnl
++dnl GNU Hurd/glibc    posix
++dnl
++dnl FreeBSD 5.3       posix       -lc_r           Y
++dnl                   posix       -lkse ?         Y
++dnl                   posix       -lpthread ?     Y
++dnl                   posix       -lthr           Y
++dnl
++dnl FreeBSD 5.2       posix       -lc_r           Y
++dnl                   posix       -lkse           Y
++dnl                   posix       -lthr           Y
++dnl
++dnl FreeBSD 4.0,4.10  posix       -lc_r           Y      OK
++dnl
++dnl NetBSD 1.6        --
++dnl
++dnl OpenBSD 3.4       posix       -lpthread       Y      OK
++dnl
++dnl MacOS X 10.[123]  posix       -lpthread       Y      OK
++dnl
++dnl Solaris 7,8,9     posix       -lpthread       Y      Sol 7,8: 0.0; Sol 9: OK
++dnl                   solaris     -lthread        Y      Sol 7,8: 0.0; Sol 9: OK
++dnl
++dnl HP-UX 11          posix       -lpthread       N (cc) OK
++dnl                                               Y (gcc)
++dnl
++dnl IRIX 6.5          posix       -lpthread       Y      0.5
++dnl
++dnl AIX 4.3,5.1       posix       -lpthread       N      AIX 4: 0.5; AIX 5: OK
++dnl
++dnl OSF/1 4.0,5.1     posix       -pthread (cc)   N      OK
++dnl                               -lpthread (gcc) Y
++dnl
++dnl Cygwin            posix       -lpthread       Y      OK
++dnl
++dnl Any of the above  pth         -lpth                  0.0
++dnl
++dnl Mingw             win32                       N      OK
++dnl
++dnl BeOS 5            --
++dnl
++dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
++dnl turned off:
++dnl   OK if all three tests terminate OK,
++dnl   0.5 if the first test terminates OK but the second one loops endlessly,
++dnl   0.0 if the first test already loops endlessly.
+diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
+new file mode 100644
+index 0000000..03b51bc
+--- /dev/null
++++ b/m4/uintmax_t.m4
+@@ -0,0 +1,30 @@
++# uintmax_t.m4 serial 12
++dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Paul Eggert.
++
++AC_PREREQ([2.13])
++
++# Define uintmax_t to 'unsigned long' or 'unsigned long long'
++# if it is not already defined in <stdint.h> or <inttypes.h>.
++
++AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
++[
++  AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
++  AC_REQUIRE([gl_AC_HEADER_STDINT_H])
++  if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
++    AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
++    test $ac_cv_type_unsigned_long_long_int = yes \
++      && ac_type='unsigned long long' \
++      || ac_type='unsigned long'
++    AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
++      [Define to unsigned long or unsigned long long
++       if <stdint.h> and <inttypes.h> don't define.])
++  else
++    AC_DEFINE([HAVE_UINTMAX_T], [1],
++      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
++  fi
++])
+diff --git a/m4/visibility.m4 b/m4/visibility.m4
+new file mode 100644
+index 0000000..077c476
+--- /dev/null
++++ b/m4/visibility.m4
+@@ -0,0 +1,74 @@
++# visibility.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++
++dnl Tests whether the compiler supports the command-line option
++dnl -fvisibility=hidden and the function and variable attributes
++dnl __attribute__((__visibility__("hidden"))) and
++dnl __attribute__((__visibility__("default"))).
++dnl Does *not* test for __visibility__("protected") - which has tricky
++dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
++dnl MacOS X.
++dnl Does *not* test for __visibility__("internal") - which has processor
++dnl dependent semantics.
++dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
++dnl "really only recommended for legacy code".
++dnl Set the variable CFLAG_VISIBILITY.
++dnl Defines and sets the variable HAVE_VISIBILITY.
++
++AC_DEFUN([gl_VISIBILITY],
++[
++  AC_REQUIRE([AC_PROG_CC])
++  CFLAG_VISIBILITY=
++  HAVE_VISIBILITY=0
++  if test -n "$GCC"; then
++    dnl First, check whether -Werror can be added to the command line, or
++    dnl whether it leads to an error because of some other option that the
++    dnl user has put into $CC $CFLAGS $CPPFLAGS.
++    AC_MSG_CHECKING([whether the -Werror option is usable])
++    AC_CACHE_VAL([gl_cv_cc_vis_werror], [
++      gl_save_CFLAGS="$CFLAGS"
++      CFLAGS="$CFLAGS -Werror"
++      AC_TRY_COMPILE([], [],
++        [gl_cv_cc_vis_werror=yes],
++        [gl_cv_cc_vis_werror=no])
++      CFLAGS="$gl_save_CFLAGS"])
++    AC_MSG_RESULT([$gl_cv_cc_vis_werror])
++    dnl Now check whether visibility declarations are supported.
++    AC_MSG_CHECKING([for simple visibility declarations])
++    AC_CACHE_VAL([gl_cv_cc_visibility], [
++      gl_save_CFLAGS="$CFLAGS"
++      CFLAGS="$CFLAGS -fvisibility=hidden"
++      dnl We use the option -Werror and a function dummyfunc, because on some
++      dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
++      dnl "visibility attribute not supported in this configuration; ignored"
++      dnl at the first function definition in every compilation unit, and we
++      dnl don't want to use the option in this case.
++      if test $gl_cv_cc_vis_werror = yes; then
++        CFLAGS="$CFLAGS -Werror"
++      fi
++      AC_TRY_COMPILE(
++        [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
++         extern __attribute__((__visibility__("default"))) int exportedvar;
++         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
++         extern __attribute__((__visibility__("default"))) int exportedfunc (void);
++         void dummyfunc (void) {}],
++        [],
++        [gl_cv_cc_visibility=yes],
++        [gl_cv_cc_visibility=no])
++      CFLAGS="$gl_save_CFLAGS"])
++    AC_MSG_RESULT([$gl_cv_cc_visibility])
++    if test $gl_cv_cc_visibility = yes; then
++      CFLAG_VISIBILITY="-fvisibility=hidden"
++      HAVE_VISIBILITY=1
++    fi
++  fi
++  AC_SUBST([CFLAG_VISIBILITY])
++  AC_SUBST([HAVE_VISIBILITY])
++  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
++    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
++])
+diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
+new file mode 100644
+index 0000000..ed804e6
+--- /dev/null
++++ b/m4/wchar_t.m4
+@@ -0,0 +1,20 @@
++# wchar_t.m4 serial 3 (gettext-0.18)
++dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether <stddef.h> has the 'wchar_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WCHAR_T],
++[
++  AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
++    [AC_TRY_COMPILE([#include <stddef.h>
++       wchar_t foo = (wchar_t)'\0';], ,
++       [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
++  if test $gt_cv_c_wchar_t = yes; then
++    AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
++  fi
++])
+diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
+new file mode 100644
+index 0000000..a6c7d15
+--- /dev/null
++++ b/m4/wint_t.m4
+@@ -0,0 +1,28 @@
++# wint_t.m4 serial 4 (gettext-0.18)
++dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl From Bruno Haible.
++dnl Test whether <wchar.h> has the 'wint_t' type.
++dnl Prerequisite: AC_PROG_CC
++
++AC_DEFUN([gt_TYPE_WINT_T],
++[
++  AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
++    [AC_TRY_COMPILE([
++/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
++   <wchar.h>.
++   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
++   before <wchar.h>.  */
++#include <stddef.h>
++#include <stdio.h>
++#include <time.h>
++#include <wchar.h>
++       wint_t foo = (wchar_t)'\0';], ,
++       [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
++  if test $gt_cv_c_wint_t = yes; then
++    AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
++  fi
++])
+diff --git a/m4/xsize.m4 b/m4/xsize.m4
+new file mode 100644
+index 0000000..b653693
+--- /dev/null
++++ b/m4/xsize.m4
+@@ -0,0 +1,13 @@
++# xsize.m4 serial 4
++dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++AC_DEFUN([gl_XSIZE],
++[
++  dnl Prerequisites of lib/xsize.h.
++  AC_REQUIRE([gl_SIZE_MAX])
++  AC_REQUIRE([AC_C_INLINE])
++  AC_CHECK_HEADERS([stdint.h])
++])
+diff --git a/po/Makefile.in.in b/po/Makefile.in.in
+new file mode 100644
+index 0000000..83d8838
+--- /dev/null
++++ b/po/Makefile.in.in
+@@ -0,0 +1,444 @@
++# Makefile for PO directory in any package using GNU gettext.
++# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
++#
++# This file can be copied and used freely without restrictions.  It can
++# be used in projects which are not available under the GNU General Public
++# License but which still want to provide support for the GNU gettext
++# functionality.
++# Please note that the actual code of GNU gettext is covered by the GNU
++# General Public License and is *not* in the public domain.
++#
++# Origin: gettext-0.18
++GETTEXT_MACRO_VERSION = 0.18
++
++PACKAGE = @PACKAGE@
++VERSION = @VERSION@
++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
++
++SHELL = /bin/sh
++@SET_MAKE@
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++VPATH = @srcdir@
++
++prefix = @prefix@
++exec_prefix = @exec_prefix@
++datarootdir = @datarootdir@
++datadir = @datadir@
++localedir = @localedir@
++gettextsrcdir = $(datadir)/gettext/po
++
++INSTALL = @INSTALL@
++INSTALL_DATA = @INSTALL_DATA@
++
++# We use $(mkdir_p).
++# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
++# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
++# @install_sh@ does not start with $(SHELL), so we add it.
++# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
++# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
++# versions, $(mkinstalldirs) and $(install_sh) are unused.
++mkinstalldirs = $(SHELL) @install_sh@ -d
++install_sh = $(SHELL) @install_sh@
++MKDIR_P = @MKDIR_P@
++mkdir_p = @mkdir_p@
++
++GMSGFMT_ = @GMSGFMT@
++GMSGFMT_no = @GMSGFMT@
++GMSGFMT_yes = @GMSGFMT_015@
++GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
++MSGFMT_ = @MSGFMT@
++MSGFMT_no = @MSGFMT@
++MSGFMT_yes = @MSGFMT_015@
++MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
++XGETTEXT_ = @XGETTEXT@
++XGETTEXT_no = @XGETTEXT@
++XGETTEXT_yes = @XGETTEXT_015@
++XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
++MSGMERGE = msgmerge
++MSGMERGE_UPDATE = @MSGMERGE@ --update
++MSGINIT = msginit
++MSGCONV = msgconv
++MSGFILTER = msgfilter
++
++POFILES = @POFILES@
++GMOFILES = @GMOFILES@
++UPDATEPOFILES = @UPDATEPOFILES@
++DUMMYPOFILES = @DUMMYPOFILES@
++DISTFILES.common = Makefile.in.in remove-potcdate.sin \
++$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
++DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
++$(POFILES) $(GMOFILES) \
++$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
++
++POTFILES = \
++
++CATALOGS = @CATALOGS@
++
++# Makevars gets inserted here. (Don't remove this line!)
++
++.SUFFIXES:
++.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
++
++.po.mo:
++	@echo "$(MSGFMT) -c -o $@ $<"; \
++	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
++
++.po.gmo:
++	@lang=`echo $* | sed -e 's,.*/,,'`; \
++	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
++	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
++
++.sin.sed:
++	sed -e '/^#/d' $< > t-$@
++	mv t-$@ $@
++
++
++all: check-macro-version all-@USE_NLS@
++
++all-yes: stamp-po
++all-no:
++
++# Ensure that the gettext macros and this Makefile.in.in are in sync.
++check-macro-version:
++	@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
++	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
++	       exit 1; \
++	     }
++
++# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
++# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
++# we don't want to bother translators with empty POT files). We assume that
++# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
++# In this case, stamp-po is a nop (i.e. a phony target).
++
++# stamp-po is a timestamp denoting the last time at which the CATALOGS have
++# been loosely updated. Its purpose is that when a developer or translator
++# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
++# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
++# invocations of "make" will do nothing. This timestamp would not be necessary
++# if updating the $(CATALOGS) would always touch them; however, the rule for
++# $(POFILES) has been designed to not touch files that don't need to be
++# changed.
++stamp-po: $(srcdir)/$(DOMAIN).pot
++	test ! -f $(srcdir)/$(DOMAIN).pot || \
++	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
++	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
++	  echo "touch stamp-po" && \
++	  echo timestamp > stamp-poT && \
++	  mv stamp-poT stamp-po; \
++	}
++
++# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
++# otherwise packages like GCC can not be built if only parts of the source
++# have been downloaded.
++
++# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
++# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
++$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
++	if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
++	  package_gnu='GNU '; \
++	else \
++	  package_gnu=''; \
++	fi; \
++	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
++	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
++	else \
++	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
++	fi; \
++	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
++	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
++	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
++	      --files-from=$(srcdir)/POTFILES.in \
++	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
++	      --msgid-bugs-address="$$msgid_bugs_address" \
++	    ;; \
++	  *) \
++	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
++	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
++	      --files-from=$(srcdir)/POTFILES.in \
++	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
++	      --package-name="$${package_gnu}@PACKAGE@" \
++	      --package-version='@VERSION@' \
++	      --msgid-bugs-address="$$msgid_bugs_address" \
++	    ;; \
++	esac
++	test ! -f $(DOMAIN).po || { \
++	  if test -f $(srcdir)/$(DOMAIN).pot; then \
++	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
++	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
++	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
++	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
++	    else \
++	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
++	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++	    fi; \
++	  else \
++	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
++	  fi; \
++	}
++
++# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
++# every "make" invocation, only create it when it is missing.
++# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
++$(srcdir)/$(DOMAIN).pot:
++	$(MAKE) $(DOMAIN).pot-update
++
++# This target rebuilds a PO file if $(DOMAIN).pot has changed.
++# Note that a PO file is not touched if it doesn't need to be changed.
++$(POFILES): $(srcdir)/$(DOMAIN).pot
++	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
++	if test -f "$(srcdir)/$${lang}.po"; then \
++	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
++	  cd $(srcdir) \
++	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
++	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
++	           *) \
++	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
++	         esac; \
++	       }; \
++	else \
++	  $(MAKE) $${lang}.po-create; \
++	fi
++
++
++install: install-exec install-data
++install-exec:
++install-data: install-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
++	  for file in $(DISTFILES.common) Makevars.template; do \
++	    $(INSTALL_DATA) $(srcdir)/$$file \
++			    $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	  for file in Makevars; do \
++	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	else \
++	  : ; \
++	fi
++install-data-no: all
++install-data-yes: all
++	@catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  dir=$(localedir)/$$lang/LC_MESSAGES; \
++	  $(mkdir_p) $(DESTDIR)$$dir; \
++	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
++	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
++	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
++	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++	    if test -n "$$lc"; then \
++	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++	         for file in *; do \
++	           if test -f $$file; then \
++	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++	           fi; \
++	         done); \
++	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	      else \
++	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++	          :; \
++	        else \
++	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        fi; \
++	      fi; \
++	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
++	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
++	    fi; \
++	  done; \
++	done
++
++install-strip: install
++
++installdirs: installdirs-exec installdirs-data
++installdirs-exec:
++installdirs-data: installdirs-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
++	else \
++	  : ; \
++	fi
++installdirs-data-no:
++installdirs-data-yes:
++	@catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  dir=$(localedir)/$$lang/LC_MESSAGES; \
++	  $(mkdir_p) $(DESTDIR)$$dir; \
++	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
++	    if test -n "$$lc"; then \
++	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
++	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
++	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
++	         for file in *; do \
++	           if test -f $$file; then \
++	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
++	           fi; \
++	         done); \
++	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
++	      else \
++	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
++	          :; \
++	        else \
++	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
++	        fi; \
++	      fi; \
++	    fi; \
++	  done; \
++	done
++
++# Define this as empty until I found a useful application.
++installcheck:
++
++uninstall: uninstall-exec uninstall-data
++uninstall-exec:
++uninstall-data: uninstall-data-@USE_NLS@
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  for file in $(DISTFILES.common) Makevars.template; do \
++	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
++	  done; \
++	else \
++	  : ; \
++	fi
++uninstall-data-no:
++uninstall-data-yes:
++	catalogs='$(CATALOGS)'; \
++	for cat in $$catalogs; do \
++	  cat=`basename $$cat`; \
++	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
++	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
++	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
++	  done; \
++	done
++
++check: all
++
++info dvi ps pdf html tags TAGS ctags CTAGS ID:
++
++mostlyclean:
++	rm -f remove-potcdate.sed
++	rm -f stamp-poT
++	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
++	rm -fr *.o
++
++clean: mostlyclean
++
++distclean: clean
++	rm -f Makefile Makefile.in POTFILES *.mo
++
++maintainer-clean: distclean
++	@echo "This command is intended for maintainers to use;"
++	@echo "it deletes files that may require special tools to rebuild."
++	rm -f stamp-po $(GMOFILES)
++
++distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
++dist distdir:
++	$(MAKE) update-po
++	@$(MAKE) dist2
++# This is a separate target because 'update-po' must be executed before.
++dist2: stamp-po $(DISTFILES)
++	dists="$(DISTFILES)"; \
++	if test "$(PACKAGE)" = "gettext-tools"; then \
++	  dists="$$dists Makevars.template"; \
++	fi; \
++	if test -f $(srcdir)/$(DOMAIN).pot; then \
++	  dists="$$dists $(DOMAIN).pot stamp-po"; \
++	fi; \
++	if test -f $(srcdir)/ChangeLog; then \
++	  dists="$$dists ChangeLog"; \
++	fi; \
++	for i in 0 1 2 3 4 5 6 7 8 9; do \
++	  if test -f $(srcdir)/ChangeLog.$$i; then \
++	    dists="$$dists ChangeLog.$$i"; \
++	  fi; \
++	done; \
++	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
++	for file in $$dists; do \
++	  if test -f $$file; then \
++	    cp -p $$file $(distdir) || exit 1; \
++	  else \
++	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
++	  fi; \
++	done
++
++update-po: Makefile
++	$(MAKE) $(DOMAIN).pot-update
++	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
++	$(MAKE) update-gmo
++
++# General rule for creating PO files.
++
++.nop.po-create:
++	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
++	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
++	exit 1
++
++# General rule for updating PO files.
++
++.nop.po-update:
++	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
++	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
++	tmpdir=`pwd`; \
++	echo "$$lang:"; \
++	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
++	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
++	cd $(srcdir); \
++	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
++	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
++	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
++	       *) \
++	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
++	     esac; \
++	   }; then \
++	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++	    rm -f $$tmpdir/$$lang.new.po; \
++	  else \
++	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++	      :; \
++	    else \
++	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++	      exit 1; \
++	    fi; \
++	  fi; \
++	else \
++	  echo "msgmerge for $$lang.po failed!" 1>&2; \
++	  rm -f $$tmpdir/$$lang.new.po; \
++	fi
++
++$(DUMMYPOFILES):
++
++update-gmo: Makefile $(GMOFILES)
++	@:
++
++# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
++# because execution permission bits may not work on the current file system.
++# Use @SHELL@, which is the shell determined by autoconf for the use by its
++# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
++Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
++	cd $(top_builddir) \
++	  && @SHELL@ ./config.status $(subdir)/$@.in po-directories
++
++force:
++
++# Tell versions [3.59,3.63) of GNU make not to export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff --git a/po/Makevars.template b/po/Makevars.template
+new file mode 100644
+index 0000000..32692ab
+--- /dev/null
++++ b/po/Makevars.template
+@@ -0,0 +1,41 @@
++# Makefile variables for PO directory in any package using GNU gettext.
++
++# Usually the message domain is the same as the package name.
++DOMAIN = $(PACKAGE)
++
++# These two variables depend on the location of this directory.
++subdir = po
++top_builddir = ..
++
++# These options get passed to xgettext.
++XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
++
++# This is the copyright holder that gets inserted into the header of the
++# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
++# package.  (Note that the msgstr strings, extracted from the package's
++# sources, belong to the copyright holder of the package.)  Translators are
++# expected to transfer the copyright for their translations to this person
++# or entity, or to disclaim their copyright.  The empty string stands for
++# the public domain; in this case the translators are expected to disclaim
++# their copyright.
++COPYRIGHT_HOLDER = Free Software Foundation, Inc.
++
++# This is the email address or URL to which the translators shall report
++# bugs in the untranslated strings:
++# - Strings which are not entire sentences, see the maintainer guidelines
++#   in the GNU gettext documentation, section 'Preparing Strings'.
++# - Strings which use unclear terms or require additional context to be
++#   understood.
++# - Strings which make invalid assumptions about notation of date, time or
++#   money.
++# - Pluralisation problems.
++# - Incorrect English spelling.
++# - Incorrect formatting.
++# It can be your email address, or a mailing list address where translators
++# can write to without being subscribed, or the URL of a web page through
++# which the translators can contact you.
++MSGID_BUGS_ADDRESS =
++
++# This is the list of locale categories, beyond LC_MESSAGES, for which the
++# message catalogs shall be used.  It is usually empty.
++EXTRA_LOCALE_CATEGORIES =
+diff --git a/po/Rules-quot b/po/Rules-quot
+new file mode 100644
+index 0000000..af52487
+--- /dev/null
++++ b/po/Rules-quot
+@@ -0,0 +1,47 @@
++# Special Makefile rules for English message catalogs with quotation marks.
++
++DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
++
++.SUFFIXES: .insert-header .po-update-en
++
++en@quot.po-create:
++	$(MAKE) en@quot.po-update
++en@boldquot.po-create:
++	$(MAKE) en@boldquot.po-update
++
++en@quot.po-update: en@quot.po-update-en
++en@boldquot.po-update: en@boldquot.po-update-en
++
++.insert-header.po-update-en:
++	@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
++	if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
++	tmpdir=`pwd`; \
++	echo "$$lang:"; \
++	ll=`echo $$lang | sed -e 's/@.*//'`; \
++	LC_ALL=C; export LC_ALL; \
++	cd $(srcdir); \
++	if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
++	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++	    rm -f $$tmpdir/$$lang.new.po; \
++	  else \
++	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++	      :; \
++	    else \
++	      echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++	      exit 1; \
++	    fi; \
++	  fi; \
++	else \
++	  echo "creation of $$lang.po failed!" 1>&2; \
++	  rm -f $$tmpdir/$$lang.new.po; \
++	fi
++
++en@quot.insert-header: insert-header.sin
++	sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
++
++en@boldquot.insert-header: insert-header.sin
++	sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
++
++mostlyclean: mostlyclean-quot
++mostlyclean-quot:
++	rm -f *.insert-header
+diff --git a/po/boldquot.sed b/po/boldquot.sed
+new file mode 100644
+index 0000000..4b937aa
+--- /dev/null
++++ b/po/boldquot.sed
+@@ -0,0 +1,10 @@
++s/"\([^"]*\)"/“\1”/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“”/""/g
++s/“/“[1m/g
++s/”/[0m”/g
++s/‘/‘[1m/g
++s/’/[0m’/g
+diff --git a/po/en@boldquot.header b/po/en@boldquot.header
+new file mode 100644
+index 0000000..fedb6a0
+--- /dev/null
++++ b/po/en@boldquot.header
+@@ -0,0 +1,25 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
++# This catalog furthermore displays the text between the quotation marks in
++# bold face, assuming the VT100/XTerm escape sequences.
++#
+diff --git a/po/en@quot.header b/po/en@quot.header
+new file mode 100644
+index 0000000..a9647fc
+--- /dev/null
++++ b/po/en@quot.header
+@@ -0,0 +1,22 @@
++# All this catalog "translates" are quotation characters.
++# The msgids must be ASCII and therefore cannot contain real quotation
++# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
++# and double quote (0x22). These substitutes look strange; see
++# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
++#
++# This catalog translates grave accent (0x60) and apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019).
++# It also translates pairs of apostrophe (0x27) to
++# left single quotation mark (U+2018) and right single quotation mark (U+2019)
++# and pairs of quotation mark (0x22) to
++# left double quotation mark (U+201C) and right double quotation mark (U+201D).
++#
++# When output to an UTF-8 terminal, the quotation characters appear perfectly.
++# When output to an ISO-8859-1 terminal, the single quotation marks are
++# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
++# grave/acute accent (by libiconv), and the double quotation marks are
++# transliterated to 0x22.
++# When output to an ASCII terminal, the single quotation marks are
++# transliterated to apostrophes, and the double quotation marks are
++# transliterated to 0x22.
++#
+diff --git a/po/insert-header.sin b/po/insert-header.sin
+new file mode 100644
+index 0000000..b26de01
+--- /dev/null
++++ b/po/insert-header.sin
+@@ -0,0 +1,23 @@
++# Sed script that inserts the file called HEADER before the header entry.
++#
++# At each occurrence of a line starting with "msgid ", we execute the following
++# commands. At the first occurrence, insert the file. At the following
++# occurrences, do nothing. The distinction between the first and the following
++# occurrences is achieved by looking at the hold space.
++/^msgid /{
++x
++# Test if the hold space is empty.
++s/m/m/
++ta
++# Yes it was empty. First occurrence. Read the file.
++r HEADER
++# Output the file's contents by reading the next line. But don't lose the
++# current line while doing this.
++g
++N
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+diff --git a/po/quot.sed b/po/quot.sed
+new file mode 100644
+index 0000000..0122c46
+--- /dev/null
++++ b/po/quot.sed
+@@ -0,0 +1,6 @@
++s/"\([^"]*\)"/“\1”/g
++s/`\([^`']*\)'/‘\1’/g
++s/ '\([^`']*\)' / ‘\1’ /g
++s/ '\([^`']*\)'$/ ‘\1’/g
++s/^'\([^`']*\)' /‘\1’ /g
++s/“”/""/g
+diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
+new file mode 100644
+index 0000000..2436c49
+--- /dev/null
++++ b/po/remove-potcdate.sin
+@@ -0,0 +1,19 @@
++# Sed script that remove the POT-Creation-Date line in the header entry
++# from a POT file.
++#
++# The distinction between the first and the following occurrences of the
++# pattern is achieved by looking at the hold space.
++/^"POT-Creation-Date: .*"$/{
++x
++# Test if the hold space is empty.
++s/P/P/
++ta
++# Yes it was empty. First occurrence. Remove the line.
++g
++d
++bb
++:a
++# The hold space was nonempty. Following occurrences. Do nothing.
++x
++:b
++}
+-- 
+1.9.1
+
diff --git a/openpower/package/petitboot/petitboot-console-ui.rules b/openpower/package/petitboot/petitboot-console-ui.rules
new file mode 100644
index 0000000..7464856
--- /dev/null
+++ b/openpower/package/petitboot/petitboot-console-ui.rules
@@ -0,0 +1,5 @@
+
+# spawn a petitboot UI on common user-visible interface devices
+SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
+SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
+SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name vt100"
diff --git a/openpower/package/petitboot/petitboot.mk b/openpower/package/petitboot/petitboot.mk
new file mode 100644
index 0000000..934eb8d
--- /dev/null
+++ b/openpower/package/petitboot/petitboot.mk
@@ -0,0 +1,75 @@
+################################################################################
+#
+# petitboot
+#
+################################################################################
+
+PETITBOOT_VERSION = v1.0.0
+PETITBOOT_SITE ?= $(call github,open-power,petitboot,$(PETITBOOT_VERSION))
+PETITBOOT_DEPENDENCIES = ncurses udev host-bison host-flex lvm2
+PETITBOOT_LICENSE = GPLv2
+PETITBOOT_LICENSE_FILES = COPYING
+
+PETITBOOT_AUTORECONF = YES
+PETITBOOT_AUTORECONF_OPTS = -i
+PETITBOOT_GETTEXTIZE = YES
+PETITBOOT_CONF_OPTS += --with-ncurses --without-twin-x11 --without-twin-fbdev \
+	      --localstatedir=/var \
+	      HOST_PROG_KEXEC=/usr/sbin/kexec \
+	      HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot \
+	      $(if $(BR2_PACKAGE_BUSYBOX),--with-tftp=busybox)
+
+ifdef PETITBOOT_DEBUG
+PETITBOOT_CONF_OPTS += --enable-debug
+endif
+
+ifeq ($(BR2_PACKAGE_PETITBOOT_MTD),y)
+PETITBOOT_CONF_OPTS += --enable-mtd
+PETITBOOT_DEPENDENCIES += libflash
+PETITBOOT_CPPFLAGS += -I$(STAGING_DIR)
+PETITBOOT_LDFLAGS += -L$(STAGING_DIR)
+endif
+
+ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)
+PETITBOOT_CONF_OPTS += --with-ncursesw MENU_LIB=-lmenuw FORM_LIB=-lformw
+endif
+
+PETITBOOT_PRE_CONFIGURE_HOOKS += PETITBOOT_PRE_CONFIGURE_BOOTSTRAP
+
+define PETITBOOT_POST_INSTALL
+	$(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \
+		$(TARGET_DIR)/usr/libexec/petitboot
+	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/petitboot/boot.d
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/01-create-default-dtb \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/20-set-stdout \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+	$(INSTALL) -D -m 0755 $(@D)/utils/hooks/30-add-offb \
+		$(TARGET_DIR)/etc/petitboot/boot.d/
+
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S14silence-console \
+		$(TARGET_DIR)/etc/init.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/S15pb-discover \
+		$(TARGET_DIR)/etc/init.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/kexec-restart \
+		$(TARGET_DIR)/usr/sbin/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/petitboot-console-ui.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/removable-event-poll.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/63-md-raid-arrays.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+	$(INSTALL) -D -m 0755 $(BR2_EXTERNAL)/package/petitboot/65-md-incremental.rules \
+		$(TARGET_DIR)/etc/udev/rules.d/
+
+	ln -sf /usr/sbin/pb-udhcpc \
+		$(TARGET_DIR)/usr/share/udhcpc/default.script.d/
+
+	$(MAKE) -C $(@D)/po DESTDIR=$(TARGET_DIR) install
+endef
+
+PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL
+
+$(eval $(autotools-package))
diff --git a/openpower/package/petitboot/removable-event-poll.rules b/openpower/package/petitboot/removable-event-poll.rules
new file mode 100644
index 0000000..b736aef
--- /dev/null
+++ b/openpower/package/petitboot/removable-event-poll.rules
@@ -0,0 +1,4 @@
+
+# petitboot needs notification for media change events on removable devices,
+# which we only get if we've set the poll_msecs sysfs attribute.
+ACTION!="remove", ATTR{removable}=="1", ATTR{events_poll_msecs}="2000"
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index e2e3af0..474d455 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -39,6 +39,14 @@
 	fi; \
 fi
 
+# If this is for linux, also check openpower/linux
+if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
+	if ls $$(BR2_EXTERNAL)/$(1)/*.patch 2>/dev/null; then sha512sum \
+		$$(BR2_EXTERNAL)/$(1)/*.patch | sha512sum | \
+		xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
+	fi; \
+fi;
+
 # Combine all the patches found in the package and global package directories
 if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt ]; then \
 		cat $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt | sha512sum | cut -c 1-7 | \
@@ -63,7 +71,7 @@
 # If site local
 # Add site local and user, local commit, if local is dirty
 # Else not local
-# Add package version, op-build is dirty, op-build patches
+# Add package version, extraversion if linux, op-build is dirty, op-build patches
 if [ "$$($(2)_SITE_METHOD)" == "local" ]; then \
 echo -n "site_local-" >> $$($(2)_VERSION_FILE); \
 whoami | xargs echo -n >> $$($(2)_VERSION_FILE); \
@@ -81,6 +89,14 @@
 	sed "s/^\([0-9a-f]\{7\}\).*/\1/;s/$(1)-//;" >> $$($(2)_VERSION_FILE)) \
 	|| echo -n $$($(2)_VERSION) | sed -e 's/$(1)-//' >> $$($(2)_VERSION_FILE); \
 \
+if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
+	if ls $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile 1>/dev/null; then \
+		head $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile | grep EXTRAVERSION \
+		| cut -d ' ' -f 3 | \
+		xargs echo -n >> $$($(2)_VERSION_FILE); \
+	fi; \
+fi; \
+\
 cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | \
 	if grep -e "-dirty"; then \
 	echo -n "-opdirty" >> $$($(2)_VERSION_FILE); \
@@ -166,6 +182,25 @@
 # Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
 echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
 
+# Add a specific line for op-build if it has been overwritten
+if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
+echo -n "	op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+cd "$$(BR2_EXTERNAL)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
+	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+cd "$$(BR2_EXTERNAL)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
+	xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+fi
+
+# Include the currently checked-out buildroot version
+echo -n "	buildroot-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+cd "./buildroot"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
+	| sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
+	xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+
+
 # Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)
 $$(foreach verFile,$$(ALL_SUBPACKAGE_VERSIONS),
 	if [ -f $$(verFile) ]; then cat $$(verFile) \
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index e1f571d..7ec042b 100644
--- a/openpower/package/skiboot/Config.in
+++ b/openpower/package/skiboot/Config.in
@@ -1,15 +1,40 @@
+menu "Skiboot"
 
-config BR2_TARGET_SKIBOOT
+config BR2_PACKAGE_SKIBOOT
 	bool "skiboot"
 	depends on BR2_powerpc64 || BR2_powerpc64le
         default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
 	help
 	  Build skiboot POWER8 firmware
 
-if BR2_TARGET_SKIBOOT
+if BR2_PACKAGE_SKIBOOT
 
-config BR2_TARGET_SKIBOOT_EMBED_PAYLOAD
+config BR2_PACKAGE_SKIBOOT_EMBED_PAYLOAD
 	bool "Embed kernel payload in skiboot image"
 	depends on BR2_LINUX_KERNEL_ZIMAGE_EPAPR
 
+choice
+	prompt "Skiboot version"
+	default BR2_SKIBOOT_LATEST_VERSION
+
+config BR2_SKIBOOT_LATEST_VERSION
+	bool "Use skiboot stable"
+
+config BR2_SKIBOOT_CUSTOM_VERSION
+	bool "Custom version"
+
+endchoice
+
+config BR2_SKIBOOT_CUSTOM_VERSION_VALUE
+	string "skiboot version"
+	depends on BR2_SKIBOOT_CUSTOM_VERSION
+
+config BR2_SKIBOOT_VERSION
+	string
+	default "skiboot-5.2.0" if BR2_SKIBOOT_LATEST_VERSION
+	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
+		if BR2_SKIBOOT_CUSTOM_VERSION
+
 endif
+
+endmenu
diff --git a/openpower/package/skiboot/skiboot-0002-libflash-Provide-an-internal-parity-implementation-t.patch b/openpower/package/skiboot/skiboot-0002-libflash-Provide-an-internal-parity-implementation-t.patch
deleted file mode 100644
index e377567..0000000
--- a/openpower/package/skiboot/skiboot-0002-libflash-Provide-an-internal-parity-implementation-t.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From de70ad43ccee4dd51e9d38325c7713f590323a47 Mon Sep 17 00:00:00 2001
-From: Jeremy Kerr <jk@ozlabs.org>
-Date: Mon, 23 Feb 2015 16:43:53 +0800
-Subject: [PATCH] libflash: Provide an internal parity implementation, to
- remove libgcc dependency
-
-In commit 8f5b8616, we introduced a dependency on libgcc, for the
-__builtin_parityl() function in commit 6cfaa3ba.
-
-However, if we're building with a biarch compiler, we may not have a
-libgcc available.
-
-This commit removes the __builtin_parityl() call, and replaces with the
-equivalent instructions, and removes the dependency on libgcc.
-
-Although this is untested, I have confirmed that the __builtin_parityl()
-functions emits the same instructions (on power7 and power8, with
-gcc-4.9) as we're using in the parity() function.
-
-Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
----
- Makefile.main  |  5 ++---
- libflash/ecc.c | 14 +++++++++++++-
- 2 files changed, 15 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile.main b/Makefile.main
-index 665baf4..b5376fc 100644
---- a/Makefile.main
-+++ b/Makefile.main
-@@ -120,7 +120,6 @@ OBJS += $(LIBPORE)
- endif
- OBJS += $(LIBC) $(CCAN) $(DEVSRC_OBJ)
- OBJS_NO_VER = $(OBJS)
--EXTRA_LIBS = -Wl,-lgcc
- ALL_OBJS = $(OBJS) version.o
- 
- ALL_OBJS_1 = $(ALL_OBJS) asm/dummy_map.o
-@@ -130,12 +129,12 @@ $(TARGET).lid: $(TARGET).elf
- 	$(call Q,OBJCOPY, $(OBJCOPY) -O binary -S $^ $@, $@)
- 
- $(TARGET).tmp.elf: $(ALL_OBJS_1) $(TARGET).lds $(KERNEL)
--	$(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_1) $(EXTRA_LIBS) -o $@, $@)
-+	$(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_1) -o $@, $@)
- 
- asm/real_map.o : $(TARGET).tmp.map
- 
- $(TARGET).elf: $(ALL_OBJS_2) $(TARGET).lds $(KERNEL)
--	$(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_2) $(EXTRA_LIBS) -o $@, $@)
-+	$(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_2) -o $@, $@)
- 
- $(SUBDIRS):
- 	$(call Q,MKDIR,mkdir $@, $@)
-diff --git a/libflash/ecc.c b/libflash/ecc.c
-index 9293743..3d94594 100644
---- a/libflash/ecc.c
-+++ b/libflash/ecc.c
-@@ -88,6 +88,18 @@ static uint8_t syndromematrix[] = {
-         UE, UE, UE, UE,  4, UE, UE, UE, UE, UE, UE, UE, UE, UE, UE, UE,
- };
- 
-+static uint8_t parity(uint64_t data)
-+{
-+	uint8_t p;
-+
-+	asm volatile(
-+		"popcntb %1,%0\n"
-+		"prtyd   %1,%1\n"
-+		: "=r"(p) : "r"(data));
-+
-+	return p;
-+}
-+
- /**
-  * Create the ECC field corresponding to a 8-byte data field
-  *
-@@ -100,7 +112,7 @@ static uint8_t eccgenerate(uint64_t data)
- 	uint8_t result = 0;
- 
- 	for (i = 0; i < 8; i++)
--		result |= __builtin_parityl(eccmatrix[i] & data) << i;
-+		result |= parity(eccmatrix[i] & data) << i;
- 
- 	return result;
- }
--- 
-1.9.1
-
diff --git a/openpower/package/skiboot/skiboot-0003-Makefile-specify-abiv1.patch b/openpower/package/skiboot/skiboot-0003-Makefile-specify-abiv1.patch
deleted file mode 100644
index ad729d3..0000000
--- a/openpower/package/skiboot/skiboot-0003-Makefile-specify-abiv1.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 11bff93ad1ca613b1db9d96e9ea9c46b7d7bf48d Mon Sep 17 00:00:00 2001
-From: Jeremy Kerr <jk@ozlabs.org>
-Date: Thu, 5 Mar 2015 22:44:40 +1100
-Subject: [PATCH] Makefile: specify abiv1
-
-Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
----
- Makefile.main | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.main b/Makefile.main
-index 3c67037..76f0bd3 100644
---- a/Makefile.main
-+++ b/Makefile.main
-@@ -51,6 +51,7 @@ CPPFLAGS += -DBITS_PER_LONG=64 -DHAVE_BIG_ENDIAN
- CPPFLAGS += -ffreestanding
- 
- CFLAGS := -fno-strict-aliasing -fstack-protector-all -pie -mbig-endian -m64
-+CFLAGS += -mabi=elfv1
- CFLAGS += -Wl,--oformat,elf64-powerpc
- 
- ifeq ($(SKIBOOT_GCOV),1)
--- 
-1.9.1
-
diff --git a/openpower/package/skiboot/skiboot-0004-Fix-compile-failures-on-RHEL6.patch b/openpower/package/skiboot/skiboot-0004-Fix-compile-failures-on-RHEL6.patch
deleted file mode 100644
index 2f226a4..0000000
--- a/openpower/package/skiboot/skiboot-0004-Fix-compile-failures-on-RHEL6.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 3600e0e9bf8bb45039ba32df45994c28bb6419cc Mon Sep 17 00:00:00 2001
-From: Patrick Williams <iawillia@us.ibm.com>
-Date: Tue, 4 Aug 2015 11:27:09 -0500
-Subject: [PATCH] Fix compile failures on RHEL6.
-
----
- Makefile.main | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile.main b/Makefile.main
-index 3851c20..1f2b673 100644
---- a/Makefile.main
-+++ b/Makefile.main
-@@ -19,11 +19,9 @@ CWARNS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
- 	  -Werror-implicit-function-declaration -Wdeclaration-after-statement \
- 	  -Wno-pointer-sign -Wextra -Wno-sign-compare \
- 	  -Wmissing-prototypes -Wmissing-declarations \
--	  -Wwrite-strings -Wcast-align -Wjump-misses-init \
-+	  -Wwrite-strings -Wcast-align \
- 	  -Winit-self \
--	  -Wsuggest-attribute=const \
--	  -Wsuggest-attribute=noreturn \
--	  -Wframe-larger-than=1024 -Wstack-usage=1024 \
-+	  -Wframe-larger-than=1024 \
- 	  -Werror -Wno-error=format
- 
- # Host tools and options
--- 
-2.4.4
-
diff --git a/openpower/package/skiboot/skiboot.mk b/openpower/package/skiboot/skiboot.mk
index 3eee05e..90b2110 100644
--- a/openpower/package/skiboot/skiboot.mk
+++ b/openpower/package/skiboot/skiboot.mk
@@ -4,7 +4,8 @@
 #
 ################################################################################
 
-SKIBOOT_VERSION = skiboot-5.1.0-beta1
+SKIBOOT_VERSION = $(call qstrip,$(BR2_SKIBOOT_VERSION))
+
 SKIBOOT_SITE = $(call github,open-power,skiboot,$(SKIBOOT_VERSION))
 SKIBOOT_INSTALL_IMAGES = YES
 SKIBOOT_INSTALL_TARGET = NO
@@ -18,7 +19,7 @@
 SKIBOOT_MAKE_OPTS += KERNEL="$(BINARIES_DIR)/$(LINUX_IMAGE_NAME)"
 
 ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
-SKIBOOT_DEPENDENCIES += linux26-rebuild-with-initramfs
+SKIBOOT_DEPENDENCIES += linux-rebuild-with-initramfs
 else
 SKIBOOT_DEPENDENCIES += linux
 endif
diff --git a/openpower/scripts/fixup-target-var b/openpower/scripts/fixup-target-var
new file mode 100755
index 0000000..9c9bc5b
--- /dev/null
+++ b/openpower/scripts/fixup-target-var
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# replace /var/* symlinks with actual directories
+
+find $TARGET_DIR/var/ -type l |
+while read path
+do
+    [ -d "$path" ] || continue
+    rm -v $path
+    mkdir -v $path
+done
