summaryrefslogtreecommitdiff
path: root/tests/projects/c++/modules
diff options
context:
space:
mode:
authorArthur Laurent <[email protected]>2023-01-08 15:55:56 +0100
committerGitHub <[email protected]>2023-01-08 15:55:56 +0100
commit8749422a005d5150fccbfe807fbc618361a2afa1 (patch)
tree51809e3b148bcf03bb4514e837f253ca5dc92808 /tests/projects/c++/modules
parentc394913eafbc3a24485a0c88b0d891e9954b302b (diff)
parent476f1c3592aa55cd10a6986c045f1be834cf2a83 (diff)
Merge branch 'dev' into improve-clang-modules-support-with-libc++
Diffstat (limited to 'tests/projects/c++/modules')
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp5
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp3
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua7
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua6
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.cpp9
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp5
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua7
-rw-r--r--tests/projects/c++/modules/packages/my-repo/packages/f/foo/xmake.lua6
-rw-r--r--tests/projects/c++/modules/packages/src/main.cpp7
-rw-r--r--tests/projects/c++/modules/packages/test.lua1
-rw-r--r--tests/projects/c++/modules/packages/xmake.lua11
-rw-r--r--tests/projects/c++/modules/test_headerunits.lua11
12 files changed, 73 insertions, 5 deletions
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp
new file mode 100644
index 000000000..5bbb5e5c1
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp
@@ -0,0 +1,5 @@
+module bar;
+
+const char *bar() {
+ return "Hello world";
+} \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp
new file mode 100644
index 000000000..a13487fea
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp
@@ -0,0 +1,3 @@
+export module bar;
+
+export const char *bar(); \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua
new file mode 100644
index 000000000..345dd2db4
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.release", "mode.debug")
+set_languages("c++20")
+
+target("bar")
+ set_kind("static")
+ add_files("*.cpp")
+ add_files("*.mpp", { install = true })
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua
new file mode 100644
index 000000000..301166807
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua
@@ -0,0 +1,6 @@
+package("bar")
+ set_sourcedir(path.join(os.scriptdir(), "src"))
+
+ on_install(function(package)
+ import("package.tools.xmake").install(package, {})
+ end) \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.cpp b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.cpp
new file mode 100644
index 000000000..f46c7119a
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.cpp
@@ -0,0 +1,9 @@
+module foo;
+
+import <cstdio>;
+
+namespace foo {
+ void say(const char *msg) {
+ std::printf("%s", msg);
+ }
+} \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp
new file mode 100644
index 000000000..4cab3d977
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp
@@ -0,0 +1,5 @@
+export module foo;
+
+export namespace foo {
+ void say(const char *);
+} \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua
new file mode 100644
index 000000000..d79b2ac54
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.release", "mode.debug")
+set_languages("c++20")
+
+target("foo")
+ set_kind("static")
+ add_files("*.cpp")
+ add_files("*.mpp", { install = true })
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/xmake.lua
new file mode 100644
index 000000000..19c87d866
--- /dev/null
+++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/xmake.lua
@@ -0,0 +1,6 @@
+package("foo")
+ set_sourcedir(path.join(os.scriptdir(), "src"))
+
+ on_install(function(package)
+ import("package.tools.xmake").install(package, {})
+ end) \ No newline at end of file
diff --git a/tests/projects/c++/modules/packages/src/main.cpp b/tests/projects/c++/modules/packages/src/main.cpp
new file mode 100644
index 000000000..10c501c4a
--- /dev/null
+++ b/tests/projects/c++/modules/packages/src/main.cpp
@@ -0,0 +1,7 @@
+import foo;
+import bar;
+
+int main() {
+ foo::say(bar());
+ return 0;
+}
diff --git a/tests/projects/c++/modules/packages/test.lua b/tests/projects/c++/modules/packages/test.lua
new file mode 100644
index 000000000..c18e5a1d0
--- /dev/null
+++ b/tests/projects/c++/modules/packages/test.lua
@@ -0,0 +1 @@
+inherit(".test_headerunits")
diff --git a/tests/projects/c++/modules/packages/xmake.lua b/tests/projects/c++/modules/packages/xmake.lua
new file mode 100644
index 000000000..fe3cc7dc5
--- /dev/null
+++ b/tests/projects/c++/modules/packages/xmake.lua
@@ -0,0 +1,11 @@
+add_rules("mode.release", "mode.debug")
+set_languages("c++20")
+
+add_repositories("my-repo my-repo")
+add_requires("foo", "bar")
+
+target("packages")
+ set_kind("binary")
+ add_files("src/*.cpp")
+ add_packages("foo", "bar")
+ set_policy("build.c++.modules", true)
diff --git a/tests/projects/c++/modules/test_headerunits.lua b/tests/projects/c++/modules/test_headerunits.lua
index 747ec6535..6a942e583 100644
--- a/tests/projects/c++/modules/test_headerunits.lua
+++ b/tests/projects/c++/modules/test_headerunits.lua
@@ -15,26 +15,27 @@ function main(t)
if is_subhost("windows") then
local vs = find_vstudio()
if vs and vs["2022"] then
- os.exec("xmake f -c")
+ os.exec("xmake f -c --yes")
_build()
end
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")
+ 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, "16.0") >= 0 then
- if is_host("linux") then
+ if clang and clang.version then
+ if semver.compare(clang.version, "15.0") >= 0 then
os.exec("xmake clean -a")
os.exec("xmake f --toolchain=clang -c")
_build()
- end
+ -- elseif semver.compare(clang.version, "15.0") >= 0 then
-- there is currently a bug on llvm git that prevent to build STL header units https://github.com/llvm/llvm-project/issues/58540
-- os.exec("xmake clean -a")
-- os.exec("xmake f --toolchain=clang --cxxflags=\"-stdlib=libc++\" -c")
-- _build()
+ end
end
end
end