summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-09-30 22:44:48 +0800
committerruki <[email protected]>2020-09-30 22:44:48 +0800
commit5a80649e34492d8361d0d9e1cfeb00f30913345f (patch)
treedc5de339e10544531adda7e2cb02c1521c8bf136
parent4222cd03180c03accff03b61731dc0be9f4f748b (diff)
export clean action module
-rw-r--r--xmake/actions/clean/main.lua81
-rw-r--r--xmake/modules/action/clean/main.lua76
2 files changed, 83 insertions, 74 deletions
diff --git a/xmake/actions/clean/main.lua b/xmake/actions/clean/main.lua
index 32a1b820a..d51ae399c 100644
--- a/xmake/actions/clean/main.lua
+++ b/xmake/actions/clean/main.lua
@@ -28,67 +28,11 @@ import("core.project.project")
import("core.platform.platform")
import("core.platform.environment")
import("private.action.clean.remove_files")
-
--- do clean target
-function _do_clean_target(target)
-
- -- is phony?
- if target:isphony() then
- return
- end
-
- -- remove the target file
- remove_files(target:targetfile())
-
- -- remove the symbol file
- remove_files(target:symbolfile())
-
- -- remove the c/c++ precompiled header file
- remove_files(target:pcoutputfile("c"))
- remove_files(target:pcoutputfile("cxx"))
-
- -- TODO remove the header files (deprecated)
- local _, dstheaders = target:headers()
- remove_files(dstheaders)
-
- -- remove the clean files
- remove_files(target:get("cleanfiles"))
-
- -- remove all?
- if option.get("all") then
-
- -- TODO remove the config.h file (deprecated)
- remove_files(target:configheader())
-
- -- remove all dependent files for each platform
- remove_files(target:dependir({root = true}))
-
- -- remove all object files for each platform
- remove_files(target:objectdir({root = true}))
-
- -- remove all autogen files for each platform
- remove_files(target:autogendir({root = true}))
- else
-
- -- remove dependent files for the current platform
- remove_files(target:dependir())
-
- -- remove object files for the current platform
- remove_files(target:objectdir())
-
- -- remove autogen files for the current platform
- remove_files(target:autogendir())
- end
-end
+import("action.clean", {alias = "_do_clean_target"})
-- on clean target
function _on_clean_target(target)
- -- has been disabled?
- if target:get("enabled") == false then
- return
- end
-
-- build target with rules
local done = false
for _, r in ipairs(target:orderules()) do
@@ -107,6 +51,11 @@ end
-- clean the given target files
function _clean_target(target)
+ -- has been disabled?
+ if target:get("enabled") == false then
+ return
+ end
+
-- enter the environments of the target packages
local oldenvs = {}
for name, values in pairs(target:pkgenvs()) do
@@ -119,13 +68,6 @@ function _clean_target(target)
{
target:script("clean_before")
, function (target)
-
- -- has been disabled?
- if target:get("enabled") == false then
- return
- end
-
- -- clean rules
for _, r in ipairs(target:orderules()) do
local before_clean = r:script("clean_before")
if before_clean then
@@ -135,13 +77,6 @@ function _clean_target(target)
end
, target:script("clean", _on_clean_target)
, function (target)
-
- -- has been disabled?
- if target:get("enabled") == false then
- return
- end
-
- -- clean rules
for _, r in ipairs(target:orderules()) do
local after_clean = r:script("clean_after")
if after_clean then
@@ -199,10 +134,8 @@ function _clean(targetname)
end
end
- -- remove all
+ -- remove the configure directory if remove all
if option.get("all") then
-
- -- remove the configure directory
remove_files(config.directory())
end
end
diff --git a/xmake/modules/action/clean/main.lua b/xmake/modules/action/clean/main.lua
new file mode 100644
index 000000000..3669bb65b
--- /dev/null
+++ b/xmake/modules/action/clean/main.lua
@@ -0,0 +1,76 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-2020, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file main.lua
+--
+
+-- imports
+import("core.base.option")
+import("private.action.clean.remove_files")
+
+-- the builtin clean main entry
+function main(target)
+
+ -- is phony?
+ if target:isphony() then
+ return
+ end
+
+ -- remove the target file
+ remove_files(target:targetfile())
+
+ -- remove the symbol file
+ remove_files(target:symbolfile())
+
+ -- remove the c/c++ precompiled header file
+ remove_files(target:pcoutputfile("c"))
+ remove_files(target:pcoutputfile("cxx"))
+
+ -- TODO remove the header files (deprecated)
+ local _, dstheaders = target:headers()
+ remove_files(dstheaders)
+
+ -- remove the clean files
+ remove_files(target:get("cleanfiles"))
+
+ -- remove all?
+ if option.get("all") then
+
+ -- TODO remove the config.h file (deprecated)
+ remove_files(target:configheader())
+
+ -- remove all dependent files for each platform
+ remove_files(target:dependir({root = true}))
+
+ -- remove all object files for each platform
+ remove_files(target:objectdir({root = true}))
+
+ -- remove all autogen files for each platform
+ remove_files(target:autogendir({root = true}))
+ else
+
+ -- remove dependent files for the current platform
+ remove_files(target:dependir())
+
+ -- remove object files for the current platform
+ remove_files(target:objectdir())
+
+ -- remove autogen files for the current platform
+ remove_files(target:autogendir())
+ end
+end
+