PRJSRC=a.c hello.c OPTLEVEL=s CC=gcc REMOVE=rm -f PROJECTNAME=test TRG=$(PROJECTNAME).out CFLAGS=$(CUSTOM_CFLAGS) -I. $(INC) -O$(OPTLEVEL) CFILES=$(filter %.c, $(PRJSRC)) OBJDEPS=$(CFILES:.c=.o) # Use depedencies -include $(CFILES:.c=.cmd) .SUFFIXES : .c .h all: $(TRG) debug: CUSTOM_CFLAGS:=-DTEST debug: $(TRG) clean: $(REMOVE) $(TRG) $(REMOVE) $(OBJDEPS) $(REMOVE) *.cmd $(REMOVE) *.d $(TRG): $(OBJDEPS) $(CC) $(OBJDEPS) $(LDFLAGS) -o $(TRG) .c.o: cmd_$@ $(CC) $(CFLAGS) -c $< -o $@ $(CC) -MD $(CFLAGS) -c $< basic/fixdep $(<:.c=.d) $@ '$(CC) $(CFLAGS) -c $< -o $@' > $(<:.c=.cmd)