critical_meta() = term()
dag() = digraph:graph()
| compile_order/4 | Return the reverse sorting order to get dep-free apps first. |
| init/4 | You should initialize one DAG per compiler module. |
| maybe_store/5 | Store the DAG on disk if it was dirty. |
| populate_deps/3 | Scan all files in the digraph that are seen as dependencies, but are neither source files nor artifacts (i.e. |
| populate_sources/5 | this function scans all the source files found and looks into
all the InDirs for deps (other source files, or files that aren't source
but still returned by the compiler module) that are related
to them. |
| propagate_stamps/1 | Take the timestamps/diff changes and propagate them from a dep to the parent; given: A 0 -> B 1 -> C 3 -> D 2 then we expect to get back: A 3 -> B 3 -> C 3 -> D 2 This is going to be safe for the current run of regeneration, but also for the next one; unless any file in the chain has changed, the stamp won't move up and there won't be a reason to recompile. |
| prune/5 | Clear up inactive (deleted) source files from a given project. |
| status/4 | Quickly validate whether a DAG exists by validating its file name, version, and CritMeta data, without attempting to actually build it. |
| store_artifact/4 | |
| terminate/1 |
compile_order(G, AppDefs, SrcExt, ArtifactExt) -> any()
Return the reverse sorting order to get dep-free apps first.
init(Dir::file:filename_all(), Compiler::atom(), Label::string() | undefined, CritMeta::critical_meta()) -> dag()
You should initialize one DAG per compiler module.
CritMeta is any contextual information that, if it is found to change,
must invalidate the DAG loaded from disk.
maybe_store(G, Dir, Compiler, Label, CritMeta) -> any()
Store the DAG on disk if it was dirty
populate_deps(G, SourceExt, ArtifactExts) -> any()
Scan all files in the digraph that are seen as dependencies, but are neither source files nor artifacts (i.e. header files that don't produce artifacts of any kind).
populate_sources(G, Compiler, InDirs, Sources, DepOpts) -> any()
this function scans all the source files found and looks into
all the InDirs for deps (other source files, or files that aren't source
but still returned by the compiler module) that are related
to them.
propagate_stamps(G) -> any()
Take the timestamps/diff changes and propagate them from a dep to the parent; given: A 0 -> B 1 -> C 3 -> D 2 then we expect to get back: A 3 -> B 3 -> C 3 -> D 2 This is going to be safe for the current run of regeneration, but also for the next one; unless any file in the chain has changed, the stamp won't move up and there won't be a reason to recompile. The obvious caveat to this one is that a file changing by restoring an old version won't be picked up, but this weakness already existed in terms of timestamps.
prune(G, SrcExt, ArtifactExt, Sources, AppPaths) -> any()
Clear up inactive (deleted) source files from a given project.
The file must be in one of the directories that may contain source files
for an OTP application; source files found in the DAG G that lie outside
of these directories may be used in other circumstances (i.e. options affecting
visibility, extra_src_dirs).
Prune out files that have no corresponding sources
status(Dir::file:filename_all(), Compiler::atom(), Label::string() | undefined, CritMeta::critical_meta()) -> valid | bad_format | bad_vsn | bad_meta | not_found
Quickly validate whether a DAG exists by validating its file name, version, and CritMeta data, without attempting to actually build it.
store_artifact(G, Source, Target, Meta) -> any()
terminate(G) -> any()
Generated by EDoc