mkbootrules 923 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/bin/rc
  2. rfork e
  3. if(~ $#CONF 0)
  4. CONF=$1
  5. awk -v 'objtype='$objtype -v 'CONF='$CONF '
  6. BEGIN { nfs = 0 }
  7. /^$/{
  8. next;
  9. }
  10. /^#/{
  11. next;
  12. }
  13. collect && /^[^ \t]/{
  14. collect = 0;
  15. }
  16. collect && section ~ "bootdir" {
  17. if(NF >= 2)
  18. x = $2;
  19. else{
  20. x = $1;
  21. sub(/.*\//, "", x);
  22. }
  23. fsname[nfs] = x;
  24. x = $1;
  25. gsub(/[^a-zA-Z0-9_]/, "_", x);
  26. fs[nfs] = x;
  27. file[nfs] = $1;
  28. nfs++;
  29. }
  30. $0 ~ /^[^ \t]/{
  31. if($0 ~ "bootdir"){
  32. section = $0;
  33. collect = 1;
  34. }
  35. next;
  36. }
  37. END{
  38. printf "%s.root.s:D:", CONF;
  39. for(i=0; i<nfs; i++)
  40. printf " %s", file[i];
  41. printf "\n";
  42. printf "\t../port/mkrootall \\\n";
  43. for(i=0; i<nfs; i++)
  44. printf "\t\t%s %s %s\\\n", fsname[i], fs[i], file[i];
  45. printf "\t>$target\n";
  46. printf "%s.rootc.c:D:", CONF;
  47. for(i=0; i<nfs; i++)
  48. printf " %s", file[i];
  49. printf "\n";
  50. printf "\t../port/mkrootc \\\n";
  51. for(i=0; i<nfs; i++)
  52. printf "\t\t%s %s %s\\\n", fsname[i], fs[i], file[i];
  53. printf "\t>$target\n";
  54. }
  55. ' $*