%% "Mohan Krishnan" <[EMAIL PROTECTED]> writes:

Hi; please don't send HTML to the list, thanks!

  mk> I hv make version 3.78.1 on NT.

  mk> 1) make reports "nothing to make" even though the target has
  mk> changed. Same test works fine on Solaris.  I am attaching a small
  mk> test Makefile with some test files.  First time through make will
  mk> create the .out files (by touch.exe). Now open up aaa.txt and edit
  mk> and save it. then try make again. It would report nothing to make.

I can't reproduce this on UNIX and I don't have any Windows systems.  I
don't really support the Windows port; you need to talk to the folks
that do (see the AUTHORS file in the GNU make distribution).

However, I do know that due to limitations in the Windows filesystem,
GNU make is forced to treat all timestamps within 2 or 3 seconds of each
other as identical.  So, if you update that file sufficiently quickly
from the time the .out file was changed make might not notice there's
been a change.

Comments in the code say:

  #ifdef WINDOWS32
          /*
           * FAT filesystems round time to nearest even second(!). Just
           * allow for any file (NTFS or FAT) to perhaps suffer from this
           * braindamage.
           */
          if (mtime > now && (((mtime % 2) == 0) && ((mtime-1) > now)))
  #else
  #ifdef __MSDOS__
          /* Scrupulous testing indicates that some Windows
             filesystems can set file times up to 3 sec into the future!  */
          if (mtime > now + 3)
  #else
          if (mtime > now)
  #endif
  #endif

Other than that, I'm afraid I don't have much to say.  Try running make
with the -d option and see why it doesn't want to remake the file.

  mk> 2) This problem occurs both in NT and Solaris. If the target is a
  mk> directory in your present working directory then make will always
  mk> report "xyz is up to date"!

This isn't a bug, this is expected behavior.  Make doesn't differentiate
between directories and files: if the target exists, it exists.

What if you _wanted_ to write a target that created a directory:

  $(OBJDIR): ; mkdir $(OBJDIR)

?  This is actually not that uncommon (although not the best way to do
it, IMO).

Look up the .PHONY rule in the GNU make manual for how to make this work
as you want.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <[EMAIL PROTECTED]>         Network Management Development
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist
-------------------------------------------------------------------------------
   These are my opinions---Nortel Networks takes no responsibility for them.

Reply via email to