summaryrefslogtreecommitdiff
path: root/tests/scripts/options/dash-f
blob: 3aa47460761d51120dc03c4211bcaef58a5adc55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
$description = "The following test tests that if you specify greater \n"
              ."than one '-f makefilename' on the command line, \n"
              ."that make concatenates them.  This test creates three \n"
              ."makefiles and specifies all of them with the -f option \n"
              ."on the command line.  To make sure they were concatenated, \n"
              ."we then call make with the rules from the concatenated \n"
              ."makefiles one at a time.  Finally, it calls all three \n"
              ."rules in one call to make and checks that the output\n"
              ."is in the correct order.";

$makefile2 = &get_tmpfile;
$makefile3 = &get_tmpfile;

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

print MAKEFILE "all: \n";
print MAKEFILE "\t\@echo This is the output from the original makefile\n";

# END of Contents of MAKEFILE

close(MAKEFILE);

# Create a second makefile
open(MAKEFILE,"> $makefile2");
print MAKEFILE "TWO: \n";
print MAKEFILE "\t\@echo This is the output from makefile 2\n";
close(MAKEFILE);

# Create a third makefile
open(MAKEFILE,"> $makefile3");
print MAKEFILE "THREE: \n";
print MAKEFILE "\t\@echo This is the output from makefile 3\n";
close(MAKEFILE);


# Create the answer to what should be produced by this Makefile
$answer = "This is the output from the original makefile\n";

# Run make to catch the default rule
&run_make_with_options($makefile,"-f $makefile2 -f $makefile3",&get_logfile,0);

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


# Run Make again with the rule from the second makefile: TWO
$answer = "This is the output from makefile 2\n";

&run_make_with_options($makefile,"-f $makefile2 -f $makefile3 TWO",&get_logfile,0);

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

# Run Make again with the rule from the third makefile: THREE

$answer = "This is the output from makefile 3\n";
&run_make_with_options($makefile,
                       "-f $makefile2 -f $makefile3 THREE",
                       &get_logfile,
                       0);
&compare_output($answer,&get_logfile(1));


# Run Make again with ALL three rules in the order 2 1 3 to make sure
# that all rules are executed in the proper order

$answer = "This is the output from makefile 2\n";
$answer .= "This is the output from the original makefile\n";
$answer .= "This is the output from makefile 3\n";
&run_make_with_options($makefile,
                       "-f $makefile2 -f $makefile3 TWO all THREE",
		       &get_logfile,
                       0);
&compare_output($answer,&get_logfile(1));