xmake.lua 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package("kittymemory")
  2. set_homepage("https://github.com/MJx0/KittyMemory")
  3. set_description("This library aims for runtime code patching for both Android and iOS")
  4. set_license("MIT")
  5. add_urls("https://github.com/MJx0/KittyMemory.git", {submodules = false})
  6. add_versions("2025.05.30", "d0a701c24ecd8b0a4644633e998ac4aa33df7bcd")
  7. add_configs("keystone", {description = "Use Keystone and MemoryPatch::createWithAsm", default = true, type = "boolean"})
  8. add_configs("logd", {description = "Define kITTYMEMORY_DEBUG in cpp flags for KITTY_LOGD debug outputs", default = false, type = "boolean"})
  9. on_load(function (package)
  10. if package:config("keystone") then
  11. package:add("deps", "keystone")
  12. else
  13. package:add("defines", "kNO_KEYSTONE")
  14. end
  15. if package:config("logd") then
  16. package:add("defines", "kITTYMEMORY_DEBUG")
  17. end
  18. end)
  19. on_install("android", "iphoneos", function (package)
  20. io.replace("KittyMemory/KittyUtils.hpp", [[#ifdef __ANDROID__]], [[#ifdef __ANDROID__
  21. #include <sys/system_properties.h>]], {plain = true})
  22. local configs = {
  23. keystone = package:config("keystone"),
  24. logd = package:config("logd")
  25. }
  26. io.writefile("xmake.lua", [[
  27. add_rules("mode.release", "mode.debug")
  28. option("keystone", {default = true})
  29. option("logd", {default = false})
  30. if has_config("keystone") then
  31. add_requires("keystone")
  32. end
  33. target("KittyMemory")
  34. set_languages("c++17")
  35. set_kind("$(kind)")
  36. add_files("KittyMemory/*.cpp")
  37. add_includedirs("KittyMemory")
  38. add_headerfiles("(KittyMemory/*.hpp)")
  39. if is_plat("android") then
  40. add_syslinks("log")
  41. elseif is_plat("iphoneos") then
  42. add_frameworks("Foundation")
  43. end
  44. if has_config("keystone") then
  45. add_packages("keystone")
  46. else
  47. add_defines("kNO_KEYSTONE")
  48. end
  49. if has_config("logd") then
  50. add_defines("kITTYMEMORY_DEBUG")
  51. end
  52. ]])
  53. import("package.tools.xmake").install(package, configs)
  54. end)
  55. on_test(function (package)
  56. assert(package:has_cxxfuncs([[KittyMemory::memRead(0, 0, 10)]], {includes = "KittyMemory/KittyMemory.hpp", configs = {languages = "c++17"}}))
  57. end)