#!/usr/bin/env python
# SConstruct — Spellforge C++ GDExtension 构建脚本
# 用法（在本目录 gdextension/ 下）：
#   scons                 # 默认 template_debug，本机平台/架构
#   scons target=template_release
#   scons -j8             # 并行编译
# 依赖：godot-cpp 子模块（gdextension/godot-cpp）、SCons、C++ 工具链（Windows 用 MSVC，SCons 自动探测 VS）。
# API：通过 custom_api_file 指向本工程从 4.7.1 编辑器 dump 的 extension_api.json，保证绑定与引擎精确匹配。
import os

# 将本工程 4.7.1 的 API 注入 godot-cpp（除非命令行显式覆盖 custom_api_file）。
ARGUMENTS.setdefault("custom_api_file", os.path.abspath("api/extension_api.json"))

# 复用 godot-cpp 的构建环境（平台/架构/编译器探测、绑定生成、静态库）。
env = SConscript("godot-cpp/SConstruct")

env.Append(CPPPATH=["src/"])
sources = Glob("src/*.cpp")

libname = "spellforge_native"
bindir = "bin"

if env["platform"] == "macos":
    target = "{}/lib{}.{}.{}.framework/lib{}.{}.{}".format(
        bindir, libname, env["platform"], env["target"],
        libname, env["platform"], env["target"],
    )
else:
    target = "{}/lib{}{}{}".format(bindir, libname, env["suffix"], env["SHLIBSUFFIX"])

library = env.SharedLibrary(target, source=sources)

Default(library)
