diff options
| author | ruki <[email protected]> | 2022-10-20 00:42:19 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-20 00:42:19 +0800 |
| commit | a89822b7530c98914109cecc770dfef15e707e23 (patch) | |
| tree | c00cfd9cee983a868e90348a40a2d1a9021f5608 | |
| parent | b17daa462dd75c5a218a788698f30955d13ebe5f (diff) | |
add extsources for components
| -rw-r--r-- | tests/projects/package/components/xmake.lua | 10 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 12 |
2 files changed, 21 insertions, 1 deletions
diff --git a/tests/projects/package/components/xmake.lua b/tests/projects/package/components/xmake.lua index 41850fd7c..eb18d7bb0 100644 --- a/tests/projects/package/components/xmake.lua +++ b/tests/projects/package/components/xmake.lua @@ -56,6 +56,10 @@ package("sfml") add_configs("main", {description = "Link to the sfml-main library", default = true, type = "boolean"}) end + if is_plat("macosx") then + add_extsources("brew::sfml") + end + on_component("graphics", function (package, component) local e = package:config("shared") and "" or "-s" component:add("links", "sfml-graphics" .. e) @@ -63,6 +67,7 @@ package("sfml") component:add("links", "freetype") component:add("syslinks", "opengl32", "gdi32", "user32", "advapi32") end + component:add("extsources", "brew::sfml/sfml-graphics") end) on_component("window", function (package, component) @@ -71,6 +76,7 @@ package("sfml") if package:is_plat("windows", "mingw") and not package:config("shared") then component:add("syslinks", "opengl32", "gdi32", "user32", "advapi32") end + component:add("extsources", "brew::sfml/sfml-window") end) on_component("audio", function (package, component) @@ -79,6 +85,7 @@ package("sfml") if package:is_plat("windows", "mingw") and not package:config("shared") then component:add("links", "openal32", "flac", "vorbisenc", "vorbisfile", "vorbis", "ogg") end + component:add("extsources", "brew::sfml/sfml-audio") end) on_component("network", function (package, component) @@ -87,6 +94,8 @@ package("sfml") if package:is_plat("windows", "mingw") and not package:config("shared") then component:add("syslinks", "ws2_32") end + component:add("extsources", "brew::sfml/sfml-network") + component:add("extsources", "apt::sfml-network") end) on_component("system", function (package, component) @@ -95,6 +104,7 @@ package("sfml") if package:is_plat("windows", "mingw") then component:add("syslinks", "winmm") end + component:add("extsources", "brew::sfml/sfml-system") end) on_component("main", function (package, component) diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 945701a4f..0ccdf42b0 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -1512,7 +1512,16 @@ function _instance:_fetch_library(opt) end table.insert(fetchnames, self:name()) for _, fetchname in ipairs(fetchnames) do - fetchinfo = self:find_package(fetchname, opt) + local components_extsources = {} + for name, comp in pairs(self:components()) do + for _, extsource in ipairs(table.wrap(comp:get("extsources"))) do + if fetchname:split("::")[1] == extsource:split("::")[1] then + components_extsources[name] = extsource + break + end + end + end + fetchinfo = self:find_package(fetchname, table.join(opt, {components_extsources = components_extsources})) if fetchinfo then break end @@ -1558,6 +1567,7 @@ function _instance:find_package(name, opt) arch = self:arch(), configs = table.join(self:configs(), opt.configs), components = self:components_orderlist(), + components_extsources = opt.components_extsources, buildhash = self:buildhash(), -- for xmake package or 3rd package manager, e.g. go:: .. cachekey = opt.cachekey or "fetch_package_system", external = opt.external, |
