Hi, Sam Thursfield <sam.thursfi...@codethink.co.uk> writes:
> I find that if gettext 0.18.2 is configured as follows: > > CFLAGS= ./configure > > The compilation fails later on with the following error: > > ... > Making all in tests > make[3]: Entering directory `/gettext.build/gettext-tools/tests' > /bin/sh ../libtool --tag=CC --mode=link gcc -std=gnu99 \ > -o gettextpo-1-prg gettextpo_1_prg-gettextpo-1-prg.o \ > ../libgettextpo/libgettextpo.la ../intl/libgnuintl.la > libtool: link: gcc -std=gnu99 -o .libs/gettextpo-1-prg \ > gettextpo_1_prg-gettextpo-1-prg.o ../libgettextpo/.libs \ > /libgettextpo.so ../intl/.libs/libgnuintl.so -lc > ../intl/.libs/libgnuintl.so: undefined reference to `xsum' > ../intl/.libs/libgnuintl.so: undefined reference to `xmax' > ../intl/.libs/libgnuintl.so: undefined reference to `xsum4' > collect2: ld returned 1 exit status > > The compiler is GCC 4.6.2 on x86_64. Compilation succeeds if the > default CFLAGS are used, so I think the cause of the problem is that > without inlining, these functions do not work somehow. I cannot reproduce this on x86_64 GNU/Linux with GCC 4.6.3 and 4.7.2, but can on mingw64 cross build[1]. It seems that xsize.o needs to be linked to the library, after recent gnulib's "extern inline" changes. Could you try the attached patch? $ tar xf gettext-0.18.2.tar.gz $ cd getteext-0.18.2 $ patch -p1 < patch $ pushd gettext-runtime/libasprintf $ autoreconf -f $ popd $ CFLAGS= ./configure && make I'm not 100% sure if this is the right fix, so Cc'ed bug-gnulib. Footnotes: [1] https://savannah.gnu.org/bugs/?37981 Regards, -- Daiki Ueno >From 4c197b383b5922cd277e53cc6bd5d05eb56083eb Mon Sep 17 00:00:00 2001 From: Daiki Ueno <u...@gnu.org> Date: Wed, 16 Jan 2013 17:08:28 +0900 Subject: [PATCH] Make sure to link libraries with xsize.o. After recent C99-style extern inline changes in gnulib, functions defined in xsize.h are now declared as "extern inline". That means the libraries using those functions need to be linked to xsize.o. --- gettext-runtime/intl/Makefile.in | 6 +++++- gettext-runtime/intl/xsize.c | 3 +++ gettext-runtime/libasprintf/Makefile.am | 2 +- gettext-runtime/libasprintf/xsize.c | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 gettext-runtime/intl/xsize.c create mode 100644 gettext-runtime/libasprintf/xsize.c diff --git a/gettext-runtime/intl/Makefile.in b/gettext-runtime/intl/Makefile.in index 006d3b0..449fdb1 100644 --- a/gettext-runtime/intl/Makefile.in +++ b/gettext-runtime/intl/Makefile.in @@ -158,6 +158,7 @@ SOURCES = \ printf.c \ setlocale.c \ version.c \ + xsize.c \ osdep.c \ os2compat.c \ intl-exports.c \ @@ -190,6 +191,7 @@ OBJECTS = \ printf.$lo \ setlocale.$lo \ version.$lo \ + xsize.$lo \ osdep.$lo \ intl-compat.$lo OBJECTS_RES_yes = libintl.res.$lo @@ -298,6 +300,8 @@ setlocale.lo: $(srcdir)/setlocale.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/setlocale.c version.lo: $(srcdir)/version.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/version.c +xsize.lo: $(srcdir)/xsize.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/xsize.c osdep.lo: $(srcdir)/osdep.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/osdep.c intl-compat.lo: $(srcdir)/intl-compat.c @@ -585,7 +589,7 @@ dcigettext.$lo: $(srcdir)/eval-plural.h localcharset.$lo: $(srcdir)/localcharset.h bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h -printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/xsize.c $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c # A bison-2.1 generated plural.c includes <libintl.h> if ENABLE_NLS. PLURAL_DEPS_yes = libintl.h diff --git a/gettext-runtime/intl/xsize.c b/gettext-runtime/intl/xsize.c new file mode 100644 index 0000000..4b4914c --- /dev/null +++ b/gettext-runtime/intl/xsize.c @@ -0,0 +1,3 @@ +#include <config.h> +#define XSIZE_INLINE _GL_EXTERN_INLINE +#include "xsize.h" diff --git a/gettext-runtime/libasprintf/Makefile.am b/gettext-runtime/libasprintf/Makefile.am index 2aebbed..343ae4b 100644 --- a/gettext-runtime/libasprintf/Makefile.am +++ b/gettext-runtime/libasprintf/Makefile.am @@ -49,13 +49,13 @@ lib_LTLIBRARIES = libasprintf.la noinst_LTLIBRARIES = libasprintf_la_SOURCES = \ + xsize.h xsize.c \ lib-asprintf.h lib-asprintf.c \ autosprintf.h autosprintf.cc # Sources used only on platforms lacking vasprintf(). lib_asprintf_EXTRASOURCES = \ verify.h \ - xsize.h \ printf-args.h printf-args.c \ printf-parse.h printf-parse.c \ vasnprintf.h vasnprintf.c asnprintf.c \ diff --git a/gettext-runtime/libasprintf/xsize.c b/gettext-runtime/libasprintf/xsize.c new file mode 100644 index 0000000..4b4914c --- /dev/null +++ b/gettext-runtime/libasprintf/xsize.c @@ -0,0 +1,3 @@ +#include <config.h> +#define XSIZE_INLINE _GL_EXTERN_INLINE +#include "xsize.h" -- 1.8.1