xmake.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package("cuda")
  2. set_homepage("https://developer.nvidia.com/cuda-zone/")
  3. set_description("CUDA® is a parallel computing platform and programming model developed by NVIDIA for general computing on graphical processing units (GPUs).")
  4. add_configs("utils", {description = "Enabled cuda utilities.", default = {}, type = "table"})
  5. on_load(function (package)
  6. import("detect.sdks.find_cuda")
  7. local cuda = find_cuda()
  8. if cuda then
  9. package:addenv("PATH", cuda.bindir)
  10. end
  11. end)
  12. on_fetch(function (package, opt)
  13. if opt.system then
  14. import("detect.sdks.find_cuda")
  15. import("lib.detect.find_library")
  16. local cuda = find_cuda()
  17. if cuda then
  18. local result = {includedirs = cuda.includedirs, linkdirs = cuda.linkdirs, links = {}}
  19. local utils = package:config("utils")
  20. table.insert(utils, package:config("shared") and "cudart" or "cudart_static")
  21. for _, util in ipairs(utils) do
  22. if not find_library(util, cuda.linkdirs) then
  23. wprint(format("The library %s for %s is not found!", util, package:arch()))
  24. return
  25. end
  26. table.insert(result.links, util)
  27. end
  28. return result
  29. end
  30. end
  31. end)