xref: /plan9/sys/lib/dist/cmd/multi/mkmulti (revision 1ee3cffaa7e3c1b699746f1d489ecd9b6a7d4d76)
1*1ee3cffaSDavid du Colombier#!/bin/rc
2*1ee3cffaSDavid du Colombier
3*1ee3cffaSDavid du Colombiertarg=multi
4*1ee3cffaSDavid du Colombier
5*1ee3cffaSDavid du Colombiern=0
6*1ee3cffaSDavid du Colombierdir=`{pwd}
7*1ee3cffaSDavid du Colombier
8*1ee3cffaSDavid du Colombierfn grab {
9*1ee3cffaSDavid du Colombier	echo using $*
10*1ee3cffaSDavid du Colombier	for(i){
11*1ee3cffaSDavid du Colombier		n=`{echo 1+$n|hoc}
12*1ee3cffaSDavid du Colombier		mv $i $dir/a.$n.8
13*1ee3cffaSDavid du Colombier	}
14*1ee3cffaSDavid du Colombier}
15*1ee3cffaSDavid du Colombier
16*1ee3cffaSDavid du Colombierfn getfiles {
17*1ee3cffaSDavid du Colombier	sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' |
18*1ee3cffaSDavid du Colombier		sed 's/ [^ ]*\.a//g'
19*1ee3cffaSDavid du Colombier}
20*1ee3cffaSDavid du Colombier
21*1ee3cffaSDavid du Colombierrm a.*.8
22*1ee3cffaSDavid du Colombier>multi.h
23*1ee3cffaSDavid du Colombier>multiproto.h
24*1ee3cffaSDavid du Colombier
25*1ee3cffaSDavid du Colombierfor(i){
26*1ee3cffaSDavid du Colombierecho $i...
27*1ee3cffaSDavid du Colombier	b=`{basename $i}
28*1ee3cffaSDavid du Colombier	p=$b
29*1ee3cffaSDavid du Colombier	if(~ $b [0-9]*)
30*1ee3cffaSDavid du Colombier		p=_$b
31*1ee3cffaSDavid du Colombier	echo void $p^_main'(int, char**);' >>$dir/multiproto.h
32*1ee3cffaSDavid du Colombier	echo "$b", $p^_main, >>$dir/multi.h
33*1ee3cffaSDavid du Colombier	d=`{basename -d $i}
34*1ee3cffaSDavid du Colombier	if(~ $i disk/prep disk/fdisk){
35*1ee3cffaSDavid du Colombier		cd /sys/src/cmd/disk/prep
36*1ee3cffaSDavid du Colombier		rm 8.$b
37*1ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
38*1ee3cffaSDavid du Colombier	}
39*1ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){
40*1ee3cffaSDavid du Colombier		cd /sys/src/cmd/$i
41*1ee3cffaSDavid du Colombier		rm 8.out
42*1ee3cffaSDavid du Colombier		files=`{mk 8.out | getfiles}
43*1ee3cffaSDavid du Colombier	}
44*1ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){
45*1ee3cffaSDavid du Colombier		cd /sys/src/cmd/$i
46*1ee3cffaSDavid du Colombier		rm 8.out
47*1ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
48*1ee3cffaSDavid du Colombier	}
49*1ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){
50*1ee3cffaSDavid du Colombier		cd /sys/src/cmd/$d
51*1ee3cffaSDavid du Colombier		rm 8.$b
52*1ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
53*1ee3cffaSDavid du Colombier	}
54*1ee3cffaSDavid du Colombier	if not{
55*1ee3cffaSDavid du Colombier		echo do not know how to make $i
56*1ee3cffaSDavid du Colombier		exit oops
57*1ee3cffaSDavid du Colombier	}
58*1ee3cffaSDavid du Colombier	aux/8prefix $p^_ $files
59*1ee3cffaSDavid du Colombier	grab $files
60*1ee3cffaSDavid du Colombier	switch(`{pwd}){
61*1ee3cffaSDavid du Colombier	case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip
62*1ee3cffaSDavid du Colombier		rm 8.$b
63*1ee3cffaSDavid du Colombier	case *
64*1ee3cffaSDavid du Colombier		mk clean
65*1ee3cffaSDavid du Colombier	}
66*1ee3cffaSDavid du Colombier}
67*1ee3cffaSDavid du Colombiercd $dir
68*1ee3cffaSDavid du Colombier8c -FVw multi.c
69*1ee3cffaSDavid du Colombier8l -o 8.$targ multi.8 a.*.8
70*1ee3cffaSDavid du Colombier# rm a.*.8
71