xmake.lua 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package("dexbuilder")
  2. set_homepage("https://github.com/LSPosed/DexBuilder")
  3. set_description("Generate dex file by c++")
  4. add_urls("https://github.com/LSPosed/DexBuilder.git")
  5. add_versions("2025.12.30", "ac7fb2230954ee311808bad469b0db501f31bfb8")
  6. add_deps("parallel-hashmap", "zlib")
  7. if on_check then
  8. on_check(function (package)
  9. assert(package:check_cxxsnippets({test = [[
  10. #include <string_view>
  11. #include <cstddef>
  12. void test() {
  13. constexpr auto lambda_check = [](std::string_view a) { return a.empty(); };
  14. int data[2] = {1, 2};
  15. auto [x, y] = data;
  16. auto dex_idx = 0zu;
  17. }
  18. ]]}, {configs = {languages = "c++23"}}), "package(dexbuilder) Require at least C++23 (supports '0zu' suffix).")
  19. end)
  20. end
  21. on_install("android", function (package)
  22. io.writefile("xmake.lua", [[
  23. add_rules("mode.release", "mode.debug")
  24. set_languages("c++23")
  25. add_requires("parallel-hashmap", "zlib")
  26. add_packages("parallel-hashmap", "zlib")
  27. target("dexbuilder")
  28. set_kind("$(kind)")
  29. add_files(
  30. "dex_builder.cc",
  31. "dex_helper.cc",
  32. "slicer/reader.cc",
  33. "slicer/writer.cc",
  34. "slicer/dex_ir.cc",
  35. "slicer/common.cc",
  36. "slicer/dex_format.cc",
  37. "slicer/dex_utf8.cc",
  38. "slicer/dex_bytecode.cc",
  39. "slicer/sha1.cpp")
  40. add_headerfiles("include/(**.h)",
  41. "include/(**.ixx)")
  42. add_includedirs("include", {public = true})
  43. add_syslinks("log")
  44. ]])
  45. import("package.tools.xmake").install(package)
  46. end)
  47. on_test(function (package)
  48. assert(package:check_cxxsnippets({test = [[
  49. void test() {
  50. startop::dex::DexBuilder dex_file;
  51. startop::dex::ClassBuilder builder{
  52. dex_file.MakeClass("xposed.dummy.XRandomSuperClass")};
  53. builder.setSuperClass(startop::dex::TypeDescriptor::FromClassname("Classname"));
  54. }
  55. ]]}, {configs = {languages = "c++23"}, includes = "dex_builder.h"}))
  56. end)