diff mbox

[02/18] Upgrade gettext 0.18.1.1 to 0.18.3.2 with darwin support

Message ID 1407352684-7837-2-git-send-email-diorcet.yann@gmail.com
State Changes Requested
Delegated to: Kim
Headers show

Commit Message

Yann Diorcet Aug. 6, 2014, 7:17 p.m. UTC
---
 recipes/gettext/gettext-0.18.1.1/ac-fix.patch      |  12 -
 .../gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch  |  56 --
 .../gettext/gettext-0.18.1.1/libtool-bindir.patch  | 228 -------
 recipes/gettext/gettext-0.18.1.1/osx.patch         |  49 --
 ...-Woe32-link-errors-when-compiling-with-O0.patch | 672 +++++++++++++++++++++
 .../gettext-0.18.3.2/disable-examples.patch        |  12 +
 .../gettext-0.18-gettextpo-woe32-memchr.patch      |   0
 .../gettext-0.18.3.2/gettext-glibc-2.16.patch      |  45 ++
 recipes/gettext/gettext-0.18.3.2/osx.patch         |  25 +
 .../gettext/gettext-0.18.3.2/shared-import.patch   | 255 ++++++++
 recipes/gettext/gettext.inc                        |  20 +-
 recipes/gettext/gettext_0.18.1.1.oe                |  11 -
 recipes/gettext/gettext_0.18.1.1.oe.sig            |   1 -
 recipes/gettext/gettext_0.18.3.2.oe                |   7 +
 recipes/gettext/gettext_0.18.3.2.oe.sig            |   1 +
 15 files changed, 1028 insertions(+), 366 deletions(-)
 delete mode 100644 recipes/gettext/gettext-0.18.1.1/ac-fix.patch
 delete mode 100644 recipes/gettext/gettext-0.18.1.1/gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch
 delete mode 100644 recipes/gettext/gettext-0.18.1.1/libtool-bindir.patch
 delete mode 100644 recipes/gettext/gettext-0.18.1.1/osx.patch
 create mode 100644 recipes/gettext/gettext-0.18.3.2/120-Fix-Woe32-link-errors-when-compiling-with-O0.patch
 create mode 100644 recipes/gettext/gettext-0.18.3.2/disable-examples.patch
 rename recipes/gettext/{gettext-0.18.1.1 => gettext-0.18.3.2}/gettext-0.18-gettextpo-woe32-memchr.patch (100%)
 create mode 100644 recipes/gettext/gettext-0.18.3.2/gettext-glibc-2.16.patch
 create mode 100644 recipes/gettext/gettext-0.18.3.2/osx.patch
 create mode 100644 recipes/gettext/gettext-0.18.3.2/shared-import.patch
 delete mode 100644 recipes/gettext/gettext_0.18.1.1.oe
 delete mode 100644 recipes/gettext/gettext_0.18.1.1.oe.sig
 create mode 100644 recipes/gettext/gettext_0.18.3.2.oe
 create mode 100644 recipes/gettext/gettext_0.18.3.2.oe.sig
diff mbox

Patch

diff --git a/recipes/gettext/gettext-0.18.1.1/ac-fix.patch b/recipes/gettext/gettext-0.18.1.1/ac-fix.patch
deleted file mode 100644
index 5ffcb57..0000000
--- a/recipes/gettext/gettext-0.18.1.1/ac-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@ 
-diff -Nurd gettext-0.18.1.1/gettext-runtime/m4/ansi-c++.m4 gettext-0.18.1.1/gettext-runtime/m4/ansi-c++.m4
---- gettext-0.18.1.1/gettext-runtime/m4/ansi-c++.m4	2010-06-06 15:49:57.000000000 +0300
-+++ gettext-0.18.1.1/gettext-runtime/m4/ansi-c++.m4	2011-07-31 11:08:12.000000000 +0300
-@@ -11,7 +11,7 @@
- 
- AC_DEFUN([gt_PROG_ANSI_CXX],
- [
--AC_CHECK_PROGS(CXX, $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC, :)
-+AC_CHECK_TOOLS(CXX, $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC, :)
- if test "$CXX" != ":"; then
-   dnl Use a modified version of AC_PROG_CXX_WORKS that does not exit
-   dnl upon failure.
diff --git a/recipes/gettext/gettext-0.18.1.1/gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch b/recipes/gettext/gettext-0.18.1.1/gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch
deleted file mode 100644
index 9317360..0000000
--- a/recipes/gettext/gettext-0.18.1.1/gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch
+++ /dev/null
@@ -1,56 +0,0 @@ 
-Index: gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h
-===================================================================
---- gettext-0.18.1.1.orig/gettext-tools/gnulib-lib/stdio.in.h	2012-11-15 18:46:24.000000000 +0000
-+++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h	2012-11-15 19:14:37.000000000 +0000
-@@ -138,10 +138,12 @@
- #endif
- 
- /* It is very rare that the developer ever has full control of stdin,
--   so any use of gets warrants an unconditional warning.  Assume it is
--   always declared, since it is required by C89.  */
-+   so any use of gets warrants an unconditional warning.  */
- #undef gets
-+#ifdef HAVE_RAW_DECL_GETS
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-+#endif
-+#undef gets
- 
- #if @GNULIB_FOPEN@
- # if @REPLACE_FOPEN@
-Index: gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h
-===================================================================
---- gettext-0.18.1.1.orig/gettext-runtime/gnulib-lib/stdio.in.h	2010-05-17 19:56:12.000000000 +0000
-+++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h	2012-11-15 19:11:15.000000000 +0000
-@@ -138,10 +138,11 @@
- #endif
- 
- /* It is very rare that the developer ever has full control of stdin,
--   so any use of gets warrants an unconditional warning.  Assume it is
--   always declared, since it is required by C89.  */
-+   so any use of gets warrants an unconditional warning. */
- #undef gets
-+#ifdef HAVE_RAW_DECL_GETS
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-+#endif
- 
- #if @GNULIB_FOPEN@
- # if @REPLACE_FOPEN@
-Index: gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h
-===================================================================
---- gettext-0.18.1.1.orig/gettext-tools/libgettextpo/stdio.in.h	2010-05-17 19:58:03.000000000 +0000
-+++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h	2012-11-15 19:11:53.000000000 +0000
-@@ -138,10 +138,11 @@
- #endif
- 
- /* It is very rare that the developer ever has full control of stdin,
--   so any use of gets warrants an unconditional warning.  Assume it is
--   always declared, since it is required by C89.  */
-+   so any use of gets warrants an unconditional warning.  */
- #undef gets
-+#ifdef HAVE_RAW_DECL_GETS
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-+#endif
- 
- #if @GNULIB_FOPEN@
- # if @REPLACE_FOPEN@
-
diff --git a/recipes/gettext/gettext-0.18.1.1/libtool-bindir.patch b/recipes/gettext/gettext-0.18.1.1/libtool-bindir.patch
deleted file mode 100644
index ae3b9a8..0000000
--- a/recipes/gettext/gettext-0.18.1.1/libtool-bindir.patch
+++ /dev/null
@@ -1,228 +0,0 @@ 
-diff -urN gettext-0.18.1.1~orig/build-aux/ltmain.sh gettext-0.18.1.1/build-aux/ltmain.sh
---- gettext-0.18.1.1~orig/build-aux/ltmain.sh	2010-06-06 14:49:57.000000000 +0200
-+++ gettext-0.18.1.1/build-aux/ltmain.sh	2014-02-01 17:20:22.780770313 +0100
-@@ -170,6 +170,154 @@
- 
- # Generated shell functions inserted here.
- 
-+# These SED scripts presuppose an absolute path with a trailing slash.
-+pathcar='s,^/\([^/]*\).*$,\1,'
-+pathcdr='s,^/[^/]*,,'
-+removedotparts=':dotsl
-+		s@/\./@/@g
-+		t dotsl
-+		s,/\.$,/,'
-+collapseslashes='s@/\{1,\}@/@g'
-+finalslash='s,/*$,/,'
-+
-+# func_normal_abspath PATH
-+# Remove doubled-up and trailing slashes, "." path components,
-+# and cancel out any ".." path components in PATH after making
-+# it an absolute path.
-+#             value returned in "$func_normal_abspath_result"
-+func_normal_abspath ()
-+{
-+  # Start from root dir and reassemble the path.
-+  func_normal_abspath_result=
-+  func_normal_abspath_tpath=$1
-+  func_normal_abspath_altnamespace=
-+  case $func_normal_abspath_tpath in
-+    "")
-+      # Empty path, that just means $cwd.
-+      func_stripname '' '/' "`pwd`"
-+      func_normal_abspath_result=$func_stripname_result
-+      return
-+    ;;
-+    # The next three entries are used to spot a run of precisely
-+    # two leading slashes without using negated character classes;
-+    # we take advantage of case's first-match behaviour.
-+    ///*)
-+      # Unusual form of absolute path, do nothing.
-+    ;;
-+    //*)
-+      # Not necessarily an ordinary path; POSIX reserves leading '//'
-+      # and for example Cygwin uses it to access remote file shares
-+      # over CIFS/SMB, so we conserve a leading double slash if found.
-+      func_normal_abspath_altnamespace=/
-+    ;;
-+    /*)
-+      # Absolute path, do nothing.
-+    ;;
-+    *)
-+      # Relative path, prepend $cwd.
-+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-+    ;;
-+  esac
-+  # Cancel out all the simple stuff to save iterations.  We also want
-+  # the path to end with a slash for ease of parsing, so make sure
-+  # there is one (and only one) here.
-+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-+  while :; do
-+    # Processed it all yet?
-+    if test "$func_normal_abspath_tpath" = / ; then
-+      # If we ascended to the root using ".." the result may be empty now.
-+      if test -z "$func_normal_abspath_result" ; then
-+        func_normal_abspath_result=/
-+      fi
-+      break
-+    fi
-+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$pathcar"`
-+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-+        -e "$pathcdr"`
-+    # Figure out what to do with it
-+    case $func_normal_abspath_tcomponent in
-+      "")
-+        # Trailing empty path component, ignore it.
-+      ;;
-+      ..)
-+        # Parent dir; strip last assembled component from result.
-+        func_dirname "$func_normal_abspath_result"
-+        func_normal_abspath_result=$func_dirname_result
-+      ;;
-+      *)
-+        # Actual path component, append it.
-+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-+      ;;
-+    esac
-+  done
-+  # Restore leading double-slash if one was found on entry.
-+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-+}
-+
-+# func_relative_path SRCDIR DSTDIR
-+# generates a relative path from SRCDIR to DSTDIR, with a trailing
-+# slash if non-empty, suitable for immediately appending a filename
-+# without needing to append a separator.
-+#             value returned in "$func_relative_path_result"
-+func_relative_path ()
-+{
-+  func_relative_path_result=
-+  func_normal_abspath "$1"
-+  func_relative_path_tlibdir=$func_normal_abspath_result
-+  func_normal_abspath "$2"
-+  func_relative_path_tbindir=$func_normal_abspath_result
-+
-+  # Ascend the tree starting from libdir
-+  while :; do
-+    # check if we have found a prefix of bindir
-+    case $func_relative_path_tbindir in
-+      $func_relative_path_tlibdir)
-+        # found an exact match
-+        func_relative_path_tcancelled=
-+        break
-+        ;;
-+      $func_relative_path_tlibdir*)
-+        # found a matching prefix
-+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-+        func_relative_path_tcancelled=$func_stripname_result
-+        if test -z "$func_relative_path_result"; then
-+          func_relative_path_result=.
-+        fi
-+        break
-+        ;;
-+      *)
-+        func_dirname $func_relative_path_tlibdir
-+        func_relative_path_tlibdir=${func_dirname_result}
-+        if test "x$func_relative_path_tlibdir" = x ; then
-+          # Have to descend all the way to the root!
-+          func_relative_path_result=../$func_relative_path_result
-+          func_relative_path_tcancelled=$func_relative_path_tbindir
-+          break
-+        fi
-+        func_relative_path_result=../$func_relative_path_result
-+        ;;
-+    esac
-+  done
-+
-+  # Now calculate path; take care to avoid doubling-up slashes.
-+  func_stripname '' '/' "$func_relative_path_result"
-+  func_relative_path_result=$func_stripname_result
-+  func_stripname '/' '/' "$func_relative_path_tcancelled"
-+  if test "x$func_stripname_result" != x ; then
-+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-+  fi
-+
-+  # Normalisation. If bindir is libdir, return empty string,
-+  # else relative path ending with a slash; either way, target
-+  # file name can be directly appended.
-+  if test ! -z "$func_relative_path_result"; then
-+    func_stripname './' '' "$func_relative_path_result/"
-+    func_relative_path_result=$func_stripname_result
-+  fi
-+}
-+
- # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
- # is ksh but when the shell is invoked as "sh" and the current value of
- # the _XPG environment variable is not equal to 1 (one), the special
-@@ -1558,6 +1706,8 @@
- 
-   -all-static       do not do any dynamic linking at all
-   -avoid-version    do not add a version suffix if possible
-+  -bindir BINDIR    specify path to binaries directory (for systems where
-+                    libraries must be found in the PATH setting at runtime)
-   -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-@@ -4208,6 +4358,7 @@
-     new_inherited_linker_flags=
- 
-     avoid_version=no
-+    bindir=$sharedlibdir
-     dlfiles=
-     dlprefiles=
-     dlself=no
-@@ -4300,6 +4451,11 @@
- 	esac
- 
- 	case $prev in
-+	bindir)
-+	  bindir="$arg"
-+	  prev=
-+	  continue
-+	  ;;
- 	dlfiles|dlprefiles)
- 	  if test "$preload" = no; then
- 	    # Add the symbol object into the linking commands.
-@@ -4561,6 +4717,11 @@
- 	continue
- 	;;
- 
-+      -bindir)
-+	prev=bindir
-+	continue
-+	;;
-+
-       -dlopen)
- 	prev=dlfiles
- 	continue
-@@ -8257,9 +8418,27 @@
- 	  fi
- 	  $RM $output
- 	  # place dlname in correct position for cygwin
-+	  # In fact, it would be nice if we could use this code for all target
-+	  # systems that can't hard-code library paths into their executables
-+	  # and that have no shared library path variable independent of PATH,
-+	  # but it turns out we can't easily determine that from inspecting
-+	  # libtool variables, so we have to hard-code the OSs to which it
-+	  # applies here; at the moment, that means platforms that use the PE
-+	  # object format with DLL files.  See the long comment at the top of
-+	  # tests/bindir.at for full details.
- 	  tdlname=$dlname
- 	  case $host,$output,$installed,$module,$dlname in
--	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-+	      # If a -bindir argument was supplied, place the dll there.
-+	      if test "x$bindir" != x ;
-+	      then
-+		func_relative_path "$install_libdir" "$bindir"
-+		tdlname=$func_relative_path_result$dlname
-+	      else
-+		# Otherwise fall back on heuristic.
-+		tdlname=../bin/$dlname
-+	      fi
-+	      ;;
- 	  esac
- 	  $ECHO > $output "\
- # $outputname - a libtool library file
diff --git a/recipes/gettext/gettext-0.18.1.1/osx.patch b/recipes/gettext/gettext-0.18.1.1/osx.patch
deleted file mode 100644
index 7f90deb..0000000
--- a/recipes/gettext/gettext-0.18.1.1/osx.patch
+++ /dev/null
@@ -1,49 +0,0 @@ 
-diff -urN gettext-0.18.1.1/build-aux/install-reloc gettext-0.18.1.1.mod/build-aux/install-reloc
---- gettext-0.18.1.1/build-aux/install-reloc	2012-10-08 15:46:56.000000000 +0200
-+++ gettext-0.18.1.1.mod/build-aux/install-reloc	2012-10-08 15:47:01.000000000 +0200
-@@ -160,6 +160,8 @@
-              "$srcdir"/canonicalize-lgpl.c \
-              "$srcdir"/malloca.c \
-              "$srcdir"/relocatable.c \
-+             "$srcdir"/lstat.c \
-+             "$srcdir"/stat.c \
-              "$srcdir"/setenv.c \
-              "$srcdir"/strerror.c \
-              "$srcdir"/c-ctype.c \
-diff -urN gettext-0.18.1.1/gettext-tools/Makefile.in gettext-0.18.1.1.mod/gettext-tools/Makefile.in
---- gettext-0.18.1.1/gettext-tools/Makefile.in	2010-06-06 22:12:33.000000000 +0200
-+++ gettext-0.18.1.1.mod/gettext-tools/Makefile.in	2012-10-08 14:54:25.000000000 +0200
-@@ -1248,7 +1248,7 @@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
- ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
--SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples
-+SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests
- 
- # Allow users to use "gnulib-tool --update".
- 
-diff -urN gettext-0.18.1.1/gettext-tools/configure gettext-0.18.1.1.mod/gettext-tools/configure
---- gettext-0.18.1.1/gettext-tools/configure	2010-06-06 22:12:20.000000000 +0200
-+++ gettext-0.18.1.1.mod/gettext-tools/configure	2012-10-08 14:54:59.000000000 +0200
-@@ -40606,7 +40606,9 @@
- #include <stdlib.h>
- #include <string.h> /* for strcpy */
- /* The stpncpy prototype is missing in <string.h> on AIX 4.  */
-+#ifndef stpncpy 
- extern char *stpncpy (char *dest, const char *src, size_t n);
-+#endif
- int main () {
-   const char *src = "Hello";
-   char dest[10];
-diff -urN gettext-0.18.1.1/gettext-tools/gnulib-lib/stpncpy.c gettext-0.18.1.1.mod/gettext-tools/gnulib-lib/stpncpy.c
---- gettext-0.18.1.1/gettext-tools/gnulib-lib/stpncpy.c	2010-05-24 11:42:47.000000000 +0200
-+++ gettext-0.18.1.1.mod/gettext-tools/gnulib-lib/stpncpy.c	2012-10-08 15:00:12.000000000 +0200
-@@ -25,7 +25,7 @@
- #include <string.h>
- 
- #ifndef weak_alias
--# define __stpncpy stpncpy
-+//# define __stpncpy stpncpy
- #endif
- 
- /* Copy no more than N bytes of SRC to DST, returning a pointer past the
diff --git a/recipes/gettext/gettext-0.18.3.2/120-Fix-Woe32-link-errors-when-compiling-with-O0.patch b/recipes/gettext/gettext-0.18.3.2/120-Fix-Woe32-link-errors-when-compiling-with-O0.patch
new file mode 100644
index 0000000..b6dd9b8
--- /dev/null
+++ b/recipes/gettext/gettext-0.18.3.2/120-Fix-Woe32-link-errors-when-compiling-with-O0.patch
@@ -0,0 +1,672 @@ 
+diff -urN a/gettext-tools/src/color.c b/gettext-tools/src/color.c
+--- a/gettext-tools/src/color.c	2013-04-15 08:45:13.000000000 +0200
++++ b/gettext-tools/src/color.c	2014-06-12 14:37:43.235013449 +0200
+@@ -28,6 +28,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
++#include "ostream.h"
+ #include "term-ostream.h"
+ #include "xalloc.h"
+ #include "relocatable.h"
+diff -urN a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am
+--- a/gettext-tools/src/Makefile.am	2013-12-20 04:19:45.000000000 +0100
++++ b/gettext-tools/src/Makefile.am	2014-06-12 21:31:46.323988615 +0200
+@@ -141,22 +141,51 @@
+   format-lua.c \
+   format-javascript.c
+ 
++if !WOE32DLL
++COLOR_SOURCE = color.c
++else
++COLOR_SOURCE = ../woe32dll/c++color.cc
++endif
++
++if !WOE32DLL
++OUTPUT_SOURCE = \
++  write-catalog.c \
++  write-po.c \
++  write-properties.c \
++  write-stringtable.c
++else
++OUTPUT_SOURCE = \
++  ../woe32dll/c++write-catalog.cc \
++  ../woe32dll/c++write-po.cc \
++  ../woe32dll/c++write-properties.cc \
++  ../woe32dll/c++write-stringtable.cc
++endif
++
+ # libgettextsrc contains all code that is needed by at least two programs.
+ libgettextsrc_la_SOURCES = \
+ $(COMMON_SOURCE) read-catalog.c \
+-color.c write-catalog.c write-properties.c write-stringtable.c write-po.c \
++$(COLOR_SOURCE) $(OUTPUT_SOURCE) \
+ msgl-ascii.c msgl-iconv.c msgl-equal.c msgl-cat.c msgl-header.c msgl-english.c \
+ msgl-check.c file-list.c msgl-charset.c po-time.c plural-exp.c plural-eval.c \
+ plural-table.c \
+ $(FORMAT_SOURCE)
+ 
++
+ # msggrep needs pattern matching.
+ LIBGREP = ../libgrep/libgrep.a
+ 
+ # Source dependencies.
++if !WOE32DLL
+ msgcmp_SOURCES = msgcmp.c
++else
++msgcmp_SOURCES = ../woe32dll/c++msgcmp.cc
++endif
+ msgcmp_SOURCES += msgl-fsearch.c
++if !WOE32DLL
+ msgfmt_SOURCES = msgfmt.c
++else
++msgfmt_SOURCES = ../woe32dll/c++msgfmt.cc
++endif
+ msgfmt_SOURCES += \
+   write-mo.c write-java.c write-csharp.c write-resources.c write-tcl.c \
+   write-qt.c ../../gettext-runtime/intl/hash-string.c
+@@ -166,7 +195,11 @@
+ msgmerge_SOURCES = ../woe32dll/c++msgmerge.cc
+ endif
+ msgmerge_SOURCES += msgl-fsearch.c lang-table.c plural-count.c
++if !WOE32DLL
+ msgunfmt_SOURCES = msgunfmt.c
++else
++msgunfmt_SOURCES = ../woe32dll/c++msgunfmt.cc
++endif
+ msgunfmt_SOURCES += \
+   read-mo.c read-java.c read-csharp.c read-resources.c read-tcl.c
+ if !WOE32DLL
+@@ -203,7 +236,11 @@
+ else
+ msgen_SOURCES = ../woe32dll/c++msgen.cc
+ endif
++if !WOE32DLL
+ msgexec_SOURCES = msgexec.c
++else
++msgexec_SOURCES = ../woe32dll/c++msgexec.cc
++endif
+ if !WOE32DLL
+ msgfilter_SOURCES = msgfilter.c
+ else
+@@ -215,7 +252,11 @@
+ else
+ msggrep_SOURCES = ../woe32dll/c++msggrep.cc
+ endif
++if !WOE32DLL
+ msginit_SOURCES = msginit.c
++else
++msginit_SOURCES = ../woe32dll/c++msginit.cc
++endif
+ msginit_SOURCES += lang-table.c plural-count.c
+ msginit_SOURCES += ../../gettext-runtime/intl/localealias.c
+ # This is needed because on Solaris, localealias.c requires the symbol
+diff -urN a/gettext-tools/src/Makefile.in b/gettext-tools/src/Makefile.in
+--- a/gettext-tools/src/Makefile.in	2014-01-07 07:18:52.000000000 +0100
++++ b/gettext-tools/src/Makefile.in	2014-06-12 14:37:43.231013623 +0200
+@@ -377,16 +377,20 @@
+ am__libgettextsrc_la_SOURCES_DIST = message.c po-error.c po-xerror.c \
+ 	read-catalog-abstract.c po-lex.c po-gram-gen.y po-charset.c \
+ 	read-po.c read-properties.c read-stringtable.c open-catalog.c \
+-	dir-list.c str-list.c read-catalog.c color.c write-catalog.c \
+-	write-properties.c write-stringtable.c write-po.c msgl-ascii.c \
+-	msgl-iconv.c msgl-equal.c msgl-cat.c msgl-header.c \
+-	msgl-english.c msgl-check.c file-list.c msgl-charset.c \
+-	po-time.c plural-exp.c plural-eval.c plural-table.c format.c \
+-	format-invalid.h format-c.c format-c-parse.h format-sh.c \
+-	format-python.c format-python-brace.c format-lisp.c \
+-	format-elisp.c format-librep.c format-scheme.c format-java.c \
+-	format-csharp.c format-awk.c format-pascal.c format-ycp.c \
+-	format-tcl.c format-perl.c format-perl-brace.c format-php.c \
++	dir-list.c str-list.c read-catalog.c color.c \
++	../woe32dll/c++color.cc write-catalog.c write-po.c \
++	write-properties.c write-stringtable.c \
++	../woe32dll/c++write-catalog.cc ../woe32dll/c++write-po.cc \
++	../woe32dll/c++write-properties.cc \
++	../woe32dll/c++write-stringtable.cc msgl-ascii.c msgl-iconv.c \
++	msgl-equal.c msgl-cat.c msgl-header.c msgl-english.c \
++	msgl-check.c file-list.c msgl-charset.c po-time.c plural-exp.c \
++	plural-eval.c plural-table.c format.c format-invalid.h \
++	format-c.c format-c-parse.h format-sh.c format-python.c \
++	format-python-brace.c format-lisp.c format-elisp.c \
++	format-librep.c format-scheme.c format-java.c format-csharp.c \
++	format-awk.c format-pascal.c format-ycp.c format-tcl.c \
++	format-perl.c format-perl-brace.c format-php.c \
+ 	format-gcc-internal.c format-gfc-internal.c format-qt.c \
+ 	format-qt-plural.c format-kde.c format-boost.c format-lua.c \
+ 	format-javascript.c ../woe32dll/c++format.cc \
+@@ -400,7 +404,17 @@
+ 	libgettextsrc_la-read-stringtable.lo \
+ 	libgettextsrc_la-open-catalog.lo libgettextsrc_la-dir-list.lo \
+ 	libgettextsrc_la-str-list.lo
+-@WOE32DLL_FALSE@am__objects_2 = libgettextsrc_la-format.lo \
++@WOE32DLL_FALSE@am__objects_2 = libgettextsrc_la-color.lo
++@WOE32DLL_TRUE@am__objects_2 = libgettextsrc_la-c++color.lo
++@WOE32DLL_FALSE@am__objects_3 = libgettextsrc_la-write-catalog.lo \
++@WOE32DLL_FALSE@	libgettextsrc_la-write-po.lo \
++@WOE32DLL_FALSE@	libgettextsrc_la-write-properties.lo \
++@WOE32DLL_FALSE@	libgettextsrc_la-write-stringtable.lo
++@WOE32DLL_TRUE@am__objects_3 = libgettextsrc_la-c++write-catalog.lo \
++@WOE32DLL_TRUE@	libgettextsrc_la-c++write-po.lo \
++@WOE32DLL_TRUE@	libgettextsrc_la-c++write-properties.lo \
++@WOE32DLL_TRUE@	libgettextsrc_la-c++write-stringtable.lo
++@WOE32DLL_FALSE@am__objects_4 = libgettextsrc_la-format.lo \
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-c.lo \
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-sh.lo \
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-python.lo \
+@@ -426,7 +440,7 @@
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-boost.lo \
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-lua.lo \
+ @WOE32DLL_FALSE@	libgettextsrc_la-format-javascript.lo
+-@WOE32DLL_TRUE@am__objects_2 = libgettextsrc_la-c++format.lo \
++@WOE32DLL_TRUE@am__objects_4 = libgettextsrc_la-c++format.lo \
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-c.lo \
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-sh.lo \
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-python.lo \
+@@ -452,21 +466,18 @@
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-boost.lo \
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-lua.lo \
+ @WOE32DLL_TRUE@	libgettextsrc_la-format-javascript.lo
+-@WOE32DLL_TRUE@am__objects_3 = libgettextsrc_la-gettextsrc-exports.lo
++@WOE32DLL_TRUE@am__objects_5 = libgettextsrc_la-gettextsrc-exports.lo
+ am_libgettextsrc_la_OBJECTS = $(am__objects_1) \
+-	libgettextsrc_la-read-catalog.lo libgettextsrc_la-color.lo \
+-	libgettextsrc_la-write-catalog.lo \
+-	libgettextsrc_la-write-properties.lo \
+-	libgettextsrc_la-write-stringtable.lo \
+-	libgettextsrc_la-write-po.lo libgettextsrc_la-msgl-ascii.lo \
++	libgettextsrc_la-read-catalog.lo $(am__objects_2) \
++	$(am__objects_3) libgettextsrc_la-msgl-ascii.lo \
+ 	libgettextsrc_la-msgl-iconv.lo libgettextsrc_la-msgl-equal.lo \
+ 	libgettextsrc_la-msgl-cat.lo libgettextsrc_la-msgl-header.lo \
+ 	libgettextsrc_la-msgl-english.lo \
+ 	libgettextsrc_la-msgl-check.lo libgettextsrc_la-file-list.lo \
+ 	libgettextsrc_la-msgl-charset.lo libgettextsrc_la-po-time.lo \
+ 	libgettextsrc_la-plural-exp.lo libgettextsrc_la-plural-eval.lo \
+-	libgettextsrc_la-plural-table.lo $(am__objects_2) \
+-	$(am__objects_3)
++	libgettextsrc_la-plural-table.lo $(am__objects_4) \
++	$(am__objects_5)
+ libgettextsrc_la_OBJECTS = $(am_libgettextsrc_la_OBJECTS)
+ PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+ am_hostname_OBJECTS = hostname-hostname.$(OBJEXT)
+@@ -1902,14 +1913,27 @@
+ @WOE32DLL_TRUE@	format-gcc-internal.c format-gfc-internal.c \
+ @WOE32DLL_TRUE@	format-qt.c format-qt-plural.c format-kde.c \
+ @WOE32DLL_TRUE@	format-boost.c format-lua.c format-javascript.c
++@WOE32DLL_FALSE@COLOR_SOURCE = color.c
++@WOE32DLL_TRUE@COLOR_SOURCE = ../woe32dll/c++color.cc
++@WOE32DLL_FALSE@OUTPUT_SOURCE = \
++@WOE32DLL_FALSE@  write-catalog.c \
++@WOE32DLL_FALSE@  write-po.c \
++@WOE32DLL_FALSE@  write-properties.c \
++@WOE32DLL_FALSE@  write-stringtable.c
++
++@WOE32DLL_TRUE@OUTPUT_SOURCE = \
++@WOE32DLL_TRUE@  ../woe32dll/c++write-catalog.cc \
++@WOE32DLL_TRUE@  ../woe32dll/c++write-po.cc \
++@WOE32DLL_TRUE@  ../woe32dll/c++write-properties.cc \
++@WOE32DLL_TRUE@  ../woe32dll/c++write-stringtable.cc
++
+ 
+ # libgettextsrc contains all code that is needed by at least two programs.
+-libgettextsrc_la_SOURCES = $(COMMON_SOURCE) read-catalog.c color.c \
+-	write-catalog.c write-properties.c write-stringtable.c \
+-	write-po.c msgl-ascii.c msgl-iconv.c msgl-equal.c msgl-cat.c \
+-	msgl-header.c msgl-english.c msgl-check.c file-list.c \
+-	msgl-charset.c po-time.c plural-exp.c plural-eval.c \
+-	plural-table.c $(FORMAT_SOURCE) $(am__append_1)
++libgettextsrc_la_SOURCES = $(COMMON_SOURCE) read-catalog.c \
++	$(COLOR_SOURCE) $(OUTPUT_SOURCE) msgl-ascii.c msgl-iconv.c \
++	msgl-equal.c msgl-cat.c msgl-header.c msgl-english.c \
++	msgl-check.c file-list.c msgl-charset.c po-time.c plural-exp.c \
++	plural-eval.c plural-table.c $(FORMAT_SOURCE) $(am__append_1)
+ 
+ # msggrep needs pattern matching.
+ LIBGREP = ../libgrep/libgrep.a
+@@ -2476,15 +2500,15 @@
+ libgettextsrc_la-write-catalog.lo: write-catalog.c
+ 	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-write-catalog.lo `test -f 'write-catalog.c' || echo '$(srcdir)/'`write-catalog.c
+ 
++libgettextsrc_la-write-po.lo: write-po.c
++	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-write-po.lo `test -f 'write-po.c' || echo '$(srcdir)/'`write-po.c
++
+ libgettextsrc_la-write-properties.lo: write-properties.c
+ 	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-write-properties.lo `test -f 'write-properties.c' || echo '$(srcdir)/'`write-properties.c
+ 
+ libgettextsrc_la-write-stringtable.lo: write-stringtable.c
+ 	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-write-stringtable.lo `test -f 'write-stringtable.c' || echo '$(srcdir)/'`write-stringtable.c
+ 
+-libgettextsrc_la-write-po.lo: write-po.c
+-	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-write-po.lo `test -f 'write-po.c' || echo '$(srcdir)/'`write-po.c
+-
+ libgettextsrc_la-msgl-ascii.lo: msgl-ascii.c
+ 	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgettextsrc_la-msgl-ascii.lo `test -f 'msgl-ascii.c' || echo '$(srcdir)/'`msgl-ascii.c
+ 
+@@ -2980,6 +3004,21 @@
+ .cc.lo:
+ 	$(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $<
+ 
++libgettextsrc_la-c++color.lo: ../woe32dll/c++color.cc
++	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++color.lo `test -f '../woe32dll/c++color.cc' || echo '$(srcdir)/'`../woe32dll/c++color.cc
++
++libgettextsrc_la-c++write-catalog.lo: ../woe32dll/c++write-catalog.cc
++	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++write-catalog.lo `test -f '../woe32dll/c++write-catalog.cc' || echo '$(srcdir)/'`../woe32dll/c++write-catalog.cc
++
++libgettextsrc_la-c++write-po.lo: ../woe32dll/c++write-po.cc
++	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++write-po.lo `test -f '../woe32dll/c++write-po.cc' || echo '$(srcdir)/'`../woe32dll/c++write-po.cc
++
++libgettextsrc_la-c++write-properties.lo: ../woe32dll/c++write-properties.cc
++	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++write-properties.lo `test -f '../woe32dll/c++write-properties.cc' || echo '$(srcdir)/'`../woe32dll/c++write-properties.cc
++
++libgettextsrc_la-c++write-stringtable.lo: ../woe32dll/c++write-stringtable.cc
++	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++write-stringtable.lo `test -f '../woe32dll/c++write-stringtable.cc' || echo '$(srcdir)/'`../woe32dll/c++write-stringtable.cc
++
+ libgettextsrc_la-c++format.lo: ../woe32dll/c++format.cc
+ 	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgettextsrc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgettextsrc_la-c++format.lo `test -f '../woe32dll/c++format.cc' || echo '$(srcdir)/'`../woe32dll/c++format.cc
+ 
+diff -urN a/gettext-tools/src/msginit.c b/gettext-tools/src/msginit.c
+--- a/gettext-tools/src/msginit.c	2013-04-18 12:13:27.000000000 +0200
++++ b/gettext-tools/src/msginit.c	2014-06-12 18:57:05.773102938 +0200
+@@ -96,7 +96,13 @@
+ 
+ #define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
+ extern const char * _nl_expand_alias (const char *name);
++#ifdef __cplusplus
++}
++#endif
+ 
+ /* Locale name.  */
+ static const char *locale;
+diff -urN a/gettext-tools/src/read-csharp.h b/gettext-tools/src/read-csharp.h
+--- a/gettext-tools/src/read-csharp.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/read-csharp.h	2014-06-12 18:39:12.959396049 +0200
+@@ -20,11 +20,18 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Read the Java resource given by resource_name and locale_name.
+    Returns a list of messages.  */
+ extern msgdomain_list_ty *
+        msgdomain_read_csharp (const char *resource_name,
+                               const char *locale_name,
+                               const char *directory);
++#ifdef __cplusplus
++}
++#endif
+ 
+ #endif /* _READ_CSHARP_H */
+diff -urN a/gettext-tools/src/read-java.h b/gettext-tools/src/read-java.h
+--- a/gettext-tools/src/read-java.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/read-java.h	2014-06-12 18:33:39.347411372 +0200
+@@ -20,10 +20,18 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Read the Java resource given by resource_name and locale_name.
+    Returns a list of messages.  */
+ extern msgdomain_list_ty *
+        msgdomain_read_java (const char *resource_name,
+                             const char *locale_name);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _READ_JAVA_H */
+diff -urN a/gettext-tools/src/read-mo.h b/gettext-tools/src/read-mo.h
+--- a/gettext-tools/src/read-mo.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/read-mo.h	2014-06-12 18:40:09.846089315 +0200
+@@ -20,7 +20,15 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Reads an existing .mo file and adds the messages to mlp.  */
+ extern void read_mo_file (message_list_ty *mlp, const char *filename);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _READ_MO_H */
+diff -urN a/gettext-tools/src/read-resources.h b/gettext-tools/src/read-resources.h
+--- a/gettext-tools/src/read-resources.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/read-resources.h	2014-06-12 18:40:44.169308069 +0200
+@@ -20,8 +20,16 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Reads an existing binary C# .resources file and adds the messages
+    to mlp.  */
+ extern void read_resources_file (message_list_ty *mlp, const char *filename);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _READ_RESOURCES_H */
+diff -urN a/gettext-tools/src/read-tcl.h b/gettext-tools/src/read-tcl.h
+--- a/gettext-tools/src/read-tcl.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/read-tcl.h	2014-06-12 18:39:55.110426014 +0200
+@@ -20,9 +20,17 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Read the Tcl msg file given by locale_name and directory.
+    Returns a list of messages.  */
+ extern msgdomain_list_ty *
+        msgdomain_read_tcl (const char *locale_name, const char *directory);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _READ_TCL_H */
+diff -urN a/gettext-tools/src/write-csharp.h b/gettext-tools/src/write-csharp.h
+--- a/gettext-tools/src/write-csharp.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-csharp.h	2014-06-12 18:47:22.496650218 +0200
+@@ -20,6 +20,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Write a C# satellite assembly DLL file.  mlp is a list containing the
+    messages to be output.  resource_name is the name of the resource
+    (with dot separators), locale_name is the locale name (with underscore
+@@ -32,4 +36,8 @@
+                                const char *locale_name,
+                                const char *directory);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _WRITE_CSHARP_H */
+diff -urN a/gettext-tools/src/write-java.h b/gettext-tools/src/write-java.h
+--- a/gettext-tools/src/write-java.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-java.h	2014-06-12 18:47:44.048200376 +0200
+@@ -22,6 +22,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Write a Java ResourceBundle class file.  mlp is a list containing the
+    messages to be output.  resource_name is the name of the resource
+    (with dot separators), locale_name is the locale name (with underscore
+@@ -35,4 +39,8 @@
+                              const char *directory,
+                              bool assume_java2);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _WRITE_JAVA_H */
+diff -urN a/gettext-tools/src/write-mo.h b/gettext-tools/src/write-mo.h
+--- a/gettext-tools/src/write-mo.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-mo.h	2014-06-12 18:46:00.506373348 +0200
+@@ -23,6 +23,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Alignment of strings in resulting .mo file.  */
+ extern size_t alignment;
+ 
+@@ -39,5 +43,8 @@
+        msgdomain_write_mo (message_list_ty *mlp,
+                            const char *domain_name,
+                            const char *file_name);
++#ifdef __cplusplus
++}
++#endif
+ 
+ #endif /* _WRITE_MO_H */
+diff -urN a/gettext-tools/src/write-qt.h b/gettext-tools/src/write-qt.h
+--- a/gettext-tools/src/write-qt.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-qt.h	2014-06-12 18:46:21.085939661 +0200
+@@ -20,6 +20,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Write a Qt .qm file.  mlp is a list containing the messages to be output.
+    domain_name is the domain name, file_name is the desired file name.
+    Return 0 if ok, nonzero on error.  */
+@@ -27,4 +31,8 @@
+        msgdomain_write_qt (message_list_ty *mlp, const char *canon_encoding,
+                            const char *domain_name, const char *file_name);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _WRITE_QT_H */
+diff -urN a/gettext-tools/src/write-resources.h b/gettext-tools/src/write-resources.h
+--- a/gettext-tools/src/write-resources.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-resources.h	2014-06-12 18:45:36.086894483 +0200
+@@ -20,6 +20,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Output the contents of a PO file as a binary C# .resources file.
+    Return 0 if ok, nonzero on error.  */
+ extern int
+@@ -28,4 +32,8 @@
+                                          const char *domain_name,
+                                          const char *file_name);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _WRITE_RESOURCES_H */
+diff -urN a/gettext-tools/src/write-tcl.h b/gettext-tools/src/write-tcl.h
+--- a/gettext-tools/src/write-tcl.h	2013-01-09 05:01:27.000000000 +0100
++++ b/gettext-tools/src/write-tcl.h	2014-06-12 18:46:40.449532124 +0200
+@@ -20,6 +20,10 @@
+ 
+ #include "message.h"
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /* Write a Tcl msg file.  mlp is a list containing the messages to be output.
+    locale_name is the locale name (with underscore separators), directory is
+    the base directory.
+@@ -29,4 +33,8 @@
+                             const char *locale_name,
+                             const char *directory);
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _WRITE_TCL_H */
+diff -urN a/gettext-tools/woe32dll/c++color.cc b/gettext-tools/woe32dll/c++color.cc
+--- a/gettext-tools/woe32dll/c++color.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++color.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../src/color.c"
+diff -urN a/gettext-tools/woe32dll/c++file-ostream.cc b/gettext-tools/woe32dll/c++file-ostream.cc
+--- a/gettext-tools/woe32dll/c++file-ostream.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++file-ostream.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1,2 @@
++#include "../gnulib-lib/file-ostream.c"
++
+diff -urN a/gettext-tools/woe32dll/c++html-ostream.cc b/gettext-tools/woe32dll/c++html-ostream.cc
+--- a/gettext-tools/woe32dll/c++html-ostream.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++html-ostream.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../gnulib-lib/html-ostream.c"
+diff -urN a/gettext-tools/woe32dll/c++msgcmp.cc b/gettext-tools/woe32dll/c++msgcmp.cc
+--- a/gettext-tools/woe32dll/c++msgcmp.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++msgcmp.cc	2014-06-12 14:42:09.880340787 +0200
+@@ -0,0 +1 @@
++#include "../src/msgcmp.c"
+diff -urN a/gettext-tools/woe32dll/c++msgexec.cc b/gettext-tools/woe32dll/c++msgexec.cc
+--- a/gettext-tools/woe32dll/c++msgexec.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++msgexec.cc	2014-06-12 21:32:19.575178015 +0200
+@@ -0,0 +1 @@
++#include "../src/msgexec.c"
+diff -urN a/gettext-tools/woe32dll/c++msgfmt.cc b/gettext-tools/woe32dll/c++msgfmt.cc
+--- a/gettext-tools/woe32dll/c++msgfmt.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++msgfmt.cc	2014-06-12 14:59:25.119555208 +0200
+@@ -0,0 +1 @@
++#include "../src/msgfmt.c"
+diff -urN a/gettext-tools/woe32dll/c++msginit.cc b/gettext-tools/woe32dll/c++msginit.cc
+--- a/gettext-tools/woe32dll/c++msginit.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++msginit.cc	2014-06-12 14:52:48.396377567 +0200
+@@ -0,0 +1 @@
++#include "../src/msginit.c"
+diff -urN a/gettext-tools/woe32dll/c++msgunfmt.cc b/gettext-tools/woe32dll/c++msgunfmt.cc
+--- a/gettext-tools/woe32dll/c++msgunfmt.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++msgunfmt.cc	2014-06-12 14:59:33.155303211 +0200
+@@ -0,0 +1 @@
++#include "../src/msgunfmt.c"
+diff -urN a/gettext-tools/woe32dll/c++styled-ostream.cc b/gettext-tools/woe32dll/c++styled-ostream.cc
+--- a/gettext-tools/woe32dll/c++styled-ostream.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++styled-ostream.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../gnulib-lib/styled-ostream.c"
+diff -urN a/gettext-tools/woe32dll/c++term-ostream.cc b/gettext-tools/woe32dll/c++term-ostream.cc
+--- a/gettext-tools/woe32dll/c++term-ostream.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++term-ostream.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../gnulib-lib/term-ostream.c"
+diff -urN a/gettext-tools/woe32dll/c++write-catalog.cc b/gettext-tools/woe32dll/c++write-catalog.cc
+--- a/gettext-tools/woe32dll/c++write-catalog.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++write-catalog.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../src/write-catalog.c"
+diff -urN a/gettext-tools/woe32dll/c++write-po.cc b/gettext-tools/woe32dll/c++write-po.cc
+--- a/gettext-tools/woe32dll/c++write-po.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++write-po.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../src/write-po.c"
+diff -urN a/gettext-tools/woe32dll/c++write-properties.cc b/gettext-tools/woe32dll/c++write-properties.cc
+--- a/gettext-tools/woe32dll/c++write-properties.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++write-properties.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../src/write-properties.c"
+diff -urN a/gettext-tools/woe32dll/c++write-stringtable.cc b/gettext-tools/woe32dll/c++write-stringtable.cc
+--- a/gettext-tools/woe32dll/c++write-stringtable.cc	1970-01-01 01:00:00.000000000 +0100
++++ b/gettext-tools/woe32dll/c++write-stringtable.cc	2014-06-12 14:37:43.235013449 +0200
+@@ -0,0 +1 @@
++#include "../src/write-stringtable.c"
+diff -urN a/gnulib-local/modules/file-ostream b/gnulib-local/modules/file-ostream
+--- a/gnulib-local/modules/file-ostream	2013-01-21 03:36:18.000000000 +0100
++++ b/gnulib-local/modules/file-ostream	2014-06-12 14:37:43.235013449 +0200
+@@ -12,7 +12,11 @@
+ configure.ac:
+ 
+ Makefile.am:
++if !WOE32DLL
+ lib_SOURCES += file-ostream.c
++else
++lib_SOURCES += ../woe32dll/c++file-ostream.cc
++endif
+ # This is a Makefile rule that generates multiple files at once; see the
+ # automake documentation, node "Multiple Outputs", for details.
+ file-ostream.h : $(top_srcdir)/build-aux/moopp file-ostream.oo.h file-ostream.oo.c ostream.oo.h
+diff -urN a/gnulib-local/modules/html-ostream b/gnulib-local/modules/html-ostream
+--- a/gnulib-local/modules/html-ostream	2013-01-21 03:36:18.000000000 +0100
++++ b/gnulib-local/modules/html-ostream	2014-06-12 14:37:43.235013449 +0200
+@@ -15,7 +15,11 @@
+ configure.ac:
+ 
+ Makefile.am:
++if !WOE32DLL
+ lib_SOURCES += html-ostream.c
++else
++lib_SOURCES += ../woe32dll/c++html-ostream.cc
++endif
+ # This is a Makefile rule that generates multiple files at once; see the
+ # automake documentation, node "Multiple Outputs", for details.
+ html-ostream.h : $(top_srcdir)/build-aux/moopp html-ostream.oo.h html-ostream.oo.c ostream.oo.h
+diff -urN a/gnulib-local/modules/ostream b/gnulib-local/modules/ostream
+--- a/gnulib-local/modules/ostream	2013-01-21 03:36:18.000000000 +0100
++++ b/gnulib-local/modules/ostream	2014-06-12 14:37:43.235013449 +0200
+@@ -11,7 +11,11 @@
+ configure.ac:
+ 
+ Makefile.am:
++if !WOE32DLL
+ lib_SOURCES += ostream.c
++else
++lib_SOURCES += ../woe32dll/c++ostream.cc
++endif
+ # This is a Makefile rule that generates multiple files at once; see the
+ # automake documentation, node "Multiple Outputs", for details.
+ ostream.h : $(top_srcdir)/build-aux/moopp ostream.oo.h ostream.oo.c
+diff -urN a/gnulib-local/modules/styled-ostream b/gnulib-local/modules/styled-ostream
+--- a/gnulib-local/modules/styled-ostream	2013-01-21 03:36:18.000000000 +0100
++++ b/gnulib-local/modules/styled-ostream	2014-06-12 14:37:43.239013222 +0200
+@@ -11,7 +11,11 @@
+ configure.ac:
+ 
+ Makefile.am:
++if !WOE32DLL
+ lib_SOURCES += styled-ostream.c
++else
++lib_SOURCES += ../woe32dll/c++styled-ostream.cc
++endif
+ # This is a Makefile rule that generates multiple files at once; see the
+ # automake documentation, node "Multiple Outputs", for details.
+ styled-ostream.h : $(top_srcdir)/build-aux/moopp styled-ostream.oo.h styled-ostream.oo.c ostream.oo.h
+diff -urN a/gnulib-local/modules/term-ostream b/gnulib-local/modules/term-ostream
+--- a/gnulib-local/modules/term-ostream	2013-01-21 03:36:18.000000000 +0100
++++ b/gnulib-local/modules/term-ostream	2014-06-12 14:37:43.239013222 +0200
+@@ -22,7 +22,11 @@
+ gl_TERM_OSTREAM
+ 
+ Makefile.am:
++if !WOE32DLL
+ lib_SOURCES += term-ostream.c
++else
++lib_SOURCES += ../woe32dll/c++term-ostream.cc
++endif
+ # This is a Makefile rule that generates multiple files at once; see the
+ # automake documentation, node "Multiple Outputs", for details.
+ term-ostream.h : $(top_srcdir)/build-aux/moopp term-ostream.oo.h term-ostream.oo.c ostream.oo.h
diff --git a/recipes/gettext/gettext-0.18.3.2/disable-examples.patch b/recipes/gettext/gettext-0.18.3.2/disable-examples.patch
new file mode 100644
index 0000000..0fbbfeb
--- /dev/null
+++ b/recipes/gettext/gettext-0.18.3.2/disable-examples.patch
@@ -0,0 +1,12 @@ 
+diff -urN a/gettext-tools/Makefile.in b/gettext-tools/Makefile.in
+--- a/gettext-tools/Makefile.in	2014-01-07 07:18:49.000000000 +0100
++++ b/gettext-tools/Makefile.in	2014-05-14 23:58:59.031063467 +0200
+@@ -1551,7 +1551,7 @@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
+ ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4
+-SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests examples
++SUBDIRS = doc intl gnulib-lib libgrep src libgettextpo po projects styles misc man m4 tests gnulib-tests
+ 
+ # Allow users to use "gnulib-tool --update".
+ 
diff --git a/recipes/gettext/gettext-0.18.1.1/gettext-0.18-gettextpo-woe32-memchr.patch b/recipes/gettext/gettext-0.18.3.2/gettext-0.18-gettextpo-woe32-memchr.patch
similarity index 100%
rename from recipes/gettext/gettext-0.18.1.1/gettext-0.18-gettextpo-woe32-memchr.patch
rename to recipes/gettext/gettext-0.18.3.2/gettext-0.18-gettextpo-woe32-memchr.patch
diff --git a/recipes/gettext/gettext-0.18.3.2/gettext-glibc-2.16.patch b/recipes/gettext/gettext-0.18.3.2/gettext-glibc-2.16.patch
new file mode 100644
index 0000000..f808674
--- /dev/null
+++ b/recipes/gettext/gettext-0.18.3.2/gettext-glibc-2.16.patch
@@ -0,0 +1,45 @@ 
+diff -urN a/gettext-runtime/gnulib-lib/stdio.in.h b/gettext-runtime/gnulib-lib/stdio.in.h
+--- a/gettext-runtime/gnulib-lib/stdio.in.h	2010-05-17 21:56:12.000000000 +0200
++++ b/gettext-runtime/gnulib-lib/stdio.in.h	2013-10-06 22:53:39.347701925 +0200
+@@ -141,7 +141,11 @@
+    so any use of gets warrants an unconditional warning.  Assume it is
+    always declared, since it is required by C89.  */
+ #undef gets
++#if defined(__GLIBC__) && !defined(__UCLIBC__) && defined(__GLIBC_PREREQ)
++#if !__GLIBC_PREREQ(2, 16)
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++#endif
++#endif
+ 
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+diff -urN a/gettext-tools/gnulib-lib/stdio.in.h b/gettext-tools/gnulib-lib/stdio.in.h
+--- a/gettext-tools/gnulib-lib/stdio.in.h	2010-05-24 11:42:46.000000000 +0200
++++ b/gettext-tools/gnulib-lib/stdio.in.h	2013-10-06 22:53:50.927401966 +0200
+@@ -141,7 +141,11 @@
+    so any use of gets warrants an unconditional warning.  Assume it is
+    always declared, since it is required by C89.  */
+ #undef gets
++#if defined(__GLIBC__) && !defined(__UCLIBC__) && defined(__GLIBC_PREREQ)
++#if !__GLIBC_PREREQ(2, 16)
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++#endif
++#endif
+ 
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+diff -urN a/gettext-tools/libgettextpo/stdio.in.h b/gettext-tools/libgettextpo/stdio.in.h
+--- a/gettext-tools/libgettextpo/stdio.in.h	2010-05-17 21:58:03.000000000 +0200
++++ b/gettext-tools/libgettextpo/stdio.in.h	2013-10-06 22:54:00.187164596 +0200
+@@ -141,7 +141,11 @@
+    so any use of gets warrants an unconditional warning.  Assume it is
+    always declared, since it is required by C89.  */
+ #undef gets
++#if defined(__GLIBC__) && !defined(__UCLIBC__) && defined(__GLIBC_PREREQ)
++#if !__GLIBC_PREREQ(2, 16)
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++#endif
++#endif
+ 
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
diff --git a/recipes/gettext/gettext-0.18.3.2/osx.patch b/recipes/gettext/gettext-0.18.3.2/osx.patch
new file mode 100644
index 0000000..b7e7196
--- /dev/null
+++ b/recipes/gettext/gettext-0.18.3.2/osx.patch
@@ -0,0 +1,25 @@ 
+diff -urN a/build-aux/install-reloc b/build-aux/install-reloc
+--- a/build-aux/install-reloc	2014-01-07 07:15:12.000000000 +0100
++++ b/build-aux/install-reloc	2014-05-15 00:31:38.721466744 +0200
+@@ -165,6 +165,9 @@
+              "$srcdir"/setenv.c \
+              "$srcdir"/strerror.c \
+              "$srcdir"/c-ctype.c \
++             "$srcdir"/stat.c \
++             "$srcdir"/lstat.c \
++             "$srcdir"/strerror-override.c \
+              -o "$destprog.wrapper$exeext"
+ rc=$?
+ # Clean up object files left over in the current directory by the native C
+@@ -181,7 +183,10 @@
+       relocatable.o \
+       setenv.o \
+       strerror.o \
+-      c-ctype.o
++      c-ctype.o \
++      stat.o \
++      lstat.o \
++      strerror-override.o
+ test $rc = 0 || exit $?
+ # Clean up debugging information left over by the native C compiler on Mac OS X.
+ rm -rf "$destprog.wrapper$exeext.dSYM"
diff --git a/recipes/gettext/gettext-0.18.3.2/shared-import.patch b/recipes/gettext/gettext-0.18.3.2/shared-import.patch
new file mode 100644
index 0000000..dfae8e3
--- /dev/null
+++ b/recipes/gettext/gettext-0.18.3.2/shared-import.patch
@@ -0,0 +1,255 @@ 
+diff -urN a/build-aux/moopp b/build-aux/moopp
+--- a/build-aux/moopp	2013-01-09 05:01:27.000000000 +0100
++++ b/build-aux/moopp	2014-05-09 08:28:30.881250016 +0200
+@@ -516,7 +516,13 @@
+     echo "#endif"
+     echo
+     echo "/* Functions that invoke the methods.  */"
++    echo "#ifdef __cplusplus"
++    echo "extern \"C\" {"
++    echo "#endif"
+     echo "$all_methods" | sed -e "$sed_remove_empty_lines" -e 's/\([^A-Za-z_0-9]\)\([A-Za-z_0-9][A-Za-z_0-9]*\)[ 	]*([^,)]*/\1'"${main_classname}_"'\2 ('"${main_classname}_t first_arg"'/' -e 's,^,extern ,' -e 's,$,;,'
++    echo "#ifdef __cplusplus"
++    echo "}"
++    echo "#endif"
+     echo
+     # Now come the implementation details.
+     echo "/* Type representing an implementation of ${main_classname}_t.  */"
+@@ -536,6 +542,9 @@
+     echo "  const struct ${main_classname}_implementation *vtable;"
+     echo "};"
+     echo
++    echo "#ifdef __cplusplus"
++    echo "extern \"C\" {"
++    echo "#endif"
+     echo "#if HAVE_INLINE"
+     echo
+     echo "/* Define the functions that invoke the methods as inline accesses to"
+@@ -583,6 +592,9 @@
+     fi
+     echo
+     echo "extern${dllexport_for_variables} const struct ${main_classname}_implementation ${main_classname}_vtable;"
++    echo "#ifdef __cplusplus"
++    echo "}"
++    echo "#endif"
+     echo
+     echo "#line "`expr $main_class_end_lineno + 1`" \"${source_header_file_base}\""
+     cat "$source_header_file" | sed -e "1,${main_class_end_lineno}d"
+@@ -617,7 +629,13 @@
+     echo "#endif"
+     echo "#include \"${main_classname}.priv.h\""
+     echo
++    echo "#ifdef __cplusplus"
++    echo "extern \"C\" {"
++    echo "#endif"
+     echo "const typeinfo_t ${main_classname}_typeinfo = { \"${main_classname}\" };"
++    echo "#ifdef __cplusplus"
++    echo "}"
++    echo "#endif"
+     echo
+     echo "static const typeinfo_t * const ${main_classname}_superclasses[] ="
+     echo "  { ${main_classname}_SUPERCLASSES };"
+diff -urN a/gettext-runtime/config.h.in b/gettext-runtime/config.h.in
+--- a/gettext-runtime/config.h.in	2014-01-07 07:16:26.000000000 +0100
++++ b/gettext-runtime/config.h.in	2014-05-09 08:28:30.901249667 +0200
+@@ -1560,7 +1560,7 @@
+ 
+ /* On Windows, variables that may be in a DLL must be marked specially.  */
+ #if (defined _MSC_VER && defined _DLL) && !defined IN_RELOCWRAPPER
+-# define DLL_VARIABLE __declspec (dllimport)
++# define DLL_VARIABLE __declspec(dllimport)
+ #else
+ # define DLL_VARIABLE
+ #endif
+diff -urN a/gettext-runtime/configure.ac b/gettext-runtime/configure.ac
+--- a/gettext-runtime/configure.ac	2013-07-24 04:26:51.000000000 +0200
++++ b/gettext-runtime/configure.ac	2014-05-09 08:28:30.901249667 +0200
+@@ -95,7 +95,7 @@
+ AH_BOTTOM([
+ /* On Windows, variables that may be in a DLL must be marked specially.  */
+ #if (defined _MSC_VER && defined _DLL) && !defined IN_RELOCWRAPPER
+-# define DLL_VARIABLE __declspec (dllimport)
++# define DLL_VARIABLE __declspec(dllimport)
+ #else
+ # define DLL_VARIABLE
+ #endif
+diff -urN a/gettext-runtime/intl/xsize.h b/gettext-runtime/intl/xsize.h
+--- a/gettext-runtime/intl/xsize.h	2013-04-15 04:00:37.000000000 +0200
++++ b/gettext-runtime/intl/xsize.h	2014-05-09 08:31:06.822612101 +0200
+@@ -27,6 +27,10 @@
+ # include <stdint.h>
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ _GL_INLINE_HEADER_BEGIN
+ #ifndef XSIZE_INLINE
+ # define XSIZE_INLINE _GL_INLINE
+@@ -111,4 +115,8 @@
+ 
+ _GL_INLINE_HEADER_END
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _XSIZE_H */
+diff -urN a/gettext-runtime/libasprintf/xsize.h b/gettext-runtime/libasprintf/xsize.h
+--- a/gettext-runtime/libasprintf/xsize.h	2014-01-07 07:15:19.000000000 +0100
++++ b/gettext-runtime/libasprintf/xsize.h	2014-05-09 08:30:45.302971244 +0200
+@@ -27,6 +27,11 @@
+ # include <stdint.h>
+ #endif
+ 
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ _GL_INLINE_HEADER_BEGIN
+ #ifndef XSIZE_INLINE
+ # define XSIZE_INLINE _GL_INLINE
+@@ -111,4 +116,8 @@
+ 
+ _GL_INLINE_HEADER_END
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _XSIZE_H */
+diff -urN a/gettext-tools/config.h.in b/gettext-tools/config.h.in
+--- a/gettext-tools/config.h.in	2014-01-07 07:18:47.000000000 +0100
++++ b/gettext-tools/config.h.in	2014-05-09 08:28:30.905249599 +0200
+@@ -2695,7 +2695,7 @@
+ 
+ /* On Windows, variables that may be in a DLL must be marked specially.  */
+ #if ((defined _MSC_VER && defined _DLL) || defined WOE32DLL) && !defined IN_RELOCWRAPPER
+-# define DLL_VARIABLE __declspec (dllimport)
++# define DLL_VARIABLE __declspec(dllimport)
+ #else
+ # define DLL_VARIABLE
+ #endif
+diff -urN a/gettext-tools/configure.ac b/gettext-tools/configure.ac
+--- a/gettext-tools/configure.ac	2013-12-20 04:19:45.000000000 +0100
++++ b/gettext-tools/configure.ac	2014-05-09 08:28:30.905249599 +0200
+@@ -280,7 +280,7 @@
+ 
+ /* On Windows, variables that may be in a DLL must be marked specially.  */
+ #if ((defined _MSC_VER && defined _DLL) || defined WOE32DLL) && !defined IN_RELOCWRAPPER
+-# define DLL_VARIABLE __declspec (dllimport)
++# define DLL_VARIABLE __declspec(dllimport)
+ #else
+ # define DLL_VARIABLE
+ #endif
+diff -urN a/gettext-tools/gnulib-lib/xsize.h b/gettext-tools/gnulib-lib/xsize.h
+--- a/gettext-tools/gnulib-lib/xsize.h	2014-01-07 07:15:41.000000000 +0100
++++ b/gettext-tools/gnulib-lib/xsize.h	2014-05-09 08:31:53.385849907 +0200
+@@ -27,6 +27,11 @@
+ # include <stdint.h>
+ #endif
+ 
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ _GL_INLINE_HEADER_BEGIN
+ #ifndef XSIZE_INLINE
+ # define XSIZE_INLINE _GL_INLINE
+@@ -111,4 +116,8 @@
+ 
+ _GL_INLINE_HEADER_END
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _XSIZE_H */
+diff -urN a/gettext-tools/libgettextpo/xsize.h b/gettext-tools/libgettextpo/xsize.h
+--- a/gettext-tools/libgettextpo/xsize.h	2014-01-07 07:16:13.000000000 +0100
++++ b/gettext-tools/libgettextpo/xsize.h	2014-05-09 08:31:29.978229297 +0200
+@@ -27,6 +27,10 @@
+ # include <stdint.h>
+ #endif
+ 
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ _GL_INLINE_HEADER_BEGIN
+ #ifndef XSIZE_INLINE
+ # define XSIZE_INLINE _GL_INLINE
+@@ -111,4 +115,8 @@
+ 
+ _GL_INLINE_HEADER_END
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* _XSIZE_H */
+diff -urN a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am
+--- a/gettext-tools/src/Makefile.am	2013-12-20 04:19:45.000000000 +0100
++++ b/gettext-tools/src/Makefile.am	2014-05-09 08:28:30.905249599 +0200
+@@ -394,47 +394,47 @@
+ else
+ libgettextsrc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(libgettextsrc_la_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(libgettextsrc_la_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgattrib_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgattrib_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgattrib_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgcat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgcat_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgcat_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgcomm_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgcomm_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgcomm_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgconv_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgconv_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgconv_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgen_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgen_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgen_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgfilter_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msgfilter_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msgfilter_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msggrep_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msggrep_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msggrep_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msgmerge_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(msgmerge_CXXFLAGS) $(CXXFLAGS) $(msgmerge_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(msgmerge_CXXFLAGS) $(CXXFLAGS) $(msgmerge_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ msguniq_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(msguniq_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(msguniq_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ xgettext_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+-	$(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(xgettext_LDFLAGS) $(LDFLAGS) \
++	$(CXXLD) -static $(AM_CXXFLAGS) $(CXXFLAGS) $(xgettext_LDFLAGS) $(LDFLAGS) \
+ 	-o $@
+ endif
+ 
diff --git a/recipes/gettext/gettext.inc b/recipes/gettext/gettext.inc
index 97dfa2a..fac6ef7 100644
--- a/recipes/gettext/gettext.inc
+++ b/recipes/gettext/gettext.inc
@@ -4,7 +4,7 @@  HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
 
 RECIPE_TYPES = "machine native sdk"
 
-inherit c++ autotools library make-vpath
+inherit c++ autotools-autoreconf library make-vpath
 DEPENDS_AUTORECONF = ""
 
 require conf/fetch/gnu.conf
@@ -14,15 +14,15 @@  DEPENDS = "libiconv libm"
 
 DEPENDS += "${DEPENDS_LIBNCURSES}"
 DEPENDS_LIBNCURSES = "libncurses"
-DEPENDS_LIBNCURSES:HOST_OS_mingw32 = ""
+DEPENDS_LIBNCURSES:HOST_LIBC_mingw = ""
 
 DEPENDS += "${DEPENDS_LIBDL}"
 DEPENDS_LIBDL = "libdl"
-DEPENDS_LIBDL:HOST_OS_mingw32 = ""
+DEPENDS_LIBDL:HOST_LIBC_mingw = ""
 
 DEPENDS += "${DEPENDS_LIBPTHREAD}"
 DEPENDS_LIBPTHREAD = "libpthread"
-DEPENDS_LIBPTHREAD:HOST_OS_mingw32 = ""
+DEPENDS_LIBPTHREAD:HOST_LIBC_mingw = ""
 
 DEPENDS += "${DEPENDS_SELF_NATIVE}"
 DEPENDS_SELF_NATIVE = "native:gettext"
@@ -33,7 +33,7 @@  acpaths = "-I ${S}/gnulib-local/m4/ \
            -I ${S}/gettext-tools/m4"
 
 EXTRA_OECONF += "\
---disable-rpath --enable-relocatable \
+--disable-rpath --disable-relocatable \
 --disable-dependency-tracking \
 --disable-java --disable-native-java \
 --disable-csharp \
@@ -49,20 +49,18 @@  EXTRA_OECONF += "\
 --with-included-glib \
 "
 
-CFLAGS += "-O1"
-
 RECIPE_FLAGS += "nls"
 EXTRA_OECONF += "${EXTRA_OECONF_NLS}"
 EXTRA_OECONF_NLS = " --disable-nls"
 EXTRA_OECONF_NLS:USE_nls = " --enable-nls"
 EXTRA_OECONF_NLS:native = " --enable-nls"
-EXTRA_OECONF_NLS:HOST_OS_mingw32 = " --enable-nls"
+EXTRA_OECONF_NLS:HOST_LIBC_mingw = " --enable-nls"
 EXTRA_OECONF_NLS:HOST_KERNEL_darwin = " --enable-nls"
 
 EXTRA_OECONF += "${EXTRA_OECONF_GETTEXT}"
 EXTRA_OECONF_GETTEXT = ""
 EXTRA_OECONF_GETTEXT:native = "--disable-curses --with-included-gettext"
-EXTRA_OECONF_GETTEXT:HOST_OS_mingw32 = "--disable-curses --with-included-gettext"
+EXTRA_OECONF_GETTEXT:HOST_LIBC_mingw = "--disable-curses --with-included-gettext"
 
 FILES_${PN} += "${libdir}/gettext ${datadir}/gettext"
 COMMON_DEPENDS = "libintl libgettextpo libgettextlib \
@@ -70,6 +68,10 @@  COMMON_DEPENDS = "libintl libgettextpo libgettextlib \
 DEPENDS_${PN} = "${COMMON_DEPENDS}"
 RDEPENDS_${PN} = "${COMMON_DEPENDS}"
 
+do_autoreconf () {
+	bash ./autogen.sh --quick --skip-gnulib
+}
+
 inherit auto-package-utils
 AUTO_PACKAGE_UTILS = "autopoint envsubst gettext gettextize gettext.sh \
 	msgattrib msgcat msgcmp msgcomm msgconv msgen msgexec msgfilter \
diff --git a/recipes/gettext/gettext_0.18.1.1.oe b/recipes/gettext/gettext_0.18.1.1.oe
deleted file mode 100644
index fa13e47..0000000
--- a/recipes/gettext/gettext_0.18.1.1.oe
+++ /dev/null
@@ -1,11 +0,0 @@ 
-LICENSE = "GPL-3.0+ & LGPL-2.1+"
-
-require gettext.inc
-
-SRC_URI += "file://ac-fix.patch"
-SRC_URI += "file://gettext-0.18-gettextpo-woe32-memchr.patch"
-SRC_URI += "file://gettext0.18.1.1-9ubuntu1-glibc-2.16-fix.patch"
-SRC_URI:>HOST_KERNEL_darwin = " file://osx.patch"
-
-SRC_URI:>HOST_LIBC_mingw = " file://libtool-bindir.patch"
-export sharedlibdir
diff --git a/recipes/gettext/gettext_0.18.1.1.oe.sig b/recipes/gettext/gettext_0.18.1.1.oe.sig
deleted file mode 100644
index c0714be..0000000
--- a/recipes/gettext/gettext_0.18.1.1.oe.sig
+++ /dev/null
@@ -1 +0,0 @@ 
-5009deb02f67fc3c59c8ce6b82408d1d35d4e38f  gettext-0.18.1.1.tar.gz
diff --git a/recipes/gettext/gettext_0.18.3.2.oe b/recipes/gettext/gettext_0.18.3.2.oe
new file mode 100644
index 0000000..2dac64a
--- /dev/null
+++ b/recipes/gettext/gettext_0.18.3.2.oe
@@ -0,0 +1,7 @@ 
+LICENSE = "GPL-3.0+ & LGPL-2.1+"
+
+require gettext.inc
+
+SRC_URI += "file://120-Fix-Woe32-link-errors-when-compiling-with-O0.patch"
+SRC_URI += "file://shared-import.patch"
+SRC_URI:>HOST_KERNEL_darwin = " file://osx.patch"
diff --git a/recipes/gettext/gettext_0.18.3.2.oe.sig b/recipes/gettext/gettext_0.18.3.2.oe.sig
new file mode 100644
index 0000000..0db4675
--- /dev/null
+++ b/recipes/gettext/gettext_0.18.3.2.oe.sig
@@ -0,0 +1 @@ 
+a2dc46d788edb0078ab20da7bd194bdb6da2f0d9  gettext-0.18.3.2.tar.gz