summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-01-19 18:26:22 +0800
committerruki <[email protected]>2019-01-19 18:26:22 +0800
commit7b28b1dfe2716f19cb3cd59325d5192c4e79d700 (patch)
tree17246377903e0e53575c32f385dc9db1be9b5224
parente3d5b1f0d7c8670ce88cee55b240309262798ac8 (diff)
support semver for find_package
-rw-r--r--xmake/core/sandbox/modules/import/lib/detect/find_package.lua12
1 files changed, 10 insertions, 2 deletions
diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_package.lua b/xmake/core/sandbox/modules/import/lib/detect/find_package.lua
index 07660efea..de082c4ee 100644
--- a/xmake/core/sandbox/modules/import/lib/detect/find_package.lua
+++ b/xmake/core/sandbox/modules/import/lib/detect/find_package.lua
@@ -489,12 +489,20 @@ function sandbox_lib_detect_find_package.main(name, opt)
return utils.ifelse(result, result, nil)
end
+ -- get version from the name, e.g. find("zlib ~1.x")
+ local nameinfo = name:split("%s+")
+ local require_ver = opt.version
+ if #nameinfo > 1 then
+ name = nameinfo[1]
+ require_ver = require_ver or nameinfo[2]
+ end
+
-- find package
result = sandbox_lib_detect_find_package._find(name, opt)
-- match version?
- if opt.version and result then
- if not result.version or not semver.satisfies(result.version, opt.version) then
+ if require_ver and result then
+ if not result.version or not semver.satisfies(result.version, require_ver) then
result = nil
end
end