From af19722ebd25a7c96b3e3b042e4e48cb690b5e63 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Mon, 22 Jul 2024 18:25:16 +0200 Subject: improve moduleonly support --- tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua index ffa208234..8d7f969bc 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua @@ -1,5 +1,5 @@ package("bar2") - set_kind("library") + set_kind("library", {moduleonly = true}) set_sourcedir(path.join(os.scriptdir(), "src")) on_install(function(package) -- cgit v1.3.1 From 6bc66f276570973aced27afc6dd56cc6ce5b2d3b Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Mon, 22 Jul 2024 18:25:35 +0200 Subject: add staticlib2 test --- tests/projects/c++/modules/staticlib2/src/bar.cpp | 8 ++++++++ tests/projects/c++/modules/staticlib2/src/bar.mpp | 6 ++++++ tests/projects/c++/modules/staticlib2/src/foo.cpp | 10 ++++++++++ tests/projects/c++/modules/staticlib2/src/foo.mpp | 6 ++++++ tests/projects/c++/modules/staticlib2/src/main.cpp | 8 ++++++++ tests/projects/c++/modules/staticlib2/test.lua | 1 + tests/projects/c++/modules/staticlib2/xmake.lua | 18 ++++++++++++++++++ 7 files changed, 57 insertions(+) create mode 100644 tests/projects/c++/modules/staticlib2/src/bar.cpp create mode 100644 tests/projects/c++/modules/staticlib2/src/bar.mpp create mode 100644 tests/projects/c++/modules/staticlib2/src/foo.cpp create mode 100644 tests/projects/c++/modules/staticlib2/src/foo.mpp create mode 100644 tests/projects/c++/modules/staticlib2/src/main.cpp create mode 100644 tests/projects/c++/modules/staticlib2/test.lua create mode 100644 tests/projects/c++/modules/staticlib2/xmake.lua (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/staticlib2/src/bar.cpp b/tests/projects/c++/modules/staticlib2/src/bar.cpp new file mode 100644 index 000000000..0b5385096 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/src/bar.cpp @@ -0,0 +1,8 @@ +module bar; + +namespace bar { + int hello() { + return 2; + } +} + diff --git a/tests/projects/c++/modules/staticlib2/src/bar.mpp b/tests/projects/c++/modules/staticlib2/src/bar.mpp new file mode 100644 index 000000000..df67d52f0 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/src/bar.mpp @@ -0,0 +1,6 @@ +export module bar; + +export namespace bar { + int hello(); +} + diff --git a/tests/projects/c++/modules/staticlib2/src/foo.cpp b/tests/projects/c++/modules/staticlib2/src/foo.cpp new file mode 100644 index 000000000..254371283 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/src/foo.cpp @@ -0,0 +1,10 @@ +module foo; + +import bar; + +namespace foo { + int hello() { + return bar::hello(); + } +} + diff --git a/tests/projects/c++/modules/staticlib2/src/foo.mpp b/tests/projects/c++/modules/staticlib2/src/foo.mpp new file mode 100644 index 000000000..2f85bb9fe --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/src/foo.mpp @@ -0,0 +1,6 @@ +export module foo; + +export namespace foo { + int hello(); +} + diff --git a/tests/projects/c++/modules/staticlib2/src/main.cpp b/tests/projects/c++/modules/staticlib2/src/main.cpp new file mode 100644 index 000000000..69e91b126 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/src/main.cpp @@ -0,0 +1,8 @@ +#include +import foo; + +int main() { + printf("%d\n", foo::hello()); + return 0; +} + diff --git a/tests/projects/c++/modules/staticlib2/test.lua b/tests/projects/c++/modules/staticlib2/test.lua new file mode 100644 index 000000000..7717f8049 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/test.lua @@ -0,0 +1 @@ +inherit(".test_base") diff --git a/tests/projects/c++/modules/staticlib2/xmake.lua b/tests/projects/c++/modules/staticlib2/xmake.lua new file mode 100644 index 000000000..64f0c4b05 --- /dev/null +++ b/tests/projects/c++/modules/staticlib2/xmake.lua @@ -0,0 +1,18 @@ +add_rules("mode.release", "mode.debug") +set_languages("c++20") + +target("bar") + set_kind("static") + add_files("src/bar.mpp", {public = true}) + add_files("src/bar.cpp") + +target("foo") + set_kind("static") + add_deps("bar") + add_files("src/foo.mpp", {public = true}) + add_files("src/foo.cpp") + +target("hello") + set_kind("binary") + add_deps("foo") + add_files("src/main.cpp") -- cgit v1.3.1 From df5cb9cce6cbb757c12f07677edf27b4be219f48 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Tue, 23 Jul 2024 23:25:48 +0200 Subject: prompt an error when multiple module with the same names are detected --- .../modules/duplicate_name_detection/src/bar.mpp | 5 ++ .../modules/duplicate_name_detection/src/foo.mpp | 5 ++ .../modules/duplicate_name_detection/src/main.cpp | 5 ++ .../c++/modules/duplicate_name_detection/test.lua | 70 ++++++++++++++++++++++ .../c++/modules/duplicate_name_detection/xmake.lua | 20 +++++++ tests/projects/c++/modules/link_order/src/bar.mpp | 5 -- tests/projects/c++/modules/link_order/src/foo.mpp | 5 -- tests/projects/c++/modules/link_order/src/main.cpp | 5 -- tests/projects/c++/modules/link_order/test.lua | 1 - tests/projects/c++/modules/link_order/xmake.lua | 20 ------- .../modules/modules_support/dependency_scanner.lua | 11 +++- 11 files changed, 113 insertions(+), 39 deletions(-) create mode 100644 tests/projects/c++/modules/duplicate_name_detection/src/bar.mpp create mode 100644 tests/projects/c++/modules/duplicate_name_detection/src/foo.mpp create mode 100644 tests/projects/c++/modules/duplicate_name_detection/src/main.cpp create mode 100644 tests/projects/c++/modules/duplicate_name_detection/test.lua create mode 100644 tests/projects/c++/modules/duplicate_name_detection/xmake.lua delete mode 100644 tests/projects/c++/modules/link_order/src/bar.mpp delete mode 100644 tests/projects/c++/modules/link_order/src/foo.mpp delete mode 100644 tests/projects/c++/modules/link_order/src/main.cpp delete mode 100644 tests/projects/c++/modules/link_order/test.lua delete mode 100644 tests/projects/c++/modules/link_order/xmake.lua (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/duplicate_name_detection/src/bar.mpp b/tests/projects/c++/modules/duplicate_name_detection/src/bar.mpp new file mode 100644 index 000000000..a51969b8f --- /dev/null +++ b/tests/projects/c++/modules/duplicate_name_detection/src/bar.mpp @@ -0,0 +1,5 @@ +export module foo; + +export int value() { + return 1; +} diff --git a/tests/projects/c++/modules/duplicate_name_detection/src/foo.mpp b/tests/projects/c++/modules/duplicate_name_detection/src/foo.mpp new file mode 100644 index 000000000..d97e5f085 --- /dev/null +++ b/tests/projects/c++/modules/duplicate_name_detection/src/foo.mpp @@ -0,0 +1,5 @@ +export module foo; + +export int value() { + return 0; +} diff --git a/tests/projects/c++/modules/duplicate_name_detection/src/main.cpp b/tests/projects/c++/modules/duplicate_name_detection/src/main.cpp new file mode 100644 index 000000000..50ddf1fdd --- /dev/null +++ b/tests/projects/c++/modules/duplicate_name_detection/src/main.cpp @@ -0,0 +1,5 @@ +import foo; + +int main() { + return value(); +} diff --git a/tests/projects/c++/modules/duplicate_name_detection/test.lua b/tests/projects/c++/modules/duplicate_name_detection/test.lua new file mode 100644 index 000000000..5215735b5 --- /dev/null +++ b/tests/projects/c++/modules/duplicate_name_detection/test.lua @@ -0,0 +1,70 @@ +import("lib.detect.find_tool") +import("core.base.semver") +import("utils.ci.is_running", {alias = "ci_is_running"}) + +function _build() + try {function() + if ci_is_running() then + os.iorun("xmake -rvD") + else + os.iorun("xmake -r") + end + end, catch {function(errors) + errors = errors.errors + if not errors or not errors:find("detected") then + raise("Modules duplicate name detection does not work\n%s", errors.errors) + end + end}} +end + +function can_build() + if is_subhost("windows") then + return true + elseif is_subhost("msys") then + return true + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + return true + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + return true + end + end +end + +function main(t) + if is_subhost("windows") then + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "17.0") >= 0 then + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + + os.exec("xmake clean -a") + os.exec("xmake f -c --yes") + _build() + elseif is_subhost("msys") then + os.exec("xmake f -c -p mingw --yes") + _build() + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) +if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + os.exec("xmake f -c --yes") + _build() + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + end +end diff --git a/tests/projects/c++/modules/duplicate_name_detection/xmake.lua b/tests/projects/c++/modules/duplicate_name_detection/xmake.lua new file mode 100644 index 000000000..f4539695c --- /dev/null +++ b/tests/projects/c++/modules/duplicate_name_detection/xmake.lua @@ -0,0 +1,20 @@ +add_rules("mode.release", "mode.debug") +set_languages("c++20") + +target("foo") + set_kind("moduleonly") + add_files("src/foo.mpp") + +target("bar") + set_kind("moduleonly") + add_files("src/bar.mpp") + +target("duplicate_name_detection_1") + set_kind("binary") + add_deps("foo", "bar") + add_files("src/main.cpp") + +target("duplicate_name_detection_2") + set_kind("binary") + add_deps("bar", "foo") + add_files("src/main.cpp") diff --git a/tests/projects/c++/modules/link_order/src/bar.mpp b/tests/projects/c++/modules/link_order/src/bar.mpp deleted file mode 100644 index dc7c14ec8..000000000 --- a/tests/projects/c++/modules/link_order/src/bar.mpp +++ /dev/null @@ -1,5 +0,0 @@ -export module duplicate; - -export int value() { - return 1; -} diff --git a/tests/projects/c++/modules/link_order/src/foo.mpp b/tests/projects/c++/modules/link_order/src/foo.mpp deleted file mode 100644 index eba3a4223..000000000 --- a/tests/projects/c++/modules/link_order/src/foo.mpp +++ /dev/null @@ -1,5 +0,0 @@ -export module duplicate; - -export int value() { - return 0; -} diff --git a/tests/projects/c++/modules/link_order/src/main.cpp b/tests/projects/c++/modules/link_order/src/main.cpp deleted file mode 100644 index cd9524d8b..000000000 --- a/tests/projects/c++/modules/link_order/src/main.cpp +++ /dev/null @@ -1,5 +0,0 @@ -import duplicate; - -int main() { - return value(); -} diff --git a/tests/projects/c++/modules/link_order/test.lua b/tests/projects/c++/modules/link_order/test.lua deleted file mode 100644 index 7717f8049..000000000 --- a/tests/projects/c++/modules/link_order/test.lua +++ /dev/null @@ -1 +0,0 @@ -inherit(".test_base") diff --git a/tests/projects/c++/modules/link_order/xmake.lua b/tests/projects/c++/modules/link_order/xmake.lua deleted file mode 100644 index 4cb2af87f..000000000 --- a/tests/projects/c++/modules/link_order/xmake.lua +++ /dev/null @@ -1,20 +0,0 @@ -add_rules("mode.release", "mode.debug") -set_languages("c++20") - -target("foo") - set_kind("moduleonly") - add_files("src/foo.mpp") - -target("bar") - set_kind("moduleonly") - add_files("src/bar.mpp") - -target("link_order_1") - set_kind("binary") - add_deps("foo", "bar") - add_files("src/main.cpp") - -target("link_order_2") - set_kind("binary") - add_deps("bar", "foo") - add_files("src/main.cpp") diff --git a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua index 7db818cf4..fe544ee77 100644 --- a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua +++ b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua @@ -175,15 +175,21 @@ end -- generate edges for DAG function _get_edges(nodes, modules) local edges = {} + local module_names = {} + local named_module_names = hashset.new() for _, node in ipairs(nodes) do local module = modules[node] + local module_name, _, _ = compiler_support.get_provided_module(module) + if module_name then + assert(not named_module_names:has(module_name), "duplicate module name detected \"" .. module_name .. "\"") + named_module_names:insert(module_name) + end if module.requires then for required_name, _ in table.orderpairs(module.requires) do for _, required_node in ipairs(nodes) do local name, _, _ = compiler_support.get_provided_module(modules[required_node]) if name and name == required_name then table.insert(edges, {required_node, node}) - break end end end @@ -200,8 +206,7 @@ function _get_package_modules(target, package, opt) for _, metafile in ipairs(metafiles) do package_modules = package_modules or {} local modulefile, name, metadata = _parse_meta_info(target, metafile) - local package_data = package["_INFO"] - local moduleonly = not package_data["libfiles"] + local moduleonly = not package:libraryfiles() package_modules[name] = {file = path.join(modulesdir, modulefile), metadata = metadata, external = {moduleonly = moduleonly}} end -- cgit v1.3.1 From d7e9d430ccc5de6162f9f361983d1f50a16a179b Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Wed, 24 Jul 2024 02:29:57 +0200 Subject: improve module culling tests --- tests/projects/c++/modules/culling/test.lua | 70 +++++++++++++++++++++++++++- tests/projects/c++/modules/culling2/test.lua | 70 +++++++++++++++++++++++++++- 2 files changed, 138 insertions(+), 2 deletions(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/culling/test.lua b/tests/projects/c++/modules/culling/test.lua index 7717f8049..91c19553c 100644 --- a/tests/projects/c++/modules/culling/test.lua +++ b/tests/projects/c++/modules/culling/test.lua @@ -1 +1,69 @@ -inherit(".test_base") +import("lib.detect.find_tool") +import("core.base.semver") +import("utils.ci.is_running", {alias = "ci_is_running"}) + +function _build() + local outdata + if ci_is_running() then + outdata = os.iorun("xmake -rvD") + else + outdata = os.iorun("xmake -r") + end + if outdata then + if outdata:find("culled") then + raise("Modules culling does not work\n%s", outdata) + end + end +end + +function can_build() + if is_subhost("windows") then + return true + elseif is_subhost("msys") then + return true + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + return true + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + return true + end + end +end + +function main(t) + if is_subhost("windows") then + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "17.0") >= 0 then + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + + os.exec("xmake clean -a") + os.exec("xmake f -c --yes") + _build() + elseif is_subhost("msys") then + os.exec("xmake f -c -p mingw --yes") + _build() + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + os.exec("xmake f -c --yes") + _build() + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + end +end diff --git a/tests/projects/c++/modules/culling2/test.lua b/tests/projects/c++/modules/culling2/test.lua index 7717f8049..91c19553c 100644 --- a/tests/projects/c++/modules/culling2/test.lua +++ b/tests/projects/c++/modules/culling2/test.lua @@ -1 +1,69 @@ -inherit(".test_base") +import("lib.detect.find_tool") +import("core.base.semver") +import("utils.ci.is_running", {alias = "ci_is_running"}) + +function _build() + local outdata + if ci_is_running() then + outdata = os.iorun("xmake -rvD") + else + outdata = os.iorun("xmake -r") + end + if outdata then + if outdata:find("culled") then + raise("Modules culling does not work\n%s", outdata) + end + end +end + +function can_build() + if is_subhost("windows") then + return true + elseif is_subhost("msys") then + return true + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + return true + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + return true + end + end +end + +function main(t) + if is_subhost("windows") then + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "17.0") >= 0 then + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + + os.exec("xmake clean -a") + os.exec("xmake f -c --yes") + _build() + elseif is_subhost("msys") then + os.exec("xmake f -c -p mingw --yes") + _build() + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + os.exec("xmake f -c --yes") + _build() + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + end +end -- cgit v1.3.1 From 14f95cbe61ff9c652810913f54e06bcd49465e58 Mon Sep 17 00:00:00 2001 From: Arthur LAURENT Date: Wed, 24 Jul 2024 02:42:17 +0200 Subject: improve culling tests --- tests/projects/c++/modules/culling/test.lua | 2 +- tests/projects/c++/modules/culling2/test.lua | 2 +- tests/projects/c++/modules/culling3/src/hello.mpp | 10 ++++ tests/projects/c++/modules/culling3/test.lua | 69 +++++++++++++++++++++++ tests/projects/c++/modules/culling3/xmake.lua | 6 ++ 5 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 tests/projects/c++/modules/culling3/src/hello.mpp create mode 100644 tests/projects/c++/modules/culling3/test.lua create mode 100644 tests/projects/c++/modules/culling3/xmake.lua (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/culling/test.lua b/tests/projects/c++/modules/culling/test.lua index 91c19553c..bc72c4add 100644 --- a/tests/projects/c++/modules/culling/test.lua +++ b/tests/projects/c++/modules/culling/test.lua @@ -7,7 +7,7 @@ function _build() if ci_is_running() then outdata = os.iorun("xmake -rvD") else - outdata = os.iorun("xmake -r") + outdata = os.iorun("xmake -rv") end if outdata then if outdata:find("culled") then diff --git a/tests/projects/c++/modules/culling2/test.lua b/tests/projects/c++/modules/culling2/test.lua index 91c19553c..bc72c4add 100644 --- a/tests/projects/c++/modules/culling2/test.lua +++ b/tests/projects/c++/modules/culling2/test.lua @@ -7,7 +7,7 @@ function _build() if ci_is_running() then outdata = os.iorun("xmake -rvD") else - outdata = os.iorun("xmake -r") + outdata = os.iorun("xmake -rv") end if outdata then if outdata:find("culled") then diff --git a/tests/projects/c++/modules/culling3/src/hello.mpp b/tests/projects/c++/modules/culling3/src/hello.mpp new file mode 100644 index 000000000..124bd72bc --- /dev/null +++ b/tests/projects/c++/modules/culling3/src/hello.mpp @@ -0,0 +1,10 @@ +module; +#include + +export module hello; + +export namespace hello { + void say(const char* str) { + printf("%s\n", str); + } +} diff --git a/tests/projects/c++/modules/culling3/test.lua b/tests/projects/c++/modules/culling3/test.lua new file mode 100644 index 000000000..d3865ecdc --- /dev/null +++ b/tests/projects/c++/modules/culling3/test.lua @@ -0,0 +1,69 @@ +import("lib.detect.find_tool") +import("core.base.semver") +import("utils.ci.is_running", {alias = "ci_is_running"}) + +function _build() + local outdata + if ci_is_running() then + outdata = os.iorun("xmake -rvD") + else + outdata = os.iorun("xmake -rv") + end + if outdata then + if not outdata:find("culled") then + raise("Modules culling does not work\n%s", outdata) + end + end +end + +function can_build() + if is_subhost("windows") then + return true + elseif is_subhost("msys") then + return true + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + return true + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + return true + end + end +end + +function main(t) + if is_subhost("windows") then + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "17.0") >= 0 then + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + + os.exec("xmake clean -a") + os.exec("xmake f -c --yes") + _build() + elseif is_subhost("msys") then + os.exec("xmake f -c -p mingw --yes") + _build() + elseif is_host("linux") then + local gcc = find_tool("gcc", {version = true}) + if gcc and gcc.version and semver.compare(gcc.version, "11.0") >= 0 then + os.exec("xmake f -c --yes") + _build() + end + local clang = find_tool("clang", {version = true}) + if clang and clang.version and semver.compare(clang.version, "14.0") >= 0 then + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang -c --yes") + _build() + os.exec("xmake clean -a") + os.exec("xmake f --toolchain=clang --runtimes=c++_shared -c --yes") + _build() + end + end +end diff --git a/tests/projects/c++/modules/culling3/xmake.lua b/tests/projects/c++/modules/culling3/xmake.lua new file mode 100644 index 000000000..7ec9385f3 --- /dev/null +++ b/tests/projects/c++/modules/culling3/xmake.lua @@ -0,0 +1,6 @@ +add_rules("mode.release", "mode.debug") +set_languages("c++20") + +target("culling") + set_kind("static") + add_files("src/*.mpp") -- cgit v1.3.1 From dcd0c80fbde856820ed204d2b04fd51b3aa8ffae Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 24 Jul 2024 23:37:54 +0800 Subject: Update test.lua --- .../c++/modules/duplicate_name_detection/test.lua | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/duplicate_name_detection/test.lua b/tests/projects/c++/modules/duplicate_name_detection/test.lua index 5215735b5..34a153037 100644 --- a/tests/projects/c++/modules/duplicate_name_detection/test.lua +++ b/tests/projects/c++/modules/duplicate_name_detection/test.lua @@ -3,18 +3,23 @@ import("core.base.semver") import("utils.ci.is_running", {alias = "ci_is_running"}) function _build() - try {function() - if ci_is_running() then - os.iorun("xmake -rvD") - else - os.iorun("xmake -r") - end - end, catch {function(errors) - errors = errors.errors - if not errors or not errors:find("detected") then - raise("Modules duplicate name detection does not work\n%s", errors.errors) - end - end}} + try { + function() + if ci_is_running() then + os.iorun("xmake -rvD") + else + os.iorun("xmake -r") + end + end, + catch { + function (errors) + errors = tostring(errors) + if not errors:find("duplicate module name detected", 1, true) then + raise("Modules duplicate name detection does not work\n%s", errors) + end + end + } + } end function can_build() -- cgit v1.3.1 From 626b80e46c371a2723f204e2412339e73d6cbece Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 24 Jul 2024 23:48:27 +0800 Subject: Update test.lua --- tests/projects/c++/modules/duplicate_name_detection/test.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests/projects') diff --git a/tests/projects/c++/modules/duplicate_name_detection/test.lua b/tests/projects/c++/modules/duplicate_name_detection/test.lua index 34a153037..53033dd7f 100644 --- a/tests/projects/c++/modules/duplicate_name_detection/test.lua +++ b/tests/projects/c++/modules/duplicate_name_detection/test.lua @@ -6,9 +6,9 @@ function _build() try { function() if ci_is_running() then - os.iorun("xmake -rvD") + os.run("xmake -rvD") else - os.iorun("xmake -r") + os.run("xmake -r") end end, catch { -- cgit v1.3.1