diff options
| author | ruki <[email protected]> | 2021-09-14 00:46:22 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-09-14 00:46:22 +0800 |
| commit | 8c8030ba48cda0c12ed7934b6dd4ffff5b191a33 (patch) | |
| tree | e08d02ca06b18d2deb329d11b4d14878837ddec0 | |
| parent | 7b931b248bcb5328b993637b6ebda3e9fa7c25ff (diff) | |
add after_load for target
| -rw-r--r-- | tests/projects/other/build_deps/xmake.lua | 16 | ||||
| -rw-r--r-- | xmake/core/project/target.lua | 19 |
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" |
