1/*
2 * initialization for all packages
3 */
4
5ID = ast
6SILENT = /* this component builds silent -- this prevents us from using it while building it */
7
8:PACKAGE: license=$(ID)
9
10LICENSE = since=1994,author=gsf
11
12PACKAGEROOT = $(INSTALLROOT:T=F:P=L*:O=n)
13
14hurl :: hurl.sh LICENSE=since=2003,author=gsf
15
16iffe :: iffe.sh LICENSE=since=1994,author=gsf+kpv
17
18mktest :: mktest.sh LICENSE=since=2005,author=gsf
19
20package :: package.sh
21
22regress :: regress.sh LICENSE=since=1995,author=gsf
23
24rt :: rt.sh LICENSE=since=2005,author=gsf
25
26$(PACKAGEROOT)/bin :INSTALLDIR: execrate ignore mamprobe package silent
27
28crossexec :: crossexec.sh
29
30ditto :: ditto.sh LICENSE=since=2001,author=gsf+ek
31
32execrate :: execrate.sh LICENSE=since=2002,author=gsf
33
34filter :: filter.sh
35
36ignore :: ignore.sh
37
38silent :: silent.sh
39
40$(PACKAGEROOT)/lib/package :INSTALLDIR: package.mk CONVERT.mk
41
42$(LIBDIR)/make :INSTALLDIR: package.mk PROBE.mk TEST.mk WWW.mk \
43	MSGFUN.mk MSGKEY.mk MAPLIB.mk
44
45:TEST: iffe mamake
46
47cc ld ldd :PACKAGE_INIT: mamake.c proto.c ratz.c release.c
48
49:: RELEASE hosttype.tst p.c hello.c \
50	ar.ibm.risc \
51	cc.specialize cc.pentium4 \
52	ldd.cygwin.i386 \
53	cc.darwin.i386 cc.darwin.i386-64 cc.darwin ldd.darwin \
54	cc.hp.ia64 cc.hp.pa cc.hp.pa64 ld.hp.pa ldd.hp.pa \
55	cc.ibm.risc cc.ibm.risc.gcc ldd.ibm.risc \
56	cc.linux.ia64-icc cc.linux.i386-icc cc.linux.i386-64-icc \
57	cc.lynxos.i386 cc.lynxos.ppc ldd.lynxos \
58	cc.mvs.390 cc.next.i386 cc.next.m68k ldd.mvs.390 \
59	cc.osf.alpha \
60	cc.sco.i386 \
61	cc.sgi.mips2 cc.sgi.mips3 cc.sgi.mips3-o32 cc.sgi.mips4 \
62	cc.sgi.mips4-n32 ldd.sgi \
63	cc.unix.mc68k
64
65LICENSE : .DONTCARE
66
67if ! CC.HOSTTYPE
68	CC.HOSTTYPE := $(_hosttype_|HOSTTYPE)
69end
70
71$(BINDIR)/mkdir :INSTALL: mkdir.sh
72	if	test ! -x $(<) -a -x /bin/mkdir
73	then	mkdir -p 2>/dev/null || :
74		if	test -d ./-p
75		then	rmdir ./-p
76			cp $(*) $(<)
77			chmod +x $(<)
78		fi
79	fi
80
81/*
82 * ksh93 function search on PATH
83 * ksh93 builtin command library -lcmd
84 * ksh93 ld library path search on PATH
85 */
86
87$(BINDIR)/.paths :INSTALL: (CC.DIALECT)
88	if	test ! -f $(<) -o -w $(<)
89	then	N='$("\n")'
90		H=$(CC.HOSTTYPE)
91		P="$(-mam:??$(.GETCONF LIBPATH:/:/ /G:/,/ : /G:Q)?)"
92		b= f= h= l= n= p= u= B= L=
93		set : $P
94		while	:
95		do	while	:
96			do	case $1 in
97				'')	break 2 ;;
98				:)	shift; break ;;
99				esac
100				shift
101			done
102			case $# in
103			0|1)	break ;;
104			esac
105			case $L in
106			?*)	L="$L|" ;;
107			esac
108			L="$L$2=*"
109			B=$1
110		done
111		if	test -f $(<)
112		then	while	read x
113			do	case $x in
114				*\$\(\"*)	break # to fix 2012-06-18 edit botch #
115						;;
116				'#'?*)		case $h in
117						'')	h=$x ;;
118						esac
119						;;
120				$L)		l=$x
121						;;
122				*BUILTIN_LIB=*)	b=$x
123						;;
124				*FPATH=*)	f=$x
125						;;
126				*PLUGIN_LIB=*)	p=$x
127						;;
128				*)		case $u in
129						?*)	u=$u$N ;;
130						esac
131						u=$u$x
132						;;
133				esac
134			done < $(<)
135		fi
136		ifs=$IFS
137		m=
138		case $p in
139		?*)	b=
140			;;
141		esac
142		case $b in
143		?*)	IFS='='
144			set $b
145			IFS=$ifs
146			shift
147			p="PLUGIN_LIB=$*"
148			case $b in
149			[Nn][Oo]*)	p=no$p ;;
150			esac
151			m=1
152			;;
153		esac
154		case $f in
155		'')	f="FPATH=../fun"
156			m=1
157			;;
158		esac
159		case $h in
160		'')	h='# use { no NO } prefix to permanently disable #' ;;
161		esac
162		case $l in
163		'')	set x x : $P
164			l=
165			while	:
166			do	while	:
167				do	case $# in
168					0)	break ;;
169					esac
170					x=$1
171					shift
172					case $x in
173					:)	break ;;
174					esac
175				done
176				case $# in
177				0|1)	break
178					;;
179				2)	l=$2
180					;;
181				*)	case "$H" in
182					$3)	l=$2; break ;;
183					esac
184					;;
185				esac
186			done
187			case $l in
188			'')	if	test -x /lib/dld.sl
189				then	l=SHLIB_PATH
190				elif	test -x /usr/lib/dyld
191				then	l=DYLD_LIBRARY_PATH
192				else	case "$H" in
193					ibm.*|mvs.*)
194						l=LIBPATH
195						;;
196					sgi.mips3)
197						l=LD_LIBRARYN32_PATH
198						;;
199					sgi.mips4)
200						l=LD_LIBRARYN64_PATH
201						;;
202					*)	l=LD_LIBRARY_PATH
203						;;
204					esac
205				fi
206				;;
207			esac
208			case $l in
209			?*)	case $B in
210				'')	B=lib ;;
211				esac
212				l="$l=../$B"
213				m=1
214				;;
215			esac
216			;;
217		esac
218		case $p in
219		'')	p="PLUGIN_LIB=cmd"
220			case '$(CC.DIALECT:N=*EXPORT=[AD]LL*)' in
221			'')	p=no$p ;;
222			esac
223			m=1
224			;;
225		esac
226		case $m in
227		1)	case $u in
228			?*)	u=$N$u ;;
229			esac
230			echo "$h$N$p$N$f$N$l$u" > $(<)
231			;;
232		esac
233	fi
234
235/*
236 * probe initialization
237 */
238
239for T C+probe C+make+probe.lcl C+pp+probe.lcl
240	if T == "*.lcl"
241		$(T) : .DONTCARE
242	end
243	$(LIBDIR)/probe/$(T:C,+,/,G) :INSTALL: $(T)
244end
245
246$(LIBDIR)/probe/C/mam/probe :INSTALL: mprobe
247
248mprobe :: mprobe.sh
249
250$(LIBDIR)/probe/C/make :INSTALLDIR: probe probe.ini
251
252probe.sh : C+probe make.probe
253	cat $(*) > $(<)
254
255probe :: probe.sh
256
257probe.ini : (CC.HOSTTYPE) probe.win32
258	t=$(CC.HOSTTYPE)
259	ifs=$IFS
260	IFS=.
261	set x $t
262	IFS=$ifs
263	t=$2
264	set x $(*)
265	while	:
266	do	shift
267		case $# in
268		0)	break ;;
269		esac
270		case $1 in
271		*probe.$t)
272			break
273		esac
274	done
275	case $1 in
276	?*)	cmp -s $1 $(<) || cp $1 $(<) ;;
277	*)	: > $(<)
278	esac
279
280/*
281 * proto initialization
282 */
283
284$(INCLUDEDIR)/$(ID) :INSTALLDIR: prototyped.h
285
286prototyped.h : $(BINDIR)/proto
287	proto -f /dev/null > h.$(tmp).h
288	if	$(CMP) -s h.$(tmp).h $(<)
289	then	$(RM) -f h.$(tmp).h
290	else	$(MV) h.$(tmp).h $(<)
291	fi
292
293/*
294 * check if -ldl is required
295 * this allows makefiles to use -ldl on all systems
296 *
297 * NOTE: this works around the sgi botch:
298 *	 (1) irix 5.* made -ldl optional but warned
299 *	 (2) irix 6.* has no -ldl
300 *	 (3) dynamic progs built on irix 5.* and using -ldl fail
301 *           at runtime on irix 6.* because -ldl is not there
302 */
303
304dl :MAPLIB: dl.c
305
306/*
307 * requiring these is a botch
308 */
309
310iconv :MAPLIB: iconv.c
311
312w :MAPLIB: w.c w2.c
313
314/*
315 * miscellaneous -l* checks
316 */
317
318intl :MAPLIB: intl.c
319
320m :MAPLIB: m.c m2.c m3.c m4.c m5.c m6.c
321
322nsl :MAPLIB: nsl.c
323
324/*
325 * what was sco smoking
326 * almost all of gethost* are in -lnsl except gethostbyname which
327 * is in -lsocket which isn't needed to resolve socket() but seems
328 * to do the -lnsl job
329 */
330
331socket :MAPLIB: socket.c nsl.c
332
333/*
334 * more substance abuse
335 * gdbm's ndbm "compatibility" doesn't supply <ndbm.h>, instead supplies
336 * <gdbm/ndbm.h> which provides K&R prototypes *and* it requires -lgdbm
337 * some <ndbm.h> implementations use -lndbm, others -ldbm, still others -lc
338 * this is why unix is starting to look like windows
339 * this map allows makefiles to use -ldbm on all systems
340 *
341 * and this just in: sometimes its <gdbm-ndbm.h> and possibly -lgdbm_compat
342 *
343 * at least the -l* buck stops here
344 */
345
346dbm db - gdbm_compat - gdbm - ndbm - dbm :MAPLIB: db.c gdbm.c gdbm1.c gdbm2.c
347