xref: /plan9/sys/src/cmd/mkfile (revision 58da3067adcdccaaa043d0bfde28ba83b7ced07d)
1</$objtype/mkfile
2
3TARG=`{ls *.[cy] | sed '/\.tab\.c$/d;s/..$//'}
4HFILES=/$objtype/include/u.h /sys/include/libc.h /sys/include/bio.h
5BIN=/$objtype/bin
6PROGS=${TARG:%=$O.%}
7LDFLAGS=
8YFLAGS=-d
9
10NOTSYS=sml|dup|.+\..+
11BUGGERED=unix
12OUTOFDATE=old
13
14NOMK=$NOTSYS|$BUGGERED|$OUTOFDATE
15
16cpuobjtype=`{sed -n 's/^O=//p' /$cputype/mkfile}
17DIRS=`{ls -l | sed '/^d/!d; s/.* //; /^('$NOMK')$/d'}
18APEDIRS=awk bzip2 compress cvs eqn grap gs lp pic postscript spin \
19	tex troff
20
21none:VQ:
22	echo usage: mk cmds, dirs, all, install, installall, '$O'.cmd, cmd.install, or cmd.installall
23
24cmds:V:	$PROGS
25
26ape:V: $APE
27	for(i in $APEDIRS) @{
28		cd $i
29		echo mk $i
30		mk $MKFLAGS all
31	}
32
33dirs:V:
34	for(i in cc $DIRS) @{
35		cd $i
36		echo mk $i
37		mk $MKFLAGS all
38	}
39
40all:V:	$PROGS dirs
41
42^([$OS])\.(.*):R:	\2.\1
43	$stem1^l $LDFLAGS -o $target $stem2.$stem1
44
45.*\.[$OS]:R:	$HFILES
46
47(.*)\.([$OS])'$':R:	\1.c
48	$stem2^c $CFLAGS $stem1.c
49
50&:n:	$O.&
51	mv $O.$stem $stem
52
53%.tab.h %.tab.c:	%.y
54	$YACC $YFLAGS -s $stem $prereq
55
56%.install:V: $BIN/%
57
58$cpuobjtype._cp:	/bin/cp
59	cp $prereq $target
60
61%.safeinstall:	$O.% $cpuobjtype._cp
62	test -e $BIN/$stem && mv $BIN/$stem $BIN/_$stem
63	$cpuobjtype._cp $O.$stem $BIN/$stem
64
65%.safeinstallall:
66	for(objtype in $CPUS)
67		mk $stem.safeinstall
68	mk $stem.clean
69
70$BIN/%:	$O.% $cpuobjtype._cp
71	$cpuobjtype._cp $O.$stem $BIN/$stem
72
73%.directories:V:
74	for(i in $DIRS) @{
75		cd $i
76		echo mk $i
77		mk $MKFLAGS $stem
78	}
79
80clean:V:	cleanfiles clean.directories
81
82nuke:V:		cleanfiles nuke.directories
83
84directories:V:	install.directories
85
86cleanfiles:V:
87	rm -f [$OS].out *.[$OS] y.tab.? y.debug y.output [$OS].$TARG [$OS].units.tab $TARG bc.c bc.tab.h units.tab.h units.c [$OS]._cp
88
89%.clean:V:
90	rm -f [$OS].$stem $stem.[$OS]
91
92install:V:
93	test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
94	mk $MKFLAGS $TARG.install
95	mk $MKFLAGS directories
96
97installall:V:
98	for(objtype in $CPUS)
99		mk $MKFLAGS install
100
101%.installall:	%.c
102	test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
103	for (objtype in $CPUS) {
104		rfork e
105		mk $stem.install &
106	}
107	wait
108	rm -f $stem.[$OS] y.tab.? $stem.tab.? y.debug y.output [$OS].$stem bc.c bc.tab.h units.c
109
110%.acid: %.$O $HFILES
111	$CC $CFLAGS -a $stem.c >$target
112
113(bc|units).c:R:	\1.tab.c
114	mv $stem1.tab.c $stem1.c
115
116$BIN/init:	$O.init
117	cp $prereq /$objtype/init
118
119$O.cj:	cj.$O
120	$LD $LDFLAGS -o $O.cj cj.$O /$objtype/lib/libjpg.a
121
122%.update:V:
123	update $stem.c /386/bin/$stem
124
125compilers:V:
126	for(i in ?c)
127		if(! ~ $i cc rc) @{
128			cd $i
129			mk clean
130			objtype=$cputype mk install
131			mk clean
132		}
133	for(i in ?c)
134		if(! ~ $i cc rc) @{
135			cd $i
136			mk clean
137			mk installall
138			mk clean
139		}
140