From 2d587337cf032f8f78bc47802db191b82d3b137b Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 10 Sep 2011 11:35:17 +0200 Subject: [PATCH] absolute-header, include-next: Add support for MSVC compiler. * m4/absolute-header.m4 (gl_ABSOLUTE_HEADER_ONE): Require AC_CANONICAL_HOST. On native Windows, recognize also backslash as directory separator in #line directives. * m4/include_next.m4 (gl_NEXT_HEADERS_INTERNAL): On native Windows, recognize also backslash as directory separator in #line directives. --- ChangeLog | 10 ++++++++++ m4/absolute-header.m4 | 32 +++++++++++++++++++++++++------- m4/include_next.m4 | 31 ++++++++++++++++++++++++------- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8fe495667..42da00811 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2011-09-10 Michael Goffioul (tiny change) + Bruno Haible + + absolute-header, include-next: Add support for MSVC compiler. + * m4/absolute-header.m4 (gl_ABSOLUTE_HEADER_ONE): Require + AC_CANONICAL_HOST. On native Windows, recognize also backslash as + directory separator in #line directives. + * m4/include_next.m4 (gl_NEXT_HEADERS_INTERNAL): On native Windows, + recognize also backslash as directory separator in #line directives. + 2011-09-08 Jim Meyering maint.mk: mark the post-release commit log with "maint: " prefix diff --git a/m4/absolute-header.m4 b/m4/absolute-header.m4 index dba8dbfe4..b6ace9321 100644 --- a/m4/absolute-header.m4 +++ b/m4/absolute-header.m4 @@ -1,4 +1,4 @@ -# absolute-header.m4 serial 13 +# absolute-header.m4 serial 14 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -53,6 +53,7 @@ m4_foreach_w([gl_HEADER_NAME], [$1], # - it is silent. AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], [ + AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) 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 @@ -65,15 +66,32 @@ AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac +changequote(,) + case "$host_os" in + mingw*) + dnl For the sake of native Windows compilers (excluding gcc), + dnl treat backslash as a directory separator, like /. + dnl Actually, these compilers use a double-backslash as + dnl directory separator, inside the + dnl # line "filename" + dnl directives. + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='/' + ;; + esac +changequote([,]) + gl_absolute_header_sed='\#'"${gl_dirsep_regex}"'$1#{ + s#.*"\(.*'"${gl_dirsep_regex}"'$1\)".*#\1# + s#^/[^/]#//&# + p + q + }' 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_cv_absolute_]AS_TR_SH([[$1]]), [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | -sed -n '\#/$1#{ - s#.*"\(.*/$1\)".*#\1# - s#^/[^/]#//&# - p - q -}'`]) + sed -n "$gl_absolute_header_sed"`]) ]) diff --git a/m4/include_next.m4 b/m4/include_next.m4 index ebf081a11..14a1009b5 100644 --- a/m4/include_next.m4 +++ b/m4/include_next.m4 @@ -1,4 +1,4 @@ -# include_next.m4 serial 20 +# include_next.m4 serial 21 dnl Copyright (C) 2006-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -207,17 +207,34 @@ dnl until we can assume autoconf 2.64 or newer. aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac +changequote(,) + case "$host_os" in + mingw*) + dnl For the sake of native Windows compilers (excluding gcc), + dnl treat backslash as a directory separator, like /. + dnl Actually, these compilers use a double-backslash as + dnl directory separator, inside the + dnl # line "filename" + dnl directives. + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='/' + ;; + esac +changequote([,]) + gl_absolute_header_sed='\#'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[#{ + s#.*"\(.*'"${gl_dirsep_regex}"']m4_defn([gl_HEADER_NAME])[\)".*#\1# + s#^/[^/]#//&# + p + q + }' 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 "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | - sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{ - s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1# - s#^/[^/]#//&# - p - q - }'`'"']) + sed -n "$gl_absolute_header_sed"`'"']) m4_if([$2], [check], [else AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) -- 2.11.0