summaryrefslogtreecommitdiff
path: root/xmake/scripts/action/_clean.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-02 15:39:44 +0800
committerruki <[email protected]>2015-06-02 15:39:44 +0800
commitf639faef588a95b28ec02c781dee2a581f7a7992 (patch)
treefb50924f053cf26b9ad53c46c440aceeb82f8e45 /xmake/scripts/action/_clean.lua
parent6ed13d09ec37896b0176e90ddaa99c90ecaccd1d (diff)
impl rebuild and update
Diffstat (limited to 'xmake/scripts/action/_clean.lua')
-rw-r--r--xmake/scripts/action/_clean.lua105
1 files changed, 4 insertions, 101 deletions
diff --git a/xmake/scripts/action/_clean.lua b/xmake/scripts/action/_clean.lua
index 8c00e7b88..8f026c057 100644
--- a/xmake/scripts/action/_clean.lua
+++ b/xmake/scripts/action/_clean.lua
@@ -24,112 +24,15 @@
local _clean = _clean or {}
-- load modules
-local os = require("base/os")
-local rule = require("base/rule")
-local utils = require("base/utils")
+local clean = require("base/clean")
local config = require("base/config")
-local project = require("base/project")
-
--- remove the given files or directories
-function _clean._remove(filedirs)
-
- -- check
- assert(filedirs)
-
- -- wrap it first
- filedirs = utils.wrap(filedirs)
- for _, filedir in ipairs(filedirs) do
-
- -- exists? remove it
- if os.exists(filedir) then
- -- remove it
- local ok, errors = os.rm(filedir)
- if not ok then
- -- error
- utils.error(errors)
- return false
- end
- end
- end
-
- -- ok
- return true
-end
-
--- remove the given target_name
-function _clean._remove_target(target_name, target, buildir)
-
- -- check
- assert(target_name and target)
-
- -- remove the target file
- if not _clean._remove(rule.targetfile(target_name, target, buildir)) then
- return false
- end
-
- -- remove the object files
- if not _clean._remove(rule.objectfiles(target_name, target, rule.sourcefiles(target), buildir)) then
- return false
- end
-
- -- ok
- return true
-end
-
--- remove the given target and all dependent targets
-function _clean._remove_target_and_deps(target_name, buildir)
-
- -- the targets
- local targets = project.targets()
- assert(targets)
-
- -- the target
- local target = targets[target_name]
- assert(target)
-
- -- remove the target
- if not _clean._remove_target(target_name, target, buildir) then
- return false
- end
-
- -- exists the dependent targets?
- if target.deps then
- local deps = utils.wrap(target.deps)
- for _, dep in ipairs(deps) do
- if not _clean._remove_target_and_deps(dep, buildir) then return false end
- end
- end
-
- -- ok
- return true
-end
-- done the given config
function _clean.done()
- -- the options
- local options = xmake._OPTIONS
- assert(options)
-
- -- the build directory
- local buildir = config.get("buildir")
- assert(buildir)
-
- -- the target name
- local target_name = options.target
- if target_name and target_name ~= "all" then
- -- remove target
- if not _clean._remove_target_and_deps(target_name, buildir) then return false end
- else
-
- -- the targets
- local targets = project.targets()
- assert(targets)
-
- -- remove targets
- for target_name, target in pairs(targets) do
- if not _clean._remove_target(target_name, target, buildir) then return false end
- end
+ -- clean the current target
+ if not clean.remove(config.get("target")) then
+ return false
end
-- trace