summaryrefslogtreecommitdiff
path: root/tests/scripts/misc/general4
blob: 0b5c94a5f68f8285b9f2bfb8da29c4ffc33d5214 (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
#                                                                    -*-perl-*-

$description = "\
This tests random features of make's algorithms, often somewhat obscure,
which have either broken at some point in the past or seem likely to
break.";

run_make_test('
# Make sure that subdirectories built as prerequisites are actually handled
# properly.

all: dir/subdir/file.a

dir/subdir: ; @echo mkdir -p dir/subdir

dir/subdir/file.b: dir/subdir ; @echo touch dir/subdir/file.b

dir/subdir/%.a: dir/subdir/%.b ; @echo cp $< $@',
              '', "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n");

# Test implicit rules

&touch('foo.c');
run_make_test('foo: foo.o',
              'CC="@echo cc" OUTPUT_OPTION=',
              'cc -c foo.c
cc foo.o -o foo');
unlink('foo.c');


# Test other implicit rule searching

&touch('bar');
run_make_test('
test.foo:
%.foo : baz ; @echo done $<
%.foo : bar ; @echo done $<
fox: baz
',
              '',
              'done bar');
unlink('bar');


# Test implicit rules with '$' in the name (see se_implicit)

run_make_test(q!
%.foo : baz$$bar ; @echo 'done $<'
%.foo : bar$$baz ; @echo 'done $<'
test.foo:
fox: baz
.DEFAULT baz$$bar bar$$baz: ; @echo '$@'
!,
              '',
              'done bar');

1;