Hi  Paul:
    Thanks for the reply. I think MS Outlook is converting my mail to HTML.
I hope this one ends up in plain text.

 Problem 1)  On NT this doesn't work even if the timestamp of the dependency
is newer by a day! I think it is a bug in the windows port.

Problem 2) I got this working with the .PHONY rule. Thanks.

Rgds,
Mohan

----- Original Message -----
From: "Paul D. Smith" <[EMAIL PROTECTED]>
To: "Mohan Krishnan" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Thursday, March 16, 2000 6:59 AM
Subject: Re: Timestamp is not being checked on NT + other


> %% "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