summaryrefslogtreecommitdiff
path: root/tests/projects/package/usage_requirements/xmake.lua
diff options
context:
space:
mode:
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)