Subject: Re: bug#8564: 24.0.50; bootstrap on windows 7: `gl-stamp' target failed

From: William Xu <[email-masked]>
Date: Thu, 28 Apr 2011 10:24:26 +0800

Eli Zaretskii <[email-masked]> writes:

   Is this something new?  Did you ever bootstrap on that machine, or on
   Windows 7 in general?

This is the first time i tried to compile emacs on Windows 7.

   After you bootstrap, does the same command work for a normal (i.e.,
   non-bootstrap) build, or does it fail in the same way?

Yes, if i revert my change.  I modified some c files, and run following
command: 

,----[ make gl-stamp ]
| cmd /c "fc /b gl-tmp globals.h >nul 2>&1 || cp -f gl-tmp globals.h"
| Microsoft Windows [Version 6.1.7600]
| Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
| 
| L:\bin\emacs\src>mingw32-make: *** [gl-stamp] Error 66048
`----

   Finally, what version of Make did you use for that bootstrap?  What
   does "make --version" display?  Also, did you use any kind of Unixy
   shell (Make announces at the very beginning of the build process
   whioch shell it uses)?

,----[ mingw32-make --version ]
| GNU Make 3.82
| Built for i386-pc-mingw32
| Copyright (C) 2010  Free Software Foundation, Inc.
| License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
| This is free software: you are free to change and redistribute it.
| There is NO WARRANTY, to the extent permitted by law.
`----

I was compiling in on cmd.exe(i have some unix tools on %path%, though)
The beginning: 

,----
| L:\bin\emacs\src>mingw32-make gl-stamp
| [Please ignore a syntax error on the next line - it is intentional]
| /bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
| /bin/sh: -c: line 1: syntax error: unexpected end of file
| rm gl-tmp
`----

   >   cp -f gl-tmp globals.h  # Wouldn't this be simpler & good enough? 

   No, it's not good enough.  `cp' updates the time stamp of globals.h
   each time you build, and therefore all the C files will be recompiled,
   because they all include globals.h, even though the contents of
   globals.h rarely changes.  That kinda makes Make redundant, since its
   main goal is to avoid unnecessary compilations...  The command that
   invokes `fc' only updates globals.h if the new version has different
   contents.  IOW, this is the Windows way of saying move-if-change.

How about using `diff' here? (considering commands like `cp' is already
dependent? )
  diff gl-tmp globals.h >nul 2>&1 || $(CP) gl-tmp globals.h

-- 
William

http://xwl.appspot.com