bunk@fs.tum.de
2004-Apr-18 00:19 UTC
[Rd] [patch] R-1.9.0: compile error without nl_langinfo(CODESET) (PR#6789)
I got the following compile error in R-1.9.0 on NetBSD 1.5: <-- snip --> ... gcc -I../../src/extra/zlib -I../../src/extra/bzip2 -I../../src/extra/pcre -I. -I../../src/include -I../../src/include -I/usr/local/include -DHAVE_CONFIG_H -O2 -mcpu=v8 -c main.c -o main.o main.c: In function `setup_Rmainloop': main.c:463: `CODESET' undeclared (first use in this function) main.c:463: (Each undeclared identifier is reported only once main.c:463: for each function it appears in.) make[3]: *** [main.o] Error 1 make[3]: Leaving directory `/aux/adrian/build/R-1.9.0/src/main' <-- snip --> NetBSD 1.5 has a nl_langinfo() in langinfo.h but no CODESET. A proposed patch (based on codeset.m4 from GNU gettext) is below. cu Adrian --- /dev/null 2004-04-17 15:10:09 +0200 +++ m4/codeset.m4 2004-04-17 15:15:31 +0200 @@ -0,0 +1,23 @@ +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include <langinfo.h>], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +]) --- m4/README.old 2004-04-17 15:16:01 +0200 +++ m4/README 2004-04-17 15:18:27 +0200 @@ -38,3 +38,7 @@ libtool.m4 is from libtool 1.5. + + codeset.m4 + is from GNU gettext and checks whether nl_langinfo(CODESET) + is available in langinfo.h. --- configure.ac.old 2004-04-17 12:41:22 +0200 +++ configure.ac 2004-04-17 15:21:51 +0200 @@ -510,7 +510,7 @@ ## Some of these are also checked for when Autoconf computes the default ## includes. AC_CHECK_HEADERS(arpa/inet.h dl.h dlfcn.h elf.h fcntl.h floatingpoint.h \ - fpu_control.h grp.h ieee754.h ieeefp.h langinfo.h locale.h \ + fpu_control.h grp.h ieee754.h ieeefp.h locale.h \ netdb.h netinet/in.h \ pwd.h readline/history.h readline/readline.h strings.h \ sys/param.h sys/select.h sys/socket.h sys/stat.h sys/time.h \ @@ -1161,13 +1161,17 @@ AC_FUNC_ALLOCA AC_CHECK_FUNCS(access chdir expm1 fcntl finite ftruncate getcwd \ getgrgid getpwuid getuid hypot isascii isnan log1p matherr mkfifo \ - nl_langinfo popen putenv rint setenv strcoll stat strptime symlink \ + popen putenv rint setenv strcoll stat strptime symlink \ system times unsetenv) ## <NOTE> ## No need checking for bcopy bzero memcpy mempcpy even though ifnames ## might report corresponding HAVE_FOO conditionals. ## </NOTE> +## check whether nl_langinfo(CODESET) is in langinfo.h +## defines HAVE_LANGINFO_CODESET if it's there +AM_LANGINFO_CODESET + ## Used to build src/include/Rmath.h. ## <NOTE> ## we don't use AC_CONFIG_HEADERS on Rmath.h.in because --- src/main/main.c.old 2004-04-17 15:03:50 +0200 +++ src/main/main.c 2004-04-17 15:22:37 +0200 @@ -37,7 +37,7 @@ # include <locale.h> #endif -#ifdef HAVE_LANGINFO_H +#ifdef HAVE_LANGINFO_CODESET # include <langinfo.h> #endif @@ -459,7 +459,7 @@ RSetConsoleWidth(); } #endif -#ifdef HAVE_NL_LANGINFO +#ifdef HAVE_LANGINFO_CODESET utf8locale = strcmp(nl_langinfo(CODESET), "UTF-8") == 0; #endif /* gc_inhibit_torture = 0; */ --- src/main/platform.c.old 2004-04-17 15:06:04 +0200 +++ src/main/platform.c 2004-04-17 15:22:54 +0200 @@ -886,7 +886,7 @@ #ifdef HAVE_LOCALE_H # include <locale.h> #endif -#ifdef HAVE_LANGINFO_H +#ifdef HAVE_LANGINFO_CODESET # include <langinfo.h> #endif @@ -914,7 +914,7 @@ if(p) SET_STRING_ELT(ans, 0, mkChar(p)); else SET_STRING_ELT(ans, 0, mkChar("")); UNPROTECT(1); -#ifdef HAVE_NL_LANGINFO +#ifdef HAVE_LANGINFO_CODESET utf8locale = strcmp(nl_langinfo(CODESET), "UTF-8") == 0; #endif return ans; --- m4/Makefile.in.old 2004-04-17 15:27:37 +0200 +++ m4/Makefile.in 2004-04-17 15:27:50 +0200 @@ -13,6 +13,7 @@ distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) DISTFILES = Makefile.in README \ R.m4 \ + codeset.m4 \ gnome-gnorba-check.m4 \ gnome-orbit-check.m4 \ gnome.m4 \