xref: /plan9-contrib/sys/lib/dist/cmd/multi/mkmulti (revision 2fd6e7ca8283ae1bfcf334cd9482eb82f5ab8279)
11ee3cffaSDavid du Colombier#!/bin/rc
21ee3cffaSDavid du Colombier
31ee3cffaSDavid du Colombiertarg=multi
41ee3cffaSDavid du Colombier
51ee3cffaSDavid du Colombiern=0
61ee3cffaSDavid du Colombierdir=`{pwd}
71ee3cffaSDavid du Colombier
81ee3cffaSDavid du Colombierfn grab {
91ee3cffaSDavid du Colombier	echo using $*
101ee3cffaSDavid du Colombier	for(i){
111ee3cffaSDavid du Colombier		n=`{echo 1+$n|hoc}
121ee3cffaSDavid du Colombier		mv $i $dir/a.$n.8
131ee3cffaSDavid du Colombier	}
141ee3cffaSDavid du Colombier}
151ee3cffaSDavid du Colombier
161ee3cffaSDavid du Colombierfn getfiles {
171ee3cffaSDavid du Colombier	sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' |
181ee3cffaSDavid du Colombier		sed 's/ [^ ]*\.a//g'
191ee3cffaSDavid du Colombier}
201ee3cffaSDavid du Colombier
211ee3cffaSDavid du Colombierrm a.*.8
221ee3cffaSDavid du Colombier>multi.h
231ee3cffaSDavid du Colombier>multiproto.h
241ee3cffaSDavid du Colombier
251ee3cffaSDavid du Colombierfor(i){
261ee3cffaSDavid du Colombierecho $i...
271ee3cffaSDavid du Colombier	b=`{basename $i}
281ee3cffaSDavid du Colombier	p=$b
291ee3cffaSDavid du Colombier	if(~ $b [0-9]*)
301ee3cffaSDavid du Colombier		p=_$b
311ee3cffaSDavid du Colombier	echo void $p^_main'(int, char**);' >>$dir/multiproto.h
321ee3cffaSDavid du Colombier	echo "$b", $p^_main, >>$dir/multi.h
331ee3cffaSDavid du Colombier	d=`{basename -d $i}
341ee3cffaSDavid du Colombier	if(~ $i disk/prep disk/fdisk){
351ee3cffaSDavid du Colombier		cd /sys/src/cmd/disk/prep
361ee3cffaSDavid du Colombier		rm 8.$b
371ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
381ee3cffaSDavid du Colombier	}
391ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){
401ee3cffaSDavid du Colombier		cd /sys/src/cmd/$i
411ee3cffaSDavid du Colombier		rm 8.out
421ee3cffaSDavid du Colombier		files=`{mk 8.out | getfiles}
431ee3cffaSDavid du Colombier	}
441ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){
451ee3cffaSDavid du Colombier		cd /sys/src/cmd/$i
46*2fd6e7caSDavid du Colombier		rm 8.$b
471ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
481ee3cffaSDavid du Colombier	}
491ee3cffaSDavid du Colombier	if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){
501ee3cffaSDavid du Colombier		cd /sys/src/cmd/$d
511ee3cffaSDavid du Colombier		rm 8.$b
521ee3cffaSDavid du Colombier		files=`{mk 8.$b | getfiles}
531ee3cffaSDavid du Colombier	}
541ee3cffaSDavid du Colombier	if not{
551ee3cffaSDavid du Colombier		echo do not know how to make $i
561ee3cffaSDavid du Colombier		exit oops
571ee3cffaSDavid du Colombier	}
581ee3cffaSDavid du Colombier	aux/8prefix $p^_ $files
591ee3cffaSDavid du Colombier	grab $files
601ee3cffaSDavid du Colombier	switch(`{pwd}){
611ee3cffaSDavid du Colombier	case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip
621ee3cffaSDavid du Colombier		rm 8.$b
631ee3cffaSDavid du Colombier	case *
641ee3cffaSDavid du Colombier		mk clean
651ee3cffaSDavid du Colombier	}
661ee3cffaSDavid du Colombier}
671ee3cffaSDavid du Colombiercd $dir
681ee3cffaSDavid du Colombier8c -FVw multi.c
691ee3cffaSDavid du Colombier8l -o 8.$targ multi.8 a.*.8
701ee3cffaSDavid du Colombier# rm a.*.8
71