支持 tls 关键字,全面准备清退 t, c

This commit is contained in:
TermiNexus committed 2026-10-17 23:40:06 +08:00
1 parent 6e17716a69
commit 3242560d02
74 files changed
+524 -576

No files matched your search

+11 -2
View File
@@ -1,8 +1,6 @@
import t, c
from stdint import *
import memhub
import string
import stdio
import stdlib
import viperlib
import lib.core.VLogger as VLogger
@@ -112,6 +110,17 @@ def Load_project_config(path: str) -> int:
# Read linker.flags array, join into a space-separated string
ld_flags_val: JsonValue* = linker["flags"]
LinkerFlags = _join_flags_array(ld_flags_val)
# mingw-w64:同时链接 -lmsvcrt 与 -lucrt 时,GNU ld 会从两个 import 库各拉出一个都定义
# __imp_<name> 的成员(现场:__imp_ldexp 同时出现在 libmsvcrt 与
# libapi-ms-win-crt-math),直接报 "multiple definition"。lld 按需解析 import 库不会冲突,
# 仓库默认链接命令也一直是 lld;项目配置漏写 -fuse-ld 时在这里补齐,避免逐个测试改配置。
if LinkerCmd is not None and LinkerFlags is not None and string.strstr(LinkerCmd, "clang") is not None:
if string.strstr(LinkerFlags, "-fuse-ld") is None and string.strstr(LinkerFlags, "-lucrt") is not None:
lf_cap: sizet = string.strlen(LinkerFlags) + 32
lf_new: str = _mbuddy.alloc(lf_cap)
if lf_new is not None:
viperlib.snprintf(lf_new, lf_cap, "-fuse-ld=lld %s", LinkerFlags)
LinkerFlags = lf_new
# Read linker.static_libs array: explicit static libs (.a/.obj); joined raw here,
# then resolved to abs paths against project_dir in resolve_paths.
sl_val: JsonValue* = linker["static_libs"]
-1
View File
@@ -1,4 +1,3 @@
import t, c
from stdint import *
import memhub
import string
-1
View File
@@ -1,4 +1,3 @@
import t, c
from stdint import *
from .Config import Load_project_config, resolve_paths