mkfile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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=gc|lmlvideo|dwb|unix|perl|celp|mosml
  10. OUTOFDATE=old|ssls
  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. none:VQ:
  15. echo usage: mk cmds, dirs, all, install, installall, '$O'.cmd, cmd.install, or cmd.installall
  16. cmds:V: $PROGS
  17. dirs:V:
  18. for(i in cc $DIRS) @{
  19. cd $i
  20. echo mk $i
  21. mk $MKFLAGS all
  22. }
  23. all:V: $PROGS dirs
  24. ^([$OS])\.(.*):R: \2.\1
  25. $stem1^l $LDFLAGS -o $target $stem2.$stem1
  26. .*\.[$OS]:R: $HFILES
  27. (.*)\.([$OS])'$':R: \1.c
  28. $stem2^c $CFLAGS $stem1.c
  29. &:n: $O.&
  30. mv $O.$stem $stem
  31. %.tab.h %.tab.c: %.y
  32. $YACC $YFLAGS -s $stem $prereq
  33. %.install:V: $BIN/%
  34. %.safeinstall: $O.%
  35. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  36. test -e $cpuobjtype._mv || cp /bin/mv $cpuobjtype._mv
  37. test -e $BIN/$stem && $cpuobjtype._mv $BIN/$stem $BIN/_$stem
  38. $cpuobjtype._cp $prereq $BIN/$stem
  39. %.safeinstallall:
  40. for(objtype in $CPUS)
  41. mk $stem.safeinstall
  42. mk $stem.clean
  43. $BIN/%: $O.%
  44. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  45. $cpuobjtype._cp $prereq $BIN/$stem
  46. %.directories:V:
  47. for(i in $DIRS) @{
  48. cd $i
  49. echo mk $i
  50. mk $MKFLAGS $stem
  51. }
  52. clean:V: cleanfiles clean.directories
  53. nuke:V: cleanfiles nuke.directories
  54. directories:V: install.directories
  55. cleanfiles:V:
  56. 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
  57. %.clean:V:
  58. rm -f [$OS].$stem $stem.[$OS]
  59. install:V:
  60. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  61. mk $MKFLAGS $TARG.install
  62. mk $MKFLAGS directories
  63. installall:V:
  64. for(objtype in $CPUS)
  65. mk $MKFLAGS install
  66. %.installall: %.c
  67. test -e $cpuobjtype._cp || cp /bin/cp $cpuobjtype._cp
  68. for (objtype in $CPUS) {
  69. rfork e
  70. mk $stem.install &
  71. }
  72. wait
  73. rm -f $stem.[$OS] y.tab.? $stem.tab.? y.debug y.output [$OS].$stem bc.c bc.tab.h units.c
  74. %.acid: %.$O $HFILES
  75. $CC $CFLAGS -a $stem.c >$target
  76. (bc|units).c:R: \1.tab.c
  77. mv $stem1.tab.c $stem1.c
  78. $BIN/init: $O.init
  79. cp $prereq /$objtype/init
  80. $O.cj: cj.$O
  81. $LD $LDFLAGS -o $O.cj cj.$O /$objtype/lib/libjpg.a
  82. %.update:V:
  83. update $stem.c /386/bin/$stem