123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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
|