Home | History | Annotate | Download | only in options
      1 #                                                                    -*-perl-*-
      2 
      3 $description = "Test make -W (what if) option.\n";
      4 
      5 # Basic build
      6 
      7 run_make_test('
      8 a.x: b.x
      9 a.x b.x: ; echo >> $@
     10 ',
     11               '', "echo >> b.x\necho >> a.x");
     12 
     13 # Run it again: nothing should happen
     14 
     15 run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
     16 
     17 # Now run it with -W b.x: should rebuild a.x
     18 
     19 run_make_test(undef, '-W b.x', 'echo >> a.x');
     20 
     21 # Put the timestamp for a.x into the future; it should still be remade.
     22 
     23 utouch(1000, 'a.x');
     24 run_make_test(undef, '', "#MAKE#: `a.x' is up to date.");
     25 run_make_test(undef, '-W b.x', 'echo >> a.x');
     26 
     27 # Clean up
     28 
     29 rmfiles('a.x', 'b.x');
     30 
     31 # Test -W with the re-exec feature: we don't want to re-exec forever
     32 # Savannah bug # 7566
     33 
     34 # First set it up with a normal build
     35 
     36 run_make_test('
     37 all: baz.x ; @:
     38 include foo.x
     39 foo.x: bar.x
     40 	@echo "\$$(info restarts=\$$(MAKE_RESTARTS))" > $@
     41 	@echo "touch $@"
     42 bar.x: ; echo >> $@
     43 baz.x: bar.x ; @echo "touch $@"
     44 ',
     45               '', '#MAKEFILE#:3: foo.x: No such file or directory
     46 echo >> bar.x
     47 touch foo.x
     48 restarts=1
     49 touch baz.x');
     50 
     51 # Now run with -W bar.x
     52 
     53 # Tweak foo.x's timestamp so the update will change it.
     54 &utouch(1000, 'foo.x');
     55 
     56 run_make_test(undef, '-W bar.x', "restarts=\ntouch foo.x\nrestarts=1\ntouch baz.x");
     57 
     58 rmfiles('foo.x', 'bar.x');
     59 
     60 # Test -W on vpath-found files: it should take effect.
     61 # Savannah bug # 15341
     62 
     63 mkdir('x-dir', 0777);
     64 utouch(-20, 'x-dir/x');
     65 touch('y');
     66 
     67 run_make_test('
     68 y: x ; @echo cp $< $@
     69 ',
     70               '-W x-dir/x VPATH=x-dir',
     71               'cp x-dir/x y');
     72 
     73 # Make sure ./ stripping doesn't interfere with the match.
     74 
     75 run_make_test('
     76 y: x ; @echo cp $< $@
     77 ',
     78               '-W ./x-dir/x VPATH=x-dir',
     79               'cp x-dir/x y');
     80 
     81 run_make_test(undef,
     82               '-W x-dir/x VPATH=./x-dir',
     83               'cp ./x-dir/x y');
     84 
     85 unlink(qw(y x-dir/x));
     86 rmdir('x-dir');
     87 
     88 1;
     89