1 # -*-perl-*- 2 3 $description = "Test make -B (always remake) option.\n"; 4 5 $details = "\ 6 Construct a simple makefile that builds a target. 7 Invoke make once, so it builds everything. Invoke it again and verify 8 that nothing is built. Then invoke it with -B and verify that everything 9 is built again."; 10 11 &touch('bar.x'); 12 13 run_make_test(' 14 .SUFFIXES: 15 16 .PHONY: all 17 all: foo 18 19 foo: bar.x 20 @echo cp $< $@ 21 @echo "" > $@ 22 ', 23 '', 'cp bar.x foo'); 24 25 run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'."); 26 run_make_test(undef, '-B', 'cp bar.x foo'); 27 28 # Put the timestamp for foo into the future; it should still be remade. 29 30 utouch(1000, 'foo'); 31 run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'."); 32 run_make_test(undef, '-B', 'cp bar.x foo'); 33 34 # Clean up 35 36 rmfiles('bar.x', 'foo'); 37 38 # Test -B with the re-exec feature: we don't want to re-exec forever 39 # Savannah bug # 7566 40 41 run_make_test(' 42 all: ; @: 43 $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) 44 include foo.x 45 foo.x: ; @touch $@ 46 ', 47 '-B', 'MAKE_RESTARTS= 48 #MAKEFILE#:4: foo.x: No such file or directory 49 MAKE_RESTARTS=1'); 50 51 rmfiles('foo.x'); 52 53 # Test -B with the re-exec feature: we DO want -B in the "normal" part of the 54 # makefile. 55 56 &touch('blah.x'); 57 58 run_make_test(' 59 all: blah.x ; @echo $@ 60 $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) 61 include foo.x 62 foo.x: ; @touch $@ 63 blah.x: ; @echo $@ 64 ', 65 '-B', 'MAKE_RESTARTS= 66 #MAKEFILE#:4: foo.x: No such file or directory 67 MAKE_RESTARTS=1 68 blah.x 69 all'); 70 71 rmfiles('foo.x', 'blah.x'); 72 73 1; 74