aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmem
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libmem')
-rw-r--r--vcpkg/ports/libmem/0001-CMakeLists.patch120
-rw-r--r--vcpkg/ports/libmem/libmem-config.cmake.in11
-rw-r--r--vcpkg/ports/libmem/portfile.cmake27
-rw-r--r--vcpkg/ports/libmem/vcpkg.json31
4 files changed, 189 insertions, 0 deletions
diff --git a/vcpkg/ports/libmem/0001-CMakeLists.patch b/vcpkg/ports/libmem/0001-CMakeLists.patch
new file mode 100644
index 0000000..3494cdb
--- /dev/null
+++ b/vcpkg/ports/libmem/0001-CMakeLists.patch
@@ -0,0 +1,120 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 43464c9..bbbcebc 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,6 +1,6 @@
+ cmake_minimum_required(VERSION 3.22.1)
+
+-include(ExternalProject)
++set(CMAKE_CXX_STANDARD 17)
+
+ project(libmem
+ LANGUAGES
+@@ -49,6 +49,7 @@ message(STATUS
+ message(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
+ message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
+
++if(0)
+ # External dependencies
+ set(EXTERNAL_DEPENDENCIES_DIR "${PROJECT_SOURCE_DIR}/external")
+ set(CAPSTONE_DIR "${EXTERNAL_DEPENDENCIES_DIR}/capstone")
+@@ -66,6 +67,7 @@ set_target_properties(capstone PROPERTIES IMPORTED_LOCATION ${CAPSTONE_IMPORT_DI
+ add_library(keystone STATIC IMPORTED)
+ set_target_properties(keystone PROPERTIES IMPORTED_LOCATION ${KEYSTONE_IMPORT_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}keystone${CMAKE_STATIC_LIBRARY_SUFFIX})
+ # End of external dependencies
++endif()
+
+ set(LIBMEM_DIR "${PROJECT_SOURCE_DIR}")
+ set(LIBMEM_INC "${LIBMEM_DIR}/include")
+@@ -98,10 +100,16 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
+
+ file(GLOB LIBMEM_SRC ${LIBMEM_ARCH_SRC} "${LIBMEM_DIR}/src/freebsd/*.c" "${LIBMEM_DIR}/src/freebsd/ptrace/*.c" "${LIBMEM_DIR}/src/common/*.c" "${LIBMEM_DIR}/src/common/*.cpp" "${INTERNAL_DIR}/posixutils/*.c" "${INTERNAL_DIR}/elfutils/*.c" "${INTERNAL_DIR}/demangler/*.cpp")
+ endif()
++find_package(PkgConfig)
++pkg_check_modules(keystone REQUIRED IMPORTED_TARGET keystone)
++find_package(capstone CONFIG REQUIRED)
++find_package(LLVM CONFIG REQUIRED)
++target_compile_definitions(LLVMDemangle INTERFACE ${LLVM_DEFINITIONS})
++target_include_directories(LLVMDemangle INTERFACE ${LLVM_INCLUDE_DIRS})
+ set(LIBMEM_DEPS
+- capstone
+- keystone
+- llvm
++ capstone::capstone
++ PkgConfig::keystone
++ LLVMDemangle
+ )
+
+ if (LIBMEM_BUILD_STATIC)
+@@ -113,9 +121,6 @@ target_include_directories(libmem PRIVATE "${LIBMEM_DIR}/src" "${INTERNAL_DIR}"
+
+ include_directories(${PROJECT_SOURCE_DIR}
+ ${LIBMEM_INC}
+- ${CAPSTONE_INC}
+- ${KEYSTONE_INC}
+- ${LLVM_INC}
+ )
+
+ if (LIBMEM_BUILD_TESTS)
+@@ -125,10 +130,6 @@ endif()
+
+ set_target_properties(libmem PROPERTIES POSITION_INDEPENDENT_CODE True INCLUDES ${LIBMEM_INC})
+ target_compile_definitions(libmem PUBLIC LM_EXPORT)
+-add_dependencies(libmem
+- capstone-engine
+- keystone-engine
+-)
+
+ if(${CMAKE_SYSTEM_NAME} STREQUAL Windows OR ${CMAKE_SYSTEM_NAME} STREQUAL CYGWIN)
+ set(LIBMEM_DEPS
+@@ -161,7 +162,7 @@ else()
+ endif()
+
+ target_link_libraries(libmem ${LIBMEM_DEPS})
+-if(LIBMEM_BUILD_STATIC)
++if(0)
+ # Create a bundled static library containing all dependencies (to mimic the shared library behavior)
+ set_target_properties(libmem PROPERTIES OUTPUT_NAME "libmem_partial")
+ set(libmem_bundle_files "$<TARGET_FILE:libmem>")
+@@ -202,7 +203,7 @@ if(LIBMEM_BUILD_STATIC)
+ endif()
+ endif()
+
+-if(${CMAKE_SYSTEM_NAME} STREQUAL Windows OR ${CMAKE_SYSTEM_NAME} STREQUAL CYGWIN)
++if(0)
+ if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL CYGWIN)
+ cmake_path(SET CMAKE_INSTALL_PREFIX "$ENV{ProgramFiles}")
+ else()
+@@ -211,14 +212,27 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL Windows OR ${CMAKE_SYSTEM_NAME} STREQUAL CYGWIN
+ endif()
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/libmem")
+ execute_process(COMMAND mkdir "${CMAKE_INSTALL_PREFIX}")
+-else()
+ set(CMAKE_INSTALL_PREFIX "/usr")
+ endif()
+
+-install(TARGETS libmem
+- LIBRARY DESTINATION lib)
+
+-install(TARGETS libmem
+- RUNTIME DESTINATION lib)
+
+ install(DIRECTORY ${LIBMEM_INC}/libmem DESTINATION include)
++install(TARGETS libmem EXPORT libmem-targets
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib
++ RUNTIME DESTINATION bin
++)
++install(EXPORT libmem-targets NAMESPACE libmem:: DESTINATION "share/libmem")
++include(CMakePackageConfigHelpers)
++configure_package_config_file(
++ "${CMAKE_CURRENT_LIST_DIR}/libmem-config.cmake.in"
++ "${CMAKE_CURRENT_BINARY_DIR}/libmem-config.cmake"
++ INSTALL_DESTINATION "share/libmem"
++)
++write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/libmem-config-version.cmake" VERSION "${VERSION}" COMPATIBILITY SameMajorVersion)
++install(FILES
++ "${CMAKE_CURRENT_BINARY_DIR}/libmem-config.cmake"
++ "${CMAKE_CURRENT_BINARY_DIR}/libmem-config-version.cmake"
++ DESTINATION "share/libmem"
++)
diff --git a/vcpkg/ports/libmem/libmem-config.cmake.in b/vcpkg/ports/libmem/libmem-config.cmake.in
new file mode 100644
index 0000000..9f4067c
--- /dev/null
+++ b/vcpkg/ports/libmem/libmem-config.cmake.in
@@ -0,0 +1,11 @@
+@PACKAGE_INIT@
+include(CMakeFindDependencyMacro)
+
+find_dependency(capstone CONFIG)
+
+find_dependency(PkgConfig)
+pkg_check_modules(keystone REQUIRED IMPORTED_TARGET keystone)
+
+find_dependency(LLVM CONFIG)
+
+include("${CMAKE_CURRENT_LIST_DIR}/libmem-targets.cmake")
diff --git a/vcpkg/ports/libmem/portfile.cmake b/vcpkg/ports/libmem/portfile.cmake
new file mode 100644
index 0000000..87640e3
--- /dev/null
+++ b/vcpkg/ports/libmem/portfile.cmake
@@ -0,0 +1,27 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO rdbo/libmem
+ REF "${VERSION}"
+ SHA512 ee231e5ae7ed08f2e9950ee2d6604ed29a777d816a057b6451953cb03eb52579a73c3e77b9af059963223486798bf73ea7e2f579c7e9d1e222091125b3e1eeee
+ HEAD_REF master
+ PATCHES
+ 0001-CMakeLists.patch
+)
+file(REMOVE "${SOURCE_PATH}/PreLoad.cmake")
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/libmem-config.cmake.in" DESTINATION "${SOURCE_PATH}")
+vcpkg_find_acquire_program(PKGCONFIG)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" LIBMEM_BUILD_STATIC)
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DVERSION=${VERSION}
+ -DLIBMEM_BUILD_TESTS=OFF
+ -DLIBMEM_DEEP_TESTS=OFF
+ -DLIBMEM_BUILD_STATIC=${LIBMEM_BUILD_STATIC}
+ "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
+)
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup()
+vcpkg_copy_pdbs()
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/libmem/vcpkg.json b/vcpkg/ports/libmem/vcpkg.json
new file mode 100644
index 0000000..da23c8b
--- /dev/null
+++ b/vcpkg/ports/libmem/vcpkg.json
@@ -0,0 +1,31 @@
+{
+ "name": "libmem",
+ "version": "5.1.0",
+ "description": "Advanced Game Hacking Library for C, Modern C++, Rust and Python (Windows/Linux/FreeBSD) (Process/Memory Hacking) (Hooking/Detouring) (Cross Platform) (x86/x64/ARM/ARM64) (DLL/SO Injection) (Internal/External) (Assembler/Disassembler)",
+ "homepage": "https://github.com/rdbo/libmem",
+ "license": "AGPL-3.0-only",
+ "supports": "(!xbox & windows) | linux | freebsd | android",
+ "dependencies": [
+ "capstone",
+ "keystone",
+ {
+ "name": "llvm",
+ "default-features": false,
+ "features": [
+ "default-targets"
+ ]
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "vcpkg-pkgconfig-get-modules",
+ "host": true
+ }
+ ]
+}