# 编译器设置
CC = gcc
CFLAGS = -Wall -Wextra -g -I../game_engine
LDFLAGS = -lgdi32

# 目录设置
ROOT_DIR := .
BUILD_DIR := build
ENGINE_DIR := ../game_engine

# 手动指定源文件目录
SRC_DIRS = $(ROOT_DIR) \
           $(ROOT_DIR)/plantform/win_app \
           $(ENGINE_DIR)


SRCS = $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
OBJS := $(patsubst $(ROOT_DIR)/%.c,$(BUILD_DIR)/core/%.o,$(filter $(ROOT_DIR)/%,$(SRCS)))
OBJS += $(patsubst $(ENGINE_DIR)/%.c,$(BUILD_DIR)/engine/%.o,$(filter $(ENGINE_DIR)/%,$(SRCS)))


TARGET = $(BUILD_DIR)/../game.exe

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

# 当前目录下的文件编译规则
$(BUILD_DIR)/core/%.o: $(ROOT_DIR)/%.c
	@mkdir -p $(@D)
	$(CC) $(CFLAGS) -c $< -o $@

# 引擎目录下的文件编译规则
$(BUILD_DIR)/engine/%.o: $(ENGINE_DIR)/%.c
	@mkdir -p $(@D)
	$(CC) $(CFLAGS) -c $< -o $@

$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

debug:
	@echo "Source files:"
	@echo $(SRCS)
	@echo "Object files:"
	@echo $(OBJS)

all: build

build: $(TARGET)

run: build
	./$(TARGET)

clean:
	rm -rf $(BUILD_DIR)

.PHONY: all build run clean debug
