mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
72 lines
2.6 KiB
OpenEdge ABL
72 lines
2.6 KiB
OpenEdge ABL
[BuildMethodology::] Build Methodology.
|
|
|
|
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.
|
|
|
|
@ 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|.
|
|
|
|
@e DRY_RUN_METHODOLOGY from 1
|
|
@e SHELL_METHODOLOGY
|
|
@e INTERNAL_METHODOLOGY
|
|
|
|
=
|
|
typedef struct build_methodology {
|
|
filename *to_inter;
|
|
filename *to_inform6;
|
|
filename *to_inform7;
|
|
filename *to_inblorb;
|
|
int methodology;
|
|
CLASS_DEFINITION
|
|
} build_methodology;
|
|
|
|
@ 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;
|
|
}
|
|
|
|
@ 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);
|
|
}
|