diff --git a/ChangeLog.intl b/ChangeLog.intl new file mode 100644 index 0000000..42a1014 --- /dev/null +++ b/ChangeLog.intl @@ -0,0 +1,27 @@ +Compilation with external intl library + +2009-12-31 Yves Blusseau + + * configure.ac: check external intl library + * Makefile.in: add compiler and linker flags to properly compile with + intl library + * include/grub/i18n.h: add a check to disable NLS + * util/misc.c (grub_util_init_nls): new function + * include/grub/util/misc.h: likewise + * conf/common.rmk (grub_mkisofs_SOURCES): adding grub/misc.c to + dependencies + * util/elf/grub-mkimage.c: use the new function below to initialize NLS + * util/grub-editenv.c: likewise + * util/grub-emu.c: likewise + * util/grub-fstest.c: likewise + * util/grub-mkdevicemap.c: likewise + * util/grub-mkfont.c: likewise + * util/grub-mkrelpath.c: likewise + * util/grub-probe.c: likewise + * util/i386/pc/grub-mkimage.c: likewise + * util/i386/pc/grub-setup.c: likewise + * util/sparc64/ieee1275/grub-mkimage.c: likewise + * util/sparc64/ieee1275/grub-ofpathname.c: likewise + * util/sparc64/ieee1275/grub-setup.c: likewise + * util/mkisofs/mkisofs.c: likewise + * util/mkisofs/mkisofs.h: use the new i18n.h header diff --git a/Makefile.in b/Makefile.in index 46b380c..62e38dc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -41,6 +41,9 @@ includedir = @includedir@ pkgdatadir = $(datadir)/`echo @PACKAGE_TARNAME@ | sed '$(transform)'` pkglibdir = $(libdir)/`echo @PACKAGE_TARNAME@/$(target_cpu)-$(platform) | sed '$(transform)'` +# Internationalization library. +LIBINTL = @LIBINTL@ + XGETTEXT = @XGETTEXT@ MSGMERGE = @MSGMERGE@ MSGFMT = @MSGFMT@ @@ -72,10 +75,12 @@ MKDIR_P = @MKDIR_P@ mkinstalldirs = $(srcdir)/mkinstalldirs +LIBS = @LIBS@ $(LIBINTL) + CC = @CC@ CFLAGS = @CFLAGS@ ASFLAGS = @ASFLAGS@ -LDFLAGS = @LDFLAGS@ +LDFLAGS = @LDFLAGS@ $(LIBS) CPPFLAGS = @CPPFLAGS@ -I$(builddir) -I$(builddir)/include -I$(srcdir)/gnulib -I$(srcdir)/include -Wall -W \ -DGRUB_LIBDIR=\"$(pkglibdir)\" -DLOCALEDIR=\"$(localedir)\" TARGET_CC = @TARGET_CC@ diff --git a/conf/common.rmk b/conf/common.rmk index 4fd0057..8a71c33 100644 --- a/conf/common.rmk +++ b/conf/common.rmk @@ -48,6 +48,8 @@ grub_mkisofs_SOURCES = util/mkisofs/eltorito.c \ util/mkisofs/rock.c util/mkisofs/tree.c \ util/mkisofs/write.c \ \ + util/misc.c \ + \ gnulib/fnmatch.c gnulib/getopt1.c gnulib/getopt.c \ gnulib/error.c gnulib/progname.c grub_mkisofs_CFLAGS = -D_FILE_OFFSET_BITS=64 \ diff --git a/configure.ac b/configure.ac index 3cac421..63ea844 100644 --- a/configure.ac +++ b/configure.ac @@ -178,7 +178,7 @@ AC_PROG_CC test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required]) AC_GNU_SOURCE -AM_GNU_GETTEXT +AM_GNU_GETTEXT([external]) AC_SYS_LARGEFILE # Identify characteristics of the host architecture. diff --git a/include/grub/i18n.h b/include/grub/i18n.h index f6f4687..273caeb 100644 --- a/include/grub/i18n.h +++ b/include/grub/i18n.h @@ -19,17 +19,39 @@ #ifndef GRUB_I18N_H #define GRUB_I18N_H 1 -#ifdef GRUB_UTIL -# include -# include -# define _(str) gettext(str) -#else -# define _(str) grub_gettext(str) +#include +#include const char *EXPORT_FUNC(grub_gettext_dummy) (const char *s); extern const char *(*EXPORT_VAR(grub_gettext)) (const char *s); -#endif +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +# ifdef GRUB_UTIL + +# include +# include + +# endif /* GRUB_UTIL */ + +#else /* ! ENABLE_NLS */ + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define grub_gettext(str) ((const char *) (str)) + +#endif /* ENABLE_NLS */ + +#ifdef GRUB_UTIL +# define _(str) gettext(str) +#else +# define _(str) grub_gettext(str) +#endif /* GRUB_UTIL */ #define N_(str) str diff --git a/include/grub/util/misc.h b/include/grub/util/misc.h index 0910854..b454480 100644 --- a/include/grub/util/misc.h +++ b/include/grub/util/misc.h @@ -88,4 +88,6 @@ grub_int64_t grub_util_get_disk_size (char *name); char *make_system_path_relative_to_its_root (const char *path); +void grub_util_init_nls (void); + #endif /* ! GRUB_UTIL_MISC_HEADER */ diff --git a/util/grub-editenv.c b/util/grub-editenv.c index 68fb23b..7718b6d 100644 --- a/util/grub-editenv.c +++ b/util/grub-editenv.c @@ -256,9 +256,8 @@ main (int argc, char *argv[]) char *command; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); /* Check for options. */ while (1) diff --git a/util/grub-emu.c b/util/grub-emu.c index e65c858..9214c9a 100644 --- a/util/grub-emu.c +++ b/util/grub-emu.c @@ -159,9 +159,8 @@ main (int argc, char *argv[]) int opt; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); while ((opt = getopt_long (argc, argv, "r:d:m:vH:hV", options, 0)) != -1) switch (opt) diff --git a/util/grub-fstest.c b/util/grub-fstest.c index fa54fe4..d1cc757 100644 --- a/util/grub-fstest.c +++ b/util/grub-fstest.c @@ -384,9 +384,8 @@ main (int argc, char *argv[]) int i, cmd, num_opts, image_index, num_disks = 1; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); /* Find the first non option entry. */ for (num_opts = 1; num_opts < argc; num_opts++) diff --git a/util/grub-probe.c b/util/grub-probe.c index ebf5142..27195d3 100644 --- a/util/grub-probe.c +++ b/util/grub-probe.c @@ -338,9 +338,8 @@ main (int argc, char *argv[]) char *argument; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); /* Check for options. */ while (1) diff --git a/util/i386/pc/grub-setup.c b/util/i386/pc/grub-setup.c index c2b9b92..cffec9a 100644 --- a/util/i386/pc/grub-setup.c +++ b/util/i386/pc/grub-setup.c @@ -641,9 +641,8 @@ main (int argc, char *argv[]) int must_embed = 0, force = 0, fs_probe = 1; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); /* Check for options. */ while (1) diff --git a/util/misc.c b/util/misc.c index 6aa92fb..d838fcd 100644 --- a/util/misc.c +++ b/util/misc.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "progname.h" @@ -566,3 +567,13 @@ make_system_path_relative_to_its_root (const char *path) return buf3; } + +void +grub_util_init_nls (void) +{ +#if ENABLE_NLS + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); +#endif /* ENABLE_NLS */ +} diff --git a/util/mkisofs/mkisofs.c b/util/mkisofs/mkisofs.c index 8e99d5c..4ed091b 100644 --- a/util/mkisofs/mkisofs.c +++ b/util/mkisofs/mkisofs.c @@ -645,9 +645,8 @@ int FDECL2(main, int, argc, char **, argv){ char *log_file = 0; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); if (argc < 2) usage(); diff --git a/util/mkisofs/mkisofs.h b/util/mkisofs/mkisofs.h index 79ae502..55b4aa6 100644 --- a/util/mkisofs/mkisofs.h +++ b/util/mkisofs/mkisofs.h @@ -30,10 +30,7 @@ #include #include -#include -#include -#define _(str) gettext(str) -#define N_(str) str +#include /* This symbol is used to indicate that we do not have things like symlinks, devices, and so forth available. Just files and dirs */ diff --git a/util/sparc64/ieee1275/grub-ofpathname.c b/util/sparc64/ieee1275/grub-ofpathname.c index 166ce4c..9f5bc39 100644 --- a/util/sparc64/ieee1275/grub-ofpathname.c +++ b/util/sparc64/ieee1275/grub-ofpathname.c @@ -29,9 +29,8 @@ int main(int argc, char **argv) char *of_path; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); if (argc != 2) { diff --git a/util/sparc64/ieee1275/grub-setup.c b/util/sparc64/ieee1275/grub-setup.c index ade1bd5..6f205b6 100644 --- a/util/sparc64/ieee1275/grub-setup.c +++ b/util/sparc64/ieee1275/grub-setup.c @@ -620,9 +620,8 @@ main (int argc, char *argv[]) struct grub_setup_info ginfo; set_program_name (argv[0]); - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); + + grub_util_init_nls(); init_info (&ginfo); if (!parse_options (&ginfo, argc, argv))