230 lines
5.8 KiB
Plaintext
230 lines
5.8 KiB
Plaintext
-- $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
|
|
|
|
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_i386, lang_runtimes { ARCH="i386", OPTIMISATION="-O" },
|
|
mach_i80, lang_runtimes { ARCH="i80", 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
|
|
}
|
|
|
|
-- 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
|
|
}
|