Bladeren bron

kittymemory: add new package (#7633)

* kittymemory: add new package

* kittymemory: add new package

* try c++17

* fixup
Saikari 1 maand geleden
bovenliggende
commit
5f58569fde
1 gewijzigde bestanden met toevoegingen van 65 en 0 verwijderingen
  1. 65 0
      packages/k/kittymemory/xmake.lua

+ 65 - 0
packages/k/kittymemory/xmake.lua

@@ -0,0 +1,65 @@
+package("kittymemory")
+    set_homepage("https://github.com/MJx0/KittyMemory")
+    set_description("This library aims for runtime code patching for both Android and iOS")
+    set_license("MIT")
+
+    add_urls("https://github.com/MJx0/KittyMemory.git", {submodules = false})
+    add_versions("2025.05.30", "d0a701c24ecd8b0a4644633e998ac4aa33df7bcd")
+
+    add_configs("keystone", {description = "Use Keystone and MemoryPatch::createWithAsm", default = true, type = "boolean"})
+    add_configs("logd", {description = "Define kITTYMEMORY_DEBUG in cpp flags for KITTY_LOGD debug outputs", default = false, type = "boolean"})
+
+    on_load(function (package)
+        if package:config("keystone") then
+            package:add("deps", "keystone")
+        else
+            package:add("defines", "kNO_KEYSTONE")
+        end
+        if package:config("logd") then
+            package:add("defines", "kITTYMEMORY_DEBUG")
+        end
+    end)
+
+    on_install("android", "iphoneos", function (package)
+        io.replace("KittyMemory/KittyUtils.hpp", [[#ifdef __ANDROID__]], [[#ifdef __ANDROID__
+#include <sys/system_properties.h>]], {plain = true})
+        local configs = {
+            keystone = package:config("keystone"),
+            logd = package:config("logd")
+        }
+        io.writefile("xmake.lua", [[
+            add_rules("mode.release", "mode.debug")
+
+            option("keystone", {default = true})
+            option("logd", {default = false})
+
+            if has_config("keystone") then
+                add_requires("keystone")
+            end
+
+            target("KittyMemory")
+                set_languages("c++17")
+                set_kind("$(kind)")
+                add_files("KittyMemory/*.cpp")
+                add_includedirs("KittyMemory")
+                add_headerfiles("(KittyMemory/*.hpp)")
+                if is_plat("android") then
+                    add_syslinks("log")
+                elseif is_plat("iphoneos") then
+                    add_frameworks("Foundation")
+                end
+                if has_config("keystone") then
+                    add_packages("keystone")
+                else
+                    add_defines("kNO_KEYSTONE")
+                end
+                if has_config("logd") then
+                    add_defines("kITTYMEMORY_DEBUG")
+                end
+        ]])
+        import("package.tools.xmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cxxfuncs([[KittyMemory::memRead(0, 0, 10)]], {includes = "KittyMemory/KittyMemory.hpp", configs = {languages = "c++17"}}))
+    end)