import os
from SCons.Script import *

# 确保 build 目录存在
BUILD_DIR = 'build'
if not os.path.exists(BUILD_DIR):
    os.makedirs(BUILD_DIR)

# 导入配置(修改为导入algo.py)
from algo import *

# 初始化构建环境
env = Environment(
    tools=['default'],
    CC=CC,
    CXX=CXX,
    AS=AS,
    AR=AR,
    LINK=LINK,
    CCFLAGS=CFLAGS,
    CXXFLAGS=CFLAGS,
    ASFLAGS=AFLAGS,
    LINKFLAGS=LFLAGS,
    CPPPATH=['inc'],  # 仅使用项目内的头文件目录
)

# 递归构建源码(SConscript 负责收集编译文件)
src_objs = env.SConscript('SConscript', exports='env')

# 链接生成 elf 文件(输出到 build 目录)
elf_target = os.path.join(BUILD_DIR, TARGET_NAME)
elf_file = env.Program(elf_target, src_objs)

# 后处理:生成 bin、asm 等文件
post_commands = env.Command(
    os.path.join(BUILD_DIR, 'post_actions'),  # 虚拟目标，确保命令执行
    elf_file, 
    POST_ACTION
)

# 关联默认构建目标(执行 scons 时默认编译+后处理)
Default(elf_file)
Default(post_commands)

# 清理规则(删除 build 目录及内容)
Clean(elf_file, BUILD_DIR)

