targets := $(patsubst %.c,%,$(wildcard *.c)) all: $(targets) % : %.o cc -o $@ $< %.o : %.s as -o $@ $< %.s : %.c cc -S -o $@ $< clean: rm -f *.o *.s $(targets) .SUFFIXES: