%.dvi:%.tex
  tex $<

%.ps:%.dvi
  dvips $<

%.pnm:%.ps
  pstopnm -stdout $< > $ 
%.png:%.pnm
  pnmtopng $< > $ 

tut das Gefragte. Die erste pattern rule ist übrigens bereits in GNU make eingebaut.

Überlegt euch, was Make sich überlegt, wenn man make onepage.ps oder make onepage.png sagt – und was passiert, wenn die verschiedenen Dateien schon existieren.

Nebenbei: Wenn ihr das probieren wollt, braucht ihr das netpbm-Paket. Ihr werdet merken, dass make die Zwischen-targets löscht – wenn ihr sie behalten wollt, könnt ihr sie durch Aufzählen im Pseudo-Target .PRECIOUS als “wertvoll” deklarieren, make lässt sie dann stehen (was eine gute Idee ist, wenn ihre Erzeugung viel Rechenzeit braucht).