CC := gcc SRCDIR := src BUILDDIR := build TESTDIR := testing TARGET := bin/cterm SRCEXT := c SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) CFLAGS := -lreadline LIB := -L lib -lreadline INC := -I include $(TARGET): $(OBJECTS) @echo " Linking..." @echo " $(CC) $^ -o $(TARGET) $(LIB)"; $(CC) $^ -o $(TARGET) $(LIB) -O3 @echo " Done!" $(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) @echo " Building..." @mkdir -p $(BUILDDIR) @echo " $(CC) $(CFLAGS) $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $< -save-temps -O3 clean: @echo " Cleaning..."; @echo " cat /dev/null > $(TESTDIR)/trace.lp"; cat /dev/null > $(TESTDIR)/trace.lp; @echo " $(RM) -r $(BUILDDIR) $(TARGET)"; $(RM) -r $(BUILDDIR) $(TARGET) debug: CFLAGS += -ggdb -O0 -Wall -Wextra -pedantic -D"DEBUG=1" debug: $(TARGET) test: $(TARGET) /bin/sh trace: cat /dev/null > $(TESTDIR)/trace.lp; strace -o $(TESTDIR)/trace.lp $(TARGET) /bin/sh tracef: cat /dev/null > $(TESTDIR)/trace.lp; strace -fo $(TESTDIR)/trace.lp $(TARGET) /bin/sh .PHONY: clean