From ed7822f5af596076143fe0d89bb1dba04ef26c8f Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Fri, 2 Aug 2019 08:50:06 +0800 Subject: [PATCH] [easyhook]Add new port. (#7487) * [easyhook]Add new port. * [easyhook]Replace files with a patch, add Description, use .Net framework 4.0. * [easyhook]Set ONLY_DYNAMIC_CRT. * [easyhook]Print error message when building static library. --- ports/easyhook/CONTROL | 4 ++ ports/easyhook/fix-build.patch | 128 +++++++++++++++++++++++++++++++++ ports/easyhook/portfile.cmake | 38 ++++++++++ 3 files changed, 170 insertions(+) create mode 100644 ports/easyhook/CONTROL create mode 100644 ports/easyhook/fix-build.patch create mode 100644 ports/easyhook/portfile.cmake diff --git a/ports/easyhook/CONTROL b/ports/easyhook/CONTROL new file mode 100644 index 000000000..a47eb803d --- /dev/null +++ b/ports/easyhook/CONTROL @@ -0,0 +1,4 @@ +Source: easyhook +Version: 2.7.6789.0 +Homepage: https://github.com/EasyHook/EasyHook +Description: This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment on 32- or 64-bit Windows Vista x64, Windows Server 2008 x64, Windows 7, Windows 8.1, and Windows 10. \ No newline at end of file diff --git a/ports/easyhook/fix-build.patch b/ports/easyhook/fix-build.patch new file mode 100644 index 000000000..230faf65d --- /dev/null +++ b/ports/easyhook/fix-build.patch @@ -0,0 +1,128 @@ +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 @@ + true + true + EnableFastChecks +- true ++ false + MultiThreadedDebug + + +@@ -207,10 +207,6 @@ + MachineX86 + false + +- +- copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll" +-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" +- + + false + +@@ -223,7 +219,7 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + true + true + EnableFastChecks +- true ++ false + MultiThreadedDebug + + +@@ -242,10 +238,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + MachineX86 + false + +- +- copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll" +-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" +- + + false + +@@ -261,7 +253,7 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + true + true + EnableFastChecks +- true ++ false + MultiThreadedDebug + + +@@ -278,10 +270,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + Windows + MachineX64 + +- +- copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll" +-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" +- + + false + +@@ -297,7 +285,7 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" + true + true + EnableFastChecks +- true ++ false + MultiThreadedDebug + + +@@ -314,10 +302,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" + Windows + MachineX64 + +- +- copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll" +-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" +- + + false + +@@ -355,10 +339,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" + MachineX86 + false + +- +- copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll" +-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" +- + + false + false +@@ -397,10 +377,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + MachineX86 + false + +- +- copy "$(TargetPath)" "$(TargetDir)..\x64\EasyHook32.dll" +-copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" +- + + false + false +@@ -439,10 +415,6 @@ copy "$(TargetDir)EasyHook32.lib" "$(TargetDir)..\x64\EasyHook32.lib" + true + MachineX64 + +- +- copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll" +-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" +- + + false + false +@@ -481,10 +453,6 @@ copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" + true + MachineX64 + +- +- copy "$(TargetPath)" "$(TargetDir)..\x86\EasyHook64.dll" +-copy "$(TargetDir)EasyHook64.lib" "$(TargetDir)..\x86\EasyHook64.lib" +- + + false + false diff --git a/ports/easyhook/portfile.cmake b/ports/easyhook/portfile.cmake new file mode 100644 index 000000000..d74457880 --- /dev/null +++ b/ports/easyhook/portfile.cmake @@ -0,0 +1,38 @@ +include(vcpkg_common_functions) + +if (NOT VCPKG_TARGET_IS_WINDOWS) + message(FATAL_ERROR "easyhook only support windows.") +endif() + +if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + message(FATAL_ERROR "easyhook can only be built as dynamic library.") +endif() + +message(".Net framework 4.0 is required, please install it before install easyhook.") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO EasyHook/EasyHook + REF v2.7.6789.0 + SHA512 a48b4fe6dd2e55a2d515bc917c0f3ff5b73f08d1778e671df802347c3b8e1d4638005582a494acdf891ffe3fa6eae3eab0096083a8af2352e3f0883eb83421d6 + HEAD_REF master + PATCHES fix-build.patch +) + +vcpkg_install_msbuild( + SOURCE_PATH ${SOURCE_PATH} + PROJECT_SUBPATH EasyHook.sln + TARGET EasyHookDll + RELEASE_CONFIGURATION "netfx4-Release" + DEBUG_CONFIGURATION "netfx4-Debug" +) + +# These libraries are useless, so remove. +file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/EasyHook.dll ${CURRENT_PACKAGES_DIR}/bin/EasyHook.pdb) +file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/EasyHook.dll ${CURRENT_PACKAGES_DIR}/debug/bin/EasyHook.pdb) + +# Install includes +file(INSTALL ${SOURCE_PATH}/Public/easyhook.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/easyhook) + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/easyhook RENAME copyright)