xmake.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package("wgsl-validator")
  2. set_base("rustlib")
  3. set_kind("library")
  4. set_homepage("https://github.com/NazaraEngine/wgsl-validator")
  5. set_description("WGSL validator in Rust with C bindings.")
  6. set_license("MIT")
  7. add_urls("https://github.com/NazaraEngine/wgsl-validator/archive/refs/tags/$(version).tar.gz",
  8. "https://github.com/NazaraEngine/wgsl-validator.git")
  9. add_versions("v1.0.0", "1ea4c13cc548bc785920d5b80ff94ccb97587ca69389c6b7d41f734e9f6b056b")
  10. add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
  11. if is_plat("windows", "mingw") then
  12. add_syslinks("Advapi32", "User32", "Userenv", "WS2_32", "RuntimeObject", "NtDll")
  13. elseif is_plat("linux", "bsd") then
  14. add_syslinks("pthread")
  15. end
  16. on_install(function (package)
  17. package:base():script("install")(package)
  18. local envs = package:data("xmake_envs")
  19. io.writefile("xmake.lua", [[
  20. add_requires("cargo::naga latest", {configs = {features = "wgsl-in"}})
  21. target("wgsl-validator")
  22. set_kind("static")
  23. set_toolchains("rust@rust")
  24. add_files("src/lib.rs")
  25. add_headerfiles("ffi/*.h")
  26. set_values("rust.cratetype", "staticlib")
  27. add_packages("cargo::naga")
  28. ]])
  29. import("package.tools.xmake").install(package, nil, {envs = envs})
  30. end)
  31. on_test(function (package)
  32. assert(package:check_csnippets({test = [[
  33. #include <wgsl_validator.h>
  34. #define WGSL_SOURCE(...) #__VA_ARGS__
  35. const char* wgsl_source = WGSL_SOURCE(
  36. @fragment
  37. fn main_fs() -> @location(0) vec4<f32> {
  38. return vec4<f32>(1.0, 1.0, 1.0, 1.0);
  39. }
  40. );
  41. void test() {
  42. char* error;
  43. wgsl_validator_t* validator = wgsl_validator_create();
  44. if(wgsl_validator_validate(validator, wgsl_source, &error))
  45. wgsl_validator_free_error(error);
  46. wgsl_validator_destroy(validator);
  47. }
  48. ]]}, { configs = { languages = "c17" } }))
  49. end)