The Modula-2 compiler now builds.
authorDavid Given <dg@cowlark.com>
Fri, 12 Aug 2016 22:02:21 +0000 (00:02 +0200)
committerDavid Given <dg@cowlark.com>
Fri, 12 Aug 2016 22:02:21 +0000 (00:02 +0200)
build.lua
lang/m2/comp/build.lua [new file with mode: 0644]
lang/m2/comp/make.parameters [new file with mode: 0755]

index 0b1637f..028e6f0 100644 (file)
--- a/build.lua
+++ b/build.lua
@@ -11,8 +11,9 @@ vars.plats = {
 installable {
        name = "ack",
        map = {
-               "lang/cem/cemcom.ansi+pkg",
                "lang/basic/src+pkg",
+               "lang/cem/cemcom.ansi+pkg",
+               "lang/m2/comp+pkg",
                "plat/pc86+pkg",
                "util/ack+pkg",
                "util/amisc+pkg",
diff --git a/lang/m2/comp/build.lua b/lang/m2/comp/build.lua
new file mode 100644 (file)
index 0000000..b17eb31
--- /dev/null
@@ -0,0 +1,133 @@
+normalrule {
+       name = "tokenfile_g",
+       ins = {
+               "./make.tokfile",
+               "./tokenname.c"
+       },
+       outleaves = { "tokenfile.g" },
+       commands = {
+               "sh %{ins[1]} < %{ins[2]} > %{outs}"
+       }
+}
+
+llgen {
+       name = "llgen",
+       srcs = {
+               -- order here is important
+               "+tokenfile_g",
+               "./*.g",
+       }
+}
+
+normalrule {
+       name = "parameters_h",
+       ins = {
+               "./make.parameters",
+               "./BigPars",
+       },
+       outleaves = { "parameters.h" },
+       commands = {
+               "sh %{ins[1]} < %{ins[2]} > %{outs}"
+       }
+}
+
+for _, f in ipairs(filenamesof("./*.H")) do
+       local name = replace(basename(f), "%.H$", "")
+       normalrule {
+               name = name.."_h",
+               ins = {
+                       "./make.allocd",
+                       f
+               },
+               outleaves = { name..".h" },
+               commands = {
+                       "%{ins[1]} < %{ins[2]} > %{outs}"
+               }
+       }
+end
+
+for _, f in ipairs(filenamesof("./*.C")) do
+       local name = replace(basename(f), "%.C$", "")
+       normalrule {
+               name = name.."_c",
+               ins = {
+                       "./make.allocd",
+                       f
+               },
+               outleaves = { name..".c" },
+               commands = {
+                       "%{ins[1]} < %{ins[2]} > %{outs}"
+               }
+       }
+end
+
+normalrule {
+       name = "next_c",
+       ins = {
+               "./make.next",
+               "./*.H",
+       },
+       outleaves = { "next.c" },
+       commands = {
+               "sh %{ins} > %{outs}"
+       }
+}
+
+normalrule {
+       name = "symbol2str_c",
+       ins = {
+               "./make.tokcase",
+               "./tokenname.c",
+       },
+       outleaves = { "symbol2str.c" },
+       commands = {
+               "%{ins[1]} < %{ins[2]} > %{outs}"
+       }
+}
+
+tabgen {
+       name = "chartab_c",
+       srcs = { "./char.tab" },
+}
+
+cprogram {
+       name = "em_m2",
+       srcs = {
+               "./*.c",
+               "+casestat_c",
+               "+next_c",
+               "+scope_c",
+               "+symbol2str_c",
+               "+tmpvar_c",
+               "+chartab_c",
+               matching(filenamesof("+llgen"), "%.c$"),
+       },
+       deps = {
+               "+def_h",
+               "+llgen",
+               "+node_h",
+               "+parameters_h",
+               "+real_h",
+               "+type_h",
+               "h+emheaders",
+               "modules+headers",
+               "modules/src/alloc+lib",
+               "modules/src/em_code+lib_k",
+               "modules/src/flt_arith+lib",
+               "modules/src/idf+lib",
+               "modules/src/input+lib",
+               "modules/src/string+lib",
+               "modules/src/system+lib",
+               "modules/src/print+lib",
+               "modules/src/em_mes+lib",
+               "util/data+em_data",
+       }
+}
+
+installable {
+       name = "pkg",
+       map = {
+               ["$(PLATDEP)/em_m2"] = "+em_m2",
+               ["$(INSDIR)/share/man/man6/em_m2.6"] = "./em_m2.6"
+       }
+}
diff --git a/lang/m2/comp/make.parameters b/lang/m2/comp/make.parameters
new file mode 100755 (executable)
index 0000000..3c9a515
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+echo '#ifndef PARAMETERS_H'
+echo '#define PARAMETERS_H'
+grep -v '^!'
+echo '#endif'
+