diff options
| author | Arthur Laurent <[email protected]> | 2023-01-08 15:55:56 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-01-08 15:55:56 +0100 |
| commit | 8749422a005d5150fccbfe807fbc618361a2afa1 (patch) | |
| tree | 51809e3b148bcf03bb4514e837f253ca5dc92808 /tests/projects/c++/modules | |
| parent | c394913eafbc3a24485a0c88b0d891e9954b302b (diff) | |
| parent | 476f1c3592aa55cd10a6986c045f1be834cf2a83 (diff) | |
Merge branch 'dev' into improve-clang-modules-support-with-libc++
Diffstat (limited to 'tests/projects/c++/modules')
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 |
