<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><div><div style="font-family: Calibri,sans-serif; font-size: 11pt;">Hi Bryce,<br><br>Cairo's curren</div></div><div dir="ltr"><hr><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">寄件者: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:bryce@osg.samsung.com">Bryce Harrington</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">寄件日期: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">‎2015/‎4/‎23 08:11</span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">收件者: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:Simon.Richter@hogyros.de">Simon Richter</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">副本: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:cairo@cairographics.org">cairo@cairographics.org</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">主旨: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">Re: [cairo] [PATCH] Fix Windows build with cmd.exe as shell</span><br><br></div>On Wed, Apr 22, 2015 at 11:05:41AM +0200, Simon Richter wrote:<br>> cmd.exe has unsubtly different behaviour from POSIX sh in a lot of places.<br>> This determines whether the current default shell for make is cmd.exe, and<br>> avoids "mkdir -p", "rm" and quotes around the argument to echo in this<br>> case.<br><br>What exactly is the breakage that this fixes?  IOW, why has the current<br>code worked up 'til now on windows?<br><br>> ---<br>>  build/Makefile.win32.common     | 22 ++++++---<br>>  build/Makefile.win32.features-h | 98 ++++++++++++++++++++---------------------<br>>  build/Makefile.win32.inform     | 14 +++---<br>>  build/configure.ac.features     | 12 ++---<br>>  src/Makefile.win32              | 21 +++++----<br>>  5 files changed, 92 insertions(+), 75 deletions(-)<br>> <br>> diff --git a/build/Makefile.win32.common b/build/Makefile.win32.common<br>> index 7d7e973..3e4024d 100644<br>> --- a/build/Makefile.win32.common<br>> +++ b/build/Makefile.win32.common<br>> @@ -1,5 +1,17 @@<br>>  default: all<br>>  <br>> +ifeq ($(shell echo ""),)<br>> +# POSIX style shell<br>> +mkdir_p = mkdir -p $1<br>> +rm = $(RM) $1<br>> +echo = echo "$1"<br>> +else<br>> +# DOS/Windows style shell<br>> +mkdir_p = if not exist $(subst /,\,$1) md $(subst /,\,$1)<br>> +echo = $(if $1,echo $1,echo.)<br>> +rm = del $(subst /,\,$1)<br>> +endif<br><br>If you use := instead of = for these command definitions, would it<br>eliminate the need for the calls in the rest of the patch?<br><br>Also, the makefile style seems to be to use uppercase letters when<br>using variables rather than system commands, so you should be specifying<br>MKDIR_P, ECHO, and RM.<br><br>>  #<br>>  # Edit build/Makefile.win32.features to enable features to build<br>>  #<br>> @@ -63,12 +75,12 @@ CAIRO_ARFLAGS = $(DEFAULT_ARFLAGS) $(LDFLAGS)<br>>  # Some generic rules<br>>  <br>>  $(CFG)/%.obj: %.c $(top_srcdir)/src/cairo-features.h<br>> -    @mkdir -p $(CFG)/`dirname $<`<br>> -        @$(CC) $(CAIRO_CFLAGS) -c -Fo"$@" $<<br>> +       $(call mkdir_p,$(@D))<br>> +   $(CC) $(CAIRO_CFLAGS) -c -Fo"$@" $<<br>>  <br>>  $(CFG)/%-static.obj: %.c $(top_srcdir)/src/cairo-features.h<br>> -   @mkdir -p $(CFG)/`dirname $<`<br>> -        @$(CC) $(CAIRO_CFLAGS) -c -DCAIRO_WIN32_STATIC_BUILD=1 -Fo"$@" $<<br>> +  $(call mkdir_p,$(@D))<br>> +   $(CC) $(CAIRO_CFLAGS) -c -DCAIRO_WIN32_STATIC_BUILD=1 -Fo"$@" $<<br>>  <br>>  clean:<br>> -   @rm -f $(CFG)/*.obj $(CFG)/*.dll $(CFG)/*.lib $(CFG)/*.pdb $(CFG)/*.ilk || exit 0<br>> +       -$(call rm,$(CFG)/*.obj $(CFG)/*.dll $(CFG)/*.lib $(CFG)/*.pdb $(CFG)/*.ilk)<br>> diff --git a/build/Makefile.win32.features-h b/build/Makefile.win32.features-h<br>> index 13904cf..f3dd420 100644<br>> --- a/build/Makefile.win32.features-h<br>> +++ b/build/Makefile.win32.features-h<br>> @@ -1,130 +1,130 @@<br>>  # Generated by configure.  Do not edit.<br>>  <br>>  $(top_srcdir)/src/cairo-features.h: $(top_srcdir)/build/Makefile.win32.features<br>> -       @echo "Generating src/cairo-features.h"<br>> -       @echo "/* Generated by Makefile.win32.features-h.  Do not edit. */" > $(top_srcdir)/src/cairo-features.h<br>> -      @echo "#ifndef CAIRO_FEATURES_H" >> $(top_srcdir)/src/cairo-features.h<br>> -  @echo "#define CAIRO_FEATURES_H 1" >> $(top_srcdir)/src/cairo-features.h<br>> +        @$(call echo,Generating src/cairo-features.h)<br>> +   @$(call echo,/* Generated by Makefile.win32.features-h.  Do not edit. */) > $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#ifndef CAIRO_FEATURES_H) >> $(top_srcdir)/src/cairo-features.h<br>> +      @$(call echo,#define CAIRO_FEATURES_H 1) >> $(top_srcdir)/src/cairo-features.h<br>>  ifeq ($(CAIRO_HAS_XLIB_SURFACE),1)<br>> -     @echo "#define CAIRO_HAS_XLIB_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_XLIB_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_XLIB_XRENDER_SURFACE),1)<br>> -     @echo "#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_XCB_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_XCB_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_XCB_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_XLIB_XCB_FUNCTIONS),1)<br>> -        @echo "#define CAIRO_HAS_XLIB_XCB_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_XLIB_XCB_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_XCB_SHM_FUNCTIONS),1)<br>> -  @echo "#define CAIRO_HAS_XCB_SHM_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> +     @$(call echo,#define CAIRO_HAS_XCB_SHM_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_QT_SURFACE),1)<br>> -  @echo "#define CAIRO_HAS_QT_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_QT_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_QUARTZ_SURFACE),1)<br>> -     @echo "#define CAIRO_HAS_QUARTZ_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +        @$(call echo,#define CAIRO_HAS_QUARTZ_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_QUARTZ_FONT),1)<br>> -    @echo "#define CAIRO_HAS_QUARTZ_FONT 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_QUARTZ_FONT 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_QUARTZ_IMAGE_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_WIN32_SURFACE),1)<br>> -    @echo "#define CAIRO_HAS_WIN32_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_WIN32_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_WIN32_FONT),1)<br>> -      @echo "#define CAIRO_HAS_WIN32_FONT 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_WIN32_FONT 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_SKIA_SURFACE),1)<br>> -       @echo "#define CAIRO_HAS_SKIA_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_SKIA_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_OS2_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_OS2_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_OS2_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_BEOS_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_BEOS_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_BEOS_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_DRM_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_DRM_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_DRM_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_GALLIUM_SURFACE),1)<br>> -   @echo "#define CAIRO_HAS_GALLIUM_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +       @$(call echo,#define CAIRO_HAS_GALLIUM_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_PNG_FUNCTIONS),1)<br>> - @echo "#define CAIRO_HAS_PNG_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_PNG_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_GL_SURFACE),1)<br>> -      @echo "#define CAIRO_HAS_GL_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_GL_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_GLESV2_SURFACE),1)<br>> -     @echo "#define CAIRO_HAS_GLESV2_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +        @$(call echo,#define CAIRO_HAS_GLESV2_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_COGL_SURFACE),1)<br>> -   @echo "#define CAIRO_HAS_COGL_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,#define CAIRO_HAS_COGL_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_DIRECTFB_SURFACE),1)<br>> - @echo "#define CAIRO_HAS_DIRECTFB_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +      @$(call echo,#define CAIRO_HAS_DIRECTFB_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_VG_SURFACE),1)<br>> -   @echo "#define CAIRO_HAS_VG_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_VG_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_EGL_FUNCTIONS),1)<br>> -      @echo "#define CAIRO_HAS_EGL_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_EGL_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_GLX_FUNCTIONS),1)<br>> -   @echo "#define CAIRO_HAS_GLX_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_GLX_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_WGL_FUNCTIONS),1)<br>> -   @echo "#define CAIRO_HAS_WGL_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_WGL_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_SCRIPT_SURFACE),1)<br>> -  @echo "#define CAIRO_HAS_SCRIPT_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +        @$(call echo,#define CAIRO_HAS_SCRIPT_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_FT_FONT),1)<br>> -        @echo "#define CAIRO_HAS_FT_FONT 1" >> $(top_srcdir)/src/cairo-features.h<br>> +       @$(call echo,#define CAIRO_HAS_FT_FONT 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_FC_FONT),1)<br>> -       @echo "#define CAIRO_HAS_FC_FONT 1" >> $(top_srcdir)/src/cairo-features.h<br>> +       @$(call echo,#define CAIRO_HAS_FC_FONT 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_PS_SURFACE),1)<br>> -    @echo "#define CAIRO_HAS_PS_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,#define CAIRO_HAS_PS_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_PDF_SURFACE),1)<br>> -        @echo "#define CAIRO_HAS_PDF_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_PDF_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_SVG_SURFACE),1)<br>> -       @echo "#define CAIRO_HAS_SVG_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_SVG_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_TEST_SURFACES),1)<br>> -     @echo "#define CAIRO_HAS_TEST_SURFACES 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_TEST_SURFACES 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>> -   @echo "#define CAIRO_HAS_IMAGE_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> - @echo "#define CAIRO_HAS_MIME_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> -  @echo "#define CAIRO_HAS_RECORDING_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> -     @echo "#define CAIRO_HAS_OBSERVER_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +      @$(call echo,#define CAIRO_HAS_IMAGE_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>> +     @$(call echo,#define CAIRO_HAS_MIME_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>> +      @$(call echo,#define CAIRO_HAS_RECORDING_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_OBSERVER_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  ifeq ($(CAIRO_HAS_TEE_SURFACE),1)<br>> -    @echo "#define CAIRO_HAS_TEE_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_TEE_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_XML_SURFACE),1)<br>> -       @echo "#define CAIRO_HAS_XML_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_XML_SURFACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>> -     @echo "#define CAIRO_HAS_USER_FONT 1" >> $(top_srcdir)/src/cairo-features.h<br>> +     @$(call echo,#define CAIRO_HAS_USER_FONT 1) >> $(top_srcdir)/src/cairo-features.h<br>>  ifeq ($(CAIRO_HAS_PTHREAD),1)<br>> -       @echo "#define CAIRO_HAS_PTHREAD 1" >> $(top_srcdir)/src/cairo-features.h<br>> +       @$(call echo,#define CAIRO_HAS_PTHREAD 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_GOBJECT_FUNCTIONS),1)<br>> -     @echo "#define CAIRO_HAS_GOBJECT_FUNCTIONS 1" >> $(top_srcdir)/src/cairo-features.h<br>> +     @$(call echo,#define CAIRO_HAS_GOBJECT_FUNCTIONS 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_TRACE),1)<br>> -       @echo "#define CAIRO_HAS_TRACE 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_TRACE 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_INTERPRETER),1)<br>> -     @echo "#define CAIRO_HAS_INTERPRETER 1" >> $(top_srcdir)/src/cairo-features.h<br>> +   @$(call echo,#define CAIRO_HAS_INTERPRETER 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>>  ifeq ($(CAIRO_HAS_SYMBOL_LOOKUP),1)<br>> -     @echo "#define CAIRO_HAS_SYMBOL_LOOKUP 1" >> $(top_srcdir)/src/cairo-features.h<br>> + @$(call echo,#define CAIRO_HAS_SYMBOL_LOOKUP 1) >> $(top_srcdir)/src/cairo-features.h<br>>  endif<br>> -   @echo "#endif" >>  $(top_srcdir)/src/cairo-features.h<br>> +      @$(call echo,#endif) >>  $(top_srcdir)/src/cairo-features.h<br>> diff --git a/build/Makefile.win32.inform b/build/Makefile.win32.inform<br>> index ba11165..99a438c 100644<br>> --- a/build/Makefile.win32.inform<br>> +++ b/build/Makefile.win32.inform<br>> @@ -1,13 +1,13 @@<br>>  inform:<br>> -     @echo<br>> +   @$(call echo)<br>>  ifneq ($(CFG),release)<br>>  ifneq ($(CFG),debug)<br>> -       @echo "Invalid configuration "$(CFG)" specified."<br>> -   @echo -n "You must specify a configuration when "<br>> -     @echo "running make, e.g. make CFG=debug"<br>> -     @echo<br>> -   @echo -n "Possible choices for configuration are "<br>> -    @echo "'release' and 'debug'"<br>> + @$(call echo,Invalid configuration "$(CFG)" specified.)<br>> +       @$(call echo,You must specify a configuration when)<br>> +     @$(call echo,running make, e.g. make CFG=debug)<br>> + @$(call echo)<br>> +   @$(call echo,Possible choices for configuration are)<br>> +    @$(call echo,'release' and 'debug')<br>>          @exit 1<br>>  endif<br>>  endif<br>> diff --git a/build/configure.ac.features b/build/configure.ac.features<br>> index e4a2aaf..af378c2 100644<br>> --- a/build/configure.ac.features<br>> +++ b/build/configure.ac.features<br>> @@ -296,17 +296,17 @@ CAIRO_CONFIG_MAKEFILE_PRIVATE_WIN32([win32_features_h],[build],[features-h])<br>>  dnl<br>>  CAIRO_MAKEFILE_ACCUMULATE([win32_features_h],<br>>  [$(top_srcdir)/src/cairo-features.h: $(top_srcdir)/build/Makefile.win32.features<br>> -    @echo "Generating src/cairo-features.h"<br>> -       @echo "/* Generated by Makefile.win32.features-h.  Do not edit. */" > $(top_srcdir)/src/cairo-features.h<br>> -      @echo "[#]ifndef CAIRO_FEATURES_H" >> $(top_srcdir)/src/cairo-features.h<br>> -        @echo "[#]define CAIRO_FEATURES_H 1" >> $(top_srcdir)/src/cairo-features.h]dnl<br>> +  @$(call echo,Generating src/cairo-features.h)<br>> +   @$(call echo,/* Generated by Makefile.win32.features-h.  Do not edit. */) > $(top_srcdir)/src/cairo-features.h<br>> +  @$(call echo,[#]ifndef CAIRO_FEATURES_H) >> $(top_srcdir)/src/cairo-features.h<br>> +    @$(call echo,[#]define CAIRO_FEATURES_H 1) >> $(top_srcdir)/src/cairo-features.h]dnl<br>>  )<br>>  AC_CONFIG_COMMANDS_PRE(<br>>  [dnl<br>> -   CAIRO_MAKEFILE_ACCUMULATE([win32_features_h], [ @echo "[#]endif" >>  $(top_srcdir)/src/cairo-features<br><div>[未包括完整原始郵件。]</div></body></html>