summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-04-20 00:30:50 +0800
committerruki <[email protected]>2021-04-20 00:30:50 +0800
commitc34a476b7f424bbb9749c62019b29de4b8f08c85 (patch)
tree9640796705b508e141aa7428f41bc4979bf7e650
parent4bb2d8aa6465cc1040b55557329bebb55e75c0bc (diff)
support private package for add_requires
-rw-r--r--xmake/core/package/package.lua6
-rw-r--r--xmake/modules/private/action/require/impl/package.lua12
2 files changed, 17 insertions, 1 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 8370961eb..3decd832e 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -378,6 +378,12 @@ function _instance:is_optional()
return requireinfo and requireinfo.optional or false
end
+-- is private package?
+function _instance:is_private()
+ local requireinfo = self:requireinfo()
+ return requireinfo and requireinfo.private or false
+end
+
-- verify sha256sum and versions?
function _instance:is_verify()
local requireinfo = self:requireinfo()
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index fa11d4fc5..f9b3da490 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -68,6 +68,9 @@ end
-- - add_requires("zlib~debug", {debug = true})
-- - add_requires("zlib~shared", {configs = {shared = true}, alias = "zlib_shared"})
--
+-- private package, only for installation, do not export any links/includes and environments to target
+-- - add_requires("zlib", {private = true})
+--
-- {system = nil/true/false}:
-- nil: get remote or system packages
-- true: only get system package
@@ -168,6 +171,7 @@ function _load_require(require_str, requires_extra, parentinfo)
optional = parentinfo.optional or require_extra.optional, -- default: false, inherit parentinfo.optional
verify = require_extra.verify, -- default: true, we can set false to ignore sha256sum and select any version
external = require_extra.external, -- default: true, we use sysincludedirs/-isystem instead of -I/xxx
+ private = require_extra.private -- default: false, private package, only for installation, do not export any links/includes and environments
}
return required.packagename, required.requireinfo
end
@@ -207,7 +211,7 @@ function _sort_packagedeps(package, onlylink)
for _, depname in ipairs(deps) do
local packagename = _parse_require(depname)
local dep = package:dep(packagename)
- if dep and (onlylink ~= true or dep:is_library()) then
+ if dep and (onlylink ~= true or (dep:is_library() and not dep:is_private())) then
table.join2(orderdeps, _sort_packagedeps(dep, onlylink))
table.insert(orderdeps, dep)
end
@@ -478,6 +482,9 @@ function _inherit_parent_configs(requireinfo, package, parentinfo)
if parentinfo.arch then
requireinfo.arch = parentinfo.arch
end
+ if parentinfo.private ~= nil then
+ requireinfo.private = parentinfo.private
+ end
requireinfo_configs.toolchains = requireinfo_configs.toolchains or parentinfo_configs.toolchains
requireinfo.configs = requireinfo_configs
end
@@ -708,6 +715,9 @@ function get_configs_str(package)
if package:is_optional() then
table.insert(configs, "optional")
end
+ if package:is_private() then
+ table.insert(configs, "private")
+ end
local requireinfo = package:requireinfo()
if requireinfo then
if requireinfo.plat then