ruki 2 years ago
parent
commit
4a023352fa
3 changed files with 67 additions and 1 deletions
  1. 1 1
      packages/c/cuda/xmake.lua
  2. 60 0
      packages/n/nvtx/fetch.lua
  3. 6 0
      packages/n/nvtx/xmake.lua

+ 1 - 1
packages/c/cuda/xmake.lua

@@ -23,7 +23,7 @@ package("cuda")
                 local result = {includedirs = cuda.includedirs, linkdirs = cuda.linkdirs, links = {}}
                 local result = {includedirs = cuda.includedirs, linkdirs = cuda.linkdirs, links = {}}
                 local utils = package:config("utils")
                 local utils = package:config("utils")
                 table.insert(utils, package:config("shared") and "cudart" or "cudart_static")
                 table.insert(utils, package:config("shared") and "cudart" or "cudart_static")
-        
+
                 for _, util in ipairs(utils) do
                 for _, util in ipairs(utils) do
                     if not find_library(util, cuda.linkdirs) then
                     if not find_library(util, cuda.linkdirs) then
                         wprint(format("The library %s for %s is not found!", util, package:arch()))
                         wprint(format("The library %s for %s is not found!", util, package:arch()))

+ 60 - 0
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

+ 6 - 0
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")