ref: d1cebf608b05e45b148108ac6c16ae94f6862097
dir: /sys/src/cmd/aux/multi/mkmulti/
#!/bin/rc targ=multi n=0 dir=`{pwd} fn grab { echo using $* for(i){ n=`{echo 1+$n|hoc} mv $i $dir/a.$n.8 } } fn getfiles { sed -n 's/^(pcc|8\^l|8l) +(-o [^ ]* +)?([^\-].*)/ \3/p' | sed 's/ -[^ ]*//g' | sed 's/ [^ ]*\.a//g' } rm a.*.8 >multi.h >multiproto.h for(i){ echo $i... b=`{basename $i} p=$b if(~ $b [0-9]*) p=_$b echo void $p^_main'(int, char**);' >>$dir/multiproto.h echo "$b", $p^_main, >>$dir/multi.h d=`{basename -d $i} if(~ $i disk/prep disk/fdisk){ cd /sys/src/cmd/disk/prep rm 8.$b files=`{mk 8.$b | getfiles} } if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.out}){ cd /sys/src/cmd/$i rm 8.out files=`{mk 8.out | getfiles} } if not if(test -d /sys/src/cmd/$i && @{cd /sys/src/cmd/$i && mk 8.$b}){ cd /sys/src/cmd/$i rm 8.out files=`{mk 8.$b | getfiles} } if not if(test -d /sys/src/cmd/$d && @{cd /sys/src/cmd/$d && mk 8.$b}){ cd /sys/src/cmd/$d rm 8.$b files=`{mk 8.$b | getfiles} } if not{ echo do not know how to make $i exit oops } aux/8prefix $p^_ $files grab $files switch(`{pwd}){ case /sys/src/cmd /sys/src/cmd/aux /sys/src/cmd/ip rm 8.$b case * mk clean } } cd $dir 8c -FVw multi.c 8l -o 8.$targ multi.8 a.*.8 # rm a.*.8