diff --git a/src/file.c b/src/file.c index 6862397a..ab46c4a1 100644 --- a/src/file.c +++ b/src/file.c @@ -273,14 +273,14 @@ rehash_file (struct file *from_file, const char *to_hname) { size_t l = strlen (from_file->name); /* We have two sets of commands. We will go with the - one given in the rule explicitly mentioning this name, + one given in the rule found through directory search, but give a message to let the user know what's going on. */ if (to_file->cmds->fileinfo.filenm != 0) error (&from_file->cmds->fileinfo, l + strlen (to_file->cmds->fileinfo.filenm) + INTSTR_LENGTH, _("Recipe was specified for file '%s' at %s:%lu,"), - from_file->name, to_file->cmds->fileinfo.filenm, - to_file->cmds->fileinfo.lineno); + from_file->name, from_file->cmds->fileinfo.filenm, + from_file->cmds->fileinfo.lineno); else error (&from_file->cmds->fileinfo, l, _("Recipe for file '%s' was found by implicit rule search,"), @@ -291,7 +291,7 @@ rehash_file (struct file *from_file, const char *to_hname) from_file->name, to_hname); error (&from_file->cmds->fileinfo, l, _("Recipe for '%s' will be ignored in favor of the one for '%s'."), - to_hname, from_file->name); + from_file->name, to_hname); } } diff --git a/tests/scripts/features/mult_rules b/tests/scripts/features/mult_rules index e706e17d..bddd501c 100644 --- a/tests/scripts/features/mult_rules +++ b/tests/scripts/features/mult_rules @@ -69,10 +69,20 @@ $answer = "EXTRA EXTRA\n"; unlink("defs.h","test.h","config.h","extra.h"); +# sv 62650. +# Test the message that make prints when a file found by directory search +# is preferred over the local one. +run_make_test(q! +vpath hello.c src +all: hello.c; $(info $@ from $^) +hello.c: ; $(info 1 $@) +src/hello.c: ; $(info 2 $@) +!, '', + "#MAKEFILE#:4: Recipe was specified for file 'hello.c' at #MAKEFILE#:4, +#MAKEFILE#:4: but 'hello.c' is now considered the same file as 'src/hello.c'. +#MAKEFILE#:4: Recipe for 'hello.c' will be ignored in favor of the one for 'src/hello.c'. +2 src/hello.c +all from src/hello.c +#MAKE#: 'all' is up to date.\n"); + 1; - - - - - - diff --git a/tests/scripts/features/se_explicit b/tests/scripts/features/se_explicit index d097e1a8..35418274 100644 --- a/tests/scripts/features/se_explicit +++ b/tests/scripts/features/se_explicit @@ -185,9 +185,9 @@ foo: $$@.o ; # Not creating libcat.a here prevents segfault, libcat.a: ; @touch $@ !, - '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:19, + '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:16, #MAKEFILE#:16: but '-lcat' is now considered the same file as 'libcat.a'. -#MAKEFILE#:16: Recipe for 'libcat.a' will be ignored in favor of the one for '-lcat'.!); +#MAKEFILE#:16: Recipe for '-lcat' will be ignored in favor of the one for 'libcat.a'.!); unlink('libcat.a'); # SV 28456 : Don't reset $$< for default recipes