diff options
| author | ruki <[email protected]> | 2021-01-03 17:10:08 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-01-03 17:10:08 +0800 |
| commit | 2c2202599f9798659d252b6ee1f794eee7cf2f45 (patch) | |
| tree | 51e7205b6892be9687a6b219b6c019d0e4211be4 | |
| parent | 777001165dd469733d927d8ddea9de8fcb6736de (diff) | |
improve add_requireconfs
| -rw-r--r-- | tests/projects/package/depconfigs/xmake.lua | 8 | ||||
| -rw-r--r-- | xmake/actions/require/impl/package.lua | 48 |
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) |
