summaryrefslogtreecommitdiff
path: root/sys/lib/dist.old/cmd/multi/mkmulti
diff options
context:
space:
mode:
Diffstat (limited to 'sys/lib/dist.old/cmd/multi/mkmulti')
-rw-r--r--sys/lib/dist.old/cmd/multi/mkmulti70
1 files changed, 70 insertions, 0 deletions
diff --git a/sys/lib/dist.old/cmd/multi/mkmulti b/sys/lib/dist.old/cmd/multi/mkmulti
new file mode 100644
index 000000000..2317e51e8
--- /dev/null
+++ b/sys/lib/dist.old/cmd/multi/mkmulti
@@ -0,0 +1,70 @@
+#!/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