xmake.lua 4.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package("wgpu-native")
  2. set_homepage("https://github.com/gfx-rs/wgpu-native")
  3. set_description("Native WebGPU implementation based on wgpu-core")
  4. set_license("Apache-2.0")
  5. if is_plat("windows") and is_arch("x64") then
  6. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version)/wgpu-windows-x86_64-release.zip", {version = function(version) return version:gsub("%+", ".") end})
  7. add_versions("v0.19.4+1", "9e1591d60c2d2ee20d6d4a63bc01c7c5eecf7734761673160aa639e550a1ba4d")
  8. add_versions("v0.17.0+2", "1b8ae05bb7626e037ab7088f9f11fc8bb8341a32800d33857c09ff2fb1b3893f")
  9. elseif is_plat("windows") and is_arch("x86") then
  10. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version)/wgpu-windows-i686-release.zip", {version = function(version) return version:gsub("%+", ".") end})
  11. add_versions("v0.19.4+1", "6bd7d57d132282adf46150e7fb176d86fe6ffd10aa833ad2e70d9dfbe17700df")
  12. add_versions("v0.17.0+2", "098037ca18c1a3fbf25f061f822762d5eab1cd4ecf8e7d039f9ccbd357322a54")
  13. elseif is_plat("linux") and is_arch("x86_64") then
  14. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version)/wgpu-linux-x86_64-release.zip", {version = function(version) return version:gsub("%+", ".") end})
  15. add_versions("v0.19.4+1", "7d73bd7af2be60b632e5ab814996acb381d1b459975d6629f91c468049c8866a")
  16. add_versions("v0.17.0+2", "2bfebb48072cafee316fcec452d49d02aa46d7096325097e637c3c2e784eca5b")
  17. elseif is_plat("linux") and is_arch("arm64-v8a") then
  18. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version)/wgpu-linux-x86_64-release.zip", {version = function(version) return version:gsub("%+", ".") end})
  19. add_versions("v0.19.4+1", "6e53aa3f0aec4b2b65cb0d7635000cf39bddd672bcb6138a593bf8cb8134f621")
  20. elseif is_plat("macosx") and is_arch("x86_64") then
  21. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version)/wgpu-macos-x86_64-release.zip", {version = function(version) return version:gsub("%+", ".") end})
  22. add_versions("v0.19.4+1", "e41a35bf4f2b1c7dd87092cfcb932b7a96118971129a6213b7be240deb07e614")
  23. add_versions("v0.17.0+2", "749683e616659b5fa9a42151b7b71c2308e114c0322df78975d486aaf43650e9")
  24. elseif is_plat("macosx") and is_arch("arm64") then
  25. add_urls("https://github.com/gfx-rs/wgpu-native/releases/download/$(version).zip", {version = function(version)
  26. local arch = version:ge("v0.18.1+3") and "aarch64" or "arm64"
  27. return version:gsub("%+", ".") .. "/wgpu-macos-" .. arch .. "-release"
  28. end})
  29. add_versions("v0.19.4+1", "21cf8e69a4a775ea63f437f170a93e371df0f72c83119c81c25a668611c1771d")
  30. add_versions("v0.17.0+2", "9af5dadcd05fa8d47d37cf171abae65c7d813123d0a60f0b50392da381279d04")
  31. end
  32. if is_plat("windows") then
  33. add_configs("vs_runtime", {description = "Set vs compiler runtime.", default = "MD", readonly = true})
  34. end
  35. add_includedirs("include", "include/webgpu")
  36. on_load("windows", function (package)
  37. if not package:config("shared") then
  38. package:add("syslinks", "Advapi32", "bcrypt", "d3dcompiler", "NtDll", "User32", "Userenv", "WS2_32", "Gdi32", "Opengl32")
  39. end
  40. end)
  41. on_load("linux", function (package)
  42. if not package:config("shared") then
  43. package:add("syslinks", "dl", "pthread")
  44. end
  45. end)
  46. on_load("macosx", function (package)
  47. if not package:config("shared") then
  48. package:add("syslinks", "objc")
  49. package:add("frameworks", "Metal", "QuartzCore")
  50. end
  51. end)
  52. on_install("windows|x64", "windows|x86", "linux|arm64-v8a", "linux|x86_64", "macosx|x86_64", "macosx|arm64", function (package)
  53. os.cp("*.h", package:installdir("include", "webgpu"))
  54. if package:is_plat("windows") then
  55. if package:config("shared") then
  56. os.cp("wgpu_native.dll", package:installdir("bin"))
  57. os.cp("wgpu_native.pdb", package:installdir("bin"))
  58. os.cp("wgpu_native.dll.lib", package:installdir("lib"))
  59. else
  60. os.cp("wgpu_native.lib", package:installdir("lib"))
  61. end
  62. elseif package:is_plat("linux") then
  63. if package:config("shared") then
  64. os.cp("libwgpu_native.so", package:installdir("bin"))
  65. else
  66. os.cp("libwgpu_native.a", package:installdir("lib"))
  67. end
  68. elseif package:is_plat("macosx") then
  69. if package:config("shared") then
  70. os.cp("libwgpu_native.dylib", package:installdir("bin"))
  71. else
  72. os.cp("libwgpu_native.a", package:installdir("lib"))
  73. end
  74. end
  75. end)
  76. on_test(function (package)
  77. assert(package:has_cfuncs("wgpuCreateInstance", {includes = "wgpu.h"}))
  78. end)