summaryrefslogtreecommitdiff
path: root/tests/projects/c++/modules/test_msvc.lua
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2022-12-13 22:12:22 +0100
committerArthur LAURENT <[email protected]>2022-12-13 22:12:22 +0100
commitf314e4eb068e04e4b311feffffaf427ea25ef9bd (patch)
treec90f9b682abf6d1e4d8b4ffdccb61130d7003d8b /tests/projects/c++/modules/test_msvc.lua
parentf8d5eba57c7252f504a6782d3a7bf9ddd6cae74c (diff)
fix tests
Diffstat (limited to 'tests/projects/c++/modules/test_msvc.lua')
-rw-r--r--tests/projects/c++/modules/test_msvc.lua37
1 files changed, 35 insertions, 2 deletions
diff --git a/tests/projects/c++/modules/test_msvc.lua b/tests/projects/c++/modules/test_msvc.lua
index d51d3e3ef..1cdb4228d 100644
--- a/tests/projects/c++/modules/test_msvc.lua
+++ b/tests/projects/c++/modules/test_msvc.lua
@@ -1,5 +1,34 @@
import("lib.detect.find_tool")
import("core.base.semver")
+import("core.tool.toolchain")
+
+function stdifcdir_support()
+ if is_subhost("windows") then
+ local stdifcdir
+ local msvc = toolchain.load("msvc")
+ if msvc and msvc:check() then
+ local vcvars = msvc:config("vcvars")
+ if vcvars and vcvars.VCInstallDir and vcvars.VCToolsVersion then
+ stdifcdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "ifc")
+ end
+ end
+ return os.isdir(stdifcdir or "")
+ end
+end
+
+function stdimport_support()
+ if is_subhost("windows") then
+ local stdmodulesdir
+ local msvc = toolchain.load("msvc")
+ if msvc and msvc:check() then
+ local vcvars = msvc:config("vcvars")
+ if vcvars and vcvars.VCInstallDir and vcvars.VCToolsVersion then
+ stdifcdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "modules")
+ end
+ end
+ return os.isdir(stdmodulesdir or "")
+ end
+end
function _build()
local ci = (os.getenv("CI") or os.getenv("GITHUB_ACTIONS") or ""):lower()
@@ -12,7 +41,11 @@ end
function main(t)
if is_subhost("windows") then
- os.exec("xmake f -c")
- _build()
+ local stdifcdir_flag = stdifcdir_support() and "--stdifcsupport=y"
+ local stdimport_flag = stdimport_support() and "--stdimportsupport=y"
+ if stdifcdir_flag or stdimport then
+ os.execv("xmake", table.join({"f", "-c"}, stdifcdir_flag or {}, stdimport_flag or {}))
+ _build()
+ end
end
end