|
@@ -0,0 +1,149 @@
|
|
|
+From 676063535d82077dc47de1e5ef163ec765b1f682 Mon Sep 17 00:00:00 2001
|
|
|
+From: Redbeanw44602 <[email protected]>
|
|
|
+Date: Mon, 31 Mar 2025 23:09:52 +0800
|
|
|
+Subject: [PATCH] fix build system deps
|
|
|
+
|
|
|
+---
|
|
|
+ CMakeLists.txt | 91 +++++++++++++-------------------------------------
|
|
|
+ 1 file changed, 24 insertions(+), 67 deletions(-)
|
|
|
+
|
|
|
+diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
|
+index 1c3b2e9..0894f1d 100644
|
|
|
+--- a/CMakeLists.txt
|
|
|
++++ b/CMakeLists.txt
|
|
|
+@@ -86,25 +86,8 @@ endfunction(add_subdirectory_pic)
|
|
|
+ # capstone
|
|
|
+ #
|
|
|
+ if (DISASM_CAPSTONE)
|
|
|
+- configure_file(cmake/capstone.cmake.in capstone-download/CMakeLists.txt)
|
|
|
+- execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
|
|
+- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/capstone-download"
|
|
|
+- )
|
|
|
+- execute_process(COMMAND "${CMAKE_COMMAND}" --build .
|
|
|
+- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/capstone-download"
|
|
|
+- )
|
|
|
+-
|
|
|
+- string(TOUPPER ${FUNCHOOK_CPU} FUNCHOOK_CPU_UPPER)
|
|
|
+-
|
|
|
+- set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "")
|
|
|
+- set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "")
|
|
|
+- set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "")
|
|
|
+- set(CAPSTONE_BUILD_CSTOOL OFF CACHE BOOL "")
|
|
|
+- set(CAPSTONE_ARCHITECTURE_DEFAULT OFF CACHE BOOL "")
|
|
|
+- set(CAPSTONE_${FUNCHOOK_CPU_UPPER}_SUPPORT ON CACHE BOOL "")
|
|
|
+- add_subdirectory_pic(${CMAKE_CURRENT_BINARY_DIR}/capstone-src ${CMAKE_CURRENT_BINARY_DIR}/capstone-build)
|
|
|
+-
|
|
|
+- list(APPEND FUNCHOOK_DEPS capstone-static)
|
|
|
++ find_package(capstone REQUIRED)
|
|
|
++ list(APPEND FUNCHOOK_DEPS capstone::capstone_static)
|
|
|
+ set(DISASM capstone)
|
|
|
+ endif ()
|
|
|
+
|
|
|
+@@ -112,55 +95,17 @@ endif ()
|
|
|
+ # distorm
|
|
|
+ #
|
|
|
+ if (DISASM_DISTORM)
|
|
|
+- set(DISTORM_PATH distorm/)
|
|
|
+- set(DISTORM_SRC_DIR ${DISTORM_PATH}/src/)
|
|
|
+- set(DISTORM_SOURCES ${DISTORM_SRC_DIR}/decoder.c ${DISTORM_SRC_DIR}/distorm.c ${DISTORM_SRC_DIR}/instructions.c
|
|
|
+- ${DISTORM_SRC_DIR}/insts.c ${DISTORM_SRC_DIR}/mnemonics.c ${DISTORM_SRC_DIR}/operands.c
|
|
|
+- ${DISTORM_SRC_DIR}/prefix.c ${DISTORM_SRC_DIR}/textdefs.c)
|
|
|
+- if (MSVC)
|
|
|
+- # Suppress warning C4819:
|
|
|
+- # The file contains a character that cannot be represented in the current code
|
|
|
+- # page (number). Save the file in Unicode format to prevent data loss.
|
|
|
+- #
|
|
|
+- # prefix.c includes non-ascii chracters and C compiler warns C4819 on multibyte Windows
|
|
|
+- # environment.
|
|
|
+- set_source_files_properties(${DISTORM_SRC_DIR}/prefix.c PROPERTIES COMPILE_FLAGS /wd4819)
|
|
|
+- endif ()
|
|
|
+- add_library(distorm STATIC ${DISTORM_SOURCES})
|
|
|
+- set_target_properties(distorm PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|
+- target_include_directories(distorm PUBLIC ${DISTORM_PATH}/include)
|
|
|
+- if (HAVE_FVISIBILITY_HIDDEN)
|
|
|
+- target_compile_options(distorm PRIVATE -fvisibility=hidden)
|
|
|
+- endif ()
|
|
|
+ set(DISASM distorm)
|
|
|
+- list(APPEND FUNCHOOK_DEPS distorm)
|
|
|
+ endif ()
|
|
|
+
|
|
|
+ #
|
|
|
+ # zydis
|
|
|
+ #
|
|
|
+ if (DISASM_ZYDIS)
|
|
|
+- include(ExternalProject)
|
|
|
+- ExternalProject_Add(Zydis_src
|
|
|
+- GIT_REPOSITORY https://github.com/zyantific/zydis.git
|
|
|
+- GIT_TAG v3.1.0
|
|
|
+- GIT_SHALLOW TRUE
|
|
|
+- CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
|
+- -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
|
|
|
+- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
|
+- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
|
|
|
+- -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
|
|
+- -DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
|
+- -DZYDIS_BUILD_SHARED_LIB=OFF
|
|
|
+- -DZYDIS_BUILD_EXAMPLES=OFF
|
|
|
+- -DZYDIS_BUILD_TOOLS=OFF
|
|
|
+- INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install && ${CMAKE_COMMAND} --build zycore --target install
|
|
|
+- )
|
|
|
+- file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include)
|
|
|
+- add_library(Zydis STATIC IMPORTED)
|
|
|
+- set_property(TARGET Zydis PROPERTY IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}Zydis${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
|
+- set_property(TARGET Zydis PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include)
|
|
|
+- list(APPEND FUNCHOOK_DEPS Zydis)
|
|
|
++ find_package(Zycore REQUIRED)
|
|
|
++ find_package(Zydis REQUIRED)
|
|
|
++ list(APPEND FUNCHOOK_DEPS Zydis::Zydis)
|
|
|
++ list(APPEND FUNCHOOK_DEPS Zycore::Zycore)
|
|
|
+ set(DISASM Zydis)
|
|
|
+ endif ()
|
|
|
+
|
|
|
+@@ -180,15 +125,9 @@ configure_file(src/cmake_config.h.in config.h)
|
|
|
+
|
|
|
+ function (add_funchook_library target_name target_type)
|
|
|
+ add_library(${target_name} ${target_type} ${FUNCHOOK_SOURCES})
|
|
|
+- if (DISASM_ZYDIS)
|
|
|
+- add_dependencies(${target_name} Zydis_src)
|
|
|
+- endif ()
|
|
|
+ set_target_properties(${target_name} PROPERTIES ${FUNCHOOK_PROPERTIES})
|
|
|
+ target_include_directories(${target_name} PUBLIC include)
|
|
|
+ target_include_directories(${target_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # to include config.h
|
|
|
+- if (DISASM_CAPSTONE)
|
|
|
+- target_include_directories(${target_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/capstone-src/include)
|
|
|
+- endif()
|
|
|
+ target_link_libraries(${target_name} PRIVATE ${FUNCHOOK_DEPS})
|
|
|
+ if (HAVE_FVISIBILITY_HIDDEN)
|
|
|
+ target_compile_options(${target_name} PRIVATE -fvisibility=hidden)
|
|
|
+@@ -206,10 +145,28 @@ if (FUNCHOOK_BUILD_SHARED)
|
|
|
+ if (MSVC)
|
|
|
+ set_target_properties(funchook-shared PROPERTIES IMPORT_SUFFIX _dll.lib)
|
|
|
+ endif ()
|
|
|
++ if (DISASM_DISTORM)
|
|
|
++ find_package(PkgConfig REQUIRED)
|
|
|
++ pkg_check_modules(DISTORM REQUIRED distorm)
|
|
|
++ target_include_directories(funchook-shared PRIVATE ${DISTORM_INCLUDE_DIRS}/distorm)
|
|
|
++ target_link_directories(funchook-shared PRIVATE ${DISTORM_LIBRARY_DIRS})
|
|
|
++ target_link_libraries(funchook-shared PRIVATE ${DISTORM_LIBRARIES})
|
|
|
++ target_compile_options(funchook-shared PRIVATE ${DISTORM_CFLAGS})
|
|
|
++ target_link_options(funchook-shared PRIVATE ${DISTORM_LDFLAGS})
|
|
|
++ endif ()
|
|
|
+ endif ()
|
|
|
+
|
|
|
+ if (FUNCHOOK_BUILD_STATIC)
|
|
|
+ add_funchook_library(funchook-static STATIC)
|
|
|
++ if (DISASM_DISTORM)
|
|
|
++ find_package(PkgConfig REQUIRED)
|
|
|
++ pkg_check_modules(DISTORM REQUIRED distorm)
|
|
|
++ target_include_directories(funchook-static PRIVATE ${DISTORM_INCLUDE_DIRS}/distorm)
|
|
|
++ target_link_directories(funchook-static PRIVATE ${DISTORM_LIBRARY_DIRS})
|
|
|
++ target_link_libraries(funchook-static PRIVATE ${DISTORM_LIBRARIES})
|
|
|
++ target_compile_options(funchook-static PRIVATE ${DISTORM_CFLAGS})
|
|
|
++ target_link_options(funchook-static PRIVATE ${DISTORM_LDFLAGS})
|
|
|
++ endif ()
|
|
|
+ endif ()
|
|
|
+
|
|
|
+ #
|
|
|
+--
|
|
|
+2.49.0
|
|
|
+
|