diff options
| author | ruki <[email protected]> | 2023-10-24 22:40:36 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2023-10-24 22:40:36 +0800 |
| commit | 8d0e4717a14cd460428cc4d294bb1ae4dd100f6f (patch) | |
| tree | d116a97f656deb53bc6f4a18b8e1d2c8740cfec3 | |
| parent | 795272da127f97058d2d061e32ace82a8c2ff009 (diff) | |
fetch extras
| -rw-r--r-- | xmake/core/package/package.lua | 6 | ||||
| -rw-r--r-- | xmake/core/project/package.lua | 47 | ||||
| -rw-r--r-- | xmake/modules/package/manager/xmake/find_package.lua | 1 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/register_packages.lua | 2 |
4 files changed, 42 insertions, 14 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 28d66f7ca..769551bcb 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -925,12 +925,6 @@ function _instance:manifest_save() components.vars[component_name] = components.vars[component_name] or {} components.vars[component_name][name] = component_value end - local component_extra = comp:extraconf(name) - if component_extra then - components.extras = components.extras or {} - components.extras[component_name] = components.extras[component_name] or {} - components.extras[component_name][name] = component_extra - end end end end diff --git a/xmake/core/project/package.lua b/xmake/core/project/package.lua index 0e16a7e1b..cf372022f 100644 --- a/xmake/core/project/package.lua +++ b/xmake/core/project/package.lua @@ -161,23 +161,56 @@ function _instance:components_deps() return self:get("__components_deps") end --- get other extra information from package/on_fetch +-- get user extra configuration from package/on_fetch +-- @see https://github.com/xmake-io/xmake/issues/3106#issuecomment-1330143922 -- -- e.g. -- -- @code -- package("xxx") -- on_fetch(function (package) --- return {includedirs = "", links = "", extra = {foo = ""}} +-- return {includedirs = "", links = "", extras = {foo = ""}} -- end) -- -- @endcode -function _instance:extra(name) - local extra = self:get("extra") - if extra and name then - extra = extra[name] +-- +-- we can also get extra configuration from package/add_xxx +-- +-- e.g. +-- +-- @code +-- package("xxx") +-- add_linkgroups("foo", {group = true}) +-- +-- target:pkg("xxx"):extraconf("linkgroups", "foo", "group") +-- @endcode +-- +-- extras = { +-- linkgroups = { +-- z = { +-- group = true +-- } +-- } +-- } +-- +function _instance:extraconf(name, item, key) + local extraconfs = self:get("extras") + if not extraconfs then + return end - return extra + + -- get configuration + local extraconf = extraconfs[name] + + -- get configuration value + local value = extraconf + if item then + value = extraconf and extraconf[item] or nil + if value and key then + value = value[key] + end + end + return value end -- get order dependencies of the given component diff --git a/xmake/modules/package/manager/xmake/find_package.lua b/xmake/modules/package/manager/xmake/find_package.lua index a1f2dfac2..18d686409 100644 --- a/xmake/modules/package/manager/xmake/find_package.lua +++ b/xmake/modules/package/manager/xmake/find_package.lua @@ -245,6 +245,7 @@ function _find_package_from_repo(name, opt) -- get version and license result.version = manifest.version or path.filename(path.directory(path.directory(manifest_file))) result.license = manifest.license + result.extras = manifest.extras return result end diff --git a/xmake/modules/private/action/require/impl/register_packages.lua b/xmake/modules/private/action/require/impl/register_packages.lua index ae66b6e75..621e383d1 100644 --- a/xmake/modules/private/action/require/impl/register_packages.lua +++ b/xmake/modules/private/action/require/impl/register_packages.lua @@ -51,7 +51,7 @@ function _register_required_package_libs(instance, required_package, is_deps) fetchinfo.static = nil fetchinfo.shared = nil fetchinfo.installdir = nil - fetchinfo.extra = nil + fetchinfo.extras = nil fetchinfo.components = nil end |
