diff options
Diffstat (limited to 'vcpkg/ports/libmem')
| -rw-r--r-- | vcpkg/ports/libmem/0001-CMakeLists.patch | 120 | ||||
| -rw-r--r-- | vcpkg/ports/libmem/libmem-config.cmake.in | 11 | ||||
| -rw-r--r-- | vcpkg/ports/libmem/portfile.cmake | 27 | ||||
| -rw-r--r-- | vcpkg/ports/libmem/vcpkg.json | 31 |
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 + } + ] +} |