Modula-2 runtime library now builds.
authorDavid Given <dg@cowlark.com>
Sat, 13 Aug 2016 10:43:44 +0000 (12:43 +0200)
committerDavid Given <dg@cowlark.com>
Sat, 13 Aug 2016 10:43:44 +0000 (12:43 +0200)
lang/m2/libm2/build.lua [new file with mode: 0644]
lang/m2/libm2/build.mk
plat/build.lua

diff --git a/lang/m2/libm2/build.lua b/lang/m2/libm2/build.lua
new file mode 100644 (file)
index 0000000..f49a10a
--- /dev/null
@@ -0,0 +1,58 @@
+include("plat/build.lua")
+
+local installmap = {}
+
+local function addheader(dir, list)
+       for _, f in ipairs(list) do
+               local b = basename(f)
+               installmap[concatpath("$(PLATIND)/include/modula2/", dir, b)] = f
+       end
+end
+
+addheader("", filenamesof("./*.def"))
+
+installable {
+       name = "headers",
+       map = installmap
+}
+
+for _, plat in ipairs(vars.plats) do
+    acklibrary {
+        name = "lib_"..plat,
+        srcs = {
+                       "./*.c",
+                       "./*.mod",
+                       "./EM.e",
+                       "./LtoUset.e",
+                       "./absf.e",
+                       "./par_misc.e",
+        },
+               hdrs = {}, -- must be empty
+               deps = {
+                       "lang/cem/libcc.ansi/headers+headers",
+                       "plat/"..plat.."+headers",
+                       "h+emheaders",
+               },
+        vars = { plat = plat }
+    }
+
+       ackfile {
+               name = "mrt_"..plat,
+               srcs = { "./head_m2.e" },
+               vars = { plat = plat },
+               deps = {
+                       "h+emheaders"
+               }
+       }
+
+       installable {
+               name = "pkg_"..plat,
+               map = {
+                       ["$(PLATIND)/"..plat.."/modula2.o"] = "+mrt_"..plat,
+                       ["$(PLATIND)/"..plat.."/libmodula2.a"] = "+lib_"..plat,
+                       "+headers",
+               }
+       }
+end
+
+
index 1ebc89c..e7c27ea 100644 (file)
@@ -3,51 +3,51 @@ define build-runtime-libmodula2-impl
 $(call reset)
 $(eval objdir := $(PLATFORM))
 
-$(call ackfile, lang/m2/libm2/Termcap.mod)
+$(call ackfile, lang/m2/libm2/Arguments.c)
+$(call ackfile, lang/m2/libm2/ArraySort.mod)
 $(call ackfile, lang/m2/libm2/CSP.mod)
-$(call ackfile, lang/m2/libm2/PascalIO.mod)
-$(call ackfile, lang/m2/libm2/RealInOut.mod)
+$(call ackfile, lang/m2/libm2/Conversion.mod)
+$(call ackfile, lang/m2/libm2/EM.e)
 $(call ackfile, lang/m2/libm2/InOut.mod)
-$(call ackfile, lang/m2/libm2/Streams.mod)
+$(call ackfile, lang/m2/libm2/LtoUset.e)
 $(call ackfile, lang/m2/libm2/MathLib0.mod)
 $(call ackfile, lang/m2/libm2/Mathlib.mod)
+$(call ackfile, lang/m2/libm2/PascalIO.mod)
 $(call ackfile, lang/m2/libm2/Processes.mod)
 $(call ackfile, lang/m2/libm2/RealConver.mod)
-$(call ackfile, lang/m2/libm2/Storage.mod)
-$(call ackfile, lang/m2/libm2/Conversion.mod)
+$(call ackfile, lang/m2/libm2/RealInOut.mod)
+$(call ackfile, lang/m2/libm2/SYSTEM.c)
 $(call ackfile, lang/m2/libm2/Semaphores.mod)
-$(call ackfile, lang/m2/libm2/random.mod)
+$(call ackfile, lang/m2/libm2/Storage.mod)
+$(call ackfile, lang/m2/libm2/StrAss.c)
+$(call ackfile, lang/m2/libm2/Streams.mod)
 $(call ackfile, lang/m2/libm2/Strings.mod)
-$(call ackfile, lang/m2/libm2/ArraySort.mod)
-$(call ackfile, lang/m2/libm2/catch.c)
+$(call ackfile, lang/m2/libm2/Termcap.mod)
 $(call ackfile, lang/m2/libm2/Traps.mod)
 $(call ackfile, lang/m2/libm2/XXTermcap.c)
-$(call ackfile, lang/m2/libm2/dvi.c)
-$(call ackfile, lang/m2/libm2/Arguments.c)
-$(call ackfile, lang/m2/libm2/LtoUset.e)
-$(call ackfile, lang/m2/libm2/StrAss.c)
-$(call ackfile, lang/m2/libm2/cap.c)
 $(call ackfile, lang/m2/libm2/absd.c)
 $(call ackfile, lang/m2/libm2/absf.e)
 $(call ackfile, lang/m2/libm2/absi.c)
 $(call ackfile, lang/m2/libm2/absl.c)
+$(call ackfile, lang/m2/libm2/blockmove.c)
+$(call ackfile, lang/m2/libm2/cap.c)
+$(call ackfile, lang/m2/libm2/catch.c)
+$(call ackfile, lang/m2/libm2/confarray.c)
+$(call ackfile, lang/m2/libm2/dvi.c)
 $(call ackfile, lang/m2/libm2/halt.c)
-$(call ackfile, lang/m2/libm2/SYSTEM.c)
-$(call ackfile, lang/m2/libm2/par_misc.e)
 $(call ackfile, lang/m2/libm2/init.c)
-$(call ackfile, lang/m2/libm2/sigtrp.c)
-$(call ackfile, lang/m2/libm2/store.c)
-$(call ackfile, lang/m2/libm2/confarray.c)
 $(call ackfile, lang/m2/libm2/load.c)
-$(call ackfile, lang/m2/libm2/blockmove.c)
-$(call ackfile, lang/m2/libm2/stackprio.c)
-$(call ackfile, lang/m2/libm2/ucheck.c)
+$(call ackfile, lang/m2/libm2/par_misc.e)
+$(call ackfile, lang/m2/libm2/random.mod)
 $(call ackfile, lang/m2/libm2/rcka.c)
-$(call ackfile, lang/m2/libm2/rcku.c)
 $(call ackfile, lang/m2/libm2/rcki.c)
-$(call ackfile, lang/m2/libm2/rckul.c)
 $(call ackfile, lang/m2/libm2/rckil.c)
-$(call ackfile, lang/m2/libm2/EM.e)
+$(call ackfile, lang/m2/libm2/rcku.c)
+$(call ackfile, lang/m2/libm2/rckul.c)
+$(call ackfile, lang/m2/libm2/sigtrp.c)
+$(call ackfile, lang/m2/libm2/stackprio.c)
+$(call ackfile, lang/m2/libm2/store.c)
+$(call ackfile, lang/m2/libm2/ucheck.c)
 
 $(eval $q: $(EM_M2))
 
index c6019d3..64bccf8 100644 (file)
@@ -15,6 +15,7 @@ definerule("ackfile",
                        deps = {
                                "lang/cem/cemcom.ansi+pkg",
                                "lang/cem/cpp.ansi+pkg",
+                               "lang/m2/comp+pkg",
                                "plat/"..plat.."+tools",
                                "util/ack+pkg",
                                "util/misc+pkg",
@@ -91,6 +92,7 @@ definerule("build_plat_libs",
                        name = e.name,
                        map = {
                                "lang/basic/lib+pkg_"..e.plat,
+                               "lang/m2/libm2+pkg_"..e.plat,
                                "lang/cem/libcc.ansi+pkg_"..e.plat,
                                ["$(PLATIND)/"..e.plat.."/libem.a"] = "mach/"..e.arch.."/libem+lib_"..e.plat,
                                ["$(PLATIND)/"..e.plat.."/libend.a"] = "mach/"..e.arch.."/libend+lib_"..e.plat,