Browse Source

First version in CVS.

dtrg 18 years ago
parent
commit
4593af6c11
55 changed files with 2558 additions and 0 deletions
  1. 143 0
      first/c.pm
  2. 34 0
      first/llgen.pm
  3. 18 0
      first/yacc.pm
  4. 216 0
      lang/cem/cemcom.ansi/pmfile
  5. 215 0
      lang/cem/cemcom/pmfile
  6. 19 0
      mach/6500/dl/pmfile
  7. 103 0
      mach/6500/libem/pmfile
  8. 23 0
      mach/6500/pmfile
  9. 16 0
      mach/6800/pmfile
  10. 16 0
      mach/6805/pmfile
  11. 16 0
      mach/6809/pmfile
  12. 19 0
      mach/arm/cv/pmfile
  13. 22 0
      mach/arm/pmfile
  14. 19 0
      mach/i386/cv/pmfile
  15. 22 0
      mach/i386/pmfile
  16. 19 0
      mach/i80/pmfile
  17. 19 0
      mach/i86/pmfile
  18. 19 0
      mach/m68020/pmfile
  19. 20 0
      mach/m68k2/pmfile
  20. 19 0
      mach/m68k4/pmfile
  21. 19 0
      mach/ns/pmfile
  22. 20 0
      mach/pdp/pmfile
  23. 51 0
      mach/proto/as/pmfile
  24. 97 0
      mach/proto/cg/pmfile
  25. 61 0
      mach/proto/ncg/pmfile
  26. 14 0
      mach/proto/pmfile
  27. 16 0
      mach/s2650/pmfile
  28. 19 0
      mach/vax4/pmfile
  29. 19 0
      mach/z80/pmfile
  30. 19 0
      mach/z8000/pmfile
  31. 29 0
      modules/src/alloc/pmfile
  32. 20 0
      modules/src/assert/pmfile
  33. 106 0
      modules/src/em_code/pmfile
  34. 35 0
      modules/src/em_mes/pmfile
  35. 35 0
      modules/src/flt_arith/pmfile
  36. 17 0
      modules/src/idf/pmfile
  37. 23 0
      modules/src/input/pmfile
  38. 55 0
      modules/src/object/pmfile
  39. 24 0
      modules/src/print/pmfile
  40. 90 0
      modules/src/read_em/pmfile
  41. 37 0
      modules/src/string/pmfile
  42. 38 0
      modules/src/system/pmfile
  43. 54 0
      util/ack/pmfile
  44. 17 0
      util/amisc/pmfile
  45. 22 0
      util/arch/pmfile
  46. 56 0
      util/ceg/as_parser/pmfile
  47. 20 0
      util/ceg/assemble/pmfile
  48. 89 0
      util/ceg/ce_back/pmfile
  49. 21 0
      util/ceg/pmfile
  50. 48 0
      util/cgg/pmfile
  51. 25 0
      util/cmisc/pmfile
  52. 184 0
      util/cpp/pmfile
  53. 53 0
      util/data/pmfile
  54. 47 0
      util/misc/pmfile
  55. 81 0
      util/ncgg/pmfile

+ 143 - 0
first/c.pm

@@ -0,0 +1,143 @@
+-- pm includefile to compile *host* C programs.
+
+-- Standard Lua boilerplate.
+
+local io_open = io.open
+local string_gsub = string.gsub
+local string_gfind = string.gfind
+local table_insert = table.insert
+local table_getn = table.getn
+local filetime = pm.filetime
+
+-- Define some variables.
+
+CCOMPILER = "gcc"
+CC = "%CCOMPILER% %CBUILDFLAGS% %CDYNINCLUDES% %CINCLUDES% %CDEFINES% %CEXTRAFLAGS% -c -o %out% %in%"
+CPROGRAM = "%CCOMPILER% %CBUILDFLAGS% %CLINKFLAGS% %CEXTRAFLAGS% -o %out% %in% %CLIBRARIES%"
+CDEPENDS = "%CCOMPILER% %CBUILDFLAGS% %CDYNINCLUDES% %CINCLUDES% %CDEFINES% %CEXTRAFLAGS% -MM -MG %in% > %out%"
+AR = "%RM% %out% && ar cr %out% %in%"
+
+CBUILDFLAGS = "-g -Os"
+CINCLUDES = {}
+CDEFINES = {}
+CEXTRAFLAGS = ""
+CLINKFLAGS = ""
+CDYNINCLUDES = ""
+CLIBRARIES = ""
+
+--- Manage C file dependencies ----------------------------------------------
+
+local dependency_cache = {}
+local function load_dependency_file(fn)
+	local o = dependency_cache[fn]
+	if o then
+		return o
+	end
+	
+	-- Read in the dependency file.
+	
+	local f = io_open(fn)
+	if not f then
+		print("failed to open "..fn)
+		return nil
+	end
+	f = f:read("*a")
+	
+	-- Massage the dependency file into a string containing one unescaped
+	-- filename per line.
+	
+	f = string_gsub(f, "^.*[^\\]: *", "")
+	f = string_gsub(f, "\\\r?\n", "")
+	f = string_gsub(f, "([^\\]) +", "%1\n")
+	f = string_gsub(f, "\\", "")
+	
+	-- Parse the string.
+	
+	o = {}
+	for l in string_gfind(f, "[^\n]+") do
+		table_insert(o, l)
+	end
+	
+	dependency_cache[fn] = o
+	return o
+end
+
+-- This clause specialises 'simple' to add support for smart dependencies of C
+-- files.
+
+simple_with_clike_dependencies = simple {
+	class = "simple_with_clike_dependencies",
+	makedepends = {"%CDEPENDS%"},
+
+	__init = function(self, p)
+ 		simple.__init(self, p)
+  		
+		-- If we're a class, don't verify.
+		
+		if ((type(p) == "table") and p.class) then
+			return
+		end
+
+		-- If dynamicheaders is an object, turn it into a singleton list.
+		
+		if self.dynamicheaders then
+			if (type(self.dynamicheaders) ~= "table") then
+				self:__error("doesn't know what to do with dynamicheaders, which ",
+					"should be a list or an object but was a ", type(self.dynamicheaders))
+			end
+			if self.dynamicheaders.class then
+				self.dynamicheaders = {self.dynamicheaders}
+			end
+		end
+	end,
+	
+	__dependencies = function(self, inputs, outputs)
+		local obj = simple {
+			CDYNINCLUDES = self.CDYNINCLUDES,
+			command = self.makedepends,
+			outputs = {"%U%-%I%.d"},
+			unpack(inputs)
+		}
+		local o = obj:__build()
+		local depends = load_dependency_file(o[1])
+		if not depends then
+			self:__error("could not determine the dependencies for ",
+				pm.rendertable(inputs))
+		end
+		return depends
+	end,
+	
+	__buildadditionalchildren = function(self)
+		self.CDYNINCLUDES = ""
+		if self.dynamicheaders then
+			for _, i in ipairs(self.dynamicheaders) do
+				local o = i:__build()
+				if o[1] then
+					self.CDYNINCLUDES = self.CDYNINCLUDES..' "-I'..string_gsub(o[1], "/[^/]*$", "")..'"'
+				end
+			end
+		end
+	end
+}
+
+-- These are the publically useful clauses.
+
+cfile = simple_with_clike_dependencies {
+	class = "cfile",
+	command = {"%CC%"},
+	outputs = {"%U%-%I%.o"},
+}
+
+cprogram = simple {
+	class = "cprogram",
+	command = {"%CPROGRAM%"},
+	outputs = {"%U%-%I%"},
+}
+
+clibrary = simple {
+	class = "clibrary",
+	command = {
+		"%AR%"
+	},
+	outputs = {"%U%-%I%.a"},
+}

+ 34 - 0
first/llgen.pm

@@ -0,0 +1,34 @@
+-- $Source$
+-- $State$
+
+-- This is unpleasant. LLgen can generate an arbitrary number of output files,
+-- which means we need our own output filename generator.
+
+LLgen = simple {
+	class = "LLgen",
+	command = {
+		"rm -f %out%",
+		"cd %out[1]:dirname% && LLgen %in%"
+	},
+	
+	outputs = {"%U%/" },
+	__outputs = function(self, inputs)
+		local o = simple.__outputs(self, inputs)[1]
+		
+		local outputs = {o.."Lpars.h", o.."Lpars.c"}
+		
+		for _, i in ipairs(inputs) do
+			i = string.gsub(i, "^.*/", "")
+			i = string.gsub(i, "%.g$", ".c")
+			table.insert(outputs, o..i)
+		end
+		
+		return outputs
+	end
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 18 - 0
first/yacc.pm

@@ -0,0 +1,18 @@
+yacc = simple {
+	class = "yacc",
+	outputs = {"%U%/%I%.c"},
+	
+	command = {
+		"yacc -t -b %{return posix.dirname(self.out[1])}%/y -d %in%",
+		"mv %{return posix.dirname(self.out[1])}%/y.tab.c %out%"
+	}
+}
+
+flex = simple {
+	class = "flex",
+	outputs = {"%U%/%I%.c"},
+	
+	command = {
+		"flex -s -t %in% > %out%"
+	}
+}

+ 216 - 0
lang/cem/cemcom.ansi/pmfile

@@ -0,0 +1,216 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."lang/cem/cemcom.ansi/"
+
+local extract_parameters = simple {
+	outputs = {
+		"%U%/lint.h",
+		"%U%/pathlength.h",
+		"%U%/errout.h",
+		"%U%/idfsize.h",
+		"%U%/numsize.h",
+		"%U%/nparams.h",
+		"%U%/ifdepth.h",
+		"%U%/density.h",
+		"%U%/macbuf.h",
+		"%U%/strsize.h",
+		"%U%/trgt_sizes.h",
+		"%U%/botch_free.h",
+		"%U%/dataflow.h",
+		"%U%/debug.h",
+		"%U%/use_tmp.h",
+		"%U%/parbufsize.h",
+		"%U%/textsize.h",
+		"%U%/inputtype.h",
+		"%U%/nopp.h",
+		"%U%/nobitfield.h",
+		"%U%/spec_arith.h",
+		"%U%/static.h",
+		"%U%/nocross.h",
+		"%U%/regcount.h",
+		"%U%/dbsymtab.h",		
+	},
+	
+	command = {
+		"cd %out[1]:dirname% && %in[1]% %in[2]%"
+	},
+	
+	file (d.."make.hfiles"),
+	file (d.."BigPars")
+}
+
+local lpars = LLgen {
+	simple {
+		outputs = {"%U%/tokenfile.g"},
+		command = {
+			"%in[1]% < %in[2]% > %out[1]%"
+		},
+		file (d.."make.tokfile"),
+		file (d.."tokenname.c")
+	},
+	file (d.."program.g"),
+	file (d.."declar.g"),
+	file (d.."expression.g"),
+	file (d.."statement.g"),
+	file (d.."ival.g"),
+}
+
+local allocd_header = simple {
+	class = "allocd_header",
+	command = {
+		"%in[1]% < %in[2]% > %out[1]%"
+	},
+	
+	file (d.."make.allocd")
+}
+	
+local cfile_with_headers = cfile {
+	class = "cfile_with_headers",
+	dynamicheaders = {
+		file (d),
+		extract_parameters,
+		allocd_header { outputs = {"%U%/code.h"},          (d.."code.str") },
+		allocd_header { outputs = {"%U%/declar.h"},        (d.."declar.str") },
+		allocd_header { outputs = {"%U%/def.h"},           (d.."def.str") },
+		allocd_header { outputs = {"%U%/expr.h"},          (d.."expr.str") },
+		allocd_header { outputs = {"%U%/field.h"},         (d.."field.str") },
+		allocd_header { outputs = {"%U%/estack.h"},        (d.."estack.str") },
+		allocd_header { outputs = {"%U%/util.h"},          (d.."util.str") },
+		allocd_header { outputs = {"%U%/proto.h"},         (d.."proto.str") },
+		allocd_header { outputs = {"%U%/replace.h"},       (d.."replace.str") },
+		allocd_header { outputs = {"%U%/idf.h"},           (d.."idf.str") },
+		allocd_header { outputs = {"%U%/macro.h"},         (d.."macro.str") },
+		allocd_header { outputs = {"%U%/stack.h"},         (d.."stack.str") },
+		allocd_header { outputs = {"%U%/stmt.h"},          (d.."stmt.str") },
+		allocd_header { outputs = {"%U%/struct.h"},        (d.."struct.str") },
+		allocd_header { outputs = {"%U%/switch.h"},        (d.."switch.str") },
+		allocd_header { outputs = {"%U%/type.h"},          (d.."type.str") },
+		allocd_header { outputs = {"%U%/l_brace.h"},       (d.."l_brace.str") },
+		allocd_header { outputs = {"%U%/l_state.h"},       (d.."l_state.str") },
+		allocd_header { outputs = {"%U%/l_outdef.h"},      (d.."l_outdef.str") },
+		lpars
+	}
+}
+	
+lang_cem_cemcom_ansi = cprogram {
+	cfile_with_headers (d.."LLlex.c"),
+	cfile_with_headers (d.."LLmessage.c"),
+	cfile_with_headers (d.."arith.c"),
+	cfile_with_headers (d.."blocks.c"),
+	cfile_with_headers (d.."ch3.c"),
+	cfile_with_headers (d.."ch3bin.c"),
+	cfile_with_headers (d.."ch3mon.c"),
+	cfile_with_headers (d.."code.c"),
+	cfile_with_headers (d.."conversion.c"),
+	cfile_with_headers (d.."cstoper.c"),
+	cfile_with_headers (d.."dataflow.c"),
+	cfile_with_headers (d.."declarator.c"),
+	cfile_with_headers (d.."decspecs.c"),
+	cfile_with_headers (d.."domacro.c"),
+	cfile_with_headers (d.."dumpidf.c"),
+	cfile_with_headers (d.."error.c"),
+	cfile_with_headers (d.."eval.c"),
+	cfile_with_headers (d.."expr.c"),
+	cfile_with_headers (d.."field.c"),
+	cfile_with_headers (d.."fltcstoper.c"),
+	cfile_with_headers (d.."idf.c"),
+	cfile_with_headers (d.."init.c"),
+	cfile_with_headers (d.."input.c"),
+	cfile_with_headers (d.."l_comment.c"),
+	cfile_with_headers (d.."l_ev_ord.c"),
+	cfile_with_headers (d.."l_lint.c"),
+	cfile_with_headers (d.."l_misc.c"),
+	cfile_with_headers (d.."l_outdef.c"),
+	cfile_with_headers (d.."l_states.c"),
+	cfile_with_headers (d.."label.c"),
+	cfile_with_headers (d.."main.c"),
+	cfile_with_headers (d.."options.c"),
+	cfile_with_headers (d.."pragma.c"),
+	cfile_with_headers (d.."proto.c"),
+	cfile_with_headers (d.."replace.c"),
+	cfile_with_headers (d.."skip.c"),
+	cfile_with_headers (d.."stab.c"),
+	cfile_with_headers (d.."stack.c"),
+	cfile_with_headers (d.."struct.c"),
+	cfile_with_headers (d.."switch.c"),
+	cfile_with_headers (d.."tokenname.c"),
+	cfile_with_headers (d.."type.c"),
+	cfile_with_headers (d.."util.c"),
+
+	foreach {
+		rule = cfile_with_headers,
+		ith { lpars, from=2 }
+	},
+
+	cfile_with_headers {
+		simple {
+			outputs = {"%U%-symbol2str.c"},
+			command = {
+				"%in[1]% < %in[2]% > %out[1]%"
+			},
+			
+			file (d.."make.tokcase"),
+			file (d.."tokenname.c")
+		}
+	},
+	
+	cfile_with_headers {
+		CEXTRAFLAGS = "-I"..d,
+		tabgen (d.."char.tab")
+	},
+
+	cfile_with_headers {
+		simple {
+			outputs = {"%U%-next.c"},
+			command = {
+				"%in% > %out%"
+			},
+			
+			file (d.."make.next"),
+			
+			file (d.."code.str"),
+			file (d.."declar.str"),
+			file (d.."def.str"),
+			file (d.."expr.str"),
+			file (d.."field.str"),
+			file (d.."estack.str"),
+			file (d.."util.str"),
+			file (d.."proto.str"),
+			file (d.."replace.str"),
+			file (d.."idf.str"),
+			file (d.."macro.str"),
+			file (d.."stack.str"),
+			file (d.."stmt.str"),
+			file (d.."struct.str"),
+			file (d.."switch.str"),
+			file (d.."type.str"),
+			file (d.."l_brace.str"),
+			file (d.."l_state.str"),
+			file (d.."l_outdef.str"),
+		}
+	},
+
+	lib_em_mes,
+	lib_emk,
+	lib_em_data,
+	lib_input,
+	lib_assert,
+	lib_alloc,
+	lib_flt_arith,
+	lib_print,
+	lib_system,
+	lib_string,
+	
+	outputs = {"%U%/em_cemcom.ansi"},
+	install = {
+		pm.install(                    BINDIR..PLATDEP.."/em_cemcom.ansi"),
+		pm.install(d.."cemcom.ansi.1", BINDIR.."/man/man1/cemcom.ansi.1"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 215 - 0
lang/cem/cemcom/pmfile

@@ -0,0 +1,215 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."lang/cem/cemcom/"
+
+local extract_parameters = simple {
+	outputs = {
+		"%U%/lint.h",
+		"%U%/pathlength.h",
+		"%U%/errout.h",
+		"%U%/idfsize.h",
+		"%U%/numsize.h",
+		"%U%/nparams.h",
+		"%U%/ifdepth.h",
+		"%U%/density.h",
+		"%U%/lapbuf.h",
+		"%U%/strsize.h",
+		"%U%/target_sizes.h",
+		"%U%/botch_free.h",
+		"%U%/dataflow.h",
+		"%U%/debug.h",
+		"%U%/use_tmp.h",
+		"%U%/parbufsize.h",
+		"%U%/textsize.h",
+		"%U%/inputtype.h",
+		"%U%/nopp.h",
+		"%U%/nobitfield.h",
+		"%U%/spec_arith.h",
+		"%U%/static.h",
+		"%U%/nofloat.h",
+		"%U%/noRoption.h",
+		"%U%/nocross.h",
+		"%U%/regcount.h",
+		"%U%/dbsymtab.h",
+	},
+	
+	command = {
+		"cd %out[1]:dirname% && %in[1]% %in[2]%"
+	},
+	
+	file (d.."make.hfiles"),
+	file (d.."BigPars")
+}
+
+local lpars = LLgen {
+	simple {
+		outputs = {"%U%/tokenfile.g"},
+		command = {
+			"%in[1]% < %in[2]% > %out[1]%"
+		},
+		file (d.."make.tokfile"),
+		file (d.."tokenname.c")
+	},
+	file (d.."program.g"),
+	file (d.."declar.g"),
+	file (d.."expression.g"),
+	file (d.."statement.g"),
+	file (d.."ival.g"),
+}
+
+local allocd_header = simple {
+	class = "allocd_header",
+	command = {
+		"%in[1]% < %in[2]% > %out[1]%"
+	},
+	
+	file (d.."make.allocd")
+}
+	
+local cfile_with_headers = cfile {
+	class = "cfile_with_headers",
+	dynamicheaders = {
+		file (d),
+		extract_parameters,
+		allocd_header { outputs = {"%U%/code.h"},          (d.."code.str") },
+		allocd_header { outputs = {"%U%/declar.h"},        (d.."declar.str") },
+		allocd_header { outputs = {"%U%/def.h"},           (d.."def.str") },
+		allocd_header { outputs = {"%U%/expr.h"},          (d.."expr.str") },
+		allocd_header { outputs = {"%U%/field.h"},         (d.."field.str") },
+		allocd_header { outputs = {"%U%/estack.h"},        (d.."estack.str") },
+		allocd_header { outputs = {"%U%/util.h"},          (d.."util.str") },
+		allocd_header { outputs = {"%U%/decspecs.h"},      (d.."decspecs.str") },
+		allocd_header { outputs = {"%U%/idf.h"},           (d.."idf.str") },
+		allocd_header { outputs = {"%U%/macro.h"},         (d.."macro.str") },
+		allocd_header { outputs = {"%U%/stack.h"},         (d.."stack.str") },
+		allocd_header { outputs = {"%U%/stmt.h"},          (d.."stmt.str") },
+		allocd_header { outputs = {"%U%/struct.h"},        (d.."struct.str") },
+		allocd_header { outputs = {"%U%/switch.h"},        (d.."switch.str") },
+		allocd_header { outputs = {"%U%/type.h"},          (d.."type.str") },
+		allocd_header { outputs = {"%U%/l_brace.h"},       (d.."l_brace.str") },
+		allocd_header { outputs = {"%U%/l_state.h"},       (d.."l_state.str") },
+		allocd_header { outputs = {"%U%/l_outdef.h"},      (d.."l_outdef.str") },
+		lpars
+	}
+}
+	
+lang_cem_cemcom = cprogram {
+	cfile_with_headers (d.."LLlex.c"),
+	cfile_with_headers (d.."LLmessage.c"),
+	cfile_with_headers (d.."arith.c"),
+	cfile_with_headers (d.."asm.c"),
+	cfile_with_headers (d.."blocks.c"),
+	cfile_with_headers (d.."ch7.c"),
+	cfile_with_headers (d.."ch7bin.c"),
+	cfile_with_headers (d.."ch7mon.c"),
+	cfile_with_headers (d.."code.c"),
+	cfile_with_headers (d.."conversion.c"),
+	cfile_with_headers (d.."cstoper.c"),
+	cfile_with_headers (d.."dataflow.c"),
+	cfile_with_headers (d.."declarator.c"),
+	cfile_with_headers (d.."decspecs.c"),
+	cfile_with_headers (d.."domacro.c"),
+	cfile_with_headers (d.."dumpidf.c"),
+	cfile_with_headers (d.."error.c"),
+	cfile_with_headers (d.."eval.c"),
+	cfile_with_headers (d.."expr.c"),
+	cfile_with_headers (d.."field.c"),
+	cfile_with_headers (d.."idf.c"),
+	cfile_with_headers (d.."init.c"),
+	cfile_with_headers (d.."input.c"),
+	cfile_with_headers (d.."l_comment.c"),
+	cfile_with_headers (d.."l_ev_ord.c"),
+	cfile_with_headers (d.."l_lint.c"),
+	cfile_with_headers (d.."l_misc.c"),
+	cfile_with_headers (d.."l_outdef.c"),
+	cfile_with_headers (d.."l_states.c"),
+	cfile_with_headers (d.."label.c"),
+	cfile_with_headers (d.."main.c"),
+	cfile_with_headers (d.."options.c"),
+	cfile_with_headers (d.."replace.c"),
+	cfile_with_headers (d.."scan.c"),
+	cfile_with_headers (d.."skip.c"),
+	cfile_with_headers (d.."stack.c"),
+	cfile_with_headers (d.."struct.c"),
+	cfile_with_headers (d.."switch.c"),
+	cfile_with_headers (d.."tokenname.c"),
+	cfile_with_headers (d.."type.c"),
+	cfile_with_headers (d.."util.c"),
+	cfile_with_headers (d.."stab.c"),
+
+	foreach {
+		rule = cfile_with_headers,
+		ith { lpars, from=2 }
+	},
+
+	cfile_with_headers {
+		simple {
+			outputs = {"%U%-symbol2str.c"},
+			command = {
+				"%in[1]% < %in[2]% > %out[1]%"
+			},
+			
+			file (d.."make.tokcase"),
+			file (d.."tokenname.c")
+		}
+	},
+	
+	cfile_with_headers {
+		CEXTRAFLAGS = "-I"..d,
+		tabgen (d.."char.tab")
+	},
+
+	cfile_with_headers {
+		simple {
+			outputs = {"%U%-next.c"},
+			command = {
+				"%in% > %out%"
+			},
+			
+			file (d.."make.next"),
+			
+			file (d.."code.str"),
+			file (d.."declar.str"),
+			file (d.."decspecs.str"),
+			file (d.."def.str"),
+			file (d.."expr.str"),
+			file (d.."field.str"),
+			file (d.."estack.str"),
+			file (d.."util.str"),
+			file (d.."idf.str"),
+			file (d.."macro.str"),
+			file (d.."stack.str"),
+			file (d.."stmt.str"),
+			file (d.."struct.str"),
+			file (d.."switch.str"),
+			file (d.."type.str"),
+			file (d.."l_brace.str"),
+			file (d.."l_state.str"),
+			file (d.."l_outdef.str"),
+		}
+	},
+
+	lib_em_mes,
+	lib_emk,
+	lib_em_data,
+	lib_input,
+	lib_assert,
+	lib_alloc,
+	lib_flt_arith,
+	lib_print,
+	lib_system,
+	lib_string,
+	
+	outputs = {"%U%/em_cemcom"},
+	install = {
+		pm.install(                    BINDIR..PLATDEP.."/em_cemcom"),
+		pm.install(d.."cemcom.1",      BINDIR.."/man/man1/cemcom.1"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/6500/dl/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = "mach/6500/dl/"
+
+tool_6500_dl = cprogram {
+	cfile (d.."dl.c"),
+	
+	lib_object,
+	
+	outputs = {"%U%/dl"},
+	install = pm.install(BINDIR..PLATDEP.."/6500/dl")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 103 - 0
mach/6500/libem/pmfile

@@ -0,0 +1,103 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/6500/libem/"
+
+proto_libem = aal {
+	outputs = {"%U%/libem-%ARCH%.a"},
+	install = pm.install("%BINDIR%lib/%ARCH%/tail_em"),
+
+	as (d.."adi4.s"),
+	as (d.."cmi.s"),
+	as (d.."cmi4.s"),
+	as (d.."sbi4.s"),
+	as (d.."addsub.s"),
+	as (d.."cmu4.s"),
+	as (d.."dum_float.s"),
+	as (d.."dvi4.s"),
+	as (d.."dvu4.s"),
+	as (d.."lar.s"),
+	as (d.."lol.s"),
+	as (d.."los.s"),
+	as (d.."loil.s"),
+	as (d.."loi1.s"),
+	as (d.."loi.s"),
+	as (d.."mli4.s"),
+	as (d.."mlu.s"),
+	as (d.."mlu4.s"),
+	as (d.."mul4.s"),
+	as (d.."rmi.s"),
+	as (d.."rmi4.s"),
+	as (d.."div4.s"),
+	as (d.."rmu.s"),
+	as (d.."dvi.s"),
+	as (d.."rmu4.s"),
+	as (d.."duv4.s"),
+	as (d.."ngi4.s"),
+	as (d.."rtt.s"),
+	as (d.."ret.s"),
+	as (d.."sar.s"),
+	as (d.."aar.s"),
+	as (d.."adi.s"),
+	as (d.."sbi.s"),
+	as (d.."mli.s"),
+	as (d.."ngi.s"),
+	as (d.."set.s"),
+	as (d.."zer.s"),
+	as (d.."stl.s"),
+	as (d.."sts.s"),
+	as (d.."sdl.s"),
+	as (d.."sti.s"),
+	as (d.."stil.s"),
+	as (d.."blm.s"),
+	as (d.."sti1.s"),
+	as (d.."test2.s"),
+	as (d.."testFFh.s"),
+	as (d.."trap.s"),
+	as (d.."ldi.s"),
+	as (d.."data.s"),
+	as (d.."zri.s"),
+	as (d.."locaddr.s"),
+	as (d.."and.s"),
+	as (d.."asp.s"),
+	as (d.."cii.s"),
+	as (d.."cms.s"),
+	as (d.."cmu.s"),
+	as (d.."com.s"),
+	as (d.."csa.s"),
+	as (d.."csb.s"),
+	as (d.."dup.s"),
+	as (d.."dvu.s"),
+	as (d.."exg.s"),
+	as (d.."exg2.s"),
+	as (d.."gto.s"),
+	as (d.."indir.s"),
+	as (d.."inn.s"),
+	as (d.."ior.s"),
+	as (d.."lcs.s"),
+	as (d.."lxa1.s"),
+	as (d.."lxa2.s"),
+	as (d.."lxl.s"),
+	as (d.."pro.s"),
+	as (d.."rol.s"),
+	as (d.."rol4.s"),
+	as (d.."ror.s"),
+	as (d.."ror4.s"),
+	as (d.."sli.s"),
+	as (d.."sli4.s"),
+	as (d.."sri.s"),
+	as (d.."sri4.s"),
+	as (d.."teq.s"),
+	as (d.."tge.s"),
+	as (d.."tgt.s"),
+	as (d.."tle.s"),
+	as (d.."tlt.s"),
+	as (d.."tne.s"),
+	as (d.."xor.s"),
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 23 - 0
mach/6500/pmfile

@@ -0,0 +1,23 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/6500/"
+
+include (d.."dl/pmfile")
+--include (d.."libem/pmfile")
+
+mach_6500 = group {
+	ARCH = "6500",
+	
+	proto_cg,
+	proto_as,
+	tool_6500_dl,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 16 - 0
mach/6800/pmfile

@@ -0,0 +1,16 @@
+-- $Source$
+-- $State$
+
+mach_6800 = group {
+	ARCH = "6800",
+	
+	proto_as,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 16 - 0
mach/6805/pmfile

@@ -0,0 +1,16 @@
+-- $Source$
+-- $State$
+
+mach_6805 = group {
+	ARCH = "6805",
+	
+	proto_as,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 16 - 0
mach/6809/pmfile

@@ -0,0 +1,16 @@
+-- $Source$
+-- $State$
+
+mach_6809 = group {
+	ARCH = "6809",
+	
+	proto_as,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/arm/cv/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/arm/cv/"
+
+tool_arm_cv = cprogram {
+	cfile (d.."cv.c"),
+	
+	lib_object,
+	
+	outputs = {"%U%/cv"},
+	install = pm.install(BINDIR.."%PLATDEP%/arm/dl")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 22 - 0
mach/arm/pmfile

@@ -0,0 +1,22 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/arm/"
+
+include (d.."cv/pmfile")
+
+mach_arm = group {
+	ARCH = "arm",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "arm" },
+	tool_arm_cv,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/i386/cv/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/i386/cv/"
+
+tool_i386_cv = cprogram {
+	cfile (d.."cv.c"),
+	
+	lib_object,
+	
+	outputs = {"%U%/cv"},
+	install = pm.install(BINDIR.."%PLATDEP%/i386/dl")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 22 - 0
mach/i386/pmfile

@@ -0,0 +1,22 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/i386/"
+
+include (d.."cv/pmfile")
+
+mach_i386 = group {
+	ARCH = "i386",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "i386" },
+	tool_i386_cv,
+	
+	install = pm.install("%ROOTDIR%lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/i80/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/i80/"
+
+mach_i80 = group {
+	ARCH = "i80",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "i80" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/i86/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/i86/"
+
+mach_i86 = group {
+	ARCH = "i86",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "i86" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/m68020/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/m68020/"
+
+mach_m68020 = group {
+	ARCH = "m68020",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "m68020" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 20 - 0
mach/m68k2/pmfile

@@ -0,0 +1,20 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/m68k2/"
+
+mach_m68k2 = group {
+	ARCH = "m68k2",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "m68020" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/m68k4/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/m68k4/"
+
+mach_m68k4 = group {
+	ARCH = "m68k4",
+	
+	proto_ncg { ARCHDIR = "m68020" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/ns/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/ns/"
+
+mach_ns = group {
+	ARCH = "ns",
+	
+	proto_as,
+	proto_ncg { ARCHDIR = "ns" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 20 - 0
mach/pdp/pmfile

@@ -0,0 +1,20 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/pdp/"
+
+mach_pdp = group {
+	ARCH = "pdp",
+	
+	proto_as,
+	proto_cg,
+	proto_ncg { ARCHDIR = "pdp" },
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 51 - 0
mach/proto/as/pmfile

@@ -0,0 +1,51 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/proto/as/"
+
+local parser = yacc {
+	simple {
+		outputs = {"%U%-%I%.y"},
+		command = {
+			"cd %out[1]:dirname% && "..
+			  "%in[2]% -P -I%ROOTDIR%mach/%ARCH%/as -I"..d.." %CINCLUDES% %in[1]% > %out[1]%"
+		},
+		
+		file (d.."comm2.y"),
+		tool_cpp
+	}
+}
+
+local cfile_with_tables = cfile {
+	class = "cfile_with_tables",
+	dynamicheaders = {
+		parser,
+		file (ROOTDIR.."mach/%ARCH%/as/")
+	}
+}
+
+proto_as = cprogram {
+	class = "proto_as",
+	
+	cfile_with_tables (d.."comm3.c"),
+	cfile_with_tables (d.."comm4.c"),
+	cfile_with_tables (d.."comm5.c"),
+	cfile_with_tables (d.."comm6.c"),
+	cfile_with_tables (d.."comm7.c"),
+	cfile_with_tables (d.."comm8.c"),
+	
+	cfile {
+		parser,
+	},
+	
+	lib_object,
+	
+	outputs = {"%U%/%ARCH%-as"},
+	install = pm.install(BINDIR.."%PLATDEP%/%ARCH%/as")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 97 - 0
mach/proto/cg/pmfile

@@ -0,0 +1,97 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/proto/cg/"
+
+local make_tables = cgg {
+	CGGINCLUDEDIR = (ROOTDIR.."mach/%ARCH%/cg/"),
+	file (ROOTDIR.."mach/%ARCH%/cg/table")
+}
+
+local cfile_with_tables = cfile {
+	class = "cfile_with_tables",
+	dynamicheaders = {
+		make_tables,
+		file (ROOTDIR.."mach/%ARCH%/cg/"),
+		file (ROOTDIR.."mach/")
+	}
+}
+
+proto_cg = cprogram {
+	class = "proto_cg",
+	
+	cfile_with_tables (d.."codegen.c"),
+	cfile_with_tables (d.."compute.c"),
+	cfile_with_tables (d.."equiv.c"),
+	cfile_with_tables (d.."gencode.c"),
+	cfile_with_tables (d.."glosym.c"),
+	cfile_with_tables (d.."move.c"),
+	cfile_with_tables (d.."nextem.c"),
+	cfile_with_tables (d.."reg.c"),
+	cfile_with_tables (d.."regvar.c"),
+	cfile_with_tables (d.."salloc.c"),
+	cfile_with_tables (d.."state.c"),
+	cfile_with_tables (d.."subr.c"),
+	cfile_with_tables (d.."var.c"),
+	cfile_with_tables (d.."fillem.c"),
+	cfile_with_tables (d.."main.c"),
+	
+	cfile {
+		ith { make_tables, i = 1 },
+		dynamicheaders = {
+			file (ROOTDIR.."mach/%ARCH%/cg/"),
+			file (d)
+		}
+	},
+	
+	lib_em_data,
+	lib_flt_arith,
+	
+	outputs = {"%U%/%ARCH%-cg"},
+	install = pm.install("%BINDIR%%PLATDEP%/%ARCH%/cg")
+}
+
+--[[
+# genmakefile
+# This genmakefile doesn't have a real comment yet.
+#
+# $Source$
+# $State$
+
+codegenerator() {
+	push
+		addinclude $SRCDIR/src/arch/$1/cg
+		addinclude $OBJDIR/src/arch/$1/cg
+		addincludeq src/arch/proto/cg
+
+		hostcdyn src/arch/$1/cg/tables.c
+		
+		hostprogram $DESTDIR/lib/$1/cg $OBJS \
+			$DESTDIR/lib/libem_data.a \
+			$DESTDIR/lib/libflt_arith.a
+
+cat <<EOF
+$OBJDIR/src/arch/$1/cg/tables.c: \
+		$SRCDIR/src/arch/$1/cg/table \
+		$DESTDIR/bin/cpp \
+		$DESTDIR/bin/cgg
+	@echo HOSTCGG $SRCDIR/src/arch/$1/cg/table
+	@mkdir -p \$(dir \$@)
+	@(cd $OBJDIR/src/arch/$1/cg && $DESTDIR/bin/cpp -P -I$SRCDIR/src/arch/$1/cg $SRCDIR/src/arch/$1/cg/table | \
+		$DESTDIR/bin/cgg) > /dev/null
+EOF
+	pop
+}
+
+# Revision history
+# $Log$
+# Revision 1.1  2006-07-20 23:18:19  dtrg
+# First version in CVS.
+#
+--]]
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 61 - 0
mach/proto/ncg/pmfile

@@ -0,0 +1,61 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/proto/ncg/"
+
+local make_tables = ncgg {
+	NCGGINCLUDEDIR = (ROOTDIR.."mach/%ARCHDIR%/ncg/"),
+	file (ROOTDIR.."mach/%ARCHDIR%/ncg/table")
+}
+
+local cfile_with_tables = cfile {
+	class = "cfile_with_tables",
+	dynamicheaders = {
+		make_tables,
+		file (ROOTDIR.."mach/%ARCH%/ncg/"),
+		file (ROOTDIR.."mach/%ARCHDIR%/ncg/"),
+		file (ROOTDIR.."mach/")
+	}
+}
+
+proto_ncg = cprogram {
+	class = "proto_ncg",
+	
+	cfile_with_tables (d.."codegen.c"),
+	cfile_with_tables (d.."compute.c"),
+	cfile_with_tables (d.."equiv.c"),
+	cfile_with_tables (d.."fillem.c"),
+	cfile_with_tables (d.."gencode.c"),
+	cfile_with_tables (d.."glosym.c"),
+	cfile_with_tables (d.."label.c"),
+	cfile_with_tables (d.."main.c"),
+	cfile_with_tables (d.."move.c"),
+	cfile_with_tables (d.."nextem.c"),
+	cfile_with_tables (d.."reg.c"),
+	cfile_with_tables (d.."regvar.c"),
+	cfile_with_tables (d.."salloc.c"),
+	cfile_with_tables (d.."state.c"),
+	cfile_with_tables (d.."subr.c"),
+	cfile_with_tables (d.."var.c"),
+	
+	cfile {
+		ith { make_tables, i = 1 },
+		dynamicheaders = {
+			file (ROOTDIR.."mach/%ARCH%/ncg/"),
+			file (ROOTDIR.."mach/%ARCHDIR%/ncg/"),
+			file (d)
+		}
+	},
+	
+	lib_em_data,
+	lib_flt_arith,
+	
+	outputs = {"%U%/%ARCH%-ncg"},
+	install = pm.install("%BINDIR%%PLATDEP%/%ARCH%/ncg")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 14 - 0
mach/proto/pmfile

@@ -0,0 +1,14 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/proto/"
+
+include (d.."as/pmfile")
+include (d.."cg/pmfile")
+include (d.."ncg/pmfile")
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 16 - 0
mach/s2650/pmfile

@@ -0,0 +1,16 @@
+-- $Source$
+-- $State$
+
+mach_s2650 = group {
+	ARCH = "s2650",
+	
+	proto_as,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/vax4/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/vax4/"
+
+mach_vax4 = group {
+	ARCH = "vax4",
+	
+	proto_as,
+	proto_cg,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/z80/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/z80/"
+
+mach_z80 = group {
+	ARCH = "z80",
+	
+	proto_as,
+	proto_cg,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 19 - 0
mach/z8000/pmfile

@@ -0,0 +1,19 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."mach/z8000/"
+
+mach_z8000 = group {
+	ARCH = "z8000",
+	
+	proto_as,
+	proto_cg,
+	
+	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 29 - 0
modules/src/alloc/pmfile

@@ -0,0 +1,29 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."modules/src/alloc/"
+lib_alloc = file (LIBDIR.."liballoc.a")
+
+module_alloc = clibrary {
+	cfile (d.."Malloc.c"),
+	cfile (d.."Salloc.c"),
+	cfile (d.."Srealloc.c"),
+	cfile (d.."Realloc.c"),
+	cfile (d.."botch.c"),
+	cfile (d.."clear.c"),
+	cfile (d.."st_alloc.c"),
+	cfile (d.."std_alloc.c"),
+	cfile (d.."No_Mem.c"),
+	
+	outputs = {"%U%/liballoc.a"},
+	install = {
+		pm.install(LIBDIR.."liballoc.a"),
+		pm.install(d.."alloc.h", HEADERDIR.."alloc.h")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 20 - 0
modules/src/assert/pmfile

@@ -0,0 +1,20 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/assert/"
+lib_assert = file (LIBDIR.."libassert.a")
+
+module_assert = clibrary {
+	cfile (d.."BadAssert.c"),
+	
+	outputs = {"%U%/libassert.a"},
+	install = {
+		pm.install(LIBDIR.."libassert.a")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 106 - 0
modules/src/em_code/pmfile

@@ -0,0 +1,106 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/em_code/"
+lib_eme = file (LIBDIR.."libeme.a")
+lib_emk = file (LIBDIR.."libemk.a")
+
+local em_codeMK_h = simple {
+	outputs = {"%U%-%I%.h"},
+	command = {
+		d.."make.em.gen etc/em_table "..d.."em.nogen > %out%",
+		"cat "..d.."em.nogen >> %out%"
+	},
+	install = pm.install(HEADERDIR.."em_codeEK.h"),
+	
+	file (d.."make.em.gen"),
+	file ("etc/em_table")
+}
+
+local em_cfile = cfile {
+	class = "em_cfile",
+	dynamicheaders = em_codeMK_h
+}
+
+local library_core = group {
+	em_cfile (d.."bhcst.c"),
+	em_cfile (d.."bhdlb.c"),
+	em_cfile (d.."bhdnam.c"),
+	em_cfile (d.."bhfcon.c"),
+	em_cfile (d.."bhicon.c"),
+	em_cfile (d.."bhilb.c"),
+	em_cfile (d.."bhpnam.c"),
+	em_cfile (d.."bhucon.c"),
+	em_cfile (d.."crcst.c"),
+	em_cfile (d.."crdlb.c"),
+	em_cfile (d.."crdnam.c"),
+	em_cfile (d.."crxcon.c"),
+	em_cfile (d.."crilb.c"),
+	em_cfile (d.."crpnam.c"),
+	em_cfile (d.."crscon.c"),
+	em_cfile (d.."cst.c"),
+	em_cfile (d.."dfdlb.c"),
+	em_cfile (d.."dfdnam.c"),
+	em_cfile (d.."dfilb.c"),
+	em_cfile (d.."dlb.c"),
+	em_cfile (d.."dnam.c"),
+	em_cfile (d.."end.c"),
+	em_cfile (d.."endarg.c"),
+	em_cfile (d.."exc.c"),
+	em_cfile (d.."fcon.c"),
+	em_cfile (d.."getid.c"),
+	em_cfile (d.."icon.c"),
+	em_cfile (d.."ilb.c"),
+	em_cfile (d.."insert.c"),
+	em_cfile (d.."internerr.c"),
+	em_cfile (d.."msend.c"),
+	em_cfile (d.."op.c"),
+	em_cfile (d.."opcst.c"),
+	em_cfile (d.."opdlb.c"),
+	em_cfile (d.."opdnam.c"),
+	em_cfile (d.."opilb.c"),
+	em_cfile (d.."opnarg.c"),
+	em_cfile (d.."oppnam.c"),
+	em_cfile (d.."pnam.c"),
+	em_cfile (d.."pro.c"),
+	em_cfile (d.."pronarg.c"),
+	em_cfile (d.."msstart.c"),
+	em_cfile (d.."psdlb.c"),
+	em_cfile (d.."psdnam.c"),
+	em_cfile (d.."pspnam.c"),
+	em_cfile (d.."scon.c"),
+	em_cfile (d.."ucon.c"),
+	em_cfile (d.."C_out.c"),
+	em_cfile (d.."failed.c"),
+	em_cfile (d.."em.c")
+}
+
+module_eme = clibrary {
+	CEXTRAFLAGS = "-DREADABLE_EM",
+	library_core,
+	
+	outputs = {"%U%/libeme.a"},
+	install = {
+		pm.install(LIBDIR.."libeme.a")
+	}
+}
+
+module_emk = clibrary {
+	library_core,
+	
+	outputs = {"%U%/libemk.a"},
+	install = {
+		pm.install(LIBDIR.."libemk.a")
+	}
+}
+
+module_em_code = group {
+	module_eme,
+	module_emk,
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 35 - 0
modules/src/em_mes/pmfile

@@ -0,0 +1,35 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/em_mes/"
+lib_em_mes = file (LIBDIR.."libem_mes.a")
+
+local library_core = group {
+	cfile (d.."C_ms_err.c"),
+	cfile (d.."C_ms_opt.c"),
+	cfile (d.."C_ms_emx.c"),
+	cfile (d.."C_ms_reg.c"),
+	cfile (d.."C_ms_src.c"),
+	cfile (d.."C_ms_flt.c"),
+	cfile (d.."C_ms_com.c"),
+	cfile (d.."C_ms_par.c"),
+	cfile (d.."C_ms_ego.c"),
+	cfile (d.."C_ms_gto.c"),
+	cfile (d.."C_ms_stb.c"),
+	cfile (d.."C_ms_std.c"),
+}
+
+module_em_mes = clibrary {
+	library_core,
+	
+	outputs = {"%U%/libem_mes.a"},
+	install = {
+		pm.install(LIBDIR.."libem_mes.a")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 35 - 0
modules/src/flt_arith/pmfile

@@ -0,0 +1,35 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."modules/src/flt_arith/"
+lib_flt_arith = file (LIBDIR.."libflt_arith.a")
+
+module_flt_arith = clibrary {
+	cfile (d.."flt_ar2flt.c"),
+	cfile (d.."flt_div.c"),
+	cfile (d.."flt_flt2ar.c"),
+	cfile (d.."flt_modf.c"),
+	cfile (d.."flt_str2fl.c"),
+	cfile (d.."flt_cmp.c"),
+	cfile (d.."flt_add.c"),
+	cfile (d.."b64_add.c"),
+	cfile (d.."flt_mul.c"),
+	cfile (d.."flt_nrm.c"),
+	cfile (d.."b64_sft.c"),
+	cfile (d.."flt_umin.c"),
+	cfile (d.."flt_chk.c"),
+	cfile (d.."split.c"),
+	cfile (d.."ucmp.c"),
+	
+	outputs = {"%U%/libflt_arith.a"},
+	install = {
+		pm.install(LIBDIR.."libflt_arith.a"),
+		pm.install(d.."flt_arith.h",             HEADERDIR.."flt_arith.h")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 17 - 0
modules/src/idf/pmfile

@@ -0,0 +1,17 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/idf/"
+
+module_idf = group {
+	install = {
+		pm.install(d.."idf_pkg.spec",            HEADERDIR.."idf_pkg.spec"),
+		pm.install(d.."idf_pkg.body",            HEADERDIR.."idf_pkg.body"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 23 - 0
modules/src/input/pmfile

@@ -0,0 +1,23 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/input/"
+lib_input = file (LIBDIR.."libinput.a")
+
+module_input = clibrary {
+	cfile (d.."AtEoIF.c"),
+	cfile (d.."AtEoIT.c"),
+
+	outputs = {"%U%/libinput.a"},
+	install = {
+		pm.install(LIBDIR.."libinput.a"),
+		pm.install(d.."inp_pkg.spec",            HEADERDIR.."inp_pkg.spec"),
+		pm.install(d.."inp_pkg.body",            HEADERDIR.."inp_pkg.body")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 55 - 0
modules/src/object/pmfile

@@ -0,0 +1,55 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/object/"
+lib_object = file (LIBDIR.."libobject.a")
+
+module_object = clibrary {
+	cfile (d.."rd_arhdr.c"),
+	cfile (d.."rd_bytes.c"),
+	cfile (d.."rd_int2.c"),
+	cfile (d.."rd_long.c"),
+	cfile (d.."rd_ranlib.c"),
+	cfile (d.."rd_unsig2.c"),
+	cfile (d.."rd.c"),
+	cfile (d.."wr_arhdr.c"),
+	cfile (d.."wr_bytes.c"),
+	cfile (d.."wr_int2.c"),
+	cfile (d.."wr_long.c"),
+	cfile (d.."wr_putc.c"),
+	cfile (d.."wr_ranlib.c"),
+	cfile (d.."wr.c"),
+
+	outputs = {"%U%/lib_object.a"},
+	install = {
+		pm.install(LIBDIR.."libobject.a")
+	}
+}
+--[[
+
+
+# genmakefile
+# This genmakefile doesn't have a real comment yet.
+#
+# $Source$
+# $State$
+
+push
+	addincludeq src/lib/object
+
+	
+	hostlibrary $LIBDIR/libobject.a $OBJS
+pop
+
+# Revision history
+# $Log$
+# Revision 1.1  2006-07-20 23:18:18  dtrg
+# First version in CVS.
+#
+--]]
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 24 - 0
modules/src/print/pmfile

@@ -0,0 +1,24 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/print/"
+lib_print = file (LIBDIR.."libprint.a")
+
+module_print = clibrary {
+	cfile (d.."doprnt.c"),
+	cfile (d.."fprint.c"),
+	cfile (d.."print.c"),
+	cfile (d.."sprint.c"),
+	cfile (d.."format.c"),
+
+	outputs = {"%U%/libprint.a"},
+	install = {
+		pm.install(LIBDIR.."libprint.a"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 90 - 0
modules/src/read_em/pmfile

@@ -0,0 +1,90 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/read_em/"
+lib_read_emk = file (LIBDIR.."libread_emk.a")
+lib_read_emkV = file (LIBDIR.."libread_emkV.a")
+lib_read_emeV = file (LIBDIR.."libread_emeV.a")
+
+local C_mnem_h = simple {
+	command = {"(cd "..d.." && sh %in%) > %out%"},
+	outputs = {"%U%-%I%.h"},
+	install = pm.install(HEADERDIR.."C_mnem.h"),
+	
+	file (ROOTDIR..d.."m_C_mnem"),
+	file (ROOTDIR.."etc/em_table")
+}
+
+local C_mnem_narg_h = simple {
+	command = {"(cd "..d.." && %in%) > %out%"},
+	outputs = {"%U%-%I%.h"},
+	install = pm.install(HEADERDIR.."C_mnem_narg.h"),
+	
+	file (ROOTDIR..d.."m_C_mnem_na"),
+	file (ROOTDIR.."etc/em_table")
+}
+
+local withdynamic = cfile {
+	dynamicheaders = {C_mnem_h, C_mnem_narg_h}
+}
+
+module_read_emk = clibrary {
+	CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG",
+	cfile (d.."EM_vars.c"),
+	cfile {
+		CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG -DCOMPACT",
+		(d.."read_em.c")
+	},
+	withdynamic (d.."mkcalls.c"),
+	
+	outputs = {"%U%/libread_emk.a"},
+	install = pm.install(LIBDIR.."libread_emk.a")
+}
+
+module_read_emkV = clibrary {
+	CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG",
+	cfile (d.."EM_vars.c"),
+	cfile {
+		CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG -DCOMPACT -DCHECKING",
+		(d.."read_em.c")
+	},
+	withdynamic {
+		CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG -DCHECKING",
+		(d.."mkcalls.c"),
+	},
+	
+	outputs = {"%U%/libread_emkV.a"},
+	install = pm.install(LIBDIR.."libread_emkV.a")
+}
+
+module_read_emeV = clibrary {
+	CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG",
+	cfile (d.."EM_vars.c"),
+	cfile {
+		CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG -DCHECKING",
+		(d.."read_em.c")
+	},
+	withdynamic {
+		CEXTRAFLAGS = "-DPRIVATE=static -DEXPORT= -DNDEBUG -DCHECKING",
+		(d.."mkcalls.c"),
+	},
+	
+	outputs = {"%U%/lib_read_emeV.a"},
+	install = pm.install(LIBDIR.."libread_emeV.a")
+}
+
+module_read_em = group {
+	module_read_emk,
+	module_read_emkV,
+	module_read_emeV,
+	
+	install = {
+		pm.install(d.."em_comp.h",     HEADERDIR.."em_comp.h"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 37 - 0
modules/src/string/pmfile

@@ -0,0 +1,37 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/string/"
+lib_string = file (LIBDIR.."libstring.a")
+
+module_string = clibrary {
+	cfile (d.."bts2str.c"),
+	cfile (d.."btscat.c"),
+	cfile (d.."btscmp.c"),
+	cfile (d.."btscpy.c"),
+	cfile (d.."btszero.c"),
+	cfile (d.."long2str.c"),
+	cfile (d.."str2bts.c"),
+	cfile (d.."str2long.c"),
+	cfile (d.."strcat.c"),
+	cfile (d.."strcmp.c"),
+	cfile (d.."strcpy.c"),
+	cfile (d.."strindex.c"),
+	cfile (d.."strlen.c"),
+	cfile (d.."strncat.c"),
+	cfile (d.."strncmp.c"),
+	cfile (d.."strncpy.c"),
+	cfile (d.."strrindex.c"),
+	cfile (d.."strzero.c"),
+	
+	outputs = {"%U%/lib_string.a"},
+	install = {
+		pm.install(LIBDIR.."libstring.a")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 38 - 0
modules/src/system/pmfile

@@ -0,0 +1,38 @@
+-- $Source$
+-- $State$
+
+local d = "modules/src/system/"
+lib_system = file (LIBDIR.."libsystem.a")
+
+module_system = clibrary {
+	cfile (d.."access.c"),
+	cfile (d.."break.c"),
+	cfile (d.."chmode.c"),
+	cfile (d.."close.c"),
+	cfile (d.."create.c"),
+	cfile (d.."filesize.c"),
+	cfile (d.."modtime.c"),
+	cfile (d.."lock.c"),
+	cfile (d.."open.c"),
+	cfile (d.."read.c"),
+	cfile (d.."remove.c"),
+	cfile (d.."stop.c"),
+	cfile (d.."system.c"),
+	cfile (d.."time.c"),
+	cfile (d.."unlock.c"),
+	cfile (d.."write.c"),
+	cfile (d.."seek.c"),
+	cfile (d.."rename.c"),
+	
+	outputs = {"%U%/libsystem.a"},
+	install = {
+		pm.install(LIBDIR.."libsystem.a"),
+		pm.install(d.."system.h", HEADERDIR.."system.h")
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 54 - 0
util/ack/pmfile

@@ -0,0 +1,54 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/ack/"
+
+local mktable = cprogram {
+	cfile (d.."mktables.c")
+}
+
+local makeheaders = simple {
+	outputs= {"%U%/dmach.c", "%U%/intable.c"},
+	command = {
+		"cd %{return posix.dirname(self.out[1])}% && %{return self['in'][1]}% %BINDIR%lib"
+	},
+	
+	mktable
+}
+
+tool_ack = cprogram {
+	cfile (d.."list.c"),
+	cfile (d.."data.c"),
+	cfile (d.."main.c"),
+	cfile (d.."scan.c"),
+	cfile (d.."svars.c"),
+	cfile (d.."trans.c"),
+	cfile (d.."util.c"),
+	cfile (d.."rmach.c"),
+	cfile (d.."run.c"),
+	cfile (d.."grows.c"),
+	cfile (d.."files.c"),
+
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		ith { makeheaders, i = 1 }
+	},
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		ith { makeheaders, i = 2 }
+	},
+		
+	lib_string,
+	
+	outputs = {"%U%/ack"},
+	install = {
+		pm.install("%BINDIR%bin/ack"),
+		pm.install("%ROOTDIR%/lib/descr/fe", "%BINDIR%%PLATIND%/descr/fe"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 17 - 0
util/amisc/pmfile

@@ -0,0 +1,17 @@
+-- $Source$
+-- $State$
+
+local d = "util/amisc/"
+
+tool_tabgen = cprogram {
+	cfile (d.."tabgen.c"),
+	
+	outputs = {"%U%/tabgen"},
+	install = pm.install(TOOLDIR.."tabgen")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 22 - 0
util/arch/pmfile

@@ -0,0 +1,22 @@
+-- $Source$
+-- $State$
+
+local d = "util/arch/"
+
+tool_aal = cprogram {
+	CEXTRAFLAGS = "-DAAL",
+	cfile (d.."archiver.c"),
+	
+	lib_print,
+	lib_string,
+	lib_system,
+	lib_object,
+	
+	install = pm.install(BINDIR.."bin/aal")
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 56 - 0
util/ceg/as_parser/pmfile

@@ -0,0 +1,56 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/ceg/as_parser/"
+
+local lpars = LLgen {
+	file (d.."pars.g")
+}
+
+local cfile_with_headers = cfile {
+	class = "cfile_with_headers",
+	dynamicheaders = {
+		file (d),
+		lpars
+	}
+}
+	
+tool_ceg_as_parser = cprogram {
+	CEXTRAFLAGS = "-DFLEX",
+	CLIBRARIES = "-lfl",
+	
+	cfile_with_headers (d.."conversion.c"),
+	cfile_with_headers (d.."help.c"),
+	
+	cfile_with_headers {
+		flex {
+			file (d.."table.l")
+		}
+	},
+	
+	foreach {
+		rule = cfile_with_headers,
+		ith { lpars, from=2 }
+	},
+	
+	lib_alloc,
+	lib_print,
+	lib_string,
+	lib_system,
+	
+	outputs = {"%U%/as_parser"},
+	install = pm.install(BINDIR.."%PLATDEP%/ceg/as_parser/as_parser"),
+}
+
+tool_ceg_as_parser_eval = cprogram {
+	cfile (d.."eval/eval.c"),
+	
+	outputs = {"%U%/eval"},
+	install = pm.install(BINDIR.."%PLATDEP%/ceg/as_parser/eval"),
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 20 - 0
util/ceg/assemble/pmfile

@@ -0,0 +1,20 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/ceg/assemble/"
+
+tool_ceg_assemble = group {
+	install = {
+		pm.install(d.."as_assemble/assemble.c",  BINDIR..PLATDEP.."/ceg/assemble/as_assemble/assemble.c"),
+		pm.install(d.."as_assemble/block_as.c",  BINDIR..PLATDEP.."/ceg/assemble/as_assemble/block_as.c"),
+		pm.install(d.."obj_assemble/assemble.c", BINDIR..PLATDEP.."/ceg/assemble/obj_assemble/assemble.c"),
+		pm.install(d.."obj_assemble/block_as.c", BINDIR..PLATDEP.."/ceg/assemble/obj_assemble/block_as.c"),
+		pm.install(d.."obj_assemble/const.h",    BINDIR..PLATDEP.."/ceg/assemble/obj_assemble/const.h"),
+	}
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 89 - 0
util/ceg/ce_back/pmfile

@@ -0,0 +1,89 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/ceg/ce_back/"
+
+local function installmany(srcroot, destroot, list)
+	local o = {}
+	
+	for _, i in ipairs(list) do
+		table.insert(o, pm.install(srcroot..i, destroot..i))
+	end
+	
+	return o
+end
+
+tool_ceg_assemble = group {
+	install = installmany(d, BINDIR.."%PLATDEP%/ceg/ce_back/",
+	{	
+		"as_back/back.h",
+		"as_back/bottom.c",
+		"as_back/bss.c",
+		"as_back/con1.c",
+		"as_back/con2.c",
+		"as_back/con4.c",
+		"as_back/do_close.c",
+		"as_back/do_open.c",
+		"as_back/end_back.c",
+		"as_back/gen1.c",
+		"as_back/gen2.c",
+		"as_back/gen4.c",
+		"as_back/header.h",
+		"as_back/init_back.c",
+		"as_back/reloc1.c",
+		"as_back/reloc2.c",
+		"as_back/reloc4.c",
+		"as_back/rom1.c",
+		"as_back/rom2.c",
+		"as_back/rom4.c",
+		"as_back/set_global.c",
+		"as_back/set_local.c",
+		"as_back/switchseg.c",
+		"as_back/symboldef.c",
+		"as_back/text1.c",
+		"as_back/text2.c",
+		"as_back/text4.c",
+		"as_back/dbsym.c",
+
+		"obj_back/back.h",
+		"obj_back/con2.c",
+		"obj_back/con4.c",
+		"obj_back/data.c",
+		"obj_back/data.h",
+		"obj_back/do_close.c",
+		"obj_back/do_open.c",
+		"obj_back/end_back.c",
+		"obj_back/extnd.c",
+		"obj_back/gen1.c",
+		"obj_back/gen2.c",
+		"obj_back/gen4.c",
+		"obj_back/hash.h",
+		"obj_back/header.h",
+		"obj_back/init_back.c",
+		"obj_back/label.c",
+		"obj_back/memory.c",
+		"obj_back/misc.c",
+		"obj_back/output.c",
+		"obj_back/reloc1.c",
+		"obj_back/reloc2.c",
+		"obj_back/reloc4.c",
+		"obj_back/relocation.c",
+		"obj_back/rom2.c",
+		"obj_back/rom4.c",
+		"obj_back/set_global.c",
+		"obj_back/set_local.c",
+		"obj_back/switchseg.c",
+		"obj_back/symboldef.c",
+		"obj_back/symtable.c",
+		"obj_back/text2.c",
+		"obj_back/text4.c",
+		"obj_back/common.c",
+		"obj_back/dbsym.c",
+	})
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:19  dtrg
+-- First version in CVS.
+--

+ 21 - 0
util/ceg/pmfile

@@ -0,0 +1,21 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/ceg/"
+
+include (d.."as_parser/pmfile")
+include (d.."assemble/pmfile")
+include (d.."ce_back/pmfile")
+
+tool_ceg = group {
+	tool_ceg_as_parser,
+	tool_ceg_as_parser_eval,
+	tool_ceg_assemble,
+	tool_ceg_ce_back,
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:18:18  dtrg
+-- First version in CVS.
+--

+ 48 - 0
util/cgg/pmfile

@@ -0,0 +1,48 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/cgg/"
+
+local yacc_bootgram = yacc {
+			file (d.."bootgram.y")
+		}
+
+tool_cgg = cprogram {
+	cfile (d.."main.c"),
+	
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		yacc_bootgram,
+	},
+	
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		flex {
+			file (d.."bootlex.l")
+		},
+		
+		dynamicheaders = yacc_bootgram
+	},
+	
+	CLIBRARIES = {"-lfl"},
+	lib_em_data,
+	lib_assert,
+	lib_system,
+	
+	install = pm.install(TOOLDIR.."cgg")
+}
+
+cgg = simple {
+	class = "cgg",
+	
+	outputs = {"%U%/tables.c", "%U%/tables.h"},
+	command = {
+		"cd %out[1]:dirname% && (%BINDIR%bin/cpp -P -I%CGGINCLUDEDIR% %in% | %TOOLDIR%cgg)",
+	},
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:21:17  dtrg
+-- First version in CVS.
+--

+ 25 - 0
util/cmisc/pmfile

@@ -0,0 +1,25 @@
+-- $Source$
+-- $State$
+
+local d = "util/cmisc/"
+
+tool_tabgen = cprogram {
+	cfile (d.."tabgen.c"),
+	
+	outputs = {"%U%/tabgen"},
+	install = pm.install(TOOLDIR.."tabgen")
+}
+
+tabgen = simple {
+	class = "tabgen",
+	outputs = {"%U%-char.c"},
+	command = {
+		"%TOOLDIR%tabgen -f%in[1]% > %out[1]%"
+	},
+}
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:21:17  dtrg
+-- First version in CVS.
+--

+ 184 - 0
util/cpp/pmfile

@@ -0,0 +1,184 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/cpp/"
+
+local extract_parameters = simple {
+	outputs = {
+		"%U%/pathlength.h",
+		"%U%/errout.h",
+		"%U%/idfsize.h",
+		"%U%/numsize.h",
+		"%U%/nparams.h",
+		"%U%/ifdepth.h",
+		"%U%/lapbuf.h",
+		"%U%/strsize.h",
+		"%U%/botch_free.h",
+		"%U%/debug.h",
+		"%U%/parbufsize.h",
+		"%U%/textsize.h",
+		"%U%/inputtype.h",
+		"%U%/obufsize.h",
+		"%U%/dobits.h",
+		"%U%/line_prefix.h",
+	},
+	
+	command = {
+		"cd %out[1]:dirname% && %in[1]% %in[2]%"
+	},
+	
+	file (d.."make.hfiles"),
+	file (d.."Parameters")
+}
+
+local lpars = LLgen {
+	simple {
+		outputs = {"%U%/tokenfile.g"},
+		command = {
+			"%in[1]% < %in[2]% > %out[1]%"
+		},
+		file (d.."make.tokfile"),
+		file (d.."tokenname.c")
+	},
+	file (d.."expression.g")
+}
+
+
+local cfile_with_headers = cfile {
+	class = "cfile_with_headers",
+	dynamicheaders = {
+		file (d),
+		extract_parameters,
+		lpars
+	}
+}
+	
+tool_cpp = cprogram {
+	cfile_with_headers (d.."LLlex.c"),
+	cfile_with_headers (d.."LLmessage.c"),
+	cfile_with_headers (d.."ch7bin.c"),
+	cfile_with_headers (d.."ch7mon.c"),
+	cfile_with_headers (d.."domacro.c"),
+	cfile_with_headers (d.."error.c"),
+	cfile_with_headers (d.."idf.c"),
+	cfile_with_headers (d.."init.c"),
+	cfile_with_headers (d.."input.c"),
+	cfile_with_headers (d.."main.c"),
+	cfile_with_headers (d.."options.c"),
+	cfile_with_headers (d.."preprocess.c"), 
+	cfile_with_headers (d.."replace.c"),
+	cfile_with_headers (d.."scan.c"),
+	cfile_with_headers (d.."skip.c"),
+	cfile_with_headers (d.."tokenname.c"),
+	cfile_with_headers (d.."next.c"),
+	cfile_with_headers (d.."expr.c"),
+
+	foreach {
+		rule = cfile_with_headers,
+		ith { lpars, from=2 }
+	},
+
+	cfile_with_headers {
+		simple {
+			outputs = {"%U%-symbol2str.c"},
+			command = {
+				"%in[1]% < %in[2]% > %out[1]%"
+			},
+			
+			file (d.."make.tokcase"),
+			file (d.."tokenname.c")
+		}
+	},
+	
+	cfile_with_headers {
+		CEXTRAFLAGS = "-I"..d,
+		tabgen (d.."char.tab")
+	},
+	
+	lib_assert,
+	lib_print,
+	lib_alloc,
+	lib_system,
+	lib_string,
+	
+	outputs = {"%U%/cpp"},
+	install = pm.install(BINDIR.."bin/cpp")
+}
+
+--[[
+# genmakefile
+# This genmakefile doesn't have a real comment yet.
+#
+# $Source$
+# $State$
+
+# --- cpp -------------------------------------------------------------------
+
+push
+	dir=src/tools/cpp
+	
+	addinclude $SRCDIR/$dir
+	addinclude $OBJDIR/$dir
+
+
+	x="$SRCS"
+	hostcdyn $dir/char.c
+	SRCS="$x"
+	tabgen $SRCDIR/$dir/char.tab $OBJDIR/$dir/char.c
+
+	llgen "" $OBJDIR/$dir \
+			$OBJDIR/$dir/tokenfile.g \
+			$SRCDIR/$dir/expression.g
+	tokenfile $dir
+	tokcase $dir
+
+	hostprogram $DESTDIR/bin/cpp $OBJS \
+		$DESTDIR/lib/libassert.a \
+		$DESTDIR/lib/libprint.a \
+		$DESTDIR/lib/liballoc.a \
+		$DESTDIR/lib/libsystem.a \
+		$DESTDIR/lib/libastring.a
+
+	addcleanable $OBJDIR/$dir/errout.h
+	addcleanable $OBJDIR/$dir/idfsize.h
+	addcleanable $OBJDIR/$dir/ifdepth.h
+	addcleanable $OBJDIR/$dir/lapbuf.h
+	addcleanable $OBJDIR/$dir/nparams.h
+	addcleanable $OBJDIR/$dir/numsize.h
+	addcleanable $OBJDIR/$dir/obufsize.h
+	addcleanable $OBJDIR/$dir/parbufsize.h
+	addcleanable $OBJDIR/$dir/pathlength.h
+	addcleanable $OBJDIR/$dir/strsize.h
+	addcleanable $OBJDIR/$dir/textsize.h
+	addcleanable $OBJDIR/$dir/botch_free.h
+	addcleanable $OBJDIR/$dir/debug.h
+	addcleanable $OBJDIR/$dir/inputtype.h
+	addcleanable $OBJDIR/$dir/dobits.h
+	addcleanable $OBJDIR/$dir/line_prefix.h
+cat <<EOF
+$SRCS: $OBJDIR/$dir/.hfiles
+$SRCDIR/$dir/LLlex.c: $OBJDIR/$dir/Lpars.c
+
+$OBJDIR/$dir/.hfiles: \
+		$SRCDIR/$dir/Parameters \
+		$OBJDIR/$dir/char.c
+	@echo MAKE.HFILES \$<
+	@mkdir -p \$(dir \$@)
+	@(cd \$(dir \$@) && $SRCDIR/$dir/make.hfiles \$<) > /dev/null
+	@touch \$@
+
+EOF
+pop
+
+# Revision history
+# $Log$
+# Revision 1.1  2006-07-20 23:24:28  dtrg
+# First version in CVS.
+#
+--]]
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:24:28  dtrg
+-- First version in CVS.
+--

+ 53 - 0
util/data/pmfile

@@ -0,0 +1,53 @@
+-- $Source$
+-- $State$
+
+local d = "util/data/"
+
+local datafiles = simple {
+	outputs = {
+		"%U%/em_spec.h",
+		"%U%/em_pseu.h",
+		"%U%/em_mnem.h",
+		"%U%/em_flag.c",
+		"%U%/em_pseu.c",
+		"%U%/em_mnem.c"
+	},
+
+	command = {
+		"cd %ROOTDIR%etc && ./new_table %out[1]:dirname% %out[1]:dirname%"
+	},
+	
+	install = {
+		pm.install("%U%/em_spec.h", "%HEADERDIR%em_spec.h"),
+		pm.install("%U%/em_pseu.h", "%HEADERDIR%em_pseu.h"),
+		pm.install("%U%/em_mnem.h", "%HEADERDIR%em_mnem.h")
+	},
+		
+	file "%ROOTDIR%etc/new_table",
+}
+
+local cfile_with_headers = cfile {
+	class = "cfile_with_headers",
+	dynamicheaders = {
+		datafiles,
+	}
+}
+
+module_em_data = clibrary {
+	cfile_with_headers (d.."em_ptyp.c"),
+	foreach {
+		rule = cfile_with_headers,
+		ith { datafiles, from=4 }
+	},
+	
+	outputs = {"%U%/libem_data.a"},
+	install = pm.install("%LIBDIR%libem_data.a")
+}
+
+lib_em_data = file "%LIBDIR%libem_data.a"
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:24:28  dtrg
+-- First version in CVS.
+--

+ 47 - 0
util/misc/pmfile

@@ -0,0 +1,47 @@
+-- $Source$
+-- $State$
+
+local d = ROOTDIR.."util/misc/"
+
+tool_em_decode = cprogram {
+	cfile (d.."convert.c"),
+
+	lib_read_emkV,
+	lib_eme,
+	lib_em_data,
+	lib_alloc,
+	lib_print,
+	lib_string,
+	lib_system,
+	
+	outputs = {"%U%/em_decode"},
+	install = {
+		-- FIXME lib.bin in next line needs removing --- pm bug?
+		pm.install("%BINDIR%lib.bin/em_decode"),
+		pm.install(d.."em_decode.6", "%BINDIR%man/man6/em_decode.6"),
+	}
+}
+	
+tool_em_encode = cprogram {
+	cfile (d.."convert.c"),
+
+	lib_read_emeV,
+	lib_emk,
+	lib_em_data,
+	lib_alloc,
+	lib_print,
+	lib_string,
+	lib_system,
+	
+	outputs = {"%U%/em_encode"},
+	install = {
+		-- FIXME lib.bin in next line needs removing --- pm bug?
+		pm.install("%BINDIR%lib.bin/em_encode"),
+	}
+}
+	
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:24:28  dtrg
+-- First version in CVS.
+--

+ 81 - 0
util/ncgg/pmfile

@@ -0,0 +1,81 @@
+-- $Source$
+-- $State$
+
+local d = "util/ncgg/"
+
+local ncgg_yacc = yacc {
+	file (d.."cgg.y")
+}
+
+tool_ncgg = cprogram {
+	cfile (d.."subr.c"),
+	cfile (d.."main.c"),
+	cfile (d.."coerc.c"),
+	cfile (d.."error.c"),
+	cfile (d.."emlookup.c"),
+	cfile (d.."expr.c"),
+	cfile (d.."instruct.c"),
+	cfile (d.."iocc.c"),
+	cfile (d.."lookup.c"),
+	cfile (d.."output.c"),
+	cfile (d.."set.c"),
+	cfile (d.."strlookup.c"),
+	cfile (d.."var.c"),
+	cfile (d.."hall.c"),
+	
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		
+		ncgg_yacc,
+		dynamicheaders = flex {
+			file (d.."scan.l")
+		}
+	},
+	
+	cfile {
+		CEXTRAFLAGS = "-I"..d,
+		simple {
+			outputs = {"%U%/enterkeyw.c"},
+			
+			command = {
+				"cp %{return posix.dirname(self['in'][3])}%/y.tab.h %{return posix.dirname(self.out[1])}%",
+				"cd %{return posix.dirname(self.out[1])}% && "..ROOTDIR..d.."cvtkeywords "..ROOTDIR..d.."keywords",
+			},
+	
+			file (d.."cvtkeywords"),
+			file (d.."keywords"),
+			ncgg_yacc
+		},
+		
+		dynamicheaders = ncgg_yacc
+	},
+	
+	lib_em_data,
+	
+	outputs = {"%U%-ncgg"},
+	install = pm.install(TOOLDIR.."ncgg")
+}
+
+ncgg = simple {
+	class = "ncgg",
+	
+	outputs = {"%U%/tables.c", "%U%/tables.h"},
+	command = {
+		"cd %out[1]:dirname% && (%BINDIR%bin/cpp -P -I%NCGGINCLUDEDIR% %in% | %TOOLDIR%ncgg)",
+		"mv %out[1]:dirname%/tables.H %out[2]%"
+	},
+}
+
+--[[
+	@echo HOSTNCG $SRCDIR/src/arch/$table/ncg/table
+	@mkdir -p \$(dir \$@)
+	@(cd $OBJDIR/src/arch/$1/ncg && $DESTDIR/bin/cpp -P -I$SRCDIR/src/arch/$1/ncg $SRCDIR/src/arch/$table/ncg/table | \
+		$DESTDIR/bin/ncgg) > /dev/null
+	@(cd $OBJDIR/src/arch/$1/ncg && mv tables.H tables.h)
+--]]
+
+-- Revision history
+-- $Log$
+-- Revision 1.1  2006-07-20 23:24:28  dtrg
+-- First version in CVS.
+--