summaryrefslogtreecommitdiff
path: root/tests/projects/package/usage_requirements/xmake.lua
diff options
context:
space:
mode:
authorNorthn <[email protected]>2026-08-18 19:05:25 +0400
committerNorthn <[email protected]>2026-08-18 19:27:21 +0400
commit501631cfd370de631d5487bebbbc0980f0a5069b (patch)
tree6c381f5f08bcdef9860f0b802edf798bbc190cf1 /tests/projects/package/usage_requirements/xmake.lua
parentde769d5574d92a37253d16b9617d998605bfd727 (diff)
propagate package vector extensions to consumers
Diffstat (limited to 'tests/projects/package/usage_requirements/xmake.lua')
-rw-r--r--tests/projects/package/usage_requirements/xmake.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/projects/package/usage_requirements/xmake.lua b/tests/projects/package/usage_requirements/xmake.lua
new file mode 100644
index 000000000..7f9eb9107
--- /dev/null
+++ b/tests/projects/package/usage_requirements/xmake.lua
@@ -0,0 +1,35 @@
+add_rules("mode.debug", "mode.release")
+
+add_repositories("usage-requirements-repo repo")
+add_requires("usage-requirements", {system = false})
+
+local function _has_value_from(target, name, source, expected)
+ local values = target:get_from(name, source, {interface = true})
+ for _, source_values in ipairs(values or {}) do
+ if table.contains(table.wrap(source_values), expected) then
+ return true
+ end
+ end
+end
+
+target("usage")
+ set_kind("static")
+ add_files("src/usage.cpp")
+ add_packages("usage-requirements", {components = "enabled", public = true})
+ before_build(function (target)
+ local package = assert(target:pkg("usage-requirements"))
+ assert(table.contains(package:get("vectorexts"), "avx"))
+ assert(_has_value_from(target, "vectorexts", "package::*", "avx"))
+ assert(_has_value_from(target, "vectorexts", "package::*", "avx2"))
+ assert(not _has_value_from(target, "vectorexts", "package::*", "avx512"))
+ end)
+
+target("consumer")
+ set_kind("binary")
+ add_deps("usage")
+ add_files("src/main.cpp")
+ before_build(function (target)
+ assert(_has_value_from(target, "vectorexts", "dep::usage/package::*", "avx"))
+ assert(_has_value_from(target, "vectorexts", "dep::usage/package::*", "avx2"))
+ assert(not _has_value_from(target, "vectorexts", "dep::usage/package::*", "avx512"))
+ end)