Skip to content

Process Flowchart

ARaspiK edited this page Feb 8, 2019 · 2 revisions

Process Flowchart

  • Begin
    • Parse options
    • Parse command
    • Build
      • Find, parse SMakefile
        • Not found: Print error and fail
      • Recursively add 'virtual dependencies' of targets
        • Ignore declared dependencies
        • Use hash table keyed by target name to prevent infinite recursion in case of cyclic dependencies
        • Warn user about virtual dependencies
        • Look for cyclic dependecies
          • Fail if found
      • Per target:
        • Update (virtual) dependencies
        • Check input files
          • Force update if no inputs
          • Fail on missing
        • Check output files
          • Force update if no outputs
          • Missing outputs forces updates
        • If all outputs are newer than all inputs then skip
        • Execute update
        • Update file modification times
    • Info
      • Find, parse SMakefile
        • Not found: Print error and fail
      • For each target:
        • Collect parsed info
        • Get target status:
          • Check input files for existence and modification times
          • Check output files (for existence and modification times)
          • Missing input files marks the target as 'invalid'
          • Missing output files marks the target as needing update
          • If an output file is older than an input then mark as needing update
          • Otherwise mark as up-to-date
        • Retrieve virtual dependencies
          • Warn if any found
          • Warn on cyclic dependency
        • Store information
      • General
        • Print stored information
          • Marking
          • Name
          • Inputs
          • Outputs
          • Commands
          • Dependencies
      • Dependencies
        • Print dependency info
          • Marking
          • Name
          • Dependency list (one level deep only)
      • Reverse dependencies
        • Build rev-dependency list:
          • For each target:
            • Look for (virtual) dependencies on this target
            • Save targets (by ref)
        • Print out list
          • Marking
          • Name
          • Dependers (one level deep only)
    • Help
      • Find command
      • Print help
        • Name
        • Brief Description
        • Detailed Description
        • Options
        • Examples

Clone this wiki locally