mkfile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. </$objtype/mkfile
  2. TARG=`{ls *.[cy] | sed '/\.tab\.c$/d;s/..$//'}
  3. HFILES=/$objtype/include/u.h /sys/include/libc.h /sys/include/bio.h
  4. BIN=/$objtype/bin
  5. PROGS=${TARG:%=$O.%}
  6. LDFLAGS=
  7. YFLAGS=-d
  8. NOTSYS=sml|dup|.+\..+
  9. BUGGERED=unix|postscript
  10. OUTOFDATE=old
  11. NOMK=$NOTSYS|$BUGGERED|$OUTOFDATE
  12. cpuobjtype=`{sed -n 's/^O=//p' /$cputype/mkfile}
  13. DIRS=`{ls -l | sed '/^d/!d; s/.* //; /^('$NOMK')$/d'}
  14. APEDIRS=awk bzip2 compress cvs eqn grap gs links-ape lp pic postscript spin \
  15. tex troff
  16. none:VQ:
  17. echo usage: mk cmds, dirs, all, install, installall, '$O'.cmd, cmd.install, or cmd.installall
  18. cmds:V: $PROGS
  19. ape:V: $APE
  20. for(i in $APEDIRS) @{
  21. cd $i
  22. echo mk $i
  23. mk $MKFLAGS all
  24. }
  25. dirs:V:
  26. for(i in cc $DIRS) @{
  27. cd $i
  28. echo mk $i
  29. mk $MKFLAGS all
  30. }
  31. all:V: $PROGS dirs
  32. ^([$OS])\.(.*):R: \2.\1
  33. $stem1^l $LDFLAGS -o $target $stem2.$stem1
  34. .*\.[$OS]:R: $HFILES
  35. (.*)\.([$OS])'$':R: \1.c
  36. $stem2^c $CFLAGS $stem1.c
  37. &:n: $O.&
  38. mv $O.$stem $stem
  39. %.tab.h %.tab.c: %.y
  40. $YACC $YFLAGS -s $stem $prereq
  41. %.install:V: $BIN/%
  42. $cpuobjtype._cp: /bin/cp
  43. cp $prereq $target
  44. %.safeinstall: $O.% $cpuobjtype._cp
  45. test -e $BIN/$stem && mv $BIN/$stem $BIN/_$stem
  46. $cpuobjtype._cp $O.$stem $BIN/$stem
  47. %.safeinstallall:
  48. for(objtype in $CPUS)
  49. mk $stem.safeinstall
  50. mk $stem.clean
  51. $BIN/%: $O.% $cpuobjtype._cp
  52. $cpuobjtype._cp $O.$stem $BIN/$stem
  53. %.directories:V:
  54. for(i in $DIRS) @{
  55. cd $i
  56. echo mk $i
  57. mk $MKFLAGS $stem
  58. }
  59. clean:V: cleanfiles clean.directories
  60. nuke:V: cleanfiles nuke.directories
  61. directories:V: install.directories
  62. cleanfiles:V:
  63. rm -f [$OS].out *.[$OS] y.tab.? y.debug y.output [$OS].$TARG [$OS].units.tab $TARG bc.c bc.tab.h units.tab.h units.c [$OS]._cp
  64. %.clean:V:
  65. rm -f [$OS].$stem $stem.[$OS]
  66. install:V:
  67. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  68. mk $MKFLAGS $TARG.install
  69. mk $MKFLAGS directories
  70. installall:V:
  71. for(objtype in $CPUS)
  72. mk $MKFLAGS install
  73. %.installall: %.c
  74. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  75. for (objtype in $CPUS) {
  76. rfork e
  77. mk $stem.install &
  78. }
  79. wait
  80. rm -f $stem.[$OS] y.tab.? $stem.tab.? y.debug y.output [$OS].$stem bc.c bc.tab.h units.c
  81. %.acid: %.$O $HFILES
  82. $CC $CFLAGS -a $stem.c >$target
  83. (bc|units).c:R: \1.tab.c
  84. mv $stem1.tab.c $stem1.c
  85. $BIN/init: $O.init
  86. cp $prereq /$objtype/init
  87. $O.cj: cj.$O
  88. $LD $LDFLAGS -o $O.cj cj.$O /$objtype/lib/libjpg.a
  89. %.update:V:
  90. update $stem.c /386/bin/$stem
  91. compilers:V:
  92. for(i in ?c)
  93. if(! ~ $i cc rc) @{
  94. cd $i
  95. mk clean
  96. objtype=$cputype mk install
  97. mk clean
  98. }
  99. for(i in ?c)
  100. if(! ~ $i cc rc) @{
  101. cd $i
  102. mk clean
  103. mk installall
  104. mk clean
  105. }