summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-09-07 09:19:34 +0800
committerruki <[email protected]>2017-09-07 09:19:34 +0800
commitb6152f7d7c21e9d04957eff3b4ef0c40a915aec4 (patch)
tree66d5efad03965da43e9cce25512a100bd2d201d8
parent9b6227b244cb19fccbed759ef0997c568a4b1191 (diff)
optimize package option switch
-rw-r--r--xmake/actions/require/package.lua33
1 files changed, 19 insertions, 14 deletions
diff --git a/xmake/actions/require/package.lua b/xmake/actions/require/package.lua
index f9d7f52ae..1aefc858f 100644
--- a/xmake/actions/require/package.lua
+++ b/xmake/actions/require/package.lua
@@ -223,23 +223,28 @@ function _load_packages(requires)
local packages = {}
for packagename, requireinfo in pairs(load_requires(requires)) do
- -- load package instance
- local package = _load_package(packagename, requireinfo)
+ -- attempt to get project option about this package
+ local packageopt = project.option(packagename)
+ if packageopt == nil or packageopt:enabled() then -- this package is enabled?
- -- load dependent packages and save them first of this package
- local deps = package:get("deps")
- if deps then
- local packagedeps = {}
- for _, dep in ipairs(_load_packages(deps)) do
- table.insert(packages, dep)
- packagedeps[dep:name()] = dep
+ -- load package instance
+ local package = _load_package(packagename, requireinfo)
+
+ -- load dependent packages and save them first of this package
+ local deps = package:get("deps")
+ if deps then
+ local packagedeps = {}
+ for _, dep in ipairs(_load_packages(deps)) do
+ table.insert(packages, dep)
+ packagedeps[dep:name()] = dep
+ end
+ package._DEPS = packagedeps
+ package._ORDERDEPS = table.unique(_sort_packagedeps(package))
end
- package._DEPS = packagedeps
- package._ORDERDEPS = table.unique(_sort_packagedeps(package))
- end
- -- save this package instance
- table.insert(packages, package)
+ -- save this package instance
+ table.insert(packages, package)
+ end
end
-- ok?