Commit dce3a7a42d585b74ce68081010b42afe81c8f4c4

Authored by Vladimir Dronnikov
Committed by NeilBrown
1 parent ae8fa2831b

md: drivers/md/unroll.pl replaced with awk analog

drivers/md/unroll.pl replaced by awk script to drop build-time
dependency on perl

Signed-off-by: Vladimir Dronnikov <dronnikov@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>

Showing 6 changed files with 54 additions and 58 deletions Side-by-side Diff

... ... @@ -46,7 +46,7 @@
46 46 obj-$(CONFIG_DM_ZERO) += dm-zero.o
47 47  
48 48 quiet_cmd_unroll = UNROLL $@
49   - cmd_unroll = $(PERL) $(srctree)/$(src)/unroll.pl $(UNROLL) \
  49 + cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \
50 50 < $< > $@ || ( rm -f $@ && exit 1 )
51 51  
52 52 ifeq ($(CONFIG_ALTIVEC),y)
53 53  
54 54  
55 55  
56 56  
57 57  
58 58  
59 59  
60 60  
61 61  
... ... @@ -59,56 +59,56 @@
59 59  
60 60 targets += raid6int1.c
61 61 $(obj)/raid6int1.c: UNROLL := 1
62   -$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  62 +$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
63 63 $(call if_changed,unroll)
64 64  
65 65 targets += raid6int2.c
66 66 $(obj)/raid6int2.c: UNROLL := 2
67   -$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  67 +$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
68 68 $(call if_changed,unroll)
69 69  
70 70 targets += raid6int4.c
71 71 $(obj)/raid6int4.c: UNROLL := 4
72   -$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  72 +$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
73 73 $(call if_changed,unroll)
74 74  
75 75 targets += raid6int8.c
76 76 $(obj)/raid6int8.c: UNROLL := 8
77   -$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  77 +$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
78 78 $(call if_changed,unroll)
79 79  
80 80 targets += raid6int16.c
81 81 $(obj)/raid6int16.c: UNROLL := 16
82   -$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  82 +$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
83 83 $(call if_changed,unroll)
84 84  
85 85 targets += raid6int32.c
86 86 $(obj)/raid6int32.c: UNROLL := 32
87   -$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
  87 +$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE
88 88 $(call if_changed,unroll)
89 89  
90 90 CFLAGS_raid6altivec1.o += $(altivec_flags)
91 91 targets += raid6altivec1.c
92 92 $(obj)/raid6altivec1.c: UNROLL := 1
93   -$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
  93 +$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
94 94 $(call if_changed,unroll)
95 95  
96 96 CFLAGS_raid6altivec2.o += $(altivec_flags)
97 97 targets += raid6altivec2.c
98 98 $(obj)/raid6altivec2.c: UNROLL := 2
99   -$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
  99 +$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
100 100 $(call if_changed,unroll)
101 101  
102 102 CFLAGS_raid6altivec4.o += $(altivec_flags)
103 103 targets += raid6altivec4.c
104 104 $(obj)/raid6altivec4.c: UNROLL := 4
105   -$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
  105 +$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
106 106 $(call if_changed,unroll)
107 107  
108 108 CFLAGS_raid6altivec8.o += $(altivec_flags)
109 109 targets += raid6altivec8.c
110 110 $(obj)/raid6altivec8.c: UNROLL := 8
111   -$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
  111 +$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE
112 112 $(call if_changed,unroll)
113 113  
114 114 quiet_cmd_mktable = TABLE $@
drivers/md/raid6altivec.uc
... ... @@ -15,7 +15,7 @@
15 15 *
16 16 * $#-way unrolled portable integer math RAID-6 instruction set
17 17 *
18   - * This file is postprocessed using unroll.pl
  18 + * This file is postprocessed using unroll.awk
19 19 *
20 20 * <benh> hpa: in process,
21 21 * you can just "steal" the vec unit with enable_kernel_altivec() (but
drivers/md/raid6int.uc
... ... @@ -15,7 +15,7 @@
15 15 *
16 16 * $#-way unrolled portable integer math RAID-6 instruction set
17 17 *
18   - * This file is postprocessed using unroll.pl
  18 + * This file is postprocessed using unroll.awk
19 19 */
20 20  
21 21 #include <linux/raid/pq.h>
drivers/md/raid6test/Makefile
... ... @@ -7,7 +7,7 @@
7 7 OPTFLAGS = -O2 # Adjust as desired
8 8 CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS)
9 9 LD = ld
10   -PERL = perl
  10 +AWK = awk
11 11 AR = ar
12 12 RANLIB = ranlib
13 13  
14 14  
15 15  
16 16  
17 17  
18 18  
19 19  
20 20  
21 21  
22 22  
... ... @@ -35,35 +35,35 @@
35 35 raid6test: test.c raid6.a
36 36 $(CC) $(CFLAGS) -o raid6test $^
37 37  
38   -raid6altivec1.c: raid6altivec.uc ../unroll.pl
39   - $(PERL) ../unroll.pl 1 < raid6altivec.uc > $@
  38 +raid6altivec1.c: raid6altivec.uc ../unroll.awk
  39 + $(AWK) ../unroll.awk -vN=1 < raid6altivec.uc > $@
40 40  
41   -raid6altivec2.c: raid6altivec.uc ../unroll.pl
42   - $(PERL) ../unroll.pl 2 < raid6altivec.uc > $@
  41 +raid6altivec2.c: raid6altivec.uc ../unroll.awk
  42 + $(AWK) ../unroll.awk -vN=2 < raid6altivec.uc > $@
43 43  
44   -raid6altivec4.c: raid6altivec.uc ../unroll.pl
45   - $(PERL) ../unroll.pl 4 < raid6altivec.uc > $@
  44 +raid6altivec4.c: raid6altivec.uc ../unroll.awk
  45 + $(AWK) ../unroll.awk -vN=4 < raid6altivec.uc > $@
46 46  
47   -raid6altivec8.c: raid6altivec.uc ../unroll.pl
48   - $(PERL) ../unroll.pl 8 < raid6altivec.uc > $@
  47 +raid6altivec8.c: raid6altivec.uc ../unroll.awk
  48 + $(AWK) ../unroll.awk -vN=8 < raid6altivec.uc > $@
49 49  
50   -raid6int1.c: raid6int.uc ../unroll.pl
51   - $(PERL) ../unroll.pl 1 < raid6int.uc > $@
  50 +raid6int1.c: raid6int.uc ../unroll.awk
  51 + $(AWK) ../unroll.awk -vN=1 < raid6int.uc > $@
52 52  
53   -raid6int2.c: raid6int.uc ../unroll.pl
54   - $(PERL) ../unroll.pl 2 < raid6int.uc > $@
  53 +raid6int2.c: raid6int.uc ../unroll.awk
  54 + $(AWK) ../unroll.awk -vN=2 < raid6int.uc > $@
55 55  
56   -raid6int4.c: raid6int.uc ../unroll.pl
57   - $(PERL) ../unroll.pl 4 < raid6int.uc > $@
  56 +raid6int4.c: raid6int.uc ../unroll.awk
  57 + $(AWK) ../unroll.awk -vN=4 < raid6int.uc > $@
58 58  
59   -raid6int8.c: raid6int.uc ../unroll.pl
60   - $(PERL) ../unroll.pl 8 < raid6int.uc > $@
  59 +raid6int8.c: raid6int.uc ../unroll.awk
  60 + $(AWK) ../unroll.awk -vN=8 < raid6int.uc > $@
61 61  
62   -raid6int16.c: raid6int.uc ../unroll.pl
63   - $(PERL) ../unroll.pl 16 < raid6int.uc > $@
  62 +raid6int16.c: raid6int.uc ../unroll.awk
  63 + $(AWK) ../unroll.awk -vN=16 < raid6int.uc > $@
64 64  
65   -raid6int32.c: raid6int.uc ../unroll.pl
66   - $(PERL) ../unroll.pl 32 < raid6int.uc > $@
  65 +raid6int32.c: raid6int.uc ../unroll.awk
  66 + $(AWK) ../unroll.awk -vN=32 < raid6int.uc > $@
67 67  
68 68 raid6tables.c: mktables
69 69 ./mktables > raid6tables.c
drivers/md/unroll.awk
  1 +
  2 +# This filter requires one command line option of form -vN=n
  3 +# where n must be a decimal number.
  4 +#
  5 +# Repeat each input line containing $$ n times, replacing $$ with 0...n-1.
  6 +# Replace each $# with n, and each $* with a single $.
  7 +
  8 +BEGIN {
  9 + n = N + 0
  10 +}
  11 +{
  12 + if (/\$\$/) { rep = n } else { rep = 1 }
  13 + for (i = 0; i < rep; ++i) {
  14 + tmp = $0
  15 + gsub(/\$\$/, i, tmp)
  16 + gsub(/\$\#/, n, tmp)
  17 + gsub(/\$\*/, "$", tmp)
  18 + print tmp
  19 + }
  20 +}
drivers/md/unroll.pl
1   -#!/usr/bin/perl
2   -#
3   -# Take a piece of C code and for each line which contains the sequence $$
4   -# repeat n times with $ replaced by 0...n-1; the sequence $# is replaced
5   -# by the unrolling factor, and $* with a single $
6   -#
7   -
8   -($n) = @ARGV;
9   -$n += 0;
10   -
11   -while ( defined($line = <STDIN>) ) {
12   - if ( $line =~ /\$\$/ ) {
13   - $rep = $n;
14   - } else {
15   - $rep = 1;
16   - }
17   - for ( $i = 0 ; $i < $rep ; $i++ ) {
18   - $tmp = $line;
19   - $tmp =~ s/\$\$/$i/g;
20   - $tmp =~ s/\$\#/$n/g;
21   - $tmp =~ s/\$\*/\$/g;
22   - print $tmp;
23   - }
24   -}