$description = "\
The following test creates a makefile to test the presence
of multiple rules for one target.  One file can be the
target of several rules if at most one rule has commands;
the other rules can only have dependencies.";

$details = "\
The makefile created in this test contains two hardcoded rules
for foo.o and bar.o.  It then gives another multiple target rule
with the same names as above but adding more dependencies.
Additionally, another variable extradeps is listed as a
dependency but is defined to be null.  It can however be defined
on the make command line as extradeps=extra.h which adds yet
another dependency to the targets.";

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

print MAKEFILE <<EOF;
objects = foo.o bar.o
foo.o : defs.h
bar.o : defs.h test.h
extradeps = 
\$(objects) : config.h \$(extradeps) 
\t\@echo EXTRA EXTRA
EOF

# END of Contents of MAKEFILE

close(MAKEFILE);

&touch("defs.h","test.h","config.h");

if ($vos)
{
   $error_code = 3307;
}
else 
{
   $error_code = 512;
}

&run_make_with_options($makefile,
                       "extradeps=extra.h",
                       &get_logfile,
                       $error_code);

# Create the answer to what should be produced by this Makefile
$answer = "$make_name: *** No rule to make target 'extra.h', needed by 'foo.o'.  Stop.\n";

&compare_output($answer,&get_logfile(1));


# TEST #2
# -------

&touch("extra.h");

&run_make_with_options($makefile,
                       "extradeps=extra.h",
                       &get_logfile,
                       0);

# Create the answer to what should be produced by this Makefile
$answer = "EXTRA EXTRA\n";

&compare_output($answer,&get_logfile(1));

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;
