#                                                                    -*-perl-*-

$description = "The following test creates a makefile to test the
simple functionality of make.  It mimics the
rebuilding of a product with dependencies.
It also tests the simple definition of VPATH.";

open(MAKEFILE,"> $makefile");

print MAKEFILE <<EOF;
VPATH = work
edit:  main.o kbd.o commands.o display.o \\
       insert.o
\t\@echo cc -o edit main.o kbd.o commands.o display.o \\
                  insert.o
main.o : main.c defs.h
\t\@echo cc -c main.c
kbd.o : kbd.c defs.h command.h
\t\@echo cc -c kbd.c
commands.o : command.c defs.h command.h
\t\@echo cc -c commands.c
display.o : display.c defs.h buffer.h
\t\@echo cc -c display.c
insert.o : insert.c defs.h buffer.h
\t\@echo cc -c insert.c
EOF

close(MAKEFILE);


mkdir('work');
@files_to_touch = ("work${pathsep}main.c","work${pathsep}defs.h",
               "work${pathsep}kbd.c","work${pathsep}command.h",
               "work${pathsep}commands.c","work${pathsep}display.c",
               "work${pathsep}buffer.h","work${pathsep}insert.c",
               "work${pathsep}command.c");

&touch(@files_to_touch);

&run_make_with_options($makefile,"",&get_logfile);

# Create the answer to what should be produced by this Makefile
$answer = "cc -c main.c\ncc -c kbd.c\ncc -c commands.c\ncc -c display.c
cc -c insert.c\ncc -o edit main.o kbd.o commands.o display.o insert.o\n";

# COMPARE RESULTS

if (&compare_output($answer,&get_logfile(1))) {
  unlink @files_to_touch;
}

1;
