Source trees

From dankwiki

Rules for source trees, collected over the years.

Targets

  • Honor the standard targets of the FSF coding standards:
    • all compiles all installable object files, and usually not documentation
    • install publishes object files. uninstall removes them. neither ought write within the tree.
    • dist rolls up a distributable.

Cleanup

Rule: make clean in a pristine source tree ought be idempotent

  • Never remove controlled files as part of a make clean
  • Never build files as part of a make clean
    • svn status --no-ignore ought generate the same output across multiple clean runs

Generated files

Rule: make all in a pristine source tree oughtn't change files in source control

  • Don't keep generated files in source control
    • It ought be possible to write a make clean which operates entirely based off "ignore" properties

Rule: make all oughtn't generate files unknown to source control

  • Use source control systems' "ignore" capabilities
    • svn status oughtn't generate output following a make all