summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-05-14 00:52:47 +0800
committerruki <[email protected]>2024-05-14 00:52:47 +0800
commit3cf9f4d5b831280e2668557a09f0e21441f41802 (patch)
tree35232883623058d1c5f58663dc299818d6a15355
parent7b61af9bfeab6bd8d7dcc33baba3607abaa03928 (diff)
improve package links
-rw-r--r--xmake/core/project/target.lua36
1 files changed, 28 insertions, 8 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 1cc0c0093..58c5c89d9 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -303,14 +303,17 @@ end
-- get values from target packages with {interface|public = ...}
function _instance:_get_from_packages(name, result_values, result_sources, opt)
+ local function _filter_libfiles(libfiles)
+ local result = {}
+ for _, libfile in ipairs(table.wrap(libfiles)) do
+ if not libfile:endswith(".dll") then
+ table.insert(result, libfiles)
+ end
+ end
+ return table.unwrap(result)
+ end
for _, pkg in ipairs(self:orderpkgs(opt)) do
- -- use full link path instead of links
- -- @see https://github.com/xmake-io/xmake/issues/5066
- local valuename = name
local configinfo = self:pkgconfig(pkg:name())
- if name == "links" and configinfo and configinfo.linkpath and pkg:get("libfiles") then
- valuename = "libfiles"
- end
-- get values from package components
-- e.g. `add_packages("sfml", {components = {"graphics", "window"}})`
local selected_components = configinfo and configinfo.components or pkg:components_default()
@@ -331,7 +334,16 @@ function _instance:_get_from_packages(name, result_values, result_sources, opt)
if components_enabled:has(component_name) then
local info = components[component_name]
if info then
- table.join2(values, info[valuename])
+ local compvalues = info[name]
+ -- use full link path instead of links
+ -- @see https://github.com/xmake-io/xmake/issues/5066
+ if name == "links" and configinfo and configinfo.linkpath then
+ local libfiles = info.libfiles
+ if libfiles then
+ compvalues = _filter_libfiles(libfiles)
+ end
+ end
+ table.join2(values, compvalues)
else
local components_str = table.concat(table.wrap(configinfo.components), ", ")
utils.warning("unknown component(%s) in add_packages(%s, {components = {%s}})", component_name, pkg:name(), components_str)
@@ -352,7 +364,15 @@ function _instance:_get_from_packages(name, result_values, result_sources, opt)
end
else
-- get values from the builtin package configs
- local values = pkg:get(valuename)
+ local values = pkg:get(name)
+ -- use full link path instead of links
+ -- @see https://github.com/xmake-io/xmake/issues/5066
+ if name == "links" and configinfo and configinfo.linkpath then
+ local libfiles = pkg:libraryfiles()
+ if libfiles then
+ values = _filter_libfiles(libfiles)
+ end
+ end
if values ~= nil then
table.insert(result_values, values)
table.insert(result_sources, "package::" .. pkg:name())