# Linux / macOS build. Windows: open base_glfw.sln (VS 2026, x64).
CXX ?= c++
CC ?= cc
PKG_CONFIG ?= pkg-config
CXXFLAGS ?= -O2 -std=c++17
CFLAGS ?= -O2 -std=c99
CPPFLAGS += -Iinclude $(shell $(PKG_CONFIG) --cflags glfw3 2>/dev/null)
LDLIBS += $(shell $(PKG_CONFIG) --libs glfw3 2>/dev/null)
BUILD_DIR := build/unix
OUT := base_glfw
CPP_SOURCES := src/main.cpp src/lsystem.cpp src/util.cpp
C_SOURCES := src/gl_core_3_3.c
OBJECTS := $(patsubst src/%.cpp,$(BUILD_DIR)/%.o,$(CPP_SOURCES)) \
           $(patsubst src/%.c,$(BUILD_DIR)/%.o,$(C_SOURCES))

.PHONY: all check-deps clean
all: check-deps $(OUT)

check-deps:
	@$(PKG_CONFIG) --exists glfw3 || { echo "Install GLFW development files and pkg-config (see README.txt)."; exit 1; }

$(OUT): $(OBJECTS)
	$(CXX) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@

$(BUILD_DIR)/%.o: src/%.cpp | check-deps
	@mkdir -p $(BUILD_DIR)
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MMD -MP -c $< -o $@

$(BUILD_DIR)/%.o: src/%.c | check-deps
	@mkdir -p $(BUILD_DIR)
	$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c $< -o $@

clean:
	rm -rf $(BUILD_DIR) $(OUT)

-include $(OBJECTS:.o=.d)
