summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-01-03 17:10:08 +0800
committerruki <[email protected]>2021-01-03 17:10:08 +0800
commit2c2202599f9798659d252b6ee1f794eee7cf2f45 (patch)
tree51e7205b6892be9687a6b219b6c019d0e4211be4
parent777001165dd469733d927d8ddea9de8fcb6736de (diff)
improve add_requireconfs
-rw-r--r--tests/projects/package/depconfigs/xmake.lua8
-rw-r--r--xmake/actions/require/impl/package.lua48
2 files changed, 44 insertions, 12 deletions
diff --git a/tests/projects/package/depconfigs/xmake.lua b/tests/projects/package/depconfigs/xmake.lua
index d366f06ce..d18fee519 100644
--- a/tests/projects/package/depconfigs/xmake.lua
+++ b/tests/projects/package/depconfigs/xmake.lua
@@ -1,10 +1,10 @@
add_requires("libpng", "libtiff", {system = false, configs = {vs_runtime = "MD"}})
add_requires("libwebp")
-add_requireconfs("libwebp", {system = false, configs = {shared = true, vs_runtime = "MD"}})
-add_requireconfs("libpng.zlib", {system = false, configs = {cxflags = "-DTEST1"}, version = "1.2.10"})
-add_requireconfs("libtiff.*", {system = false, configs = {cxflags = "-DTEST2"}})
-add_requireconfs("libwebp.**", {system = false, configs = {cxflags = "-DTEST3"}})
+add_requireconfs("libwebp", {system = false, configs = {shared = true, vs_runtime = "MD"}})
+add_requireconfs("libpng.zlib", {system = false, configs = {cxflags = "-DTEST1"}, version = "1.2.10"})
+add_requireconfs("libtiff.*|cmake", {system = false, configs = {cxflags = "-DTEST2"}})
+add_requireconfs("libwebp.**|cmake", {system = false, configs = {cxflags = "-DTEST3"}})
target("test")
set_kind("binary")
diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua
index 78e34863d..ebd87bf9c 100644
--- a/xmake/actions/require/impl/package.lua
+++ b/xmake/actions/require/impl/package.lua
@@ -320,24 +320,56 @@ end
-- match require path
function _match_requirepath(requirepath, requireconf)
- local pattern = requireconf
+
+ -- get the excludes
+ local excludes = requireconf:match("|.*$")
+ if excludes then excludes = excludes:split("|", {plain = true}) end
+
+ -- translate excludes
+ if excludes then
+ local _excludes = {}
+ for _, exclude in ipairs(excludes) do
+ exclude = exclude:gsub("([%+%.%-%^%$%(%)%%])", "%%%1")
+ exclude = exclude:gsub("%*%*", "\001")
+ exclude = exclude:gsub("%*", "\002")
+ exclude = exclude:gsub("\001", ".*")
+ exclude = exclude:gsub("\002", "[^.]*")
+ exclude = string.ipattern(exclude, true)
+ table.insert(_excludes, exclude)
+ end
+ excludes = _excludes
+ end
+
+ -- do match
+ local pattern = requireconf:gsub("|.*$", "")
pattern = pattern:gsub("([%+%.%-%^%$%(%)%%])", "%%%1")
pattern = pattern:gsub("%*%*", "\001")
pattern = pattern:gsub("%*", "\002")
pattern = pattern:gsub("\001", ".*")
pattern = pattern:gsub("\002", "[^.]*")
pattern = string.ipattern(pattern, true)
- return (requirepath:match('^' .. pattern .. '$'))
+ if (requirepath:match('^' .. pattern .. '$')) then
+ local splitinfo = requireconf:split("*", {plain = true, limit = 2})
+ if #splitinfo == 2 then
+ for _, exclude in ipairs(excludes) do
+ pattern = splitinfo[1] .. exclude
+ if (requirepath:match('^' .. pattern .. '$')) then
+ return false
+ end
+ end
+ end
+ return true
+ end
end
-- load requireinfo and merge requireconfs
--
--- add_requireconfs("*", {system = false, configs = {vs_runtime = "MD"}})
--- add_requireconfs("lib*", {system = false, configs = {vs_runtime = "MD"}})
--- add_requireconfs("libwebp", {system = false, configs = {vs_runtime = "MD"}})
--- add_requireconfs("libpng.zlib", {system = false, configs = {cxflags = "-DTEST1"}, version = "1.2.10"})
--- add_requireconfs("libtiff.*", {system = false, configs = {cxflags = "-DTEST2"}})
--- add_requireconfs("libwebp.**", {system = false, configs = {cxflags = "-DTEST3"}}) -- recursive deps
+-- add_requireconfs("*", {system = false, configs = {vs_runtime = "MD"}})
+-- add_requireconfs("lib*", {system = false, configs = {vs_runtime = "MD"}})
+-- add_requireconfs("libwebp", {system = false, configs = {vs_runtime = "MD"}})
+-- add_requireconfs("libpng.zlib", {system = false, configs = {cxflags = "-DTEST1"}, version = "1.2.10"})
+-- add_requireconfs("libtiff.*", {system = false, configs = {cxflags = "-DTEST2"}})
+-- add_requireconfs("libwebp.**|cmake|autoconf", {system = false, configs = {cxflags = "-DTEST3"}}) -- recursive deps
--
function _load_requireinfo(packagename, requireinfo, requirepath)