diff options
| author | ruki <[email protected]> | 2018-10-10 22:15:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-10-10 07:32:19 +0800 |
| commit | 497e25b10f0dd3a734a81109541d6c09c61e9e82 (patch) | |
| tree | b537104f6c35bf95f108ee88c32130f6c9b75f96 /xmake/modules/lib/detect/pkg_config.lua | |
| parent | 4c983396a3e6ed609181657e2f60f6c6ff09215b (diff) | |
improve pkg-config.find
Diffstat (limited to 'xmake/modules/lib/detect/pkg_config.lua')
| -rw-r--r-- | xmake/modules/lib/detect/pkg_config.lua | 28 |
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) |
