| # -*-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. | |
| # There are clock skew errors printed here but they will be cleared by | |
| # the comparison code. | |
| 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= | |
| 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= | |
| MAKE_RESTARTS=1 | |
| blah.x | |
| all'); | |
| rmfiles('foo.x', 'blah.x'); | |
| # Test that $? is set properly with -B; all prerequisites will be newer! | |
| utouch(-10, 'x.b'); | |
| touch('x.a'); | |
| run_make_test(q! | |
| x.a: x.b ; @echo $? | |
| !, | |
| '-B', "x.b\n"); | |
| unlink(qw(x.a x.b)); | |
| 1; | |
| ### Local Variables: | |
| ### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) | |
| ### End: |