summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-08-06 22:42:52 +0800
committerruki <[email protected]>2025-08-06 22:42:52 +0800
commitadfe022471427f1cdf0238db80f809c51ed9a753 (patch)
treea3e00bc9d3dee87501d3967601f09b6325f01f40
parent5ad9382acadf3a5d9e6cbe29ba408847b45148a1 (diff)
add linkgroups test
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.cc5
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.h3
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/dpdk/xmake.lua7
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.cc10
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.h3
-rw-r--r--tests/projects/c++/package_linkgroups/3rd/spdk/xmake.lua22
-rw-r--r--tests/projects/c++/package_linkgroups/src/main.cc9
-rw-r--r--tests/projects/c++/package_linkgroups/test.lua13
-rw-r--r--tests/projects/c++/package_linkgroups/xmake.lua35
9 files changed, 107 insertions, 0 deletions
diff --git a/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.cc b/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.cc
new file mode 100644
index 000000000..67b10df8c
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.cc
@@ -0,0 +1,5 @@
+#include "add.h"
+
+int add(int x, int y) {
+ return x + y;
+}
diff --git a/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.h b/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.h
new file mode 100644
index 000000000..43073ff76
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/dpdk/src/add.h
@@ -0,0 +1,3 @@
+#pragma once
+
+int add(int x, int y);
diff --git a/tests/projects/c++/package_linkgroups/3rd/dpdk/xmake.lua b/tests/projects/c++/package_linkgroups/3rd/dpdk/xmake.lua
new file mode 100644
index 000000000..8b10c9c7a
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/dpdk/xmake.lua
@@ -0,0 +1,7 @@
+add_rules("mode.debug", "mode.release")
+
+target("dpdk_add")
+ set_kind("static")
+ add_files("src/add.cc")
+ add_headerfiles("src/*.h")
+
diff --git a/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.cc b/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.cc
new file mode 100644
index 000000000..d56a165a4
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.cc
@@ -0,0 +1,10 @@
+#include "mul.h"
+#include "add.h"
+
+int mul(int x, int y) {
+ int result = 0;
+ for (int i = 0; i < y; i++) {
+ result = add(result, x);
+ }
+ return result;
+}
diff --git a/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.h b/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.h
new file mode 100644
index 000000000..a025f44bd
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/spdk/src/mul.h
@@ -0,0 +1,3 @@
+#pragma once
+
+int mul(int x, int y);
diff --git a/tests/projects/c++/package_linkgroups/3rd/spdk/xmake.lua b/tests/projects/c++/package_linkgroups/3rd/spdk/xmake.lua
new file mode 100644
index 000000000..329663840
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/3rd/spdk/xmake.lua
@@ -0,0 +1,22 @@
+add_rules("mode.debug", "mode.release")
+
+package("dpdk")
+ set_sourcedir(path.join(os.scriptdir(), "../../3rd/dpdk"))
+ on_install("linux", function (package)
+ import("package.tools.xmake").install(package)
+ end)
+ on_test(function (package)
+ assert(package:has_cxxincludes("add.h"))
+ end)
+package_end()
+
+add_includedirs("src")
+
+add_requires("dpdk")
+
+target("spdk_mul")
+ set_kind("static")
+ add_files("src/mul.cc")
+ add_headerfiles("src/*.h")
+ add_packages("dpdk")
+
diff --git a/tests/projects/c++/package_linkgroups/src/main.cc b/tests/projects/c++/package_linkgroups/src/main.cc
new file mode 100644
index 000000000..3115830fe
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/src/main.cc
@@ -0,0 +1,9 @@
+#include <iostream>
+#include "mul.h"
+
+
+int main(int argc, char** argv) {
+ int s = mul(3, 4);
+ std::cout << "hello world! " << s << std::endl;
+ return 0;
+}
diff --git a/tests/projects/c++/package_linkgroups/test.lua b/tests/projects/c++/package_linkgroups/test.lua
new file mode 100644
index 000000000..704959e28
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/test.lua
@@ -0,0 +1,13 @@
+function main(t)
+
+ -- freebsd ci is slower
+ if is_host("bsd") then
+ return
+ end
+
+ -- only for x86/x64, because it will take too long time on ci with arm/mips
+ if os.subarch():startswith("x") or os.subarch() == "i386" then
+ t:build()
+ end
+end
+
diff --git a/tests/projects/c++/package_linkgroups/xmake.lua b/tests/projects/c++/package_linkgroups/xmake.lua
new file mode 100644
index 000000000..fcc4b5edf
--- /dev/null
+++ b/tests/projects/c++/package_linkgroups/xmake.lua
@@ -0,0 +1,35 @@
+add_rules("mode.debug", "mode.release")
+
+package("dpdk")
+ set_sourcedir(path.join(os.scriptdir(), "3rd/dpdk"))
+ add_links("dpdk_add")
+ add_linkgroups("dpdk_add", {name = "dpdk", whole = true, group = true})
+ on_install("linux", function (package)
+ import("package.tools.xmake").install(package)
+ end)
+ on_test(function (package)
+ assert(package:has_cxxincludes("add.h"))
+ end)
+package_end()
+
+package("spdk")
+ set_sourcedir(path.join(os.scriptdir(), "3rd/spdk"))
+ add_deps("dpdk")
+ add_links("spdk_mul")
+ add_linkgroups("spdk_mul", {name = "dpdk", whole = true, group = true})
+ on_install("linux", function (package)
+ import("package.tools.xmake").install(package)
+ end)
+ on_test(function (package)
+ assert(package:has_cxxincludes("mul.h"))
+ end)
+package_end()
+
+add_requires("spdk")
+
+target("test")
+ set_kind("binary")
+ add_files("src/main.cc")
+ add_packages("spdk")
+ add_includedirs("src")
+