CC = gcc
CFLAGS = -I./include -Wall -Wextra -MMD -MP
LDLIBS = -lncurses
SRC_DIR = src
BUILD_DIR = build
SOURCES = $(filter-out $(SRC_DIR)/testLogic.c, $(wildcard $(SRC_DIR)/*.c))
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES))
TEST_SOURCES = $(SRC_DIR)/logic.c $(SRC_DIR)/testLogic.c
TEST_OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(TEST_SOURCES))
EXEC = productManager
EXECTEST = test
DEPS = $(OBJECTS:.o=.d)

all: $(EXEC)
$(EXEC): $(OBJECTS)
	$(CC) $^ -o $@ $(LDLIBS)
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(@D)
	$(CC) $(CFLAGS) -c $< -o $@
-include $(DEPS)

test: $(TEST_OBJECTS)
	$(CC) $^ -o $(EXECTEST) $(LDLIBS)

clean:
	rm -rf $(BUILD_DIR) $(EXEC) $(EXECTEST)

.PHONY: all clean
