summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2016-07-04 16:25:57 +0800
committerruki <[email protected]>2016-07-04 16:26:02 +0800
commit721ea838ab717b2a4b477cc239e09b2a5de51878 (patch)
tree3069b7741a960ab041e50b364a9dcdb8c13a580a
parent1ec6011956e78dedd7eea87f484b0a3c56cfef27 (diff)
optimizate to clean
-rwxr-xr-xxmake/actions/clean/main.lua14
-rwxr-xr-xxmake/actions/package/main.lua6
2 files changed, 16 insertions, 4 deletions
diff --git a/xmake/actions/clean/main.lua b/xmake/actions/clean/main.lua
index 0ac4d7819..18ddea50d 100755
--- a/xmake/actions/clean/main.lua
+++ b/xmake/actions/clean/main.lua
@@ -95,11 +95,17 @@ function _clean_target(target)
script(target)
end
end
+
end
-- clean the given target and all dependent targets
function _clean_target_and_deps(target)
+ -- this target have been finished?
+ if _g.finished[target:name()] then
+ return
+ end
+
-- remove the target
_clean_target(target)
@@ -107,6 +113,9 @@ function _clean_target_and_deps(target)
for _, dep in ipairs(target:get("deps")) do
_clean_target_and_deps(project.target(dep))
end
+
+ -- finished
+ _g.finished[target:name()] = true
end
-- clean the given target
@@ -122,7 +131,7 @@ function _clean(targetname)
-- clean targets
for _, target in pairs(project.targets()) do
- _clean_target(target)
+ _clean_target_and_deps(target)
end
end
@@ -148,6 +157,9 @@ function main()
-- config it first
task.run("config", {target = targetname})
+ -- init finished states
+ _g.finished = {}
+
-- enter project directory
local olddir = os.cd(project.directory())
diff --git a/xmake/actions/package/main.lua b/xmake/actions/package/main.lua
index 453725e13..42af3ca0a 100755
--- a/xmake/actions/package/main.lua
+++ b/xmake/actions/package/main.lua
@@ -187,12 +187,12 @@ function main()
-- get the target name
local targetname = option.get("target")
- -- init finished states
- _g.finished = {}
-
-- build it first
task.run("build", {target = targetname})
+ -- init finished states
+ _g.finished = {}
+
-- package all?
if targetname == "all" then
for _, target in pairs(project.targets()) do