xmake.lua 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package("pocketpy")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/blueloveTH/pocketpy")
  4. set_description("C++17 header-only Python interpreter for game engines.")
  5. set_license("MIT")
  6. add_urls("https://github.com/pocketpy/pocketpy/releases/download/$(version)/pocketpy.h")
  7. add_versions("v2.1.3", "fb2d1b594ddc46084d5e090e3e907da0d6769287152dba5d51288ac231ff7dfa")
  8. add_versions("v2.1.1", "d54aec6d75f7f7d03b862d4370e0014f9723715da901623bedc82ac72566caae")
  9. add_versions("v2.0.8", "9d6dada0fa9b661a44bcaf581f56ad15c7fe9ee18e0c719438f3332ccb3ac76f")
  10. add_versions("v1.4.6", "fbbe335e55fabfd41146ba3287bd93c992135da057e2da09e47dd7dc77682a04")
  11. add_versions("v1.4.5", "144f63ed8a21fd2a65e252df53939f7af453d544eb35570603af319ce1af5a46")
  12. add_versions("v0.9.0", "0da63afb3ea4ebb8b686bfe33b4c7556c0a927cd98ccf3c7a3fb4aa216fbf30b")
  13. add_resources("v2.1.3", "c", "https://github.com/pocketpy/pocketpy/releases/download/v2.1.3/pocketpy.c", "ab4cbf3edd50dbbc5ca5a7ec7e7f2d001169541d9912330596400e0d34980d6b")
  14. add_resources("v2.1.1", "c", "https://github.com/pocketpy/pocketpy/releases/download/v2.1.1/pocketpy.c", "587a83977525e11616d1bae748ae80dc50960e567b8c000a9ca6610b20681623")
  15. add_resources("v2.0.8", "c", "https://github.com/pocketpy/pocketpy/releases/download/v2.0.8/pocketpy.c", "497f926dc270bfe1f9289db24068e596499c563aa8c946f63763a114c5d2bf5d")
  16. on_install("windows|x64", "linux", "macosx", "android", function (package)
  17. os.cp(package:originfile(), package:installdir("include") .. "/pocketpy.h")
  18. if package:version() and package:version():ge("v2.0.0") then
  19. os.cp(package:resourcefile("c"), package:installdir("include"))
  20. end
  21. end)
  22. on_test("linux", "macosx", "android", function (package)
  23. if package:version():lt("v2.0.0") then
  24. assert(package:check_cxxsnippets({test = [[
  25. void test() {
  26. VM* vm = new VM();
  27. vm->exec("print('Hello world!')");
  28. vm->exec("a = [1, 2, 3]");
  29. delete vm;
  30. }
  31. ]]}, {configs = {languages = "c++17"}, includes = {"pocketpy.h"}}))
  32. else
  33. assert(package:check_csnippets({test = [[
  34. void test() {
  35. py_initialize();
  36. py_exec("print('Hello world!')", "<string>", EXEC_MODE, NULL);
  37. py_finalize();
  38. }
  39. ]]}, {configs = {languages = "c11"}, includes = {"pocketpy.h"}}))
  40. end
  41. end)
  42. on_test("windows|x64", function (package)
  43. if package:version():lt("v2.0.0") then
  44. assert(package:check_cxxsnippets({test = [[
  45. void test() {
  46. VM* vm = new VM();
  47. vm->exec("print('Hello world!')");
  48. vm->exec("a = [1, 2, 3]");
  49. delete vm;
  50. }
  51. ]]}, {configs = {languages = "c++17", cxflags = "/utf-8"}, includes = {"pocketpy.h"}}))
  52. else
  53. assert(package:check_csnippets({test = [[
  54. void test() {
  55. py_initialize();
  56. py_exec("print('Hello world!')", "<string>", EXEC_MODE, NULL);
  57. py_finalize();
  58. }
  59. ]]}, {configs = {languages = "c11", cflags = {"/utf-8", "/experimental:c11atomics"}}, includes = {"pocketpy.h"}}))
  60. end
  61. end)