make
# inputs: target, sources, command rebuild = FALSE IF target exists THEN FOR each S in sources DO IF S is newer than target THEN rebuild = TRUE END END END IF target does not exist OR #sources == 0 OR rebuild THEN execute command END