xref: /illumos-gate/usr/src/contrib/ast/src/cmd/INIT/WWW.mk (revision b30d1939)
1*b30d1939SAndy Fiddaman/*
2*b30d1939SAndy Fiddaman * post stuff to WWWDIR for web access
3*b30d1939SAndy Fiddaman * index generated from *.mm
4*b30d1939SAndy Fiddaman */
5*b30d1939SAndy Fiddaman
6*b30d1939SAndy FiddamanWWWDIR = wwwfiles public_html
7*b30d1939SAndy FiddamanWWWSAVE =
8*b30d1939SAndy FiddamanWWWSTYLE =
9*b30d1939SAndy FiddamanWWWTYPES =
10*b30d1939SAndy Fiddaman
11*b30d1939SAndy Fiddaman.WWW.semaphore : .SEMAPHORE
12*b30d1939SAndy Fiddaman
13*b30d1939SAndy Fiddaman.EXPORT : WWWSTYLE WWWTYPES
14*b30d1939SAndy Fiddaman
15*b30d1939SAndy Fiddaman/*
16*b30d1939SAndy Fiddaman * item :WWW: [style=frame] [save=pattern] file ...
17*b30d1939SAndy Fiddaman *
18*b30d1939SAndy Fiddaman *	`item'.mm generates index.html
19*b30d1939SAndy Fiddaman *	other files copied to $(WWWDIR)/`item'
20*b30d1939SAndy Fiddaman *	sets up www.bin
21*b30d1939SAndy Fiddaman */
22*b30d1939SAndy Fiddaman
23*b30d1939SAndy Fiddaman":WWW:" : .MAKE .OPERATOR
24*b30d1939SAndy Fiddaman	local A B D I J L X E P R M
25*b30d1939SAndy Fiddaman	.WWW.LOCAL .WWW.REMOTE : .DO.NOTHING
26*b30d1939SAndy Fiddaman	WWWDIR := $(HOME:X=$(WWWDIR):T=F:O=1)
27*b30d1939SAndy Fiddaman	B := $(*:N=*.mm::O=1:B)
28*b30d1939SAndy Fiddaman	D := $(WWWDIR)/$(B)
29*b30d1939SAndy Fiddaman	M := $(WWWDIR)/man/man1
30*b30d1939SAndy Fiddaman	R := $(>:N!=*=*)
31*b30d1939SAndy Fiddaman	for I $(>:N=*=*)
32*b30d1939SAndy Fiddaman		A := WWW$(I:/=.*//:F=%(upper)s)
33*b30d1939SAndy Fiddaman		$(A) := $(I:/.*=//)
34*b30d1939SAndy Fiddaman	end
35*b30d1939SAndy Fiddaman	(html_info) : $$(MM2HTMLINFO) $$(MM2HTMLINIT)
36*b30d1939SAndy Fiddaman	if WWWSTYLE == "frame"
37*b30d1939SAndy Fiddaman		%.html %-index.html : %.mm (html_info)
38*b30d1939SAndy Fiddaman			$(MM2HTML) $(MM2HTMLFLAGS) $(%:N=faq.*:?> $(<:O=1)?-f $(%) -x?) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(WWWSOURCE.$(%)) $(>)
39*b30d1939SAndy Fiddaman	else
40*b30d1939SAndy Fiddaman		%.html : %.mm (html_info)
41*b30d1939SAndy Fiddaman			$(MM2HTML) $(MM2HTMLFLAGS) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(>) $(WWWSOURCE.$(%)) > $(<)
42*b30d1939SAndy Fiddaman	end
43*b30d1939SAndy Fiddaman	%.html : %.1 (html_info)
44*b30d1939SAndy Fiddaman		$(MM2HTML) $(MM2HTMLFLAGS) $(>) $(WWWSOURCE.$(%)) > $(<)
45*b30d1939SAndy Fiddaman	%-man.html : $(BINDIR)/% (html_info)
46*b30d1939SAndy Fiddaman		ignore $(>) --html 2> $(<)
47*b30d1939SAndy Fiddaman	.DO.WWW.MAN : .USE
48*b30d1939SAndy Fiddaman		if	{ test '' = '$(*)' || { strings $(*) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.' ;} ;} && [[ "$( $(<:B) '--???html' -- 2>&1 )" == version=[1-9]* ]]
49*b30d1939SAndy Fiddaman		then	( $(<:B) '--??html' -- 2>$(<) ) || true
50*b30d1939SAndy Fiddaman		fi
51*b30d1939SAndy Fiddaman	if 0
52*b30d1939SAndy Fiddaman		$(M)/%.html : .DONTCARE $(INSTALLROOT)/bin/%
53*b30d1939SAndy Fiddaman			$(@.DO.WWW.MAN)
54*b30d1939SAndy Fiddaman	end
55*b30d1939SAndy Fiddaman	if "$(<)"
56*b30d1939SAndy Fiddaman		D := $(<)
57*b30d1939SAndy Fiddaman	elif ! "$(R)"
58*b30d1939SAndy Fiddaman		return
59*b30d1939SAndy Fiddaman	end
60*b30d1939SAndy Fiddaman	.WWW .WWW.BIN : $(D) $(M) -
61*b30d1939SAndy Fiddaman	$(D) $(M) :
62*b30d1939SAndy Fiddaman		$(SILENT) test -d $(<) || mkdir $(<)
63*b30d1939SAndy Fiddaman	if ( J = "$(R:N=*.mm)" )
64*b30d1939SAndy Fiddaman		for I $(J:G=%.html)
65*b30d1939SAndy Fiddaman			if I == "*-index.html"
66*b30d1939SAndy Fiddaman				O := $(D)/index.html
67*b30d1939SAndy Fiddaman			else
68*b30d1939SAndy Fiddaman				O := $(I:D=$(D):B:S)
69*b30d1939SAndy Fiddaman			end
70*b30d1939SAndy Fiddaman			.WWW : $(O)
71*b30d1939SAndy Fiddaman			$(O) :COPY: $(I)
72*b30d1939SAndy Fiddaman		end
73*b30d1939SAndy Fiddaman	end
74*b30d1939SAndy Fiddaman	.WWW.req : .FUNCTION
75*b30d1939SAndy Fiddaman		return $(*$(%:T=SR):N=-l*:T=F:P=B:N!=-l*|/*)
76*b30d1939SAndy Fiddaman	A = 0
77*b30d1939SAndy Fiddaman	for I $(R:N!=*.mm)
78*b30d1939SAndy Fiddaman		if I == "-"
79*b30d1939SAndy Fiddaman			let A = ! A
80*b30d1939SAndy Fiddaman		elif I == "-l*"
81*b30d1939SAndy Fiddaman			L := $(I:/-l//)
82*b30d1939SAndy Fiddaman			if J = "$(.DLL.NAME. $(L) $($(L).VERSION):T=F)"
83*b30d1939SAndy Fiddaman				X += $(J)
84*b30d1939SAndy Fiddaman			end
85*b30d1939SAndy Fiddaman		elif A || "$(I:A=.COMMAND|.ARCHIVE)" || "$(I:D:D:N=$(INSTALLROOT))" || "$(I:N=*-www)"
86*b30d1939SAndy Fiddaman			X += $(I)
87*b30d1939SAndy Fiddaman			if "$(I:A=.COMMAND)"
88*b30d1939SAndy Fiddaman				X += $$(.WWW.req $(I))
89*b30d1939SAndy Fiddaman				J := $(I:/-www$//)
90*b30d1939SAndy Fiddaman				eval
91*b30d1939SAndy Fiddaman				.WWW : $(J:D=$(M):B:S=.html)
92*b30d1939SAndy Fiddaman				$(J:D=$(M):B:S=.html) : $(I) $(I:B:S=.1:T=F:?$(I:B:S=.1)??)
93*b30d1939SAndy Fiddaman					if	strings $$(*:O=1) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.'
94*b30d1939SAndy Fiddaman					then	$$(IGNORE) $$(*:O=1) '--??html' -- 2>&1
95*b30d1939SAndy Fiddaman					elif	test '' != '$$(*:N=*.1)'
96*b30d1939SAndy Fiddaman					then	$$(MM2HTML) $$(*:N=*.1)
97*b30d1939SAndy Fiddaman					fi > $$(<)
98*b30d1939SAndy Fiddaman				end
99*b30d1939SAndy Fiddaman			end
100*b30d1939SAndy Fiddaman		else
101*b30d1939SAndy Fiddaman			if I == "*.html"
102*b30d1939SAndy Fiddaman				$(I) : .TERMINAL
103*b30d1939SAndy Fiddaman			end
104*b30d1939SAndy Fiddaman			.WWW : $(D)/$(I)
105*b30d1939SAndy Fiddaman			$(D)/$(I) :COPY: $(I)
106*b30d1939SAndy Fiddaman		end
107*b30d1939SAndy Fiddaman	end
108*b30d1939SAndy Fiddaman	if "$(X:V)"
109*b30d1939SAndy Fiddaman		.WWW.EDIT. : .FUNCTION
110*b30d1939SAndy Fiddaman			local E I J
111*b30d1939SAndy Fiddaman			for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*)
112*b30d1939SAndy Fiddaman				for J $(%)
113*b30d1939SAndy Fiddaman					if "$(I:B:S)" == "$(J:B:S)"
114*b30d1939SAndy Fiddaman						E += -s ',^$(J)$,$(I),'
115*b30d1939SAndy Fiddaman					end
116*b30d1939SAndy Fiddaman				end
117*b30d1939SAndy Fiddaman			end
118*b30d1939SAndy Fiddaman			return $(E)
119*b30d1939SAndy Fiddaman		.WWW.LIST. : .FUNCTION
120*b30d1939SAndy Fiddaman			local E I J
121*b30d1939SAndy Fiddaman			for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*)
122*b30d1939SAndy Fiddaman				for J $(%)
123*b30d1939SAndy Fiddaman					if "$(I:B:S)" == "$(J:B:S)"
124*b30d1939SAndy Fiddaman						E += $(I)
125*b30d1939SAndy Fiddaman					end
126*b30d1939SAndy Fiddaman				end
127*b30d1939SAndy Fiddaman			end
128*b30d1939SAndy Fiddaman			return $(E)
129*b30d1939SAndy Fiddaman		.WWW .WWW.BIN : $(D)/$(B)-$(CC.HOSTTYPE).tgz
130*b30d1939SAndy Fiddaman		$(D)/$(B)-$(CC.HOSTTYPE).tgz : $(X:V)
131*b30d1939SAndy Fiddaman			cat > X.$(tmp).X <<!
132*b30d1939SAndy Fiddaman			This archive contains $(CC.HOSTTYPE) binaries for
133*b30d1939SAndy Fiddaman				$(.WWW.LIST. $(*))
134*b30d1939SAndy Fiddaman			Add the bin directory to PATH and the lib directory
135*b30d1939SAndy Fiddaman			to LD_LIBRARY_PATH or its equivalent for your system.
136*b30d1939SAndy Fiddaman			Use the --?help and --man options for online help,
137*b30d1939SAndy Fiddaman			documentation and contact info.
138*b30d1939SAndy Fiddaman			!
139*b30d1939SAndy Fiddaman			$(PAX) -wvf $(<) -x tar:gzip -s "/X.$(tmp).X/README/" $(.WWW.EDIT. $(*)) -s ',\(.*\)-www$,bin/\1,' -s ',.*/lib/,lib/,' X.$(tmp).X $(*:N!=-l*)
140*b30d1939SAndy Fiddaman			$(RM) -f X.$(tmp).X
141*b30d1939SAndy Fiddaman	end
142*b30d1939SAndy Fiddaman
143*b30d1939SAndy Fiddaman/*
144*b30d1939SAndy Fiddaman * item ... :WWWBIN: index.mm file ... host:arch ...
145*b30d1939SAndy Fiddaman *
146*b30d1939SAndy Fiddaman *	home page control
147*b30d1939SAndy Fiddaman *	`host' of type `arch' for www.bin files
148*b30d1939SAndy Fiddaman */
149*b30d1939SAndy Fiddaman
150*b30d1939SAndy Fiddaman":WWWBIN:" : .MAKE .OPERATOR
151*b30d1939SAndy Fiddaman	local HOST ITEM ARCH BINS DIRS G
152*b30d1939SAndy Fiddaman	.WWW.NOMAN. += $(<)
153*b30d1939SAndy Fiddaman	for HOST $(>)
154*b30d1939SAndy Fiddaman		TYPE := $(HOST:/.*://)
155*b30d1939SAndy Fiddaman		HOST := $(HOST:/:.*//)
156*b30d1939SAndy Fiddaman		WWWTYPES += $(TYPE)
157*b30d1939SAndy Fiddaman		ARCH := $(PWD:D:C,/$(CC.HOSTTYPE)/,/$(TYPE)/)
158*b30d1939SAndy Fiddaman		BINS :=
159*b30d1939SAndy Fiddaman		DIRS :=
160*b30d1939SAndy Fiddaman		for ITEM $(<)
161*b30d1939SAndy Fiddaman			if TYPE == "$(CC.HOSTTYPE)"
162*b30d1939SAndy Fiddaman				G := $("index.mm":G=%.html:D=$(WWWDIR)/$(ITEM):B:S)
163*b30d1939SAndy Fiddaman				.WWW.LOCAL : $(G)
164*b30d1939SAndy Fiddaman				eval
165*b30d1939SAndy Fiddaman				$(G) : .JOINT $(ARCH)/$(ITEM)/$(ITEM).mm (html_info) .WWW.semaphore .FORCE
166*b30d1939SAndy Fiddaman					cd $$(*:D)
167*b30d1939SAndy Fiddaman					$$(MAKE) $$(-) $$(=) www
168*b30d1939SAndy Fiddaman				end
169*b30d1939SAndy Fiddaman			else
170*b30d1939SAndy Fiddaman				BINS += $(WWWDIR)/$(ITEM)/$(ITEM)-$(TYPE).tgz
171*b30d1939SAndy Fiddaman				DIRS += $(ARCH)/$(ITEM)
172*b30d1939SAndy Fiddaman			end
173*b30d1939SAndy Fiddaman		end
174*b30d1939SAndy Fiddaman		.WWW.REMOTE : $(BINS)
175*b30d1939SAndy Fiddaman		ARCH := $(ARCH:C,/src/.*,,)
176*b30d1939SAndy Fiddaman		eval
177*b30d1939SAndy Fiddaman		$(BINS) :JOINT: .FORCE .WWW.semaphore
178*b30d1939SAndy Fiddaman			rsh $(HOST) "
179*b30d1939SAndy Fiddaman				eval \"\`bin/package debug use\`\"
180*b30d1939SAndy Fiddaman				PATH=\$PATH:$(PATH):/usr/ccs/bin
181*b30d1939SAndy Fiddaman				umask 022
182*b30d1939SAndy Fiddaman				for dir in $(DIRS)
183*b30d1939SAndy Fiddaman				do	cd \$dir
184*b30d1939SAndy Fiddaman					$(MAKE) $(-) $(=) --errorid=\$dir www.bin
185*b30d1939SAndy Fiddaman				done
186*b30d1939SAndy Fiddaman				"
187*b30d1939SAndy Fiddaman		end
188*b30d1939SAndy Fiddaman	end
189*b30d1939SAndy Fiddaman
190*b30d1939SAndy Fiddaman/*
191*b30d1939SAndy Fiddaman * :WWWPOST: [ host [ dir [ tmp ] ] ]
192*b30d1939SAndy Fiddaman *
193*b30d1939SAndy Fiddaman *	post local $(WWWDIR) to host:dir putting archives in host:tmp/www-*.pax
194*b30d1939SAndy Fiddaman *	defaults: host=www dir=$(WWWDIR) tmp=tmp
195*b30d1939SAndy Fiddaman */
196*b30d1939SAndy Fiddaman
197*b30d1939SAndy Fiddaman":WWWPOST:" : .MAKE .OPERATOR
198*b30d1939SAndy Fiddaman	local ( host dir tmp ignore ... ) $(>) www $(WWWDIR:B:S) tmp ignore
199*b30d1939SAndy Fiddaman	:ALL: delta.pax
200*b30d1939SAndy Fiddaman	.WWW.ALL : .WWW.REMOTE - .WWW.LOCAL
201*b30d1939SAndy Fiddaman	eval
202*b30d1939SAndy Fiddaman	.POST : .VIRTUAL base.pax delta.pax
203*b30d1939SAndy Fiddaman		case "$$(>)" in
204*b30d1939SAndy Fiddaman		'')	;;
205*b30d1939SAndy Fiddaman		*)	$$(>:C,.*,rcp & $(host):$(tmp)/$(dir)-&;,)
206*b30d1939SAndy Fiddaman			rsh $(host) '
207*b30d1939SAndy Fiddaman				umask 022
208*b30d1939SAndy Fiddaman				PATH=$HOME/bin:$PATH
209*b30d1939SAndy Fiddaman				cd $(dir)
210*b30d1939SAndy Fiddaman				pax -rvf $HOME/$(tmp)/$(dir)-delta.pax -z $HOME/$(tmp)/$(dir)-base.pax
211*b30d1939SAndy Fiddaman			'
212*b30d1939SAndy Fiddaman			;;
213*b30d1939SAndy Fiddaman		esac
214*b30d1939SAndy Fiddaman	end
215*b30d1939SAndy Fiddaman	base.pax :
216*b30d1939SAndy Fiddaman		cd $(WWWDIR)
217*b30d1939SAndy Fiddaman		pax -wvf $(<:P=A) .
218*b30d1939SAndy Fiddaman	.base.list. : .FUNCTION
219*b30d1939SAndy Fiddaman		local X
220*b30d1939SAndy Fiddaman		X := $(sh pax -f $(%:N=*.pax):C,\n, ,G:C,^,$$(WWWDIR)/,)
221*b30d1939SAndy Fiddaman		$(X) : .DONTCARE
222*b30d1939SAndy Fiddaman		return $(X)
223*b30d1939SAndy Fiddaman	delta.pax : .WWW.ALL base.pax $$(.base.list. $$(*))
224*b30d1939SAndy Fiddaman		cd $(WWWDIR)
225*b30d1939SAndy Fiddaman		pax -wvf $(<:P=A) -z $(*:N=*.pax:P=A) .
226*b30d1939SAndy Fiddaman
227*b30d1939SAndy Fiddaman.WWW.FAQ : .USE
228*b30d1939SAndy Fiddaman	{
229*b30d1939SAndy Fiddaman	set -o noglob
230*b30d1939SAndy Fiddaman	print .xx title=\"$(<:B:/\..*//) FAQ index\"
231*b30d1939SAndy Fiddaman	print .MT 4
232*b30d1939SAndy Fiddaman	print .TL
233*b30d1939SAndy Fiddaman	print
234*b30d1939SAndy Fiddaman	print .H 1 \"$(<:B:/\..*//) FAQ index\"
235*b30d1939SAndy Fiddaman	print .BL
236*b30d1939SAndy Fiddaman	for i in $(*)
237*b30d1939SAndy Fiddaman	do	exec < $i || exit 1
238*b30d1939SAndy Fiddaman		e=0 l=0 x=y
239*b30d1939SAndy Fiddaman		while	read -r op a1 a2
240*b30d1939SAndy Fiddaman		do	case $op in
241*b30d1939SAndy Fiddaman			.H)	case $e in
242*b30d1939SAndy Fiddaman				0)	e=1 ;;
243*b30d1939SAndy Fiddaman				1)	print .LE ;;
244*b30d1939SAndy Fiddaman				esac
245*b30d1939SAndy Fiddaman				print .sp
246*b30d1939SAndy Fiddaman				print .LI
247*b30d1939SAndy Fiddaman				a2=${a2//\"/}
248*b30d1939SAndy Fiddaman				a2=${a2%\ [Ff][Aa][Qq]}
249*b30d1939SAndy Fiddaman				f=${i%.*}.html
250*b30d1939SAndy Fiddaman				f=${f#*/}
251*b30d1939SAndy Fiddaman				print .xx link=\"$f'	'$a2\"
252*b30d1939SAndy Fiddaman				print .sp
253*b30d1939SAndy Fiddaman				print .NL
254*b30d1939SAndy Fiddaman				;;
255*b30d1939SAndy Fiddaman			.AL|.BL|.NL)
256*b30d1939SAndy Fiddaman				case $x in
257*b30d1939SAndy Fiddaman				y)	x=x ;;
258*b30d1939SAndy Fiddaman				*)	x=xx$x ;;
259*b30d1939SAndy Fiddaman				esac
260*b30d1939SAndy Fiddaman				;;
261*b30d1939SAndy Fiddaman			.LE)	x=${x%xx}
262*b30d1939SAndy Fiddaman				;;
263*b30d1939SAndy Fiddaman			.LI)	case $x in
264*b30d1939SAndy Fiddaman				x)	x=
265*b30d1939SAndy Fiddaman					print .LI
266*b30d1939SAndy Fiddaman					;;
267*b30d1939SAndy Fiddaman				esac
268*b30d1939SAndy Fiddaman				;;
269*b30d1939SAndy Fiddaman			.sp)	case $x in
270*b30d1939SAndy Fiddaman				'')	x=x ;;
271*b30d1939SAndy Fiddaman				esac
272*b30d1939SAndy Fiddaman				;;
273*b30d1939SAndy Fiddaman			*)	case $x in
274*b30d1939SAndy Fiddaman				'')	print -r -- $op $a1 $a2 ;;
275*b30d1939SAndy Fiddaman				esac
276*b30d1939SAndy Fiddaman				;;
277*b30d1939SAndy Fiddaman			esac
278*b30d1939SAndy Fiddaman		done
279*b30d1939SAndy Fiddaman		case $e in
280*b30d1939SAndy Fiddaman		1)	print .LE ;;
281*b30d1939SAndy Fiddaman		esac
282*b30d1939SAndy Fiddaman	done
283*b30d1939SAndy Fiddaman	print .LE
284*b30d1939SAndy Fiddaman	} > $(<)
285*b30d1939SAndy Fiddaman
286*b30d1939SAndy Fiddaman/*
287*b30d1939SAndy Fiddaman * [ dir ] :WWWPAGE: [ source ... ] file.mm file
288*b30d1939SAndy Fiddaman *
289*b30d1939SAndy Fiddaman *	*.mm generates *.html
290*b30d1939SAndy Fiddaman *	faq.*.mm generates faq.mm
291*b30d1939SAndy Fiddaman *	other files copied to $(WWWDIR)[/dir]
292*b30d1939SAndy Fiddaman *	files after - (toggle) are just asserted on ::
293*b30d1939SAndy Fiddaman */
294*b30d1939SAndy Fiddaman
295*b30d1939SAndy Fiddaman":WWWPAGE:" : .MAKE .OPERATOR
296*b30d1939SAndy Fiddaman	local B D I J O P Q S X G A
297*b30d1939SAndy Fiddaman	A = 0
298*b30d1939SAndy Fiddaman	D := $(<:O=1)
299*b30d1939SAndy Fiddaman	P := $(>:N!=*=*)
300*b30d1939SAndy Fiddaman	S := $(>:N=*=*)
301*b30d1939SAndy Fiddaman	if X = "$(P:B:S:N=faq.*.mm)"
302*b30d1939SAndy Fiddaman		Q := $(D:+$(D).)faq.mm
303*b30d1939SAndy Fiddaman		$(Q) : .WWW.FAQ $(X)
304*b30d1939SAndy Fiddaman		P += $(Q)
305*b30d1939SAndy Fiddaman	end
306*b30d1939SAndy Fiddaman	if D
307*b30d1939SAndy Fiddaman		B := $(D:B)
308*b30d1939SAndy Fiddaman		if D != "/*"
309*b30d1939SAndy Fiddaman			D := $(WWWDIR)/$(D)
310*b30d1939SAndy Fiddaman			$(D) :INSTALLDIR:
311*b30d1939SAndy Fiddaman			.WWW.LOCAL : $(D)
312*b30d1939SAndy Fiddaman		end
313*b30d1939SAndy Fiddaman		for I $(<:B)
314*b30d1939SAndy Fiddaman			.WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html
315*b30d1939SAndy Fiddaman			$(WWWDIR)/man/man1/$(I).html : .DONTCARE
316*b30d1939SAndy Fiddaman		end
317*b30d1939SAndy Fiddaman		for I $(P)
318*b30d1939SAndy Fiddaman			if I == "-"
319*b30d1939SAndy Fiddaman				let A = !A
320*b30d1939SAndy Fiddaman				continue
321*b30d1939SAndy Fiddaman			end
322*b30d1939SAndy Fiddaman			if A || I == "$(WWWSAVE)"
323*b30d1939SAndy Fiddaman				:: $(I)
324*b30d1939SAndy Fiddaman				continue
325*b30d1939SAndy Fiddaman			end
326*b30d1939SAndy Fiddaman			if "$(I:T=FD)"
327*b30d1939SAndy Fiddaman				.SOURCE : $(I)
328*b30d1939SAndy Fiddaman				if "$(<)"
329*b30d1939SAndy Fiddaman					WWWSOURCE.$(<:O=1) += $(I:T=F:P=L=*)
330*b30d1939SAndy Fiddaman				end
331*b30d1939SAndy Fiddaman				continue
332*b30d1939SAndy Fiddaman			end
333*b30d1939SAndy Fiddaman			if I == "*.html"
334*b30d1939SAndy Fiddaman				$(I) : .TERMINAL
335*b30d1939SAndy Fiddaman				O := $(I)
336*b30d1939SAndy Fiddaman				X := $(I)
337*b30d1939SAndy Fiddaman			elif ( G = "$(I:G=%.html)" )
338*b30d1939SAndy Fiddaman				$(G) : .IMPLICIT $(S) $(I)
339*b30d1939SAndy Fiddaman				if $(G:O) > 1
340*b30d1939SAndy Fiddaman					for J $(G)
341*b30d1939SAndy Fiddaman						if J == "*-index.html"
342*b30d1939SAndy Fiddaman							if J == "faq.*.*"
343*b30d1939SAndy Fiddaman								continue
344*b30d1939SAndy Fiddaman							end
345*b30d1939SAndy Fiddaman							O := index.html
346*b30d1939SAndy Fiddaman						else
347*b30d1939SAndy Fiddaman							O := $(J)
348*b30d1939SAndy Fiddaman						end
349*b30d1939SAndy Fiddaman						.WWW.LOCAL : $(D)/$(O)
350*b30d1939SAndy Fiddaman						$(D)/$(O) :INSTALL: $(J)
351*b30d1939SAndy Fiddaman					end
352*b30d1939SAndy Fiddaman					continue
353*b30d1939SAndy Fiddaman				end
354*b30d1939SAndy Fiddaman				if X
355*b30d1939SAndy Fiddaman					X := $(I)
356*b30d1939SAndy Fiddaman				else
357*b30d1939SAndy Fiddaman					X := index
358*b30d1939SAndy Fiddaman				end
359*b30d1939SAndy Fiddaman				I := $(I:B:S=.html)
360*b30d1939SAndy Fiddaman				O := $(X:B:S=.html)
361*b30d1939SAndy Fiddaman			else
362*b30d1939SAndy Fiddaman				O := $(I)
363*b30d1939SAndy Fiddaman			end
364*b30d1939SAndy Fiddaman			$(D)/$(O) :INSTALL: $(I)
365*b30d1939SAndy Fiddaman			.WWW.LOCAL : $(D)/$(O)
366*b30d1939SAndy Fiddaman		end
367*b30d1939SAndy Fiddaman	else
368*b30d1939SAndy Fiddaman		for I $(P)
369*b30d1939SAndy Fiddaman			if I == "-"
370*b30d1939SAndy Fiddaman				let A = !A
371*b30d1939SAndy Fiddaman				continue
372*b30d1939SAndy Fiddaman			end
373*b30d1939SAndy Fiddaman			if A || I == "$(WWWSAVE)"
374*b30d1939SAndy Fiddaman				:: $(I)
375*b30d1939SAndy Fiddaman				continue
376*b30d1939SAndy Fiddaman			end
377*b30d1939SAndy Fiddaman			if "$(I:T=FD)"
378*b30d1939SAndy Fiddaman				.SOURCE : $(I)
379*b30d1939SAndy Fiddaman				continue
380*b30d1939SAndy Fiddaman			end
381*b30d1939SAndy Fiddaman			if I == "*.html"
382*b30d1939SAndy Fiddaman				$(I) : .TERMINAL
383*b30d1939SAndy Fiddaman				O := $(I)
384*b30d1939SAndy Fiddaman			elif ( O = "$(I:G=%.html)" )
385*b30d1939SAndy Fiddaman				$(O) : $(S) .IMPLICIT $(I)
386*b30d1939SAndy Fiddaman			end
387*b30d1939SAndy Fiddaman			for J $(O)
388*b30d1939SAndy Fiddaman				if J == "*-index.html"
389*b30d1939SAndy Fiddaman					X := index.html
390*b30d1939SAndy Fiddaman				else
391*b30d1939SAndy Fiddaman					X := $(J)
392*b30d1939SAndy Fiddaman				end
393*b30d1939SAndy Fiddaman				X := $(WWWDIR)/$(X)
394*b30d1939SAndy Fiddaman				.WWW.LOCAL : $(X)
395*b30d1939SAndy Fiddaman				$(X) :COPY: $(J)
396*b30d1939SAndy Fiddaman			end
397*b30d1939SAndy Fiddaman		end
398*b30d1939SAndy Fiddaman	end
399*b30d1939SAndy Fiddaman
400*b30d1939SAndy Fiddaman/*
401*b30d1939SAndy Fiddaman * rhs done by default
402*b30d1939SAndy Fiddaman */
403*b30d1939SAndy Fiddaman
404*b30d1939SAndy Fiddaman":WWWALL:" : .MAKE .OPERATOR
405*b30d1939SAndy Fiddaman	.WWW.ALL : $(>)
406*b30d1939SAndy Fiddaman
407*b30d1939SAndy Fiddaman":WWWMAN:" : .MAKE .OPERATOR
408*b30d1939SAndy Fiddaman	.INIT : .WWW.MAN
409*b30d1939SAndy Fiddaman	.WWW.MAN. := $(>)
410*b30d1939SAndy Fiddaman	.WWW.MAN : .MAKE .FORCE
411*b30d1939SAndy Fiddaman		local H I
412*b30d1939SAndy Fiddaman		for I $(.WWW.MAN.)
413*b30d1939SAndy Fiddaman			.WWW.LOCAL : $(WWWDIR)/man/man1/$(I:B).html
414*b30d1939SAndy Fiddaman			$(WWWDIR)/man/man1/$(I:B).html : .DO.WWW.MAN $(I)
415*b30d1939SAndy Fiddaman		end
416*b30d1939SAndy Fiddaman		for I $(sh builtin:B)
417*b30d1939SAndy Fiddaman			.WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html
418*b30d1939SAndy Fiddaman			$(WWWDIR)/man/man1/$(I).html : .DO.WWW.MAN -
419*b30d1939SAndy Fiddaman		end
420*b30d1939SAndy Fiddaman		for I $("$(BINDIR)/*([!-.])":P=G:B)
421*b30d1939SAndy Fiddaman			if I != "*_*"
422*b30d1939SAndy Fiddaman				H := $(WWWDIR)/man/man1/$(I).html
423*b30d1939SAndy Fiddaman				if ! "$(*$(H))" && I != "$(.WWW.NOMAN.:/ /|/G)"
424*b30d1939SAndy Fiddaman					.WWW.LOCAL : $(H)
425*b30d1939SAndy Fiddaman				end
426*b30d1939SAndy Fiddaman			elif "$(PATH:/:/ /G:X=$(I:/.*_//):T=F:O=1)"
427*b30d1939SAndy Fiddaman				H := $(WWWDIR)/man/man1/$(I:/.*_//).html
428*b30d1939SAndy Fiddaman				.WWW.LOCAL : $(H)
429*b30d1939SAndy Fiddaman				$(H) : .DO.WWW.MAN $(BINDIR)/$(I)
430*b30d1939SAndy Fiddaman			end
431*b30d1939SAndy Fiddaman		end
432*b30d1939SAndy Fiddaman
433*b30d1939SAndy Fiddaman.WWW.SED. : .FUNCTION
434*b30d1939SAndy Fiddaman	local E T
435*b30d1939SAndy Fiddaman	E = s/^\(\.xx.link=.*\)%HOSTTYPE%\(.*\)%HOSTTYPE%\(.*\)/
436*b30d1939SAndy Fiddaman	for T $(%)
437*b30d1939SAndy Fiddaman		E := $(E:V)\$$("\n").LI\$$("\n")\1$(T)\2$(T)\3
438*b30d1939SAndy Fiddaman	end
439*b30d1939SAndy Fiddaman	return $(E:V)/
440*b30d1939SAndy Fiddaman
441*b30d1939SAndy Fiddaman/*
442*b30d1939SAndy Fiddaman * mm scan support
443*b30d1939SAndy Fiddaman */
444*b30d1939SAndy Fiddaman
445*b30d1939SAndy Fiddaman.SCAN.mm : .SCAN
446*b30d1939SAndy Fiddaman	O|S|
447*b30d1939SAndy Fiddaman	I|.sn %|A.DONTCARE|M$$(%)|
448*b30d1939SAndy Fiddaman	I|.so %|A.DONTCARE|M$$(%)|
449*b30d1939SAndy Fiddaman
450*b30d1939SAndy Fiddaman.ATTRIBUTE.%.mm : .SCAN.mm
451