|
1 $(shell \ |
|
2 mkdir -p src/subd; \ |
|
3 mkdir subd; \ |
|
4 touch dummy; \ |
|
5 sleep 2; \ |
|
6 touch subd/test.out src/subd/test.in2; \ |
|
7 sleep 2; \ |
|
8 touch subd/test.out2 src/subd/test.in; \ |
|
9 sleep 2; \ |
|
10 touch subd/host_test.out subd/host_test.out2; \ |
|
11 sleep 2; \ |
|
12 touch host_prog; \ |
|
13 ) |
|
14 |
|
15 VPATH = src |
|
16 |
|
17 all: prog host_prog prog dir/ |
|
18 test "$@" = "all" |
|
19 test "$<" = "prog" |
|
20 test "$^" = "prog host_prog dir" |
|
21 test "$?" = "prog host_prog dir" |
|
22 test "$+" = "prog host_prog prog dir" |
|
23 test "$(@D)" = "." |
|
24 test "$(@F)" = "all" |
|
25 test "$(<D)" = "." |
|
26 test "$(<F)" = "prog" |
|
27 test "$(^D)" = ". . ." |
|
28 test "$(^F)" = "prog host_prog dir" |
|
29 test "$(?D)" = ". . ." |
|
30 test "$(?F)" = "prog host_prog dir" |
|
31 test "$(+D)" = ". . . ." |
|
32 test "$(+F)" = "prog host_prog prog dir" |
|
33 @echo TEST-PASS |
|
34 |
|
35 dir/: |
|
36 test "$@" = "dir" |
|
37 test "$<" = "" |
|
38 test "$^" = "" |
|
39 test "$(@D)" = "." |
|
40 test "$(@F)" = "dir" |
|
41 mkdir $@ |
|
42 |
|
43 prog: subd/test.out subd/test.out2 |
|
44 test "$@" = "prog" |
|
45 test "$<" = "subd/test.out" |
|
46 test "$^" = "subd/test.out subd/test.out2" # ^ |
|
47 test "$?" = "subd/test.out subd/test.out2" # ? |
|
48 cat $< |
|
49 test "$$(cat $<)" = "remade" |
|
50 test "$$(cat $(word 2,$^))" = "" |
|
51 |
|
52 host_prog: subd/host_test.out subd/host_test.out2 |
|
53 @echo TEST-FAIL No need to remake |
|
54 |
|
55 %.out: %.in dummy |
|
56 test "$@" = "subd/test.out" |
|
57 test "$*" = "subd/test" # * |
|
58 test "$<" = "src/subd/test.in" # < |
|
59 test "$^" = "src/subd/test.in dummy" # ^ |
|
60 test "$?" = "src/subd/test.in" # ? |
|
61 test "$+" = "src/subd/test.in dummy" # + |
|
62 test "$(@D)" = "subd" |
|
63 test "$(@F)" = "test.out" |
|
64 test "$(*D)" = "subd" |
|
65 test "$(*F)" = "test" |
|
66 test "$(<D)" = "src/subd" |
|
67 test "$(<F)" = "test.in" |
|
68 test "$(^D)" = "src/subd ." # ^D |
|
69 test "$(^F)" = "test.in dummy" |
|
70 test "$(?D)" = "src/subd" |
|
71 test "$(?F)" = "test.in" |
|
72 test "$(+D)" = "src/subd ." # +D |
|
73 test "$(+F)" = "test.in dummy" |
|
74 printf "remade" >$@ |
|
75 |
|
76 %.out2: %.in2 dummy |
|
77 @echo TEST_FAIL No need to remake |
|
78 |
|
79 .PHONY: all |