# Makefile for Bus Route Management System

CC = gcc
CFLAGS = -Wall -Wextra -g -I./include
LDFLAGS = -lm

# 目录
SRC_DIR = src
INC_DIR = include
OBJ_DIR = obj
BIN_DIR = bin
DATA_DIR = data

# 源文件和目标文件
SOURCES = $(wildcard $(SRC_DIR)/*.c)
OBJECTS = $(SOURCES:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
TARGET = $(BIN_DIR)/bus_system

# 默认目标
all: directories $(TARGET)

# 创建必要的目录
directories:
	@mkdir -p $(OBJ_DIR)
	@mkdir -p $(BIN_DIR)
	@mkdir -p $(DATA_DIR)

# 链接目标文件生成可执行文件
$(TARGET): $(OBJECTS)
	$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
	@cp -r $(DATA_DIR) $(BIN_DIR)
	@echo "build successful: $(TARGET)"

# 编译源文件为目标文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@

# 清理编译文件
clean:
	rm -rf $(OBJ_DIR) $(BIN_DIR)
	@echo "clean over"

# 运行程序
run: $(TARGET)
	@cp -r $(DATA_DIR) $(BIN_DIR)
	@cd $(BIN_DIR) && ./bus_system

# 安装数据文件（如果需要）
install-data:
	@echo "请确保 data/ 目录包含 stations.csv 和 routes.csv"

.PHONY: all clean run directories install-data