[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