-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a481e3d
commit 971663f
Showing
4 changed files
with
123 additions
and
117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,116 +1,116 @@ | ||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index 534057a..049805a 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") | ||
@@ -67,6 +68,7 @@ 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") | ||
set(INTERNAL_DIR "${LIBMEM_DIR}/internal") | ||
@@ -89,24 +91,21 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD) | ||
endif() | ||
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 keystone) | ||
+find_package(capstone CONFIG REQUIRED) | ||
set(LIBMEM_DEPS | ||
- capstone | ||
- keystone | ||
- llvm | ||
+ capstone::capstone | ||
+ "${keystone_LINK_LIBRARIES}" | ||
) | ||
- | ||
-if (LIBMEM_BUILD_STATIC) | ||
- add_library(libmem STATIC ${LIBMEM_SRC}) | ||
-else() | ||
- add_library(libmem SHARED ${LIBMEM_SRC}) | ||
-endif() | ||
+file(GLOB_RECURSE LLVM_DEM_SRC "${LIBMEM_DIR}/external/llvm/lib/*.cpp") | ||
+add_library(libmem ${LIBMEM_SRC} ${LLVM_DEM_SRC}) | ||
target_include_directories(libmem PRIVATE "${LIBMEM_DIR}/src" "${INTERNAL_DIR}" "${COMMON_DIR}") | ||
|
||
include_directories(${PROJECT_SOURCE_DIR} | ||
${LIBMEM_INC} | ||
- ${CAPSTONE_INC} | ||
- ${KEYSTONE_INC} | ||
- ${LLVM_INC} | ||
+ "${keystone_INCLUDE_DIRS}" | ||
+ "${LIBMEM_DIR}/external/llvm/include" | ||
) | ||
|
||
if (LIBMEM_BUILD_TESTS) | ||
@@ -116,10 +115,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 | ||
@@ -152,7 +147,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>") | ||
@@ -193,7 +188,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() | ||
@@ -202,14 +197,17 @@ 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-target | ||
+ LIBRARY DESTINATION lib | ||
+ ARCHIVE DESTINATION lib | ||
+ RUNTIME DESTINATION bin | ||
+) | ||
+install(EXPORT libmem-target NAMESPACE libmem:: DESTINATION "share/libmem") | ||
+include(CMakePackageConfigHelpers) | ||
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libmem-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/libmem-config.cmake" @ONLY) | ||
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/libmem-config-version.cmake" VERSION 5.0.4 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/CMakeLists.txt b/CMakeLists.txt | ||
index 534057a..049805a 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") | ||
@@ -67,6 +68,7 @@ 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") | ||
set(INTERNAL_DIR "${LIBMEM_DIR}/internal") | ||
@@ -89,24 +91,21 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD) | ||
endif() | ||
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 keystone) | ||
+find_package(capstone CONFIG REQUIRED) | ||
set(LIBMEM_DEPS | ||
- capstone | ||
- keystone | ||
- llvm | ||
+ capstone::capstone | ||
+ "${keystone_LINK_LIBRARIES}" | ||
) | ||
- | ||
-if (LIBMEM_BUILD_STATIC) | ||
- add_library(libmem STATIC ${LIBMEM_SRC}) | ||
-else() | ||
- add_library(libmem SHARED ${LIBMEM_SRC}) | ||
-endif() | ||
+file(GLOB_RECURSE LLVM_DEM_SRC "${LIBMEM_DIR}/external/llvm/lib/*.cpp") | ||
+add_library(libmem ${LIBMEM_SRC} ${LLVM_DEM_SRC}) | ||
target_include_directories(libmem PRIVATE "${LIBMEM_DIR}/src" "${INTERNAL_DIR}" "${COMMON_DIR}") | ||
|
||
include_directories(${PROJECT_SOURCE_DIR} | ||
${LIBMEM_INC} | ||
- ${CAPSTONE_INC} | ||
- ${KEYSTONE_INC} | ||
- ${LLVM_INC} | ||
+ "${keystone_INCLUDE_DIRS}" | ||
+ "${LIBMEM_DIR}/external/llvm/include" | ||
) | ||
|
||
if (LIBMEM_BUILD_TESTS) | ||
@@ -116,10 +115,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 | ||
@@ -152,7 +147,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>") | ||
@@ -193,7 +188,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() | ||
@@ -202,14 +197,17 @@ 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-target | ||
+ LIBRARY DESTINATION lib | ||
+ ARCHIVE DESTINATION lib | ||
+ RUNTIME DESTINATION bin | ||
+) | ||
+install(EXPORT libmem-target NAMESPACE libmem:: DESTINATION "share/libmem") | ||
+include(CMakePackageConfigHelpers) | ||
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libmem-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/libmem-config.cmake" @ONLY) | ||
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/libmem-config-version.cmake" VERSION 5.0.4 COMPATIBILITY SameMajorVersion) | ||
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libmem-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/libmem-config-version.cmake" DESTINATION "share/libmem") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters