changeset 10758:bca6f1ff10b0

Make determination of absolute name of header file work with AIX xlc.
author Bruno Haible <bruno@clisp.org>
date Tue, 04 Nov 2008 01:52:43 +0100
parents 0affc3e42aa9
children 77b9ffbd359f
files ChangeLog m4/absolute-header.m4 m4/include_next.m4
diffstat 3 files changed, 42 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Nov 03 12:20:18 2008 +0100
+++ b/ChangeLog	Tue Nov 04 01:52:43 2008 +0100
@@ -1,3 +1,12 @@
+2008-11-03  Bruno Haible  <bruno@clisp.org>
+
+	Make determination of absolute name of header file work with AIX xlc.
+	* m4/include_next.m4 (gl_CHECK_NEXT_HEADERS): Require
+	AC_CANONICAL_HOST. On AIX, use "$CPP -C" rather than "$CPP" for
+	preprocessing.
+	* m4/absolute-header.m4 (gl_ABSOLUTE_HEADER): Likewise.
+	Reported by Gary V. Vaughan <gary@thewrittenword.com>.
+
 2008-11-03  Simon Josefsson  <simon@josefsson.org>
 
 	* top/maint.mk (COVERAGE_CCOPTS): Use --coverage instead of
--- a/m4/absolute-header.m4	Mon Nov 03 12:20:18 2008 +0100
+++ b/m4/absolute-header.m4	Tue Nov 04 01:52:43 2008 +0100
@@ -1,4 +1,4 @@
-# absolute-header.m4 serial 9
+# absolute-header.m4 serial 10
 dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,8 @@
 # preprocessing, i.e. it does not only define preprocessor macros but also
 # provides some type/enum definitions or function/variable declarations.
 AC_DEFUN([gl_ABSOLUTE_HEADER],
-[AC_LANG_PREPROC_REQUIRE()dnl
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PREPROC_REQUIRE()dnl
 m4_foreach_w([gl_HEADER_NAME], [$1],
   [AS_VAR_PUSHDEF([gl_absolute_header],
                   [gl_cv_absolute_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
@@ -31,10 +32,22 @@
     AC_CHECK_HEADERS_ONCE(m4_quote(m4_defn([gl_HEADER_NAME])))dnl
     if test AS_VAR_GET(ac_header_exists) = yes; then
       AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]])])
-dnl eval is necessary to expand ac_cpp.
-dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
+      dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+      dnl that contain only a #include of other header files and no
+      dnl non-comment tokens of their own. This leads to a failure to
+      dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+      dnl and others. The workaround is to force preservation of comments
+      dnl through option -C. This ensures all necessary #line directives
+      dnl are present. GCC supports option -C as well.
+      case "$host_os" in
+        aix*) gl_absname_cpp="$ac_cpp -C" ;;
+        *)    gl_absname_cpp="$ac_cpp" ;;
+      esac
+      dnl eval is necessary to expand gl_absname_cpp.
+      dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+      dnl so use subshell.
       AS_VAR_SET(gl_absolute_header,
-[`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
 sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
 	s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
 	s#^/[^/]#//&#
--- a/m4/include_next.m4	Mon Nov 03 12:20:18 2008 +0100
+++ b/m4/include_next.m4	Tue Nov 04 01:52:43 2008 +0100
@@ -1,4 +1,4 @@
-# include_next.m4 serial 8
+# include_next.m4 serial 9
 dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -87,6 +87,7 @@
 AC_DEFUN([gl_CHECK_NEXT_HEADERS],
 [
   AC_REQUIRE([gl_INCLUDE_NEXT])
+  AC_REQUIRE([AC_CANONICAL_HOST])
   AC_CHECK_HEADERS_ONCE([$1])
 
   m4_foreach_w([gl_HEADER_NAME], [$1],
@@ -105,11 +106,22 @@
 	      [AC_LANG_SOURCE(
 		 [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
 	       )])
-	    dnl eval is necessary to expand ac_cpp.
+	    dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+	    dnl that contain only a #include of other header files and no
+	    dnl non-comment tokens of their own. This leads to a failure to
+	    dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+	    dnl and others. The workaround is to force preservation of comments
+	    dnl through option -C. This ensures all necessary #line directives
+	    dnl are present. GCC supports option -C as well.
+	    case "$host_os" in
+	      aix*) gl_absname_cpp="$ac_cpp -C" ;;
+	      *)    gl_absname_cpp="$ac_cpp" ;;
+	    esac
+	    dnl eval is necessary to expand gl_absname_cpp.
 	    dnl Ultrix and Pyramid sh refuse to redirect output of eval,
 	    dnl so use subshell.
 	    AS_VAR_SET([gl_next_header],
-	      ['"'`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+	      ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
 	       sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
 		 s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
 		 s#^/[^/]#//&#