CC = gcc
CFLAGS = -Wall -Wextra -Iinclude
SRCDIR = src
INCDIR = include
BUILDDIR = build
BINDIR = bin
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES))
TARGET = $(BINDIR)/demo
all: $(TARGET)
$(TARGET): $(OBJECTS) | $(BINDIR)
	$(CC) $^ -o $@
	@echo "Build complete: $(TARGET)"
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
	$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR) $(BINDIR):
	mkdir -p $@
clean:
	rm -rf $(BUILDDIR) $(BINDIR)
	@echo "Clean complete."
run: $(TARGET)
	./$(TARGET)
.PHONY: all clean run
