From 4a023352fa4e6c78f3132895fa489581e2edf0b5 Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 3 Feb 2023 23:51:03 +0800 Subject: [PATCH] add nvtx (#1781) --- packages/c/cuda/xmake.lua | 2 +- packages/n/nvtx/fetch.lua | 60 +++++++++++++++++++++++++++++++++++++++ packages/n/nvtx/xmake.lua | 6 ++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 packages/n/nvtx/fetch.lua create mode 100644 packages/n/nvtx/xmake.lua diff --git a/packages/c/cuda/xmake.lua b/packages/c/cuda/xmake.lua index 2533a444c..e01a2cb03 100644 --- a/packages/c/cuda/xmake.lua +++ b/packages/c/cuda/xmake.lua @@ -23,7 +23,7 @@ package("cuda") local result = {includedirs = cuda.includedirs, linkdirs = cuda.linkdirs, links = {}} local utils = package:config("utils") table.insert(utils, package:config("shared") and "cudart" or "cudart_static") - + for _, util in ipairs(utils) do if not find_library(util, cuda.linkdirs) then wprint(format("The library %s for %s is not found!", util, package:arch())) diff --git a/packages/n/nvtx/fetch.lua b/packages/n/nvtx/fetch.lua new file mode 100644 index 000000000..2e30536ca --- /dev/null +++ b/packages/n/nvtx/fetch.lua @@ -0,0 +1,60 @@ +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 diff --git a/packages/n/nvtx/xmake.lua b/packages/n/nvtx/xmake.lua new file mode 100644 index 000000000..b126e0571 --- /dev/null +++ b/packages/n/nvtx/xmake.lua @@ -0,0 +1,6 @@ +package("nvtx") + + set_homepage("https://github.com/NVIDIA/NVTX") + set_description("A C-based Application Programming Interface (API) for annotating events, code ranges, and resources in your applications.") + + on_fetch("fetch")