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.
60 lines
2.1 KiB
60 lines
2.1 KiB
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
|
|
|