From dfcf42ed7a2c951759d87f7e35b052d081922610 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 1 May 2017 12:36:02 +0200 Subject: [PATCH] wchar: Fix compilation error with the original mingw.org mingw. * lib/wchar.in.h (rpl_wint_t): If does not exist, include instead. * m4/wint_t.m4 (gl_TYPE_WINT_T_PREREQ): New macro, extracted from gl_WCTYPE_H. * m4/wctype_h.m4 (gl_WCTYPE_H): Don't set HAVE_CRTDEFS_H here; require gl_TYPE_WINT_T_PREREQ instead. * m4/wchar_h.m4 (gl_WCHAR_H): Require gl_TYPE_WINT_T_PREREQ. * modules/wchar (Makefile.am): Substitute HAVE_CRTDEFS_H. Reported by Eli Zaretskii . --- ChangeLog | 13 +++++++++++++ lib/wchar.in.h | 12 ++++++++---- m4/wchar_h.m4 | 4 +++- m4/wctype_h.m4 | 12 +++--------- m4/wint_t.m4 | 14 +++++++++++++- modules/wchar | 1 + 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9983e64a19..2de382e959 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2017-05-01 Bruno Haible + + wchar: Fix compilation error with the original mingw.org mingw. + * lib/wchar.in.h (rpl_wint_t): If does not exist, include + instead. + * m4/wint_t.m4 (gl_TYPE_WINT_T_PREREQ): New macro, extracted from + gl_WCTYPE_H. + * m4/wctype_h.m4 (gl_WCTYPE_H): Don't set HAVE_CRTDEFS_H here; require + gl_TYPE_WINT_T_PREREQ instead. + * m4/wchar_h.m4 (gl_WCHAR_H): Require gl_TYPE_WINT_T_PREREQ. + * modules/wchar (Makefile.am): Substitute HAVE_CRTDEFS_H. + Reported by Eli Zaretskii . + 2017-04-30 Bruno Haible utimecmp: Add support for native Windows. diff --git a/lib/wchar.in.h b/lib/wchar.in.h index ef155d22d7..8666b5d1de 100644 --- a/lib/wchar.in.h +++ b/lib/wchar.in.h @@ -113,12 +113,16 @@ # define WEOF -1 # endif #else -/* mingw and MSVC define wint_t as 'unsigned short' in . - This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be - "unchanged by default argument promotions". Override it. */ +/* mingw and MSVC define wint_t as 'unsigned short' in or + . This is too small: ISO C 99 section 7.24.1.(2) says that + wint_t must be "unchanged by default argument promotions". Override it. */ # if @GNULIB_OVERRIDES_WINT_T@ # if !GNULIB_defined_wint_t -# include +# if @HAVE_CRTDEFS_H@ +# include +# else +# include +# endif typedef unsigned int rpl_wint_t; # undef wint_t # define wint_t rpl_wint_t diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4 index 621cfb9df4..1a2734cfed 100644 --- a/m4/wchar_h.m4 +++ b/m4/wchar_h.m4 @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl Written by Eric Blake. -# wchar_h.m4 serial 41 +# wchar_h.m4 serial 42 AC_DEFUN([gl_WCHAR_H], [ @@ -35,6 +35,8 @@ AC_DEFUN([gl_WCHAR_H], fi AC_SUBST([HAVE_WINT_T]) + AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) + dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ diff --git a/m4/wctype_h.m4 b/m4/wctype_h.m4 index c72a73fe2e..0c8c3053c2 100644 --- a/m4/wctype_h.m4 +++ b/m4/wctype_h.m4 @@ -1,4 +1,4 @@ -# wctype_h.m4 serial 19 +# wctype_h.m4 serial 20 dnl A placeholder for ISO C99 , for platforms that lack it. @@ -30,6 +30,8 @@ AC_DEFUN([gl_WCTYPE_H], fi AC_SUBST([HAVE_WINT_T]) + AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) + gl_CHECK_NEXT_HEADERS([wctype.h]) if test $ac_cv_header_wctype_h = yes; then if test $ac_cv_func_iswcntrl = yes; then @@ -66,14 +68,6 @@ AC_DEFUN([gl_WCTYPE_H], fi AC_SUBST([HAVE_WCTYPE_H]) - AC_CHECK_HEADERS_ONCE([crtdefs.h]) - if test $ac_cv_header_crtdefs_h = yes; then - HAVE_CRTDEFS_H=1 - else - HAVE_CRTDEFS_H=0 - fi - AC_SUBST([HAVE_CRTDEFS_H]) - case "$gl_cv_func_iswcntrl_works" in *yes) REPLACE_ISWCNTRL=0 ;; *) REPLACE_ISWCNTRL=1 ;; diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 index 65e25a4c38..d30b8bcf83 100644 --- a/m4/wint_t.m4 +++ b/m4/wint_t.m4 @@ -1,4 +1,4 @@ -# wint_t.m4 serial 6 +# wint_t.m4 serial 7 dnl Copyright (C) 2003, 2007-2017 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -60,3 +60,15 @@ AC_DEFUN([gt_TYPE_WINT_T], fi AC_SUBST([GNULIB_OVERRIDES_WINT_T]) ]) + +dnl Prerequisites of the 'wint_t' override. +AC_DEFUN([gl_TYPE_WINT_T_PREREQ], +[ + AC_CHECK_HEADERS_ONCE([crtdefs.h]) + if test $ac_cv_header_crtdefs_h = yes; then + HAVE_CRTDEFS_H=1 + else + HAVE_CRTDEFS_H=0 + fi + AC_SUBST([HAVE_CRTDEFS_H]) +]) diff --git a/modules/wchar b/modules/wchar index 73012c60d1..31770d8949 100644 --- a/modules/wchar +++ b/modules/wchar @@ -31,6 +31,7 @@ wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) -e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \ + -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \ -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \ -- 2.39.5