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