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