Skip to content

Commit

Permalink
Merge pull request #30 from rumblehhh/master
Browse files Browse the repository at this point in the history
Use ExternalProject_add to download captone only
  • Loading branch information
kubo authored Oct 5, 2021
2 parents 8773f89 + a9d9691 commit 7bc6f18
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 26 deletions.
53 changes: 27 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,36 +73,34 @@ else ()
set(FUNCHOOK_DEPS dl)
endif ()

function(add_subdirectory_pic source_dir binary_dir)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_subdirectory(${source_dir} ${binary_dir})
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)

include(ExternalProject)
ExternalProject_Add(capstone_src
GIT_REPOSITORY https://github.com/aquynh/capstone.git
GIT_TAG 4.0.2
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
-DCAPSTONE_BUILD_SHARED=OFF
-DCAPSTONE_BUILD_STATIC_RUNTIME=OFF
-DCAPSTONE_BUILD_TESTS=OFF
-DCAPSTONE_BUILD_CSTOOL=OFF
-DCAPSTONE_ARCHITECTURE_DEFAULT=OFF
-DCAPSTONE_${FUNCHOOK_CPU_UPPER}_SUPPORT=ON
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include)
add_library(capstone STATIC IMPORTED)
set_property(TARGET capstone PROPERTY IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}capstone${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET capstone PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include)
list(APPEND FUNCHOOK_DEPS capstone)
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)
set(DISASM capstone)
endif ()

Expand Down Expand Up @@ -178,12 +176,15 @@ 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 (NOT DISASM STREQUAL distorm)
add_dependencies(${target_name} ${DISASM}_src)
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)
Expand Down
17 changes: 17 additions & 0 deletions cmake/capstone.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.6)

include(ExternalProject)

project(capstone-download NONE)

ExternalProject_Add(external_capstone
GIT_REPOSITORY https://github.com/aquynh/capstone.git
GIT_TAG 4.0.2
GIT_SHALLOW TRUE
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/capstone-src"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/capstone-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

0 comments on commit 7bc6f18

Please sign in to comment.