* Ignore attempt to change a file into itself.

* Define COFLAGS to avoid unknown variable warning.
* Fix some usec problems on UnixWare.
* Don't remove .INTERMEDIATE targets specified on the command line.
This commit is contained in:
Paul Smith 2000-03-26 06:56:54 +00:00
parent 75f879f37f
commit a81013175c
7 changed files with 49 additions and 13 deletions

View file

@ -1,3 +1,28 @@
2000-03-26 Paul D. Smith <psmith@gnu.org>
* file.c (remove_intermediates): Never remove targets explicitly
requested on the command-line by checking the cmd_target flag.
Fixed PR/1669.
2000-03-23 Paul Eggert <eggert@twinsun.com>
* filedef.h (FILE_TIMESTAMP_STAT_MODTIME): Don't use
st_mtim.tv_sec; this doesn't work on Unixware.
2000-03-18 Paul D. Smith <psmith@gnu.org>
* file.c (file_hash_enter): If we're trying to change a file into
itself, just return. We used to assert this wasn't true, but
someone came up with a weird case involving archives. After
playing with it for a while I decided it was OK to ignore it.
* default.c: Define COFLAGS to empty to avoid spurious warnings.
* filedef.h: Change #if ST_MTIM_NSEC to #ifdef; this is a macro
containing the name of the nsec field, not true/false.
* make.h: Ditto.
Reported by Marco Franzen <Marco.Franzen@Thyron.com>.
2000-02-09 Paul D. Smith <psmith@gnu.org> 2000-02-09 Paul D. Smith <psmith@gnu.org>
* Version 3.78.91 released. * Version 3.78.91 released.

View file

@ -396,10 +396,10 @@ static char *default_variables[] =
/* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist,
and to the empty string if $@ does exist. */ and to the empty string if $@ does exist. */
"CHECKOUT,v", "CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)",
"+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)",
"CO", "co", "CO", "co",
"COFLAGS", "",
"CPP", "$(CC) -E", "CPP", "$(CC) -E",
#ifdef CRAY #ifdef CRAY
"CF77PPFLAGS", "-P", "CF77PPFLAGS", "-P",

10
file.c
View file

@ -128,8 +128,7 @@ enter_file (name)
char *lname, *ln; char *lname, *ln;
#endif #endif
if (*name == '\0') assert (*name != '\0');
abort ();
#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS) #if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS)
lname = (char *)malloc (strlen (name) + 1); lname = (char *)malloc (strlen (name) + 1);
@ -252,8 +251,9 @@ file_hash_enter (file, name, oldhash, oldname)
if (strieq (oldfile->hname, name)) if (strieq (oldfile->hname, name))
break; break;
/* If the old file is the same as the new file, something's wrong. */ /* If the old file is the same as the new file, never mind. */
assert (oldfile != file); if (oldfile == file)
return;
if (oldhash != 0 && (newbucket != oldbucket || oldfile != 0)) if (oldhash != 0 && (newbucket != oldbucket || oldfile != 0))
{ {
@ -394,7 +394,7 @@ remove_intermediates (sig)
for (i = 0; i < FILE_BUCKETS; ++i) for (i = 0; i < FILE_BUCKETS; ++i)
for (f = files[i]; f != 0; f = f->next) for (f = files[i]; f != 0; f = f->next)
if (f->intermediate && (f->dontcare || !f->precious) if (f->intermediate && (f->dontcare || !f->precious)
&& !f->secondary) && !f->secondary && !f->cmd_target)
{ {
int status; int status;
if (f->update_status == -1) if (f->update_status == -1)

View file

@ -117,9 +117,9 @@ extern void set_command_state PARAMS ((struct file *file, int state));
extern void notice_finished_file PARAMS ((struct file *file)); extern void notice_finished_file PARAMS ((struct file *file));
#if ST_MTIM_NSEC #ifdef ST_MTIM_NSEC
# define FILE_TIMESTAMP_STAT_MODTIME(st) \ # define FILE_TIMESTAMP_STAT_MODTIME(st) \
FILE_TIMESTAMP_FROM_S_AND_NS ((st).st_mtim.tv_sec, \ FILE_TIMESTAMP_FROM_S_AND_NS ((st).st_mtime, \
(st).st_mtim.ST_MTIM_NSEC) (st).st_mtim.ST_MTIM_NSEC)
# define FILE_TIMESTAMPS_PER_S \ # define FILE_TIMESTAMPS_PER_S \
MIN ((FILE_TIMESTAMP) 1000000000, \ MIN ((FILE_TIMESTAMP) 1000000000, \

2
make.h
View file

@ -275,7 +275,7 @@ extern char *alloca ();
# endif /* HAVE_ALLOCA_H. */ # endif /* HAVE_ALLOCA_H. */
#endif /* GCC. */ #endif /* GCC. */
#if ST_MTIM_NSEC #ifdef ST_MTIM_NSEC
# if HAVE_INTTYPES_H # if HAVE_INTTYPES_H
# include <inttypes.h> # include <inttypes.h>
# endif # endif

View file

@ -1,3 +1,8 @@
2000-03-26 Paul D. Smith <psmith@gnu.org>
* scripts/targets/INTERMEDIATE: Test that make doesn't remove
.INTERMEDIATE files when given on the command line (PR/1669).
2000-02-07 Paul D. Smith <psmith@gnu.org> 2000-02-07 Paul D. Smith <psmith@gnu.org>
* scripts/features/escape: Add a test for backslash-escaped spaces * scripts/features/escape: Add a test for backslash-escaped spaces

View file

@ -77,9 +77,15 @@ sleep($wtime);
$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"; $answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n";
&compare_output($answer, &get_logfile(1)); &compare_output($answer, &get_logfile(1));
# TEST #6 -- added for PR/1669: don't remove files mentioned on the cmd line.
&run_make_with_options($makefile,'foo.e',&get_logfile);
$answer = "cp foo.f foo.e\n";
&compare_output($answer, &get_logfile(1));
unlink('foo.f', 'foo.e', 'foo.d', 'foo.c', 'bar.f', 'bar.e', 'bar.d', 'bar.c'); unlink('foo.f', 'foo.e', 'foo.d', 'foo.c', 'bar.f', 'bar.e', 'bar.d', 'bar.c');
# TEST #6 -- added for PR/1423 # TEST #7 -- added for PR/1423
$makefile2 = &get_tmpfile; $makefile2 = &get_tmpfile;
@ -94,7 +100,7 @@ EOF
close(MAKEFILE); close(MAKEFILE);
&run_make_with_options($makefile2, "-R", &get_logfile); &run_make_with_options($makefile2, '-R', &get_logfile);
$answer = "touch foo.a\ntouch foo\nrm foo.a\n"; $answer = "touch foo.a\ntouch foo\nrm foo.a\n";
&compare_output($answer, &get_logfile(1)); &compare_output($answer, &get_logfile(1));