1$description = "The following test tests that if you specify greater \n"
2              ."than one '-f makefilename' on the command line, \n"
3              ."that make concatenates them.  This test creates three \n"
4              ."makefiles and specifies all of them with the -f option \n"
5              ."on the command line.  To make sure they were concatenated, \n"
6              ."we then call make with the rules from the concatenated \n"
7              ."makefiles one at a time.  Finally, it calls all three \n"
8              ."rules in one call to make and checks that the output\n"
9              ."is in the correct order.";
10
11$makefile2 = &get_tmpfile;
12$makefile3 = &get_tmpfile;
13
14open(MAKEFILE,"> $makefile");
15
16# The Contents of the MAKEFILE ...
17
18print MAKEFILE "all: \n";
19print MAKEFILE "\t\@echo This is the output from the original makefile\n";
20
21# END of Contents of MAKEFILE
22
23close(MAKEFILE);
24
25# Create a second makefile
26open(MAKEFILE,"> $makefile2");
27print MAKEFILE "TWO: \n";
28print MAKEFILE "\t\@echo This is the output from makefile 2\n";
29close(MAKEFILE);
30
31# Create a third makefile
32open(MAKEFILE,"> $makefile3");
33print MAKEFILE "THREE: \n";
34print MAKEFILE "\t\@echo This is the output from makefile 3\n";
35close(MAKEFILE);
36
37
38# Create the answer to what should be produced by this Makefile
39$answer = "This is the output from the original makefile\n";
40
41# Run make to catch the default rule
42&run_make_with_options($makefile,"-f $makefile2 -f $makefile3",&get_logfile,0);
43
44&compare_output($answer,&get_logfile(1));
45
46
47# Run Make again with the rule from the second makefile: TWO
48$answer = "This is the output from makefile 2\n";
49
50&run_make_with_options($makefile,"-f $makefile2 -f $makefile3 TWO",&get_logfile,0);
51
52&compare_output($answer,&get_logfile(1));
53     
54
55# Run Make again with the rule from the third makefile: THREE
56
57$answer = "This is the output from makefile 3\n";
58&run_make_with_options($makefile,
59                       "-f $makefile2 -f $makefile3 THREE",
60                       &get_logfile,
61                       0);
62&compare_output($answer,&get_logfile(1));
63
64
65# Run Make again with ALL three rules in the order 2 1 3 to make sure
66# that all rules are executed in the proper order
67
68$answer = "This is the output from makefile 2\n";
69$answer .= "This is the output from the original makefile\n";
70$answer .= "This is the output from makefile 3\n";
71&run_make_with_options($makefile,
72                       "-f $makefile2 -f $makefile3 TWO all THREE",
73		       &get_logfile,
74                       0);
75&compare_output($answer,&get_logfile(1));
76       
77
78
79
80
81
82
83
84
85
86