starget: sc1 sc2 sc3 sc4
  # Prerequisites must exist as either an actual file or a rule or both.
  # If rule but no file, 
  #   rule will always run, even if it doesn't create file.
  # If file in current directory but no rule,
  #   it will be treated as a true test condition for current rule.
  # If no file and no rule
  #   it will be treated as a make error.
  #
  # All prerequisite rules must run successfully to complete.
  #
  # make -k (keep on) will NOT override failure prerequisite rules. 
  # 
	touch starget

sc1:
	# This only runs if sc1 does not exist 
	touch sc1; # creating sc1 

sc2: sc2b sc2a sc2c 
	# This will run if either sc2a or sc2b is newer than sc2.
  #
  # Because no sc2b target, make will stop/fail if sc2b doesn't exist 
  #   before running sc2a
  #   -k (keep on) will force make to continue to evaluate the rest
  #   of prerequisites for this rule.
  #
  # Because sc2c rule exists, it will always run as long as previous 
  #   rules successful, even of no sc2c file exists.
	touch sc2 

sc2a:
	# This will only run if sc2a does not exist.
	touch sc2a

sc2c:
  # This rule does not actually create 
	echo sc2c

alt1:
  # this must be specifically invoked.
	echo alternative rule with no prerequisites.

