2026-02-11 19:40:26 +08:00
|
|
|
|
-- ==============================================
|
|
|
|
|
|
-- Nintendo Switch 工具链定义
|
|
|
|
|
|
-- ==============================================
|
|
|
|
|
|
|
|
|
|
|
|
function define_switch_toolchain()
|
|
|
|
|
|
toolchain("switch")
|
|
|
|
|
|
set_kind("standalone")
|
|
|
|
|
|
set_description("Nintendo Switch devkitA64 toolchain")
|
|
|
|
|
|
|
|
|
|
|
|
-- 检查 DEVKITPRO 环境变量(Windows 上使用 C:/devkitPro)
|
|
|
|
|
|
local devkitPro = os.getenv("DEVKITPRO") or "C:/devkitPro"
|
|
|
|
|
|
local devkitA64 = path.join(devkitPro, "devkitA64")
|
|
|
|
|
|
|
|
|
|
|
|
-- 设置工具链路径
|
|
|
|
|
|
set_toolset("cc", path.join(devkitA64, "bin/aarch64-none-elf-gcc.exe"))
|
|
|
|
|
|
set_toolset("cxx", path.join(devkitA64, "bin/aarch64-none-elf-g++.exe"))
|
|
|
|
|
|
set_toolset("ld", path.join(devkitA64, "bin/aarch64-none-elf-g++.exe"))
|
|
|
|
|
|
set_toolset("ar", path.join(devkitA64, "bin/aarch64-none-elf-gcc-ar.exe"))
|
|
|
|
|
|
set_toolset("strip", path.join(devkitA64, "bin/aarch64-none-elf-strip.exe"))
|
|
|
|
|
|
|
|
|
|
|
|
-- 架构标志
|
|
|
|
|
|
local arch_flags = "-march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE"
|
|
|
|
|
|
add_cxflags(arch_flags)
|
|
|
|
|
|
-- 使用 devkitPro 提供的 switch.specs 文件
|
|
|
|
|
|
add_ldflags("-specs=" .. path.join(devkitPro, "libnx/switch.specs"), "-g", arch_flags)
|
|
|
|
|
|
|
|
|
|
|
|
-- 定义 Switch 平台宏
|
|
|
|
|
|
add_defines("__SWITCH__", "__NX__", "MA_SWITCH", "PFD_SWITCH")
|
|
|
|
|
|
|
|
|
|
|
|
-- SimpleIni 配置:不使用 Windows API
|
|
|
|
|
|
add_defines("SI_NO_CONVERSION")
|
|
|
|
|
|
|
|
|
|
|
|
-- libnx 路径 - 必须在工具链级别添加
|
|
|
|
|
|
add_includedirs(path.join(devkitPro, "libnx/include"))
|
|
|
|
|
|
add_linkdirs(path.join(devkitPro, "libnx/lib"))
|
|
|
|
|
|
|
2026-03-01 03:48:51 +08:00
|
|
|
|
-- portlibs 路径(OpenGL ES + EGL + SDL2)
|
2026-02-11 19:40:26 +08:00
|
|
|
|
add_includedirs(path.join(devkitPro, "portlibs/switch/include"))
|
|
|
|
|
|
add_includedirs(path.join(devkitPro, "portlibs/switch/include/SDL2"))
|
|
|
|
|
|
add_linkdirs(path.join(devkitPro, "portlibs/switch/lib"))
|
|
|
|
|
|
|
|
|
|
|
|
add_syslinks("nx", "m")
|
|
|
|
|
|
toolchain_end()
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- 定义工具链
|
|
|
|
|
|
define_switch_toolchain()
|