summaryrefslogtreecommitdiff
path: root/tests/scripts/options/dash-r
blob: 16eda1042de527f558153e4da7ed919e7804356a (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#                                                                    -*-perl-*-

$description = "Test removing default rules and variables";

touch('xxx.c');

# Simple check
run_make_test("\n", '-r COMPILE.c=echo xxx.o',
              "#MAKE#: *** No rule to make target 'xxx.o'.  Stop.", 512);

# Make sure we can set it from within the makefile too
run_make_test(q!
COMPILE.c = echo
MAKEFLAGS += -r
!,
              'xxx.o',
              "#MAKE#: *** No rule to make target 'xxx.o'.  Stop.", 512);

unlink('xxx.c');

# Simple check for -R
run_make_test(q!
all:;$(info CC='$(CC)')
!,
              '-sR', "CC=''");

# Make sure we can set -R from within the makefile too
run_make_test(q!
MAKEFLAGS += -R
all:;$(info CC='$(CC)')
!,
              '-s', "CC=''");

# sv 62356.
# Setting -R in MAKEFLAGS sets -r.
run_make_test(q!
MAKEFLAGS := -R
.PHONY: hello.c
all: hello.o
!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'.  Stop.", 512);

my @flavors = ('=', ':=', ':::=', '+=');

# sv 64107.

# Use $answer to test that -R in the makefile has the same effect as -R on the
# command line.

my $answer = "at parse time TEX=\nat build time TEX=\n#MAKE#: 'all' is up to date.\n";

# Subtest 1.
# First run with -R command line switch.

for my $fl (@flavors) {
run_make_test("
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '-R', "$answer");
}

# Subtest 2.
# Set -R in the makefile.
# Also, test that setting -R in MAKEFLAGS takes effect immediately.

for my $fl (@flavors) {
run_make_test("
\$(info at start time TEX=\$(TEX))
MAKEFLAGS ${fl} -R
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '', "at start time TEX=tex\n$answer");
}

# Same as above, but also set TEX conditionally.

$answer = "at parse time TEX=hello\nat build time TEX=hello\n#MAKE#: 'all' is up to date.\n";

# Subtest 3.
# -R on the command line.

for my $fl (@flavors) {
run_make_test("
TEX ?= hello
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '-R', "$answer");
}

# Subtest 4.
# -R in the makefile.

for my $fl (@flavors) {
run_make_test("
\$(info at start time TEX=\$(TEX))
MAKEFLAGS ${fl} -R
TEX ?= hello
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '', "at start time TEX=tex\n$answer");
}


1;