build.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. include("mach/proto/as/build.lua")
  2. include("mach/proto/ncg/build.lua")
  3. include("mach/proto/top/build.lua")
  4. definerule("ackfile",
  5. {
  6. srcs = { type="targets" },
  7. deps = { type="targets", default={} },
  8. },
  9. function (e)
  10. local plat = e.vars.plat
  11. return cfile {
  12. name = e.name,
  13. srcs = e.srcs,
  14. deps = {
  15. "lang/cem/cemcom.ansi+pkg",
  16. "lang/cem/cpp.ansi+pkg",
  17. "lang/m2/comp+pkg",
  18. "lang/pc/comp+pkg",
  19. "plat/"..plat.."+tools",
  20. "util/ack+pkg",
  21. "util/ego+pkg",
  22. "util/misc+pkg",
  23. e.deps
  24. },
  25. commands = {
  26. "ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} -c -o %{outs} %{ins} %{hdrpaths} %{ackcflags}"
  27. }
  28. }
  29. end
  30. )
  31. definerule("acklibrary",
  32. {
  33. srcs = { type="targets", default={} },
  34. hdrs = { type="targets", default={} },
  35. deps = { type="targets", default={} },
  36. },
  37. function (e)
  38. return clibrary {
  39. name = e.name,
  40. srcs = e.srcs,
  41. hdrs = e.hdrs,
  42. deps = {
  43. "util/arch+pkg",
  44. e.deps
  45. },
  46. _cfile = ackfile,
  47. commands = {
  48. "rm -f %{outs[1]}",
  49. "ACKDIR=$(INSDIR) $(INSDIR)/bin/aal qc %{outs[1]} %{ins}"
  50. }
  51. }
  52. end
  53. )
  54. definerule("ackprogram",
  55. {
  56. srcs = { type="targets", default={} },
  57. deps = { type="targets", default={} },
  58. },
  59. function (e)
  60. return cprogram {
  61. name = e.name,
  62. srcs = e.srcs,
  63. deps = {
  64. "plat/"..e.vars.plat.."+pkg",
  65. "util/ack+pkg",
  66. "util/led+pkg",
  67. e.deps
  68. },
  69. _clibrary = acklibrary,
  70. commands = {
  71. "ACKDIR=$(INSDIR) $(INSDIR)/bin/ack -m%{plat} -.%{lang} -o %{outs} %{ins}"
  72. }
  73. }
  74. end
  75. )
  76. definerule("build_plat_libs",
  77. {
  78. arch = { type="string" },
  79. plat = { type="string" },
  80. },
  81. function(e)
  82. return installable {
  83. name = e.name,
  84. map = {
  85. "lang/basic/lib+pkg_"..e.plat,
  86. "lang/cem/libcc.ansi+pkg_"..e.plat,
  87. "lang/m2/libm2+pkg_"..e.plat,
  88. "lang/pc/libpc+pkg_"..e.plat,
  89. ["$(PLATIND)/"..e.plat.."/libem.a"] = "mach/"..e.arch.."/libem+lib_"..e.plat,
  90. ["$(PLATIND)/"..e.plat.."/libend.a"] = "mach/"..e.arch.."/libend+lib_"..e.plat,
  91. }
  92. }
  93. end
  94. )