]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/tools/build_option_survey/mkhtml.sh
Merge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967
[FreeBSD/FreeBSD.git] / tools / tools / build_option_survey / mkhtml.sh
1 #!/bin/sh
2 # This file is in the public domain
3
4 set -e
5
6 sh reduce.sh
7
8 OPLIST=`sh listallopts.sh`
9
10 ODIR=/usr/obj/`pwd`
11 RDIR=${ODIR}/_.result
12 export ODIR RDIR
13
14 table_td () (
15
16         awk -v R=$1 -v T=$2 -v M=$4 '
17         BEGIN   {
18                 t= R "-" T
19         }
20         $1 == t {
21                 if ($3 == 0 && $5 == 0 && $7 == 0) {
22                         printf "<TD align=center COLSPAN=5>no effect</TD>"
23                 } else {
24                         if ($3 == 0) {
25                                 printf "<TD align=right>+%d</TD>", $3
26                         } else {
27                                 printf "<TD align=right>"
28                                 printf "<A HREF=\"%s/%s.mtree.add.txt\">+%d</A>", M, t, $3
29                                 printf "</TD>"
30                         }
31                         if ($5 == 0) {
32                                 printf "<TD align=right>-%d</TD>", $5
33                         } else {
34                                 printf "<TD align=right>"
35                                 printf "<A HREF=\"%s/%s.mtree.sub.txt\">-%d</A>", M, t, $5
36                                 printf "</TD>"
37                         }
38                         if ($7 == 0) {
39                                 printf "<TD align=right>*%d</TD>", $7
40                         } else {
41                                 printf "<TD align=right>"
42                                 printf "<A HREF=\"%s/%s.mtree.chg.txt\">*%d</A>", M, t, $7
43                                 printf "</TD>"
44                         }
45                         printf "<TD align=right>%d</TD>", $9
46                         printf "<TD align=right>%d</TD>", -$11
47                 }
48                 printf "\n"
49                 d = 1
50                 }
51         END     {
52                 if (d != 1) {
53                         printf "<TD COLSPAN=5></TD>"
54                 }
55         }
56         ' $3/stats
57         mkdir -p $HDIR/$4
58         cp $3/r*.txt $HDIR/$4 || true
59 )
60
61 HDIR=${ODIR}/HTML
62 rm -rf ${HDIR}
63 mkdir -p ${HDIR}
64 H=${HDIR}/index.html
65
66 echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
67 <HTML>' > $H
68
69 echo '<HEAD>
70 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
71 <TITLE>FreeBSD Build Options Survey</TITLE>
72 </HEAD>
73 <BODY bgcolor="#FFFFFF">
74 ' >> $H
75
76 echo '
77 <H2>The table is explained at the bottom</H2>
78 <HR>
79 ' >> $H
80
81 echo '<TABLE  border="1" cellspacing="0">' >> $H
82
83 echo "<TR>" >> $H
84 echo "<TH ROWSPAN=2>src.conf</TH>" >> $H
85 echo "<TH ROWSPAN=2>MK_FOO</TH>" >> $H
86 echo "<TH ROWSPAN=2></TH>" >> $H
87 echo "<TH COLSPAN=5>BuildWorld</TH>" >> $H
88 echo "<TH ROWSPAN=2></TH>" >> $H
89 echo "<TH COLSPAN=5>InstallWorld</TH>" >> $H
90 echo "<TH ROWSPAN=2></TH>" >> $H
91 echo "<TH COLSPAN=5>World</TH>" >> $H
92 echo "</TR>" >> $H
93
94 echo "<TR>" >> $H
95 for i in bw iw w
96 do
97         echo "<TH>A</TH>" >> $H
98         echo "<TH>D</TH>" >> $H
99         echo "<TH>C</TH>" >> $H
100         echo "<TH>KB</TH>" >> $H
101         echo "<TH>Delta</TH>" >> $H
102 done
103 echo "</TR>" >> $H
104
105 majcol ( ) (
106         echo "<TD></TD>" >> $H
107         if [ ! -f $3/$1/done ] ; then
108                 echo "<TD align=center COLSPAN=5>no data yet</TD>" >> $H
109         elif [ -f $3/$1/_.success ] ; then
110                 table_td $2 $1 $3 $4 >> $H
111         else
112                 echo "<TD align=center COLSPAN=5>failed</TD>" >> $H
113         fi
114 )
115
116
117 for o in $OPLIST
118 do
119         md=`echo "${o}=foo" | md5`
120         m=${RDIR}/$md
121         if [ ! -d $m ] ; then
122                 continue
123         fi
124         if [ ! -f $m/stats ] ; then
125                 continue
126         fi
127         echo "=== mkhtml ${d}_${o}"
128
129         echo "<TR>" >> $H
130         echo "<TD><PRE>" >> $H
131         cat $m/src.conf >> $H
132         echo "</PRE></TD>" >> $H
133         echo "<TD><PRE>" >> $H
134         if [ -f $m/bw/_.sc ] ; then
135                 comm -13 ${RDIR}/Ref/_.sc $m/bw/_.sc >> $H
136         fi
137         echo "</PRE></TD>" >> $H
138
139         majcol bw r $m $md
140         majcol iw r $m $md
141         majcol w  r $m $md
142         echo "</TR>" >> $H
143 done
144 echo "</TABLE>" >> $H
145 echo '
146 <HR>
147 <H2>How to read this table</H2>
148 <P>
149 The table has five major columns.
150
151 <OL>
152 <LI><P><B>src.conf</B></P>
153 <P>The name of the option being tested</P>
154 <P>
155 All options are tested both in their WITH_FOO and WITHOUT_FOO variants
156 but if the option has no effect (ie: is the default) it will not appear
157 in the table
158 </P>
159 </LI>
160
161 <LI><P><B>MK_FOO</B></P>
162 <P>Internal build flags affected by this option </P>
163 </LI>
164
165 <LI><P><B>Buildworld</B></P>
166 <P>What happens when the option is given to buildworld but not installworld</P>
167 <PRE>Ie:
168         make buildworld WITH_FOO=yes
169         make installworld 
170 </PRE>
171 </LI>
172
173 <LI><P><B>Installworld</B></P>
174 <P>What happens when the option is given to installworld but not buildworld</P>
175 <PRE>Ie:
176         make buildworld 
177         make installworld WITH_FOO=yes
178 </PRE>
179 </LI>
180
181 <LI><P><B>World</B></P>
182 <P>What happens when the option is given to both buildworld and installworld</P>
183 <PRE>Ie:
184         make buildworld WITH_FOO=yes
185         make installworld WITH_FOO=yes
186 </PRE>
187 </LI>
188 </OL>
189
190 <P>Inside each of the last three major columns there are five subcolumns</P>
191 <OL>
192 <LI><P><B>A</B></P>
193 <P>Number of added files/directories (relative to the option not be given</P>
194 <P>If non-zero, the number links to a list of the added files/directories</P>
195 </LI>
196 <LI><P><B>D</B></P>
197 <P>Number of deleted files/directories (relative to the option not be given</P>
198 <P>If non-zero, the number links to a list of the files not installed files/directories</P>
199 </LI>
200 <LI><P><B>C</B></P>
201 <P>Number of changed files/directories (relative to the option not be given</P>
202 <P>If non-zero, the number links to a list of the files/directories which are differnet (two lines each)</P>
203 </LI>
204 <LI><P><B>KB</B></P>
205 <P>Size of installed operating system in kilobytes</P>
206 <LI><P><B>Delta</B></P>
207 <P>Size change in kilobytes relative to the option not be given</P>
208 </LI>
209 </OL>
210
211 <HR>' >> $H
212 echo '
213 <p>
214     <a href="http://validator.w3.org/check?uri=referer"><img
215         src="http://www.w3.org/Icons/valid-html401"
216         alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>
217 </p>
218
219 ' >> $H
220 echo "</HTML>" >> $H