xmake.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package("usockets")
  2. set_homepage("https://github.com/uNetworking")
  3. set_description("µSockets is the non-blocking, thread-per-CPU foundation library used by µWebSockets. It provides optimized networking - using the same opaque API (programming interface) across all supported transports, event-loops and platforms.")
  4. set_license("Apache-2.0")
  5. add_urls("https://github.com/uNetworking/uSockets/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/uNetworking/uSockets.git")
  7. add_versions("v0.8.8", "d14d2efe1df767dbebfb8d6f5b52aa952faf66b30c822fbe464debaa0c5c0b17")
  8. add_configs("ssl", {description = "Select ssl library", default = nil, type = "string", values = {"openssl", "openssl3", "wolfssl", "boringssl"}})
  9. add_configs("uv", {description = "Enable libuv", default = false, type = "boolean"})
  10. add_configs("uring", {description = "Enable liburing", default = false, type = "boolean"})
  11. add_configs("quic", {description = "Enable lsquic", default = false, type = "boolean"})
  12. on_load(function (package)
  13. local ssl = package:config("ssl")
  14. if ssl then
  15. package:add("deps", ssl)
  16. if ssl == "openssl" or ssl == "openssl3" or ssl == "boringssl" then
  17. package:add("defines", "LIBUS_USE_OPENSSL")
  18. elseif ssl == "wolfssl" then
  19. package:add("defines", "LIBUS_USE_WOLFSSL")
  20. end
  21. else
  22. package:add("defines", "LIBUS_NO_SSL")
  23. end
  24. if package:is_plat("windows") then
  25. package:add("deps", "libuv")
  26. package:config_set("uv", true)
  27. else
  28. if package:config("libuv") then
  29. package:add("deps", "libuv")
  30. package:add("defines", "LIBUS_USE_LIBUV")
  31. end
  32. end
  33. if package:is_plat("linux") and package:config("uring") then
  34. package:add("deps", "liburing")
  35. package:add("defines", "LIBUS_USE_IO_URING")
  36. end
  37. if package:config("quic") then
  38. package:add("deps", "lsquic")
  39. package:add("defines", "LIBUS_USE_QUIC")
  40. end
  41. end)
  42. on_install("windows", "macosx", "linux", function (package)
  43. local configs = {}
  44. configs.ssl = package:config("ssl")
  45. configs.uv = package:config("uv")
  46. configs.uring = package:config("uring")
  47. configs.quic = package:config("quic")
  48. os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
  49. import("package.tools.xmake").install(package, configs)
  50. end)
  51. on_test(function (package)
  52. assert(package:has_cfuncs("us_create_socket_context", {includes = {"libusockets.h"}}))
  53. end)