mkfile 2.6 KB

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