From 43c3b8607775f7ee5b52e24a7f785b4c7a5ab292 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 6 Apr 2025 22:03:58 +0800 Subject: add modules with pch test --- tests/projects/c++/modules/hello_with_pch/src/hello.mpp | 10 ++++++++++ tests/projects/c++/modules/hello_with_pch/src/main.cpp | 8 ++++++++ tests/projects/c++/modules/hello_with_pch/src/test.h | 1 + tests/projects/c++/modules/hello_with_pch/test.lua | 1 + tests/projects/c++/modules/hello_with_pch/xmake.lua | 7 +++++++ 5 files changed, 27 insertions(+) create mode 100644 tests/projects/c++/modules/hello_with_pch/src/hello.mpp create mode 100644 tests/projects/c++/modules/hello_with_pch/src/main.cpp create mode 100644 tests/projects/c++/modules/hello_with_pch/src/test.h create mode 100644 tests/projects/c++/modules/hello_with_pch/test.lua create mode 100644 tests/projects/c++/modules/hello_with_pch/xmake.lua (limited to 'tests/projects/c++/modules') diff --git a/tests/projects/c++/modules/hello_with_pch/src/hello.mpp b/tests/projects/c++/modules/hello_with_pch/src/hello.mpp new file mode 100644 index 000000000..124bd72bc --- /dev/null +++ b/tests/projects/c++/modules/hello_with_pch/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/hello_with_pch/src/main.cpp b/tests/projects/c++/modules/hello_with_pch/src/main.cpp new file mode 100644 index 000000000..739309dd4 --- /dev/null +++ b/tests/projects/c++/modules/hello_with_pch/src/main.cpp @@ -0,0 +1,8 @@ +#include "test.h" + +import hello; + +int main() { + hello::say("hello module!"); + return 0; +} diff --git a/tests/projects/c++/modules/hello_with_pch/src/test.h b/tests/projects/c++/modules/hello_with_pch/src/test.h new file mode 100644 index 000000000..d5a732287 --- /dev/null +++ b/tests/projects/c++/modules/hello_with_pch/src/test.h @@ -0,0 +1 @@ +#include diff --git a/tests/projects/c++/modules/hello_with_pch/test.lua b/tests/projects/c++/modules/hello_with_pch/test.lua new file mode 100644 index 000000000..7717f8049 --- /dev/null +++ b/tests/projects/c++/modules/hello_with_pch/test.lua @@ -0,0 +1 @@ +inherit(".test_base") diff --git a/tests/projects/c++/modules/hello_with_pch/xmake.lua b/tests/projects/c++/modules/hello_with_pch/xmake.lua new file mode 100644 index 000000000..79ddb6b58 --- /dev/null +++ b/tests/projects/c++/modules/hello_with_pch/xmake.lua @@ -0,0 +1,7 @@ +add_rules("mode.release", "mode.debug") +set_languages("c++20") + +target("hello") + set_kind("binary") + set_pcxxheader("src/test.h") + add_files("src/*.cpp", "src/*.mpp") -- cgit v1.3.1 From b2d2727fdcc1d955b4095c57b6d02ff665bcbfd9 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 6 Apr 2025 23:02:59 +0800 Subject: disable module and pch for gcc --- tests/projects/c++/modules/hello_with_pch/test.lua | 2 +- tests/projects/c++/modules/test_pch.lua | 31 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/projects/c++/modules/test_pch.lua (limited to 'tests/projects/c++/modules') diff --git a/tests/projects/c++/modules/hello_with_pch/test.lua b/tests/projects/c++/modules/hello_with_pch/test.lua index 7717f8049..16ef46834 100644 --- a/tests/projects/c++/modules/hello_with_pch/test.lua +++ b/tests/projects/c++/modules/hello_with_pch/test.lua @@ -1 +1 @@ -inherit(".test_base") +inherit(".test_pch") diff --git a/tests/projects/c++/modules/test_pch.lua b/tests/projects/c++/modules/test_pch.lua new file mode 100644 index 000000000..98286c229 --- /dev/null +++ b/tests/projects/c++/modules/test_pch.lua @@ -0,0 +1,31 @@ +import("lib.detect.find_tool") +import("core.base.semver") +import("detect.sdks.find_vstudio") +import("utils.ci.is_running", {alias = "ci_is_running"}) + +function _build() + if ci_is_running() then + os.run("xmake -rvD") + else + os.run("xmake -r") + end + local outdata = os.iorun("xmake") + if outdata then + if outdata:find("compiling") or outdata:find("linking") or outdata:find("generating") then + raise("Modules incremental compilation does not work\n%s", outdata) + end + end +end + +function main(t) + -- TODO c++ modules with pch does not work for gcc now. + if is_host("linux") then + local clang = find_tool("clang", {version = true}) + if clang then + os.exec("xmake f --toolchain=clang -c --yes --policies=build.c++.modules.std:n,build.c++.clang.fallbackscanner") + _build() + end + else + _build() + end +end -- cgit v1.3.1 From 72870df34c9a3278fe4a92fa5591f6738f80ada6 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 6 Apr 2025 23:16:28 +0800 Subject: Delete tests/projects/c++/modules/hello_with_pch/test.lua --- tests/projects/c++/modules/hello_with_pch/test.lua | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tests/projects/c++/modules/hello_with_pch/test.lua (limited to 'tests/projects/c++/modules') diff --git a/tests/projects/c++/modules/hello_with_pch/test.lua b/tests/projects/c++/modules/hello_with_pch/test.lua deleted file mode 100644 index 16ef46834..000000000 --- a/tests/projects/c++/modules/hello_with_pch/test.lua +++ /dev/null @@ -1 +0,0 @@ -inherit(".test_pch") -- cgit v1.3.1