Home | History | Annotate | Download | only in options
      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