| # -*-perl-*- |
| |
| $description = "Test make -B (always remake) option.\n"; |
| |
| $details = "\ |
| Construct a simple makefile that builds a target. |
| Invoke make once, so it builds everything. Invoke it again and verify |
| that nothing is built. Then invoke it with -B and verify that everything |
| is built again."; |
| |
| &touch('bar.x'); |
| |
| run_make_test(' |
| .SUFFIXES: |
| |
| .PHONY: all |
| all: foo |
| |
| foo: bar.x |
| @echo cp $< $@ |
| @echo "" > $@ |
| ', |
| '', 'cp bar.x foo'); |
| |
| run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'."); |
| run_make_test(undef, '-B', 'cp bar.x foo'); |
| |
| # Put the timestamp for foo into the future; it should still be remade. |
| |
| utouch(1000, 'foo'); |
| run_make_test(undef, '', "#MAKE#: Nothing to be done for `all'."); |
| run_make_test(undef, '-B', 'cp bar.x foo'); |
| |
| # Clean up |
| |
| rmfiles('bar.x', 'foo'); |
| |
| # Test -B with the re-exec feature: we don't want to re-exec forever |
| # Savannah bug # 7566 |
| |
| run_make_test(' |
| all: ; @: |
| $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) |
| include foo.x |
| foo.x: ; @touch $@ |
| ', |
| '-B', 'MAKE_RESTARTS= |
| #MAKEFILE#:4: foo.x: No such file or directory |
| MAKE_RESTARTS=1'); |
| |
| rmfiles('foo.x'); |
| |
| # Test -B with the re-exec feature: we DO want -B in the "normal" part of the |
| # makefile. |
| |
| &touch('blah.x'); |
| |
| run_make_test(' |
| all: blah.x ; @echo $@ |
| $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) |
| include foo.x |
| foo.x: ; @touch $@ |
| blah.x: ; @echo $@ |
| ', |
| '-B', 'MAKE_RESTARTS= |
| #MAKEFILE#:4: foo.x: No such file or directory |
| MAKE_RESTARTS=1 |
| blah.x |
| all'); |
| |
| rmfiles('foo.x', 'blah.x'); |
| |
| 1; |