package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.0 KiB
74 lines
2.0 KiB
1 month ago
|
import("lib.detect.find_library")
|
||
|
import("lib.detect.find_tool")
|
||
|
import("core.base.semver")
|
||
|
|
||
|
function _get_python_libs()
|
||
|
local opt = {version = true}
|
||
|
local result = find_tool("python3", opt)
|
||
|
if not result then
|
||
|
result = find_tool("python", opt)
|
||
|
end
|
||
|
|
||
|
local libs = {}
|
||
|
local version = result.version
|
||
|
if version then
|
||
|
local py_ver = semver.new(version)
|
||
|
py_ver = py_ver:major() .. py_ver:minor()
|
||
|
table.insert(libs, "python" .. py_ver)
|
||
|
table.insert(libs, "numpy" .. py_ver)
|
||
|
end
|
||
|
return libs
|
||
|
end
|
||
|
|
||
|
function _add_info(linkinfo, result)
|
||
|
if linkinfo then
|
||
|
table.insert(result.linkdirs, linkinfo.linkdir)
|
||
|
table.insert(result.libfiles, linkinfo.filename)
|
||
|
table.insert(result.links, linkinfo.link)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function main(package, opt)
|
||
|
if opt.system then
|
||
|
import("libs", {rootdir = package:scriptdir()})
|
||
|
|
||
|
local paths = {
|
||
|
"/usr/lib",
|
||
|
"/usr/lib64",
|
||
|
"/usr/local/lib",
|
||
|
"/usr/lib/x86_64-linux-gnu",
|
||
|
}
|
||
|
|
||
|
local result = {
|
||
|
libfiles = {},
|
||
|
linkdirs = {},
|
||
|
links = {},
|
||
|
}
|
||
|
|
||
|
local opt = {
|
||
|
plat = package:plat(),
|
||
|
kind = package:config("shared") and "shared" or "static",
|
||
|
}
|
||
|
|
||
|
local sub_libs_map = libs.get_sub_libs(package)
|
||
|
sub_libs_map["python"] = _get_python_libs()
|
||
|
table.insert(sub_libs_map.test, "test_exec_monitor")
|
||
|
|
||
|
libs.for_each(function (libname)
|
||
|
local sub_libs = sub_libs_map[libname]
|
||
|
if sub_libs then
|
||
|
for _, sub_libname in ipairs(sub_libs) do
|
||
|
local linkinfo = find_library("boost_" .. sub_libname, paths, opt)
|
||
|
_add_info(linkinfo, result)
|
||
|
end
|
||
|
else
|
||
|
local linkinfo = find_library("boost_" .. libname, paths, opt)
|
||
|
_add_info(linkinfo, result)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
result.linkdirs = table.unique(result.linkdirs)
|
||
|
return result
|
||
|
end
|
||
|
end
|