2009-12-31  Yves Blusseau  <yves.bluss...@zetam.org>

        * 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
---
 ChangeLog.intl                          |   27 +++++++++++++++++++++++
 Makefile.in                             |    7 +++++-
 conf/common.rmk                         |    2 ++
 configure.ac                            |    2 +-
 include/grub/i18n.h                     |   36 +++++++++++++++++++++++++------
 include/grub/util/misc.h                |    2 ++
 util/grub-editenv.c                     |    5 ++--
 util/grub-emu.c                         |    5 ++--
 util/grub-fstest.c                      |    5 ++--
 util/grub-probe.c                       |    5 ++--
 util/i386/pc/grub-setup.c               |    5 ++--
 util/misc.c                             |   11 +++++++++
 util/mkisofs/mkisofs.c                  |    5 ++--
 util/mkisofs/mkisofs.h                  |    5 +---
 util/sparc64/ieee1275/grub-ofpathname.c |    5 ++--
 util/sparc64/ieee1275/grub-setup.c      |    5 ++--
 16 files changed, 95 insertions(+), 37 deletions(-)
 create mode 100644 ChangeLog.intl
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  <yves.bluss...@zetam.org>
+
+       * 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 <locale.h>
-# include <libintl.h>
-# define _(str) gettext(str)
-#else
-# define _(str) grub_gettext(str)
+#include <config.h>
+#include <grub/symbol.h>
 
 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 <locale.h>
+#  include <libintl.h>
+
+# 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 <grub/mm.h>
 #include <grub/term.h>
 #include <grub/time.h>
+#include <grub/i18n.h>
 
 #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 <prototyp.h>
 #include <sys/stat.h>
 
-#include <locale.h>
-#include <libintl.h>
-#define _(str) gettext(str)
-#define N_(str) str
+#include <grub/i18n.h>
 
 /* 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))
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to