ref: cc4ac997a0da6ea60e23ffb5f8c9361a3eebef32
dir: /sys/src/9/port/mkbootrules/
#!/bin/rc rfork e if(~ $#CONF 0) CONF=$1 awk -v 'objtype='$objtype -v 'CONF='$CONF ' BEGIN { nfs = 0 } /^$/{ next; } /^#/{ next; } collect && /^[^ \t]/{ collect = 0; } collect && section ~ "bootdir" { if(NF >= 2) x = $2; else{ x = $1; sub(/.*\//, "", x); } fsname[nfs] = x; x = $1; gsub(/[^a-zA-Z0-9_]/, "_", x); fs[nfs] = x; file[nfs] = $1; nfs++; } $0 ~ /^[^ \t]/{ if($0 ~ "bootdir"){ section = $0; collect = 1; } next; } END{ printf "%s.root.s:D:", CONF; for(i=0; i<nfs; i++) printf " %s", file[i]; printf "\n"; printf "\t../port/mkrootall \\\n"; for(i=0; i<nfs; i++) printf "\t\t%s %s %s\\\n", fsname[i], fs[i], file[i]; printf "\t>$target\n"; printf "%s.rootc.c:D:", CONF; for(i=0; i<nfs; i++) printf " %s", file[i]; printf "\n"; printf "\t../port/mkrootc \\\n"; for(i=0; i<nfs; i++) printf "\t\t%s %s %s\\\n", fsname[i], fs[i], file[i]; printf "\t>$target\n"; } ' $*