123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- -- $Id$
- -- $Source$
- -- $State$
- include "first/c.pm"
- include "first/yacc.pm"
- include "first/llgen.pm"
- include "config.pm"
- include "first/ack.pm"
- include "first/ack-custom.pm"
- CINCLUDES = {
- ROOTDIR.."h",
- ROOTDIR.."modules/h",
- HEADERDIR,
- }
- -- Load the pmfiles for the various modules.
- include "util/data/pmfile"
- include "util/LLgen/pmfile-ack"
- 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/object/pmfile"
- include "modules/src/idf/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 "lang/cem/cpp.ansi/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/pmfile"
- include "lang/pc/pmfile"
- include "lang/m2/pmfile"
- -- include "lang/occam/pmfile"
- -- include "lang/basic/pmfile"
- include "mach/proto/pmfile"
- --[[
- include "mach/i386/pmfile"
- include "mach/6500/pmfile"
- include "mach/6800/pmfile"
- include "mach/6805/pmfile"
- include "mach/6809/pmfile"
- include "mach/arm/pmfile"
- include "mach/i80/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_cem_runtime, -- K&R C (obsolete and useless)
- lang_cem_ansi_runtime, -- ANSI C
- lang_pc_runtime, -- Pascal
- lang_m2_runtime, -- Modula-2
- -- lang_occam_runtime, -- Occam 1 (obsolete and useless)
- -- lang_basic_runtime, -- Basic
- }
- -- Include the platform descriptions.
- include "mach/i86/pmfile" -- generic i86
- include "plat/pc86/pmfile" -- PC standalone
- include "mach/i386/pmfile" -- generic i386
- include "plat/linux386/pmfile" -- Linux executables
- include "mach/i80/pmfile" -- generic 8080
- include "plat/cpm/pmfile" -- CP/M
- include "mach/6500/pmfile" -- generic 6500
- include "plat/nes/pmfile" -- NES
- default = group {
- -- Lots of things use LLgen, so we need to build it first.
-
- tool_LLgen,
-
- -- 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, -- K&R C
- tool_cpp_ansi, -- ANSI C
- tool_cgg,
- tool_ncgg,
- -- tool_ceg,
- tool_em_decode,
- tool_em_encode,
- tool_esize,
- tool_opt,
- tool_ego,
- tool_topgen,
- tool_led,
- tool_anm,
- tool_ashow,
- tool_asize,
- tool_astrip,
- tool_aslod,
- tool_aelflod,
- -- lang_cem_compiler,
- lang_cem_ansi_compiler,
- lang_pc_compiler,
- lang_m2_compiler,
- -- lang_occam_compiler,
- -- lang_basic_compiler,
- -- Build the code generators and the architecture-independent
- -- libraries.
-
- --[[
- mach_6500, lang_runtimes { ARCH="6500", OPTIMISATION="-O" },
- mach_6800,
- mach_6805,
- mach_6809,
- mach_arm, lang_runtimes { ARCH="arm", OPTIMISATION="-O" },
- mach_m68020, lang_runtimes { ARCH="m68020", OPTIMISATION="-O" },
- -- mach_m68k2, lang_runtimes { ARCH="m68k2", OPTIMISATION="-O" },
- -- mach_m68k4, lang_runtimes { ARCH="m68k4", OPTIMISATION="-O" },
- mach_ns, lang_runtimes { ARCH="ns", OPTIMISATION="-O" },
- -- mach_pdp, lang_runtimes { ARCH="pdp", OPTIMISATION="-O" },
- 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" },
- --]]
- -- Build the platforms.
-
- platform_pc86,
- platform_linux386,
- platform_cpm,
- platform_nes,
- }
- -- Ensure that the work directories exist.
- posix.mkdir(TEMPDIR)
- posix.mkdir(HEADERDIR)
- -- When doing the build, we want to ensure that the ACK looks in the staging
- -- area for its files, and not in the final installation directory (because
- -- we haven't been installed yet).
- posix.putenv("ACKDIR="..BINDIR)
- -- 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_PLATFORM, "\"\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
- }
- -- Once built, do the installation, rather crudely. FIXME.
- install = simple {
- outputs = {"dummy"},
- command = "",
- __dobuild = function(self, inputs, outputs)
- os.execute("mkdir -p "..PREFIX)
- os.execute("(cd "..BINDIR.." && tar chf - .) | (cd "..PREFIX.." && tar xvf -)")
- end
- }
|