xmake.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package("binn")
  2. set_homepage("https://github.com/liteserver/binn")
  3. set_description("Binary Serialization")
  4. set_license("Apache-2.0")
  5. add_urls("https://github.com/liteserver/binn/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/liteserver/binn.git")
  7. add_versions("v3.0", "cc5cc8a178484de8d46983cc459ab8ae7ec1227f05ec7bf527e4b9067c54a237")
  8. on_install(function(package)
  9. local f = io.readfile("src/binn.h")
  10. if package:is_plat("linux", "cross") then
  11. io.writefile("src/binn.h", [[#include <endian.h>
  12. #define LITTLE_ENDIAN __LITTLE_ENDIAN
  13. #define BIG_ENDIAN __BIG_ENDIAN
  14. #define BYTE_ORDER __BYTE_ORDER
  15. #define _POSIX_C_SOURCE 200809L
  16. #include <strings.h>
  17. #include <string.h>
  18. #include <stddef.h>
  19. ]] .. f)
  20. elseif package:is_plat("wasm") then
  21. io.writefile("src/binn.h", [[#define _POSIX_C_SOURCE 200809L
  22. #include <strings.h>
  23. #include <string.h>
  24. #include <stddef.h>
  25. ]] .. f)
  26. else
  27. io.writefile("src/binn.h", [[#include <stddef.h>
  28. ]] .. f)
  29. end
  30. io.writefile("xmake.lua", ([[
  31. add_rules("mode.debug", "mode.release")
  32. target("binn")
  33. set_version("%s.%s", {soname = true})
  34. set_languages("c11")
  35. set_kind("$(kind)")
  36. if is_plat("linux", "cross", "wasm") then
  37. add_defines("_POSIX_C_SOURCE=200809L")
  38. end
  39. if is_plat("windows") then
  40. if is_kind("shared") then
  41. add_files("src/win32/dllmain.c", "src/win32/binn.def")
  42. end
  43. end
  44. add_files("src/binn.c")
  45. add_headerfiles("src/(*.h)")
  46. ]]):format(package:version():major(), package:version():minor()))
  47. import("package.tools.xmake").install(package)
  48. end)
  49. on_test(function (package)
  50. assert(package:check_csnippets({test = [[
  51. #include <binn.h>
  52. void test() {
  53. binn* parent;
  54. int count = binn_count(parent);
  55. }
  56. ]]}, {configs = {languages = "c11"}}))
  57. end)