Blame README

668af6
sofort: portable software project template
668af6
------------------------------------------
668af6
e17a99
motivation
e17a99
----------
e17a99
* take care of the elements that are common to all
e17a99
  (of my) cross-platform C projects, and which, for
e17a99
  the most part, do not (or at least should not)
e17a99
  contain any project-specific bits:
e17a99
  --> the build system;
e17a99
  --> the argv parser and usage screen generator;
e17a99
  --> the initial program driver;
e17a99
  --> and initial front-end utility.
e17a99
* zero external dependencies: the new project is
e17a99
  generated from the template project using basic
e17a99
  shell utilities, specifically cp, grep, and sed.
e17a99
668af6
build system
668af6
------------
668af6
* the project is conceived as a library with
668af6
  an accompanying front-end utility.
668af6
* the configure script is fast and skinny,
668af6
  yet comprehensive.
668af6
* unified logic for native and cross builds.
668af6
* unified logic for in-tree and out-of-tree builds.
668af6
668af6
driver
668af6
------
668af6
* the provided argv parser and usage screen generator
668af6
  is powerful, flexible, and thread-safe; moreover,
668af6
  it allows for a program driver that is entirely
668af6
  independent of the chosen skin.
668af6
668af6
skins
668af6
-----
668af6
* one benefit of the above design is that it allows the
668af6
  front-end utility to have several distinct skins at
668af6
  virtually no effort.
668af6
668af6
modularity
668af6
----------
668af6
* the distinct driver and unit context, in combination
668af6
  with the thread-safe argv parser, render the front-end
668af6
  utility's inclusion in a multi-call binary trivial.
668af6
668af6
extras
668af6
------
668af6
* the template provides the skeleton of an application
668af6
  that may accept one or more files for its input, then
668af6
  operate on each input file individually.