summaryrefslogtreecommitdiff
path: root/tests/projects/c++/modules
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
parentf8d5eba57c7252f504a6782d3a7bf9ddd6cae74c (diff)
fix tests
Diffstat (limited to 'tests/projects/c++/modules')
-rw-r--r--tests/projects/c++/modules/stdmodules/xmake.lua33
-rw-r--r--tests/projects/c++/modules/test_msvc.lua37
2 files changed, 57 insertions, 13 deletions
diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua
index 176e8b5a6..92fa4b8f1 100644
--- a/tests/projects/c++/modules/stdmodules/xmake.lua
+++ b/tests/projects/c++/modules/stdmodules/xmake.lua
@@ -1,28 +1,39 @@
add_rules("mode.debug", "mode.release")
-set_languages("c++23")
add_cxxflags("clang::-stdlib=libc++")
-target("mod")
- set_kind("static")
- add_files("src/*.cpp", "src/*.mpp")
+option("stdifcsupport")
+ set_default(false)
+ set_showmenu(true)
+option("stdimportsupport")
+ set_default(false)
+ set_showmenu(true)
+option_end()
-target("test")
- set_kind("binary")
- add_files("test/*.cpp")
- add_deps("mod")
+if has_config("stdimportsupport") then
+ target("mod")
+ set_languages("c++latest")
+ set_kind("static")
+ add_files("src/*.cpp", "src/*.mpp")
+
+ target("test")
+ set_kind("binary")
+ set_languages("c++latest")
+ add_files("test/*.cpp")
+ add_deps("mod")
+end
-if is_plat("windows") then
+if has_config("stdifcsupport") then
target("mod-msvcifc")
- set_languages("c++20")
set_kind("static")
+ set_languages("c++latest", "clatest")
add_files("src/*.cpp", "src/*.mpp")
set_values("c++.msvc.enable_std_ifc", true)
add_defines("MSVC_MODULES")
target("test-msvcifc")
- set_languages("c++20")
set_kind("binary")
+ set_languages("c++latest", "clatest")
add_files("test/*.cpp")
add_deps("mod-msvcifc")
set_values("c++.msvc.enable_std_ifc", true)
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