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.
61 lines
2.1 KiB
61 lines
2.1 KiB
2 years ago
|
import("lib.detect.find_path")
|
||
|
import("lib.detect.find_library")
|
||
|
import("detect.sdks.find_cuda")
|
||
|
|
||
|
function _find_package(package, opt)
|
||
|
if package:is_plat("windows") then
|
||
|
local rdir = (package:is_arch("x64") and "x64" or "Win32")
|
||
|
local libname = (package:is_arch("x64") and "nvToolsExt64_1" or "nvToolsExt32_1")
|
||
|
|
||
|
-- init search paths
|
||
|
local paths = {
|
||
|
"$(env NVTOOLSEXT_PATH)",
|
||
|
"$(env PROGRAMFILES)/NVIDIA Corporation/NvToolsExt"
|
||
|
}
|
||
|
|
||
|
-- find library
|
||
|
local result = {links = {}, linkdirs = {}, includedirs = {}, libfiles = {}}
|
||
|
local linkinfo = find_library(libname, paths, {suffixes = path.join("lib", rdir)})
|
||
|
if linkinfo then
|
||
|
local nvtx_dir = path.directory(path.directory(linkinfo.linkdir))
|
||
|
table.insert(result.linkdirs, linkinfo.linkdir)
|
||
|
table.insert(result.links, libname)
|
||
|
table.insert(result.libfiles, path.join(nvtx_dir, "bin", rdir, libname .. ".dll"))
|
||
|
table.insert(result.libfiles, path.join(nvtx_dir, "lib", rdir, libname .. ".lib"))
|
||
|
else
|
||
|
-- not found?
|
||
|
return
|
||
|
end
|
||
|
|
||
|
-- find include
|
||
|
table.insert(result.includedirs, find_path("nvToolsExt.h", paths, {suffixes = "include"}))
|
||
|
return result
|
||
|
else
|
||
|
local cuda = find_cuda()
|
||
|
if cuda then
|
||
|
local result = {links = {}, linkdirs = {}, includedirs = {}}
|
||
|
|
||
|
-- find library
|
||
|
local linkinfo = find_library("nvToolsExt", cuda.linkdirs)
|
||
|
if linkinfo then
|
||
|
table.insert(result.links, "nvToolsExt")
|
||
|
table.insert(result.linkdirs, linkinfo.linkdir)
|
||
|
else
|
||
|
return
|
||
|
end
|
||
|
table.join2(result.includedirs, cuda.includedirs)
|
||
|
return result
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function main(package, opt)
|
||
|
if opt.system then
|
||
|
local result = _find_package(package, opt)
|
||
|
if not result then
|
||
|
result = package:find_package("nvtx", opt)
|
||
|
end
|
||
|
return result or false
|
||
|
end
|
||
|
end
|