bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-gettext] gettext 0.18.2 fails to compile without optimisations


From: Daiki Ueno
Subject: Re: [bug-gettext] gettext 0.18.2 fails to compile without optimisations
Date: Wed, 16 Jan 2013 18:08:46 +0900
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Hi,

Sam Thursfield <address@hidden> 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 <address@hidden>
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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]