summaryrefslogtreecommitdiff
path: root/xmake/actions/require/impl/package.lua
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 /xmake/actions/require/impl/package.lua
parent777001165dd469733d927d8ddea9de8fcb6736de (diff)
improve add_requireconfs
Diffstat (limited to 'xmake/actions/require/impl/package.lua')
-rw-r--r--xmake/actions/require/impl/package.lua48
1 files changed, 40 insertions, 8 deletions
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)