216 lines
		
	
	
		
			No EOL
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			No EOL
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| -- $Source$
 | |
| -- $State$
 | |
| 
 | |
| include "first/c.pm"
 | |
| include "first/yacc.pm"
 | |
| include "first/llgen.pm"
 | |
| include "config.pm"
 | |
| include "first/ack.pm"
 | |
| 
 | |
| CINCLUDES = {
 | |
| 	"-I"..ROOTDIR.."h",
 | |
| 	"-I"..ROOTDIR.."modules/h",
 | |
| 	"-I"..HEADERDIR,
 | |
| }
 | |
| 
 | |
| -- Load the pmfiles for the various modules.
 | |
| 
 | |
| include "util/data/pmfile"
 | |
| 
 | |
| include "modules/src/alloc/pmfile"
 | |
| include "modules/src/assert/pmfile"
 | |
| include "modules/src/system/pmfile"
 | |
| include "modules/src/string/pmfile"
 | |
| include "modules/src/read_em/pmfile"
 | |
| include "modules/src/em_code/pmfile"
 | |
| include "modules/src/em_mes/pmfile"
 | |
| include "modules/src/print/pmfile"
 | |
| include "modules/src/string/pmfile"
 | |
| include "modules/src/object/pmfile"
 | |
| include "modules/src/idf/pmfile"
 | |
| include "modules/src/print/pmfile"
 | |
| include "modules/src/input/pmfile"
 | |
| include "modules/src/flt_arith/pmfile"
 | |
| 
 | |
| include "util/amisc/pmfile"
 | |
| include "util/cmisc/pmfile"
 | |
| include "util/ack/pmfile"
 | |
| include "util/arch/pmfile"
 | |
| include "util/cpp/pmfile"
 | |
| include "util/cgg/pmfile"
 | |
| include "util/ncgg/pmfile"
 | |
| include "util/ceg/pmfile"
 | |
| include "util/misc/pmfile"
 | |
| include "util/opt/pmfile"
 | |
| include "util/ego/pmfile"
 | |
| include "util/topgen/pmfile"
 | |
| include "util/led/pmfile"
 | |
| 
 | |
| include "lang/cem/cemcom/pmfile"
 | |
| include "lang/cem/cemcom.ansi/pmfile"
 | |
| include "lang/pc/pmfile"
 | |
| include "lang/m2/pmfile"
 | |
| include "lang/occam/pmfile"
 | |
| include "lang/basic/pmfile"
 | |
| 
 | |
| include "mach/proto/pmfile"
 | |
| include "mach/6500/pmfile"
 | |
| include "mach/6800/pmfile"
 | |
| include "mach/6805/pmfile"
 | |
| include "mach/6809/pmfile"
 | |
| include "mach/arm/pmfile"
 | |
| include "mach/i386/pmfile"
 | |
| include "mach/i80/pmfile"
 | |
| include "mach/i86/pmfile"
 | |
| include "mach/m68020/pmfile"
 | |
| include "mach/m68k2/pmfile"
 | |
| include "mach/m68k4/pmfile"
 | |
| include "mach/ns/pmfile"
 | |
| include "mach/pdp/pmfile"
 | |
| include "mach/s2650/pmfile"
 | |
| include "mach/vax4/pmfile"
 | |
| include "mach/z80/pmfile"
 | |
| include "mach/z8000/pmfile"
 | |
| 
 | |
| -- This is the list of language runtimes that is built for each architecture.
 | |
| 
 | |
| lang_runtimes = group {
 | |
| 	lang_pc_runtime,
 | |
| 	lang_m2_runtime,
 | |
| 	lang_occam_runtime,
 | |
| 	lang_basic_runtime,
 | |
| }
 | |
| 
 | |
| default = group {
 | |
| 	-- Some of the dependency management across modules isn't entirely
 | |
| 	-- complete, for simplicity; as a result, the order here is important.
 | |
| 	-- In particular, referencing a library does not cause the library to
 | |
| 	-- be built, hence the reason why the modules must be built first. Also,
 | |
| 	-- some of these generate header files...
 | |
| 	
 | |
| 	module_em_data,
 | |
| 	module_system,
 | |
| 	module_alloc,
 | |
| 	module_assert,
 | |
| 	module_string,
 | |
| 	module_em_code,
 | |
| 	module_read_em,	
 | |
| 	module_em_mes,
 | |
| 	module_print,
 | |
| 	module_object,
 | |
| 	module_idf,
 | |
| 	module_print,
 | |
| 	module_input,
 | |
| 	module_flt_arith,
 | |
| 
 | |
| 	tool_tabgen,
 | |
| 	tool_aal,
 | |
| 	tool_ack,
 | |
| 	tool_cpp,
 | |
| 	tool_cgg,
 | |
| 	tool_ncgg,
 | |
| --	tool_ceg,
 | |
| 	tool_em_decode,
 | |
| 	tool_em_encode,
 | |
| 	tool_esize,
 | |
| 	tool_opt,
 | |
| 	tool_ego,
 | |
| 	tool_topgen,
 | |
| 	tool_led,
 | |
| 
 | |
| 	lang_cem_cemcom,
 | |
| 	lang_cem_cemcom_ansi,
 | |
| 	lang_pc_compiler,
 | |
| 	lang_m2_compiler,
 | |
| 	lang_occam_compiler,
 | |
| 	lang_basic_compiler,
 | |
| 
 | |
| 	mach_6500,     lang_runtimes { ARCH="6500", OPTIMISATION="-O" },
 | |
| 	mach_6800,
 | |
| 	mach_6805,
 | |
| 	mach_6809,
 | |
| 	mach_arm,      lang_runtimes { ARCH="arm", OPTIMISATION="-O" },
 | |
| 	mach_i386,     lang_runtimes { ARCH="i386", OPTIMISATION="-O3" },
 | |
| 	mach_i80,      lang_runtimes { ARCH="i80", OPTIMISATION="-O" },
 | |
| 	mach_i86,      lang_runtimes { ARCH="i86", OPTIMISATION="-O6" },
 | |
| 	mach_m68020,   lang_runtimes { ARCH="m68020", OPTIMISATION="-O6" },
 | |
| --	mach_m68k2,    lang_runtimes { ARCH="m68k2", OPTIMISATION="-O" },
 | |
| --	mach_m68k4,    lang_runtimes { ARCH="m68k4", OPTIMISATION="-O6" },
 | |
| 	mach_ns,       lang_runtimes { ARCH="ns", OPTIMISATION="-O" },
 | |
| --	mach_pdp,      lang_runtimes { ARCH="pdp", OPTIMISATION="-O6" },
 | |
| 	mach_s2650,
 | |
| --	mach_vax4,     lang_runtimes { ARCH="vax4", OPTIMISATION="-O" },
 | |
| 	mach_z80,      lang_runtimes { ARCH="z80", OPTIMISATION="-O" },
 | |
| 	mach_z8000,    lang_runtimes { ARCH="z8000", OPTIMISATION="-O" },
 | |
| }
 | |
| 
 | |
| -- Ensure that the work directories exist.
 | |
| 
 | |
| posix.mkdir(TEMPDIR)
 | |
| posix.mkdir(HEADERDIR)
 | |
| 
 | |
| -- Build the configuration headers, rather crudely. FIXME.
 | |
| 
 | |
| configure = simple {
 | |
| 	outputs = {HEADERDIR.."local.h", HEADERDIR.."em_path.h"},
 | |
| 	command = "",
 | |
| 	__dobuild = function(self, inputs, outputs)
 | |
| 		-- Build 'local.h', rather crudely
 | |
| 		
 | |
| 		local f = io.open(HEADERDIR.."local.h", "w")
 | |
| 		f:write("#define VERSION 3\n") -- EM byte-code version
 | |
| 		f:write("#define ACKM \"", DEFAULT_ARCHITECTURE, "\"\n")
 | |
| 		f:write("#define BIGMACHINE 1\n") -- No, we don't have a 16-bit architecture
 | |
| 		f:write("#define SYS_5\n")
 | |
| 		f:close()
 | |
| 		
 | |
| 		-- Build 'em_path.h', rather crudely
 | |
| 		
 | |
| 		local f = io.open(HEADERDIR.."em_path.h", "w")
 | |
| 		f:write("#define TMP_DIR \"", ACK_TEMP_DIR, "\"\n")
 | |
| 		f:write("#define EM_DIR \"", PREFIX, "\"\n")
 | |
| 		f:write("#define ACK_PATH \"", PLATIND, "/descr\"\n")
 | |
| 		f:close()
 | |
| 	end
 | |
| }
 | |
| 
 | |
| -- Revision history
 | |
| -- $Log$
 | |
| -- Revision 1.14  2006-07-27 22:14:55  dtrg
 | |
| -- Added support for the Modula-2 language runtime.
 | |
| --
 | |
| -- Revision 1.13  2006/07/27 22:07:38  dtrg
 | |
| -- Added support for the Pascal language runtime.
 | |
| --
 | |
| -- Revision 1.12  2006/07/27 21:58:13  dtrg
 | |
| -- Added support for the Basic and Occam language runtimes.
 | |
| --
 | |
| -- Revision 1.11  2006/07/26 23:08:09  dtrg
 | |
| -- Added support for the Basic compiler.
 | |
| --
 | |
| -- Revision 1.10  2006/07/26 18:23:32  dtrg
 | |
| -- Added support for the Occam compiler.
 | |
| --
 | |
| -- Revision 1.9  2006/07/26 17:12:19  dtrg
 | |
| -- Added support for the Modula-2 compiler.
 | |
| --
 | |
| -- Revision 1.8  2006/07/22 21:24:41  dtrg
 | |
| -- Really added support for the Pascal compiler.
 | |
| --
 | |
| -- Revision 1.7  2006/07/22 21:03:07  dtrg
 | |
| -- Added support for the Pascal compiler.
 | |
| --
 | |
| -- Revision 1.6  2006/07/22 20:10:41  dtrg
 | |
| -- Added support for the esize object inspection tool.
 | |
| --
 | |
| -- Revision 1.5  2006/07/22 20:04:41  dtrg
 | |
| -- Added support for the led link editor.
 | |
| --
 | |
| -- Revision 1.4  2006/07/22 12:31:19  dtrg
 | |
| -- Added support for the top target peephole optimiser.
 | |
| --
 | |
| -- Revision 1.3  2006/07/22 00:52:01  dtrg
 | |
| -- Added support for the ego global optimisation suite.
 | |
| --
 | |
| -- Revision 1.2  2006/07/20 23:24:42  dtrg
 | |
| -- Fixed revision history. |