diff options
| author | ruki <[email protected]> | 2025-03-07 10:33:00 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-03-07 10:33:00 +0800 |
| commit | e6809b94206cb4ec9bc05baa0f09567ebb5d67e9 (patch) | |
| tree | a5ff151620d489ebc8051bea9d382d1ad883bcda /xmake/rules/c++/modules/modules_support | |
| parent | 0e5beb5bed3ec5126245b64264c7ca5c1829c9fa (diff) | |
Update compiler_support.lua
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/clang/compiler_support.lua | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/xmake/rules/c++/modules/modules_support/clang/compiler_support.lua b/xmake/rules/c++/modules/modules_support/clang/compiler_support.lua index 01c559f2e..6eb4f84b1 100644 --- a/xmake/rules/c++/modules/modules_support/clang/compiler_support.lua +++ b/xmake/rules/c++/modules/modules_support/clang/compiler_support.lua @@ -288,17 +288,23 @@ function get_stdmodules(target) elseif cpplib == "stdc++" then -- libstdc++ doesn't have a std module file atm elseif cpplib == "msstl" then - -- msstl std module file is not compatible with llvm <= 19 - local toolchain = target:toolchain("clang") or target:toolchain("clang-cl") - local msvc = import("core.tool.toolchain", {anonymous = true}).load("msvc", {plat = toolchain:plat(), arch = toolchain:arch()}) - if msvc and msvc:check() then - local vcvars = msvc:config("vcvars") - if vcvars.VCInstallDir and vcvars.VCToolsVersion then - local stdmodulesdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "modules") - if os.isdir(stdmodulesdir) then - return {path.join(stdmodulesdir, "std.ixx"), path.join(stdmodulesdir, "std.compat.ixx")} + -- msstl std module file is not compatible with llvm < 19 + local clang_version = get_clang_version(target) + if clang_version and semver.compare(clang_version, "19.0") >= 0 then + local toolchain = target:toolchain("clang") or target:toolchain("clang-cl") + local msvc = import("core.tool.toolchain", {anonymous = true}).load("msvc", {plat = toolchain:plat(), arch = toolchain:arch()}) + if msvc and msvc:check() then + local vcvars = msvc:config("vcvars") + if vcvars.VCInstallDir and vcvars.VCToolsVersion then + local stdmodulesdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "modules") + if os.isdir(stdmodulesdir) then + return {path.join(stdmodulesdir, "std.ixx"), path.join(stdmodulesdir, "std.compat.ixx")} + end end end + else + wprint("msstl std module file is not compatible with llvm < 19, please upgrade clang/clang-cl version!") + return end end end |
