From 29304fc079678aea4bd99f814c75a1345bc2df4e Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Thu, 12 Aug 2021 22:41:14 -0400 Subject: [PATCH] Make library i18n init conditional on NLS support. If the package is configured with --disable-nls, the library's i18n initialization does nothing useful but the internal functions are not fully removed. Looks like a simple opportunity for improvement. --- Makefile.am | 8 ++++++-- configure.ac | 2 ++ src/cdecl-internal.h | 6 ++++++ src/i18n.c | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index 191a697..2597f8a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -41,11 +41,15 @@ lib_LTLIBRARIES = libcdecl.la libcdecl_la_LDFLAGS = -export-symbols-regex '^cdecl_[[:lower:]]' \ -no-undefined -version-info 1:0:0 libcdecl_la_SOURCES = src/scan.c src/parse.c src/parse-decl.c src/output.c \ - src/explain.c src/declare.c src/i18n.c src/error.c \ - src/normalize.c src/cdecl-internal.h + src/explain.c src/declare.c src/error.c src/normalize.c \ + src/cdecl-internal.h libcdecl_la_LIBADD = libgnu.la $(LTLIBINTL) $(LTLIBTHREAD) $(libcdecl_la_OBJECTS): $(gnulib_headers) +if USE_NLS +libcdecl_la_SOURCES += src/i18n.c +endif + bin_PROGRAMS = cdecl99 cdecl99_SOURCES = src/commands.c src/cdecl99.h cdecl99_LDADD = $(libmain_a_OBJECTS) $(libexec_a_OBJECTS) libcdecl.la \ diff --git a/configure.ac b/configure.ac index 0784644..bd07f46 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,8 @@ m4_traceoff([AM_GNU_GETTEXT]) AM_GNU_GETTEXT([external]) DX_LINGUAS +AM_CONDITIONAL([USE_NLS], [test x"$USE_NLS" = x"yes"]) + DX_PROG_FLEX([], [have_flex=yes], [have_flex=no]) AM_CONDITIONAL([HAVE_FLEX], [test x"$have_flex" = x"yes"]) diff --git a/src/cdecl-internal.h b/src/cdecl-internal.h index 11903bc..1fba614 100644 --- a/src/cdecl-internal.h +++ b/src/cdecl-internal.h @@ -27,7 +27,13 @@ struct cdecl_error; struct cdecl_declspec; +#if ENABLE_NLS void cdecl__init_i18n(void); +#else +static inline void cdecl__init_i18n(void) +{ +} +#endif const char *cdecl__strerror(unsigned code); void cdecl__err(unsigned code, ...); diff --git a/src/i18n.c b/src/i18n.c index 72bfc23..753cf27 100644 --- a/src/i18n.c +++ b/src/i18n.c @@ -24,7 +24,7 @@ #include -static void initialize(void) +static void do_init_i18n(void) { bindtextdomain(PACKAGE, LOCALEDIR); bindtextdomain("bison-runtime", BISON_LOCALEDIR); @@ -34,6 +34,6 @@ void cdecl__init_i18n(void) { gl_once_define(static, initialized); - int err = glthread_once(&initialized, initialize); + int err = glthread_once(&initialized, do_init_i18n); assert(err == 0); } -- 2.43.2