diff options
| author | ruki <[email protected]> | 2021-01-01 22:33:43 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-01-01 22:33:43 +0800 |
| commit | 18b68e6e7ab221b5ebd6c992bd02fa11c73d52ae (patch) | |
| tree | 5fcb1da8fcf653d2580db3478442983eede98625 | |
| parent | 0650d385e898d4bea721fa1014b5d881f4120c5d (diff) | |
use add_requireconfs
| -rw-r--r-- | tests/projects/package/depconfigs/xmake.lua | 19 | ||||
| -rw-r--r-- | xmake/actions/require/impl/package.lua | 46 | ||||
| -rw-r--r-- | xmake/core/project/project.lua | 14 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 51 |
4 files changed, 55 insertions, 75 deletions
diff --git a/tests/projects/package/depconfigs/xmake.lua b/tests/projects/package/depconfigs/xmake.lua index 33af8338a..7bf8eba87 100644 --- a/tests/projects/package/depconfigs/xmake.lua +++ b/tests/projects/package/depconfigs/xmake.lua @@ -1,11 +1,10 @@ -add_requires("libpng", {system = false, configs = {vs_runtime = "MD"}, - after_load = function (package) - --package:set("deps", "zlib 1.2.10", {system = false, configs = {cxflags = "-DTEST"}}) - package:extraconf_set("deps", "zlib", {system = false, configs = {cxflags = "-DTEST"}}) - end}) +add_requires("libpng", "libtiff", {system = false, configs = {vs_runtime = "MD"}}) +add_requires("libwebp") -add_requires("libtiff", {system = false, configs = {vs_runtime = "MD"}, - deps = {system = false, configs = {cxflags = "-DTEST2"}}}) +add_requireconfs("libwebp", {system = false, configs = {vs_runtime = "MD"}}) +add_requireconfs("libpng.zlib", {system = false, configs = {cxflags = "-DTEST1"}}) +add_requireconfs("libtiff.zlib", {system = false, configs = {cxflags = "-DTEST2"}}) +add_requireconfs("libwebp.*", {system = false, configs = {cxflags = "-DTEST3"}}) target("test") set_kind("binary") @@ -16,3 +15,9 @@ target("test2") set_kind("binary") add_files("src/*.c") add_packages("libtiff") + +target("test3") + set_kind("binary") + add_files("src/*.c") + add_packages("libwebp") + diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua index c11f43005..4a400bb34 100644 --- a/xmake/actions/require/impl/package.lua +++ b/xmake/actions/require/impl/package.lua @@ -82,15 +82,6 @@ end -- true: only get system package -- false: only get local packages -- --- custom on_load/after_load package script --- - add_requires("libpng", {after_load = function (package) --- -- modify dependent package version and configs --- -- package:set("deps", "zlib 1.2.10", {system = false, configs = {cxflags = "-DTEST"}}) --- --- -- only modify dependent package configs --- package:extraconf_set("deps", "zlib", {system = false, configs = {cxflags = "-DTEST"}}) --- end}) --- -- function _parse_require(require_str, requires_extra, parentinfo) @@ -183,8 +174,6 @@ function _parse_require(require_str, requires_extra, parentinfo) optional = parentinfo.optional or require_extra.optional, -- default: false, inherit parentinfo.optional verify = require_extra.verify, -- default: true, we can set false to ignore sha256sum and select any version external = require_extra.external, -- default: true, we use sysincludedirs/-isystem instead of -I/xxx - on_load = require_extra.on_load, -- optional, we use it to override package().on_load - after_load = require_extra.after_load -- optional, we use it to load some user custom configuration after loading package() } return required.packagename, required.requireinfo end @@ -418,17 +407,11 @@ function _load_package(packagename, requireinfo, opt) _check_package_configurations(package) -- do load - local on_load = requireinfo.on_load or package:script("load") + local on_load = package:script("load") if on_load then on_load(package) end - -- do after_load - local after_load = requireinfo.after_load - if after_load then - after_load(package) - end - -- load environments from the manifest to enable the environments of on_install() package:envs_load() @@ -443,34 +426,10 @@ function _load_package_depconfigs(package) -- get all extra configs of dependent packages local extraconfs = package:extraconf("deps") or {} - -- inherit depconfigs of root package - -- e.g. add_requires("libpng", {deps = {...}}) - -- - local deps = package:get("deps") - local requireinfo = package:requireinfo() - if requireinfo and requireinfo.deps then - local requiredeps = requireinfo.deps - for _, depstr in ipairs(deps) do - local depconf = extraconfs[depstr] - if not depconf then - depconf = {} - extraconfs[depstr] = depconf - end - depconf.configs = depconf.configs or {} - for k, v in pairs(requiredeps.configs) do - depconf.configs[k] = v - end - for k, v in pairs(requiredeps) do - if k ~= "configs" then - depconf[k] = v - end - end - end - end - -- inherit some builtin configs of root package -- e.g. add_requires("libpng", {configs = {vs_runtime = "MD"}}) -- + local deps = package:get("deps") if not package:config("shared") then for _, depstr in ipairs(deps) do local depconf = extraconfs[depstr] @@ -484,6 +443,7 @@ function _load_package_depconfigs(package) end end end + print(extraconfs) return extraconfs end diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index 6bb8d8b07..a495a300c 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -693,6 +693,7 @@ function project.apis() , "set_description" -- add_xxx , "add_requires" + , "add_requireconfs" , "add_repositories" } , paths = @@ -1002,10 +1003,23 @@ function project.requires_str() requires_str, requires_extra = project.get("requires"), project.get("__extra_requires") project._memcache():set("requires_str", requires_str or false) project._memcache():set("requires_extra", requires_extra) + + -- get raw requireconfs + local requireconfs_str, requireconfs_extra = project.get("requireconfs"), project.get("__extra_requireconfs") + project._memcache():set("requireconfs_str", requireconfs_str or false) + project._memcache():set("requireconfs_extra", requireconfs_extra) end return requires_str or nil, requires_extra end +-- get string requireconfs +function project.requireconfs_str() + project.requires_str() + local requireconfs_str = project._memcache():get("requireconfs_str") + local requireconfs_extra = project._memcache():get("requireconfs_extra") + return requireconfs_str, requireconfs_extra +end + -- get the given rule function project.rule(name) return project.rules()[name] diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 1e5faa2a9..a72bd5f92 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -36,31 +36,32 @@ local package = require("package/package") local import = require("sandbox/modules/import") -- export some readonly interfaces -sandbox_core_project.get = project.get -sandbox_core_project.rule = project.rule -sandbox_core_project.rules = project.rules -sandbox_core_project.toolchain = project.toolchain -sandbox_core_project.toolchains = project.toolchains -sandbox_core_project.target = project.target -sandbox_core_project.targets = project.targets -sandbox_core_project.ordertargets = project.ordertargets -sandbox_core_project.option = project.option -sandbox_core_project.options = project.options -sandbox_core_project.rootfile = project.rootfile -sandbox_core_project.allfiles = project.allfiles -sandbox_core_project.rcfile = project.rcfile -sandbox_core_project.directory = project.directory -sandbox_core_project.name = project.name -sandbox_core_project.modes = project.modes -sandbox_core_project.mtimes = project.mtimes -sandbox_core_project.version = project.version -sandbox_core_project.require = project.require -sandbox_core_project.requires = project.requires -sandbox_core_project.requires_str = project.requires_str -sandbox_core_project.policy = project.policy -sandbox_core_project.tmpdir = project.tmpdir -sandbox_core_project.tmpfile = project.tmpfile -sandbox_core_project.is_loaded = project.is_loaded +sandbox_core_project.get = project.get +sandbox_core_project.rule = project.rule +sandbox_core_project.rules = project.rules +sandbox_core_project.toolchain = project.toolchain +sandbox_core_project.toolchains = project.toolchains +sandbox_core_project.target = project.target +sandbox_core_project.targets = project.targets +sandbox_core_project.ordertargets = project.ordertargets +sandbox_core_project.option = project.option +sandbox_core_project.options = project.options +sandbox_core_project.rootfile = project.rootfile +sandbox_core_project.allfiles = project.allfiles +sandbox_core_project.rcfile = project.rcfile +sandbox_core_project.directory = project.directory +sandbox_core_project.name = project.name +sandbox_core_project.modes = project.modes +sandbox_core_project.mtimes = project.mtimes +sandbox_core_project.version = project.version +sandbox_core_project.require = project.require +sandbox_core_project.requires = project.requires +sandbox_core_project.requires_str = project.requires_str +sandbox_core_project.requireconfs_str = project.requireconfs_str +sandbox_core_project.policy = project.policy +sandbox_core_project.tmpdir = project.tmpdir +sandbox_core_project.tmpfile = project.tmpfile +sandbox_core_project.is_loaded = project.is_loaded -- check project options function sandbox_core_project.check() |
