xref: /inferno-os/os/port/portmkfile (revision aee7f58dfcd519d45482e45ab1ce6026c846dc21)
1PORTHFILES=\
2	../port/error.h\
3	../port/lib.h\
4	../port/portdat.h\
5	../port/portfns.h\
6
7LIBFILES=${LIBS:%=$ROOT/Inferno/$OBJTYPE/lib/lib%.a}
8
9CLEANEXTRA=
10
11%.$O:	%.s
12	$AS $ASFLAGS $stem.s
13
14%.$O:	%.c
15	$CC $CFLAGS $stem.c
16
17%.$O:		../port/%.c
18		$CC $CFLAGS -I. ../port/$stem.c
19
20%.$O:		../ip/%.c
21		$CC $CFLAGS -I. ../ip/$stem.c
22
23&.$O:		$HFILES $PORTHFILES
24
25$INSTALLDIR/%: %
26	cp $stem $INSTALLDIR/$stem
27
28installall:V:	install-$SHELLTYPE
29all:V:		default-$SHELLTYPE
30
31acid:V: i$CONF.acid
32i$CONF.acid:V: $SHELLTYPE-i$CONF.acid
33
34LIBHDIRS= -I$ROOT/libmp/port -I$ROOT/libsec/port
35
36
37rc-i$CONF.acid nt-i$CONF.acid:V: i$CONF
38	{
39		x=i$CONF; test -e i$CONF.p9 && x=i$CONF.p9
40		for (i in `{srclist -ec -r $ROOT/ $x}) {
41			echo '//FILE: ' $i
42			$CC -I. $CFLAGS $LIBHDIRS '-DKERNDATE='$KERNDATE -a $i
43		}
44		echo 'include ("inferno");'
45	} >i$CONF.acid
46
47sh-i$CONF.acid:V: i$CONF
48	x=i$CONF; test -e i$CONF.p9 && x=i$CONF.p9
49	for i in `srclist -ec -r $ROOT/ $x`
50	do
51		echo '//FILE: ' $i
52		$CC -I. $CFLAGS $LIBHDIRS '-DKERNDATE='$KERNDATE -a $i
53	done >i$CONF.acid
54	echo 'include ("inferno");' >> i$CONF.acid
55
56lib%.a:V:	$SHELLTYPE-lib%.a
57
58rc-lib%.a nt-lib%.a:VQ:
59		echo '@{builtin cd' $ROOT/lib$stem ';' mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE install'}'
60		@{builtin cd $ROOT/lib$stem; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE install}
61
62sh-lib%.a:VQ:
63		echo "(cd $ROOT/lib$stem ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE install)"
64		(cd $ROOT/lib$stem; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE install)
65
66%-rc %-nt:V:
67		for(i in $CONFLIST)
68			mk 'CONF='$i $stem
69
70%-sh:V:
71		for i in $CONFLIST
72		do
73			mk 'CONF='$i $stem
74		done
75
76clean:V:	cleanconf-$SHELLTYPE
77		rm -f *.[$OS] *.root.[sh] errstr.h *.out $CLEANEXTRA
78
79cleanconf-sh:V:
80		for i in $CONFLIST $CLEANCONFLIST
81		do
82			rm -f $i.c i$i i$i.* $i.ver
83		done
84
85cleanconf-rc cleanconf-nt:V:
86		for(i in $CONFLIST $CLEANCONFLIST)
87			rm -f $i.c i$i i$i.* $i.ver
88
89nuke-sh:QV:
90		for i in $LIBDIRS
91		do
92			echo "(cd $ROOT/lib$i ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE nuke)"
93			(cd $ROOT/lib$i; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE nuke)
94		done
95
96nuke-rc nuke-nt:QV:
97		for (i in $LIBDIRS)
98		{
99			echo '@{cd $ROOT/lib$i ; mk SHELLTYPE=$SHELLTYPE SYSTARG=$SYSTARG OBJTYPE=$OBJTYPE nuke}'
100			@{cd $ROOT/lib$i; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE nuke}
101		}
102
103nuke:V:		clean nuke-$SHELLTYPE
104
105$CONF.c:	../port/mkdevc $CONF
106		$SHELLNAME ../port/mkdevc $CONF > $CONF.c
107
108errstr.h:	../port/error.h
109		sed 's/extern //;s,;.*/\* , = ",;s, \*/,";,' < ../port/error.h > errstr.h
110
111../init/%.dis:	../init/%.b
112		cd ../init; mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE $stem.dis
113
114$ROOT/libinterp/runt.h:
115		cd $ROOT/libinterp
116		mk 'SHELLTYPE='$SHELLTYPE 'SYSTARG='$SYSTARG 'OBJTYPE='$OBJTYPE runt.h
117
118RUNT=$ROOT/libinterp/runt.h		# for culling dependencies
119INTERP=$ROOT/include/interp.h
120
121alloc.$O:	$INTERP
122devdbg.$O:	$INTERP
123
124devmnt.$O:	$ROOT/include/fcall.h
125devns16552.$O:	../port/netif.h
126devns16552.$O:	ns16552.h
127devpipe.$O:	$INTERP
128devprof.$O:	$RUNT $INTERP
129devprog.$O:	$RUNT $INTERP
130devroot.$O:	errstr.h
131devsign.$O:	$RUNT $INTERP
132devsrv.$O:	$RUNT	$INTERP
133dis.$O:	$INTERP
134discall.$O:	$INTERP
135exception.$O:	$RUNT	$INTERP
136inferno.$O:	$RUNT	$INTERP
137latin1.$O:	../port/latin1.h
138main.$O:	../port/error.h
139netif.$O:	../port/netif.h
140proc.$O:	errstr.h	$INTERP
141screen.$O:	screen.h
142trap.$O:	$ROOT/Inferno/$OBJTYPE/include/ureg.h
143
144devroot.$O:	$CONF.root.h
145$CONF.$O:	$CONF.root.h
146$CONF.root.s $CONF.root.h: $CONF ../init/$INIT.dis ../port/mkroot $ROOTFILES
147	$SHELLNAME ../port/mkroot $CONF
148
149%.$O:	$ROOT/Inferno/$OBJTYPE/include/u.h ../port/lib.h mem.h dat.h fns.h io.h ../port/error.h ../port/portdat.h ../port/portfns.h
150