# ---------------------------------
# Generated by Kimi K2
#---------- configurable ----------
CXX      := g++
CXXFLAGS := -Isrc -std=c++23 -Wall -Wextra -Wpedantic -ggdb3
LDFLAGS  :=
LDLIBS   := -lSDL3 -lSDL3_image -lGLEW -lGL

SRC_DIR  := src
BUILD_DIR:= build
TARGET   := pathfinding
TEST_TARGET := unittest

#----------------------------------
SOURCES := $(shell find $(SRC_DIR) -name '*.cpp')
OBJECTS := $(SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)

#----------------------------------
.PHONY: all clean test

all: $(TARGET)

test: $(TEST_TARGET)
	./$(TEST_TARGET)

$(TEST_TARGET): test/test.cpp
	$(CXX) -std=c++23 -lgtest -Isrc -o $@ $<

# link step
$(TARGET): $(OBJECTS)
	$(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)

# compile step
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp | $(BUILD_DIR)
	@mkdir -p $(dir $@)
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(BUILD_DIR):
	mkdir -p $@

clean:
	rm -rf $(BUILD_DIR) $(TARGET) $(TEST_TARGET)
