FILE_TIMESTAMP this_mtime;
int noexist, must_make, deps_changed;
int dep_status = 0;
+ struct file *ofile;
struct dep *d, *ad;
struct dep amake;
int running = 0;
/* Notice recursive update of the same file. */
start_updating (file);
+ /* We might change file if we find a different one via vpath;
+ remember this one to turn off updating. */
+ ofile = file;
+
/* Looking at the file's modtime beforehand allows the possibility
that its name may be changed by a VPATH search, and thus it may
not need an implicit rule. If this were not done, the file
}
finish_updating (file);
+ finish_updating (ofile);
DBF (DB_VERBOSE, _("Finished prerequisites of target file `%s'.\n"));
check_dep (struct file *file, unsigned int depth,
FILE_TIMESTAMP this_mtime, int *must_make_ptr)
{
+ struct file *ofile;
struct dep *d;
int dep_status = 0;
++depth;
start_updating (file);
+ /* We might change file if we find a different one via vpath;
+ remember this one to turn off updating. */
+ ofile = file;
+
if (file->phony || !file->intermediate)
{
/* If this is a non-intermediate file, update it and record whether it
}
finish_updating (file);
+ finish_updating (ofile);
+
return dep_status;
}
\f
+2009-06-14 Paul Smith <psmith@gnu.org>
+
+ * scripts/features/vpath: Verify we don't get bogus circular
+ dependency warnings if we choose a different file via vpath during
+ update. Savannah bug #13529.
+
2009-06-13 Paul Smith <psmith@gnu.org>
* scripts/variables/MAKEFILES: Verify that MAKEFILES included
+# -*-perl-*-
+
$description = "The following test creates a makefile to test the \n"
."vpath directive which allows you to specify a search \n"
."path for a particular class of filenames, those that\n"
unlink @files_to_touch;
}
+# TEST 2: after vpath lookup ensure we don't get incorrect circular dependency
+# warnings due to change of struct file ptr. Savannah bug #13529.
+
+mkdir('vpath-d', 0777);
+
+run_make_test(q!
+vpath %.te vpath-d/
+.SECONDARY:
+default: vpath-d/a vpath-d/b
+vpath-d/a: fail.te
+vpath-d/b : fail.te
+vpath-d/fail.te:
+!,
+ '', "#MAKE#: Nothing to be done for `default'.\n");
+
+rmdir('vpath-d');
+
1;