Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#!/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