Home | History | Annotate | Line # | Download | only in features
      1  1.1  christos #                                                                    -*-perl-*-
      2  1.1  christos $description = "Test second expansion in ordinary rules.";
      3  1.1  christos 
      4  1.1  christos $details = "";
      5  1.1  christos 
      6  1.1  christos # TEST #0: Test handing of '$' in prerequisites with and without second
      7  1.1  christos # expansion.
      8  1.1  christos 
      9  1.1  christos run_make_test(q!
     10  1.1  christos ifdef SE
     11  1.1  christos   .SECONDEXPANSION:
     12  1.1  christos endif
     13  1.1  christos foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^'
     14  1.1  christos PRE = one two
     15  1.1  christos bar$$baz: $$(PRE)
     16  1.1  christos baraz: $$(PRE)
     17  1.1  christos PRE = three four
     18  1.1  christos .DEFAULT: ; @echo '$@'
     19  1.1  christos !,
     20  1.1  christos               '',
     21  1.1  christos               "\$\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz");
     22  1.1  christos 
     23  1.1  christos run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz");
     24  1.1  christos 
     25  1.1  christos # TEST #1: automatic variables.
     26  1.1  christos #
     27  1.1  christos run_make_test('
     28  1.1  christos .SECONDEXPANSION:
     29  1.1  christos .DEFAULT: ; @echo $@
     30  1.1  christos 
     31  1.1  christos foo: bar baz
     32  1.1  christos 
     33  1.1  christos foo: biz | buz
     34  1.1  christos 
     35  1.1  christos foo: $$@.1 \
     36  1.1  christos      $$<.2 \
     37  1.1  christos      $$(addsuffix .3,$$^) \
     38  1.1  christos      $$(addsuffix .4,$$+) \
     39  1.1  christos      $$|.5 \
     40  1.1  christos      $$*.6
     41  1.1  christos 
     42  1.1  christos ',
     43  1.1  christos '',
     44  1.1  christos 'bar
     45  1.1  christos baz
     46  1.1  christos biz
     47  1.1  christos buz
     48  1.1  christos foo.1
     49  1.1  christos bar.2
     50  1.1  christos bar.3
     51  1.1  christos baz.3
     52  1.1  christos biz.3
     53  1.1  christos bar.4
     54  1.1  christos baz.4
     55  1.1  christos biz.4
     56  1.1  christos buz.5
     57  1.1  christos .6
     58  1.1  christos ');
     59  1.1  christos 
     60  1.1  christos 
     61  1.1  christos # Test #2: target/pattern -specific variables.
     62  1.1  christos #
     63  1.1  christos run_make_test('
     64  1.1  christos .SECONDEXPANSION:
     65  1.1  christos .DEFAULT: ; @echo $@
     66  1.1  christos 
     67  1.1  christos foo.x: $$a $$b
     68  1.1  christos 
     69  1.1  christos foo.x: a := bar
     70  1.1  christos 
     71  1.1  christos %.x: b := baz
     72  1.1  christos 
     73  1.1  christos ',
     74  1.1  christos '',
     75  1.1  christos 'bar
     76  1.1  christos baz
     77  1.1  christos ');
     78  1.1  christos 
     79  1.1  christos 
     80  1.1  christos # Test #3: order of prerequisites.
     81  1.1  christos #
     82  1.1  christos run_make_test('
     83  1.1  christos .SECONDEXPANSION:
     84  1.1  christos .DEFAULT: ; @echo $@
     85  1.1  christos 
     86  1.1  christos all: foo bar baz
     87  1.1  christos 
     88  1.1  christos # Subtest #1
     89  1.1  christos #
     90  1.1  christos foo: foo.1; @:
     91  1.1  christos 
     92  1.1  christos foo: foo.2
     93  1.1  christos 
     94  1.1  christos foo: foo.3
     95  1.1  christos 
     96  1.1  christos 
     97  1.1  christos # Subtest #2
     98  1.1  christos #
     99  1.1  christos bar: bar.2
    100  1.1  christos 
    101  1.1  christos bar: bar.1; @:
    102  1.1  christos 
    103  1.1  christos bar: bar.3
    104  1.1  christos 
    105  1.1  christos 
    106  1.1  christos # Subtest #3
    107  1.1  christos #
    108  1.1  christos baz: baz.1
    109  1.1  christos 
    110  1.1  christos baz: baz.2
    111  1.1  christos 
    112  1.1  christos baz: ; @:
    113  1.1  christos 
    114  1.1  christos ',
    115  1.1  christos '',
    116  1.1  christos 'foo.1
    117  1.1  christos foo.2
    118  1.1  christos foo.3
    119  1.1  christos bar.1
    120  1.1  christos bar.2
    121  1.1  christos bar.3
    122  1.1  christos baz.1
    123  1.1  christos baz.2
    124  1.1  christos ');
    125  1.1  christos 
    126  1.1  christos # This tells the test driver that the perl test script executed properly.
    127  1.1  christos 1;
    128