The following are single-suffix rules:
.c: $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
.c~: $(GET) $(GFLAGS) $< $(CC) $(CFLAGS) $(LDFLAGS) -o $* $*.c rm -f $*.c
.s: $(AS) $(AFLAGS) -o $@ $<
.s~: $(GET) $(GFLAGS) $< $(AS) $(AFLAGS) -o $@ $*.s rm -f $*.s
.sh: cp $< $@; chmod 0777 $@
.sh~: $(GET) $(GFLAGS) $< cp $*.sh $*; chmod 0777 $@ rm -f $*.sh
.f: $(F77) $(FFLAGS) $(LDFLAGS) -o $@ $<
.f~: $(GET) $(GFLAGS) $< $(F77) $(FFLAGS) -o $@ $(LDFLAGS) $*.f rm -f $*.f
.C~: $(GET) $(GFLAGS) $< $(C++C) $(C++FLAGS) -o $@ $(LDFLAGS) $*.C rm -f $*.C
.C: $(C++C) $(C++FLAGS) -o $@ $(LDFLAGS) $<