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 := -Wall -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 " $(RM) -r $(BUILDDIR) $(TARGET)"; $(RM) -r $(BUILDDIR) $(TARGET)

debug:	CFLAGS += -ggdb -O0 -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
