Procházet zdrojové kódy

easyhook: new port (#7026)

* init

* easyhook: new port

* Drop arm
Saikari před 3 měsíci
rodič
revize
7032ff956e

+ 154 - 0
packages/e/easyhook/patches/v2.7.7097+0/fix-build.patch

@@ -0,0 +1,154 @@
+diff --git a/EasyHookDll/EasyHookDll.vcxproj b/EasyHookDll/EasyHookDll.vcxproj
+index ec66f91..5773555 100644
+--- a/EasyHookDll/EasyHookDll.vcxproj
++++ b/EasyHookDll/EasyHookDll.vcxproj
+@@ -188,7 +188,7 @@
+       <StringPooling>true</StringPooling>
+       <MinimalRebuild>true</MinimalRebuild>
+       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-      <SmallerTypeCheck>true</SmallerTypeCheck>
++      <SmallerTypeCheck>false</SmallerTypeCheck>
+       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+       <PrecompiledHeader>
+       </PrecompiledHeader>
+@@ -207,10 +207,6 @@
+       <TargetMachine>MachineX86</TargetMachine>
+       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll"
+-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+     </MASM>
+@@ -223,7 +219,7 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <StringPooling>true</StringPooling>
+       <MinimalRebuild>true</MinimalRebuild>
+       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-      <SmallerTypeCheck>true</SmallerTypeCheck>
++      <SmallerTypeCheck>false</SmallerTypeCheck>
+       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+       <PrecompiledHeader>
+       </PrecompiledHeader>
+@@ -242,10 +238,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <TargetMachine>MachineX86</TargetMachine>
+       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll"
+-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+     </MASM>
+@@ -261,7 +253,7 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <StringPooling>true</StringPooling>
+       <MinimalRebuild>true</MinimalRebuild>
+       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-      <SmallerTypeCheck>true</SmallerTypeCheck>
++      <SmallerTypeCheck>false</SmallerTypeCheck>
+       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+       <PrecompiledHeader>
+       </PrecompiledHeader>
+@@ -278,10 +270,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <SubSystem>Windows</SubSystem>
+       <TargetMachine>MachineX64</TargetMachine>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll"
+-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+     </MASM>
+@@ -297,7 +285,7 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+       <StringPooling>true</StringPooling>
+       <MinimalRebuild>true</MinimalRebuild>
+       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-      <SmallerTypeCheck>true</SmallerTypeCheck>
++      <SmallerTypeCheck>false</SmallerTypeCheck>
+       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+       <PrecompiledHeader>
+       </PrecompiledHeader>
+@@ -314,10 +302,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+       <SubSystem>Windows</SubSystem>
+       <TargetMachine>MachineX64</TargetMachine>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll"
+-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+     </MASM>
+@@ -355,10 +339,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+       <TargetMachine>MachineX86</TargetMachine>
+       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll"
+-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <GenerateDebugInformation>false</GenerateDebugInformation>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+@@ -397,10 +377,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <TargetMachine>MachineX86</TargetMachine>
+       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll"
+-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <GenerateDebugInformation>false</GenerateDebugInformation>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+@@ -439,10 +415,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib"</Command>
+       <EnableCOMDATFolding>true</EnableCOMDATFolding>
+       <TargetMachine>MachineX64</TargetMachine>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll"
+-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <GenerateDebugInformation>false</GenerateDebugInformation>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+@@ -481,10 +453,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+       <EnableCOMDATFolding>true</EnableCOMDATFolding>
+       <TargetMachine>MachineX64</TargetMachine>
+     </Link>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll"
+-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib"</Command>
+-    </PostBuildEvent>
+     <MASM>
+       <GenerateDebugInformation>false</GenerateDebugInformation>
+       <UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
+diff --git a/EasyHookDll/EasyHookDll_32.rc b/EasyHookDll/EasyHookDll_32.rc
+index 2a8dfb6..abf5ae3 100644
+--- a/EasyHookDll/EasyHookDll_32.rc
++++ b/EasyHookDll/EasyHookDll_32.rc
+@@ -7,7 +7,7 @@
+ //
+ // Generated from the TEXTINCLUDE 2 resource.
+ //
+-#include "afxres.h"
++#include "windows.h"
+ 
+ /////////////////////////////////////////////////////////////////////////////
+ #undef APSTUDIO_READONLY_SYMBOLS
+diff --git a/EasyHookDll/EasyHookDll_64.rc b/EasyHookDll/EasyHookDll_64.rc
+index 163a2f0..b32a4d4 100644
+--- a/EasyHookDll/EasyHookDll_64.rc
++++ b/EasyHookDll/EasyHookDll_64.rc
+@@ -7,7 +7,7 @@
+ //
+ // Generated from the TEXTINCLUDE 2 resource.
+ //
+-#include "afxres.h"
++#include "windows.h"
+ 
+ /////////////////////////////////////////////////////////////////////////////
+ #undef APSTUDIO_READONLY_SYMBOLS

+ 46 - 0
packages/e/easyhook/xmake.lua

@@ -0,0 +1,46 @@
+package("easyhook")
+    set_homepage("https://easyhook.github.io")
+    set_description("EasyHook - The reinvention of Windows API Hooking")
+    set_license("MIT")
+
+    add_urls("https://github.com/EasyHook/EasyHook/archive/refs/tags/$(version).tar.gz", {version = function (version)
+        return version:gsub("%+", ".")
+    end})
+    add_urls("https://github.com/EasyHook/EasyHook.git")
+
+    add_versions("v2.7.7097+0", "d0a9f0026c2939234d6cb086a64234ad90ff5eb574fc09dd5d6e0b32e72221d1")
+    add_patches("v2.7.7097+0", "patches/v2.7.7097+0/fix-build.patch", "b11b0dd74a224f23530ba1b8fe3c210d62f946868a67d0a07afba5501d572abb")
+
+    add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true})
+
+    add_syslinks("psapi", "Aux_ulib")
+
+    on_install("windows|!arm*", function (package)
+        import("package.tools.msbuild")
+        -- Debundle
+        os.rm("EasyHookDll/AUX_ULIB_x64.LIB", "EasyHookDll/AUX_ULIB_x86.LIB")
+        io.replace("EasyHookDll/EasyHookDll.vcxproj", "Aux_ulib_x86.lib", "Aux_ulib.lib", {plain = true})
+        io.replace("EasyHookDll/EasyHookDll.vcxproj", "Aux_ulib_x64.lib", "Aux_ulib.lib", {plain = true})
+        os.cp("Public/easyhook.h", package:installdir("include"))
+        local arch = package:is_arch("x64") and "x64" or "Win32"
+        if not package:has_runtime("MT", "MTd") then
+            -- Allow MD, MDd
+            io.replace("EasyHookDll/EasyHookDll.vcxproj",
+                "<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>", "<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>", {plain = true})
+            io.replace("EasyHookDll/EasyHookDll.vcxproj",
+                "<RuntimeLibrary>MultiThreaded</RuntimeLibrary>", "<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>", {plain = true})
+        end
+        local mode = package:is_debug() and "netfx4-Debug" or "netfx4-Release"
+        local configs = { "EasyHook.sln" }
+        table.insert(configs, "/t:EasyHookDll")
+        table.insert(configs, "/p:Configuration=" .. mode)
+        table.insert(configs, "/p:Platform=" .. arch)
+        table.insert(configs, "/p:BuildProjectReferences=false")
+        msbuild.build(package, configs)
+        os.cp("Build/*/*/**.lib", package:installdir("lib"))
+        os.cp("Build/*/*/**.dll", package:installdir("bin"))
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("LhUpdateModuleInformation", {includes = "easyhook.h"}))
+    end)