-include make.conf

BIN = tcpl
DIST = $(BIN)-$(VERSION)

SRC = $(wildcard src/*.c)
SRC_OBJ = $(SRC:.c=.o)
LIB_SRC = $(wildcard lib/*.c)
LIB_OBJ = $(LIB_SRC:.c=.o)

all: $(BIN)

$(BIN): $(SRC_OBJ) $(LIB_OBJ)
	$(LD) $(LDFLAGS) -o $@ $(SRC_OBJ) $(LIB_OBJ)

src/%.o: src/%.c
	$(CC) $(CFLAGS) -I. -Iinclude -c $< -o $@

lib/%.o: lib/%.c
	$(CC) $(CFLAGS) -I. -Iinclude -c $< -o $@

dist: clean
	mkdir -p $(DIST)
	cp -R src make.conf Makefile man LICENSE README doc include lib package $(DIST)
	tar -czf $(DIST).tar.gz $(DIST)
	rm -rf $(DIST)

check: $(BIN)
	@failed=0; \
	passed=0; \
	total=0; \
	skipped=0; \
	for f in ./tests/*; do \
	  [ "$$f" = "./tests/init.sh" ] && continue; \
	  [ -f "$$f" ] || continue; \
	  name=$$(basename "$$f"); \
	  sh "$$f"; rc=$$?; \
	  if [ $$rc -eq 0 ]; then \
	    printf '\033[0;32mPASS\033[0m: tests/%s\n' "$$name"; \
	    passed=$$((passed + 1)); \
	  elif [ $$rc -eq 77 ]; then \
	    printf '\033[0;34mSKIP\033[0m: tests/%s\n' "$$name"; \
	    skipped=$$((skipped + 1)); \
	  else \
	    printf '\033[0;31mSKIP\033[0m: tests/%s\n' "$$name"; \
	    failed=$$((failed + 1)); \
	  fi; \
	  total=$$((total + 1)); \
	done; \
	echo "\033[0;32m================="; \
	echo "Testsuite summary for fSD Hello ($$(git rev-parse --short HEAD))"; \
	echo "=================\033[0m"; \
	echo "TOTAL: $$total"; \
	echo "\033[0;32mPASSED\033[0m: $$passed"; \
	echo "FAILED: $$failed"; \
	echo "SKIPED: $$skipped"; \
	exit $$failed

clean:
	rm -f $(SRC_OBJ) $(LIB_OBJ) $(BIN) *.gz

.PHONY: dist clean all check
