I = io.h A = zthis.o B = zthat.o C = zboth.o ZZ = zz.o progboth: $I $C $(ZZ) cc -o progboth -DTHIS -DTHAT $C $(ZZ) mv progboth whatever progthis: $I $A $(ZZ) cc -o progthis -DTHIS $A $(ZZ) progthat: $I $B $(ZZ) cc -o progthat -DTHAT $B $(ZZ) $A: $I z.c cc -c -o $A -DTHIS z.c $B: $I z.c cc -c -o $B -DTHAT z.c $C: $I z.c cc -c -o $C -DTHIS -DTHAT z.c $(ZZ): $I zz.c cc -c zz.c