summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-09-14 00:46:22 +0800
committerruki <[email protected]>2021-09-14 00:46:22 +0800
commit8c8030ba48cda0c12ed7934b6dd4ffff5b191a33 (patch)
treee08d02ca06b18d2deb329d11b4d14878837ddec0
parent7b931b248bcb5328b993637b6ebda3e9fa7c25ff (diff)
add after_load for target
-rw-r--r--tests/projects/other/build_deps/xmake.lua16
-rw-r--r--xmake/core/project/target.lua19
2 files changed, 27 insertions, 8 deletions
diff --git a/tests/projects/other/build_deps/xmake.lua b/tests/projects/other/build_deps/xmake.lua
index 2458ba7df..9fe31c900 100644
--- a/tests/projects/other/build_deps/xmake.lua
+++ b/tests/projects/other/build_deps/xmake.lua
@@ -4,7 +4,7 @@ target("dep1")
set_kind("static")
add_deps("dep3")
add_files("src/interface.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep3"):targetfile())
end)
@@ -20,7 +20,7 @@ target("dep2")
set_kind("static")
add_deps("dep3")
add_files("src/interface.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep3"):targetfile())
end)
@@ -36,7 +36,7 @@ target("dep3")
set_kind("static")
add_files("src/interface.c")
add_deps("dep4", "dep5")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep4"):targetfile())
os.rm(target:dep("dep5"):targetfile())
@@ -51,7 +51,7 @@ target("dep3")
target("dep4")
set_kind("static")
add_files("src/interface.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
end)
after_link(function (target)
@@ -62,7 +62,7 @@ target("dep4")
target("dep5")
set_kind("static")
add_files("src/interface.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
end)
after_link(function (target)
@@ -74,7 +74,7 @@ target("test1")
set_kind("binary")
add_deps("dep1", "dep2")
add_files("src/test.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep1"):targetfile())
os.rm(target:dep("dep2"):targetfile())
@@ -94,7 +94,7 @@ target("test2")
set_kind("binary")
add_deps("dep1")
add_files("src/test.c")
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep1"):targetfile())
os.rm(target:dep("dep3"):targetfile())
@@ -120,7 +120,7 @@ target("test3")
add_rules("test3")
add_files("src/test.c")
set_policy("build.across_targets_in_parallel", false)
- on_load(function (target)
+ after_load(function (target)
os.rm(target:targetfile())
os.rm(target:dep("dep1"):targetfile())
os.rm(target:dep("dep3"):targetfile())
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 0ff4222fa..c7d2adc5f 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -133,6 +133,9 @@ function _instance:_load()
return false, errors
end
end
+
+ -- mark as loaded
+ self._LOADED = true
return true
end
@@ -142,6 +145,15 @@ function _instance:_load_after()
-- enter the environments of the target packages
local oldenvs = os.addenvs(self:pkgenvs())
+ -- do load for target
+ local after_load = self:script("load_after")
+ if after_load then
+ local ok, errors = sandbox.load(after_load, self)
+ if not ok then
+ return false, errors
+ end
+ end
+
-- do after_load with target rules
local ok, errors = self:_load_rules("after")
if not ok then
@@ -608,11 +620,17 @@ end
-- get target deps
function _instance:deps()
+ if not self._LOADED then
+ os.raise("please call target:deps() or target:dep() in after_load()!")
+ end
return self._DEPS
end
-- get target ordered deps
function _instance:orderdeps()
+ if not self._LOADED then
+ os.raise("please call target:orderdeps() in after_load()!")
+ end
return self._ORDERDEPS
end
@@ -2003,6 +2021,7 @@ function target.apis()
, "target.before_uninstall"
-- target.after_xxx
, "target.after_run"
+ , "target.after_load"
, "target.after_link"
, "target.after_build"
, "target.after_build_file"