summaryrefslogtreecommitdiff
path: root/xmake/modules/lib/detect/pkg_config.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2018-10-10 22:15:23 +0800
committerruki <[email protected]>2018-10-10 07:32:19 +0800
commit497e25b10f0dd3a734a81109541d6c09c61e9e82 (patch)
treeb537104f6c35bf95f108ee88c32130f6c9b75f96 /xmake/modules/lib/detect/pkg_config.lua
parent4c983396a3e6ed609181657e2f60f6c6ff09215b (diff)
improve pkg-config.find
Diffstat (limited to 'xmake/modules/lib/detect/pkg_config.lua')
-rw-r--r--xmake/modules/lib/detect/pkg_config.lua28
1 files changed, 23 insertions, 5 deletions
diff --git a/xmake/modules/lib/detect/pkg_config.lua b/xmake/modules/lib/detect/pkg_config.lua
index 3b3a6658b..13d332eb5 100644
--- a/xmake/modules/lib/detect/pkg_config.lua
+++ b/xmake/modules/lib/detect/pkg_config.lua
@@ -77,12 +77,14 @@ function info(name, opt)
if not flags then
-- find the config directories from the prefix directories of xmake
- local platsubdirs = path.join(config.get("plat") or os.host(), config.get("arch") or os.arch(), "release")
- os.addenv("PKG_CONFIG_PATH", path.join(config.directory(), "prefix", platsubdirs, "lib", "pkgconfig"))
- os.addenv("PKG_CONFIG_PATH", path.join(global.directory(), "prefix", platsubdirs, "lib", "pkgconfig"))
+ local platsubdirs = path.join(config.get("plat") or os.host(), config.get("arch") or os.arch())
+ os.addenv("PKG_CONFIG_PATH", path.join(config.directory(), "prefix", platsubdirs, "release", "lib", "pkgconfig"))
+ os.addenv("PKG_CONFIG_PATH", path.join(config.directory(), "prefix", platsubdirs, "debug", "lib", "pkgconfig"))
+ os.addenv("PKG_CONFIG_PATH", path.join(global.directory(), "prefix", platsubdirs, "release", "lib", "pkgconfig"))
+ os.addenv("PKG_CONFIG_PATH", path.join(global.directory(), "prefix", platsubdirs, "debug", "lib", "pkgconfig"))
-- find the prefix directory of brew directly, because `brew --prefix name` is too slow!
- local pcfile = find_file("*.pc", "/usr/local/Cellar/" .. name .. "/*/lib/pkgconfig")
+ local pcfile = find_file(name .. ".pc", "/usr/local/Cellar/" .. (opt.brewhint or name) .. "/*/lib/pkgconfig")
if pcfile then
brewprefix = path.directory(path.directory(path.directory(pcfile)))
os.addenv("PKG_CONFIG_PATH", path.directory(pcfile))
@@ -186,10 +188,26 @@ function find(name, opt)
links = opt.links
end
+ -- add default search linkdirs on pc host
+ local linkdirs = pkginfo.linkdirs
+ if links and #links > 0 and (not linkdirs or #linkdirs == 0) then
+ linkdirs = linkdirs or {}
+ table.insert(linkdirs, "/usr/local/lib")
+ table.insert(linkdirs, "/usr/lib")
+ table.insert(linkdirs, "/opt/local/lib")
+ table.insert(linkdirs, "/opt/lib")
+ if opt.plat == "linux" and opt.arch == "x86_64" then
+ table.insert(linkdirs, "/usr/local/lib/x86_64-linux-gnu")
+ table.insert(linkdirs, "/usr/lib/x86_64-linux-gnu")
+ table.insert(linkdirs, "/usr/lib64")
+ table.insert(linkdirs, "/opt/lib64")
+ end
+ end
+
-- find library
local result = nil
for _, link in ipairs(table.wrap(links)) do
- local libinfo = find_library(link, pkginfo.linkdirs)
+ local libinfo = find_library(link, linkdirs)
if libinfo then
result = result or {}
result.links = table.join(result.links or {}, libinfo.link)