Whether to run tasks internally in some merged tool, or run via the shell, or simply trace to the standard output what we think ought to be done.
§1. This is rather grandly named for what it is: it's just a bundle of settings
about how to carry out build steps. Should we (a) make a dry run, just printing
hypothetical shell commands, or (b) issue those shell commands via system,
or (c) take direct action by calling functions within the current executable?
If (a) or (b) then we will need to know the locations of the executable files
for the tools inter, inform6, inform7 and inblorb.
enumerate DRY_RUN_METHODOLOGY 1
enumerate SHELL_METHODOLOGY
enumerate INTERNAL_METHODOLOGY
classdef build_methodology { filename *to_inter; filename *to_inform6; filename *to_inform7; filename *to_inblorb; int methodology; }
- The structure build_methodology is accessed in 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 4/ebm, 4/km, 4/lm, 4/pm, 4/tm, 7/ti and here.
§2. If the tangled flag is set, we expect inform7, for example, to be at
tools_path/inform7/Tangled/inform7; if it is clear, we expect it only to
be tools_path/inform7. This is relevant only for the command-line Inbuild,
which used tangled mode by default, but untangled mode if the user has
specified an explicit path at the command line.
build_methodology *BuildMethodology::new(pathname *tools_path, int tangled, int meth) { build_methodology *BM = CREATE(build_methodology); BM->methodology = meth; pathname *inter_path = tools_path; if (tangled) { inter_path = Pathnames::down(inter_path, I"inter"); inter_path = Pathnames::down(inter_path, I"Tangled"); } BM->to_inter = Filenames::in(inter_path, I"inter"); pathname *inform6_path = tools_path; if (tangled) { inform6_path = Pathnames::down(inform6_path, I"inform6"); inform6_path = Pathnames::down(inform6_path, I"Tangled"); } BM->to_inform6 = Filenames::in(inform6_path, I"inform6"); pathname *inform7_path = tools_path; if (tangled) { inform7_path = Pathnames::down(inform7_path, I"inform7"); inform7_path = Pathnames::down(inform7_path, I"Tangled"); } BM->to_inform7 = Filenames::in(inform7_path, I"inform7"); pathname *inblorb_path = tools_path; if (tangled) { inblorb_path = Pathnames::down(inblorb_path, I"inblorb"); inblorb_path = Pathnames::down(inblorb_path, I"Tangled"); } BM->to_inblorb = Filenames::in(inblorb_path, I"inblorb"); return BM; }
§3. The inform7 tool only ever uses the internal methodology, for which
these filenames are irrelevant, since no shell commands are ever issued.
It gets its BM by calling the following:
build_methodology *BuildMethodology::stay_in_current_process(void) { return BuildMethodology::new(NULL, FALSE, INTERNAL_METHODOLOGY); }