macro language for rule templates:

type: stuff stuff stuff
	command
	command

turns to
target: sources listed stuff stuff stuff
	command
	command

anywhere (including in stuff?), macros are interpreted
	$($@)	target name
	$($/)	target name, devoid of .../
	$($[@/].o)	target name, devoid of .o
	s/($/(n/, n a digit -> nth prerequisite

e.g.
access.o: ../x/access.c ../y/foo.h
	cc -c -I../x $(1@)
