From bunk at fs.tum.de  Sun Apr 18 00:19:01 2004
From: bunk at fs.tum.de (bunk@fs.tum.de)
Date: Sun Apr 18 00:19:04 2004
Subject: [Rd] [patch] R-1.9.0: compile error without nl_langinfo(CODESET)
	(PR#6789)
Message-ID: <20040417221901.DA87610478@slim.kubism.ku.dk>

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 \


[Rd] [patch] R-1.9.0: compile error without nl_langinfo(CODESET) (PR#6789)
bunk@fs.tum.de