aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmem/0001-CMakeLists.patch
blob: 3494cdb4799ff02342094f1e0985dca3f912f0c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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"
+)