| Line |  | 
|---|
| 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 | MAKE_RESTARTS=1'); | 
|---|
| 49 |  | 
|---|
| 50 | rmfiles('foo.x'); | 
|---|
| 51 |  | 
|---|
| 52 | # Test -B with the re-exec feature: we DO want -B in the "normal" part of the | 
|---|
| 53 | # makefile. | 
|---|
| 54 |  | 
|---|
| 55 | &touch('blah.x'); | 
|---|
| 56 |  | 
|---|
| 57 | run_make_test(' | 
|---|
| 58 | all: blah.x ; @echo $@ | 
|---|
| 59 | $(info MAKE_RESTARTS=$(MAKE_RESTARTS)) | 
|---|
| 60 | include foo.x | 
|---|
| 61 | foo.x: ; @touch $@ | 
|---|
| 62 | blah.x: ; @echo $@ | 
|---|
| 63 | ', | 
|---|
| 64 | '-B', 'MAKE_RESTARTS= | 
|---|
| 65 | MAKE_RESTARTS=1 | 
|---|
| 66 | blah.x | 
|---|
| 67 | all'); | 
|---|
| 68 |  | 
|---|
| 69 | rmfiles('foo.x', 'blah.x'); | 
|---|
| 70 |  | 
|---|
| 71 | # Test that $? is set properly with -B; all prerequisites will be newer! | 
|---|
| 72 |  | 
|---|
| 73 | utouch(-10, 'x.b'); | 
|---|
| 74 | touch('x.a'); | 
|---|
| 75 |  | 
|---|
| 76 | run_make_test(q! | 
|---|
| 77 | x.a: x.b ; @echo $? | 
|---|
| 78 | !, | 
|---|
| 79 | '-B', "x.b\n"); | 
|---|
| 80 |  | 
|---|
| 81 | unlink(qw(x.a x.b)); | 
|---|
| 82 |  | 
|---|
| 83 | 1; | 
|---|
| 84 |  | 
|---|
| 85 | ### Local Variables: | 
|---|
| 86 | ### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) | 
|---|
| 87 | ### End: | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.