1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
-- xmake.lua
package("dawn")
set_homepage("https://github.com/google/dawn")
set_description("Dawn is an open-source implementation of WebGPU")
if is_plat("windows") then
if is_mode("release") then
add_urls("https://github.com/google/dawn/releases/download/v20260304.163533/Dawn-31cd9c3331648e600286538f22899e650f7f3cb3-windows-latest-Release.tar.gz", {verify = false})
add_versions("20260304.163533", "1ba1e7064c90f6f4848db6f005a3077e26dbc640ac6bb292b01135ec551c6c83")
elseif is_mode("debug") then
add_urls("https://github.com/google/dawn/releases/download/v20260304.163533/Dawn-31cd9c3331648e600286538f22899e650f7f3cb3-windows-latest-Debug.tar.gz", {verify = false})
add_versions("20260304.163533", "e1431ef8906b6dd50155ad54e8865d3fea3ffb1e2157a75f28c1e393ca005d35")
end
elseif is_plat("linux") then
if is_mode("release") then
add_urls("https://github.com/google/dawn/releases/download/v20260304.163533/Dawn-31cd9c3331648e600286538f22899e650f7f3cb3-ubuntu-latest-Release.tar.gz")
add_versions("20260304.163533", "2d2eeb2697ef5ec529f41847ef3694c5d0b4b917ebcc1cee09f9f4ed855abe7d")
elseif is_mode("debug") then
add_urls("https://github.com/google/dawn/releases/download/v20260304.163533/Dawn-31cd9c3331648e600286538f22899e650f7f3cb3-ubuntu-latest-Debug.tar.gz")
add_versions("20260304.163533", "4d27021659a1be8cefadd02f976a44d06e79b9c22abb48e77e43088f947676ef")
end
elseif is_plat("wasm") then
add_urls("https://github.com/google/dawn/releases/download/v20260304.163533/emdawnwebgpu_pkg-v20260304.163533.zip")
add_versions("20260304.163533", "02eaaf23ae76c91191eebc5810eaefee388c12e63c753f28e3ef999ac15eac9e")
end
on_install("windows", "linux", function (package)
os.cp("bin", package:installdir())
os.cp("include", package:installdir())
os.cp("lib", package:installdir())
package:add("bindirs", "bin")
package:add("linkdirs", "bin")
package:add("includedirs", "include")
package:add("linkdirs", "lib")
end)
on_install("wasm", function (package)
os.cp(path.join(os.scriptdir(), "emdawn.xmake.lua"), "xmake.lua")
import("package.tools.xmake").install(package)
os.cp("webgpu", package:installdir())
os.cp("webgpu_cpp", package:installdir())
package:add("includedirs", path.join("webgpu", "include"))
package:add("includedirs", path.join("webgpu_cpp", "include"))
local lib_dir = package:installdir("lib")
local js_files = {
"library_webgpu_enum_tables.js",
"library_webgpu_generated_sig_info.js",
"library_webgpu_generated_struct_info.js",
"library_webgpu.js"
}
local flags = {}
for _, jsfile in ipairs(js_files) do
table.insert(flags, "--js-library=" .. path.join(lib_dir, jsfile))
end
local externs_path = path.join(lib_dir, "webgpu-externs.js")
table.insert(flags, "--closure-args=--externs=" .. externs_path)
-- why `table.concat`?
-- because single ldflag `--js-libray=library_webgpu.js` will fail and
-- be ignored by xmake (it depends other js lib), the all `--js-library`
-- flag must be passed at once.
package:add("ldflags", table.concat(flags, " "), {force = true})
package:add("ldflags", "-sASYNCIFY=1")
package:add("ldflags", "-sJSPI=1")
end)
|