$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");

1;






