xmake.lua 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package("pine")
  2. set_homepage("https://github.com/canyie/pine")
  3. set_description("Dynamic java method hook framework on ART. Allowing you to change almost all java methods' behavior dynamically.")
  4. add_urls("https://github.com/canyie/pine.git", {submodules = false})
  5. add_versions("2025.11.08", "216d910f18b18430a5d21c510affb221a9833a55")
  6. add_deps("xz-embedded", "dobby")
  7. on_install("android", function (package)
  8. os.cd("core/src/main/cpp")
  9. io.replace("utils/scoped_local_ref.h", [[#include "macros.h"]], [[#include "macros.h"
  10. #include <cstddef>]], {plain = true})
  11. local configs = {}
  12. io.writefile("xmake.lua", [[
  13. add_rules("mode.release", "mode.debug")
  14. set_languages("c++17")
  15. add_requires("xz-embedded", "dobby")
  16. target("pine")
  17. set_kind("$(kind)")
  18. add_headerfiles(
  19. "(*.h)",
  20. "(art/*.h)",
  21. "(trampoline/*.h)",
  22. "(trampoline/arch/*.h)",
  23. "(utils/*.h)",
  24. {prefixdir = "pine"})
  25. add_files(
  26. "pine.cpp",
  27. "ruler.cpp",
  28. "android.cpp",
  29. "jni_bridge.cpp",
  30. "art/art_method.cpp",
  31. "art/thread.cpp",
  32. "art/jit.cpp",
  33. "trampoline/trampoline_installer.cpp",
  34. "utils/memory.cpp",
  35. "utils/scoped_memory_access_protection.cpp",
  36. "utils/elf_image.cpp",
  37. "utils/well_known_classes.cpp")
  38. if is_arch("armeabi-v7a", "armv7-a") then
  39. add_asflags("-arch armv7")
  40. add_files(
  41. "trampoline/arch/thumb2.cpp",
  42. "trampoline/arch/thumb2.S")
  43. elseif is_arch("arm64-v8a", "arm64") then
  44. add_asflags("-arch arm64")
  45. add_files(
  46. "trampoline/arch/arm64.cpp",
  47. "trampoline/arch/arm64.S")
  48. elseif is_arch("x86", "i386") then
  49. add_asflags("-arch x86")
  50. add_files("trampoline/arch/x86.cpp")
  51. end
  52. add_syslinks("log")
  53. add_packages("xz-embedded")
  54. target("pine-enhances")
  55. set_kind("$(kind)")
  56. add_files("enhances.cpp")
  57. add_syslinks("log")
  58. add_packages("dobby")
  59. ]])
  60. import("package.tools.xmake").install(package)
  61. end)
  62. on_test(function (package)
  63. assert(package:check_cxxsnippets({test = [[
  64. #include <pine/art/art_method.h>
  65. void test() {
  66. pine::art::ArtMethod* method = pine::art::ArtMethod::New();
  67. }
  68. ]]}, {configs = {languages = "c++17"}}))
  69. end)