|
12 | 12 | # See the License for the specific language governing permissions and
|
13 | 13 | # limitations under the License.
|
14 | 14 |
|
15 |
| -cmake_minimum_required(VERSION 3.2) |
| 15 | +@PACKAGE_INIT@ |
16 | 16 |
|
17 |
| -if(NOT TARGET remill) |
18 |
| - if(WIN32) |
19 |
| - set(REMILL_LIBRARY_LOCATION "@CMAKE_INSTALL_PREFIX@/remill/lib/remill.lib") |
20 |
| - set(REMILL_INCLUDE_LOCATION "@CMAKE_INSTALL_PREFIX@/remill/include") |
21 |
| - else() |
22 |
| - set(REMILL_LIBRARY_LOCATION "@CMAKE_INSTALL_PREFIX@/lib/libremill.a") |
23 |
| - set(REMILL_INCLUDE_LOCATION "@CMAKE_INSTALL_PREFIX@/include") |
| 17 | +foreach(_comp ${remill_FIND_COMPONENTS}) |
| 18 | + if (NOT "VCPKG_DEPS" STREQUAL _comp) |
| 19 | + set(remill_FOUND False) |
| 20 | + set(remill_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}. Only VCPKG_DEPS") |
24 | 21 | endif()
|
25 |
| - |
26 |
| - # For Linux builds, group LLVM libraries into a single group |
27 |
| - # that avoids frustrating library ordering issues. |
28 |
| - if(UNIX AND NOT APPLE) |
29 |
| - set(LINKER_START_GROUP "-Wl,--start-group") |
30 |
| - set(LINKER_END_GROUP "-Wl,--end-group") |
31 |
| - else() |
32 |
| - set(LINKER_START_GROUP "") |
33 |
| - set(LINKER_END_GROUP "") |
| 22 | + |
| 23 | + if ("VCPKG_DEPS" STREQUAL _comp) |
| 24 | + set(remill_setup_vcpkg True) |
| 25 | + if(NOT "x@VCPKG_ROOT@x" STREQUAL "xx" AND NOT USE_SYSTEM_DEPENDENCIES) |
| 26 | + if (EXISTS "@VCPKG_ROOT@") |
| 27 | + set(VCPKG_ROOT "@VCPKG_ROOT@" |
| 28 | + CACHE PATH "Location of dependency libraries" |
| 29 | + ) |
| 30 | + include(${CMAKE_CURRENT_LIST_DIR}/vcpkg_helper.cmake) |
| 31 | + message(STATUS "Found VCPKG_ROOT: ${VCPKG_ROOT}") |
| 32 | + set(vcpkgdeps_FOUND) |
| 33 | + endif() |
| 34 | + endif() |
34 | 35 | endif()
|
| 36 | +endforeach() |
35 | 37 |
|
| 38 | +if(NOT remill_setup_vcpkg AND NOT TARGET remill) |
36 | 39 | set(LLVM_MAJOR_VERSION @LLVM_MAJOR_VERSION@)
|
37 | 40 | set(LLVM_MINOR_VERSION @LLVM_MINOR_VERSION@)
|
38 | 41 | set(REMILL_LLVM_VERSION "@LLVM_MAJOR_VERSION@.@LLVM_MINOR_VERSION@")
|
39 |
| - |
40 |
| - add_library(remill_bc STATIC IMPORTED) |
41 |
| - set_property(TARGET remill_bc PROPERTY IMPORTED_LOCATION "@REMILL_BC_LIBRARY_LOCATION@") |
42 |
| - |
43 |
| - add_library(remill_os STATIC IMPORTED) |
44 |
| - set_property(TARGET remill_os PROPERTY IMPORTED_LOCATION "@REMILL_OS_LIBRARY_LOCATION@") |
45 |
| - |
46 |
| - add_library(remill_arch STATIC IMPORTED) |
47 |
| - set_property(TARGET remill_arch PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_LIBRARY_LOCATION@") |
48 |
| - |
49 |
| - add_library(remill_arch_x86 STATIC IMPORTED) |
50 |
| - set_property(TARGET remill_arch_x86 PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_X86_LIBRARY_LOCATION@") |
51 |
| - |
52 |
| - add_library(remill_arch_aarch32 STATIC IMPORTED) |
53 |
| - set_property(TARGET remill_arch_aarch32 PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_AARCH32_LIBRARY_LOCATION@") |
54 |
| - |
55 |
| - add_library(remill_arch_aarch64 STATIC IMPORTED) |
56 |
| - set_property(TARGET remill_arch_aarch64 PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_AARCH64_LIBRARY_LOCATION@") |
57 |
| - |
58 |
| - add_library(remill_arch_sparc32 STATIC IMPORTED) |
59 |
| - set_property(TARGET remill_arch_sparc32 PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_SPARC32_LIBRARY_LOCATION@") |
60 |
| - |
61 |
| - add_library(remill_arch_sparc64 STATIC IMPORTED) |
62 |
| - set_property(TARGET remill_arch_sparc64 PROPERTY IMPORTED_LOCATION "@REMILL_ARCH_SPARC64_LIBRARY_LOCATION@") |
63 |
| - |
64 |
| - add_library(remill_version STATIC IMPORTED) |
65 |
| - set_property(TARGET remill_version PROPERTY IMPORTED_LOCATION "@REMILL_VERSION_LIBRARY_LOCATION@") |
66 |
| - |
67 |
| - add_library(remill INTERFACE) |
68 |
| - target_link_libraries(remill INTERFACE |
69 |
| - ${LINKER_START_GROUP} |
70 |
| - remill_bc |
71 |
| - remill_os |
72 |
| - remill_arch |
73 |
| - remill_arch_x86 |
74 |
| - remill_arch_aarch32 |
75 |
| - remill_arch_aarch64 |
76 |
| - remill_arch_sparc32 |
77 |
| - remill_arch_sparc64 |
78 |
| - remill_version |
79 |
| - @THIRDPARTY_LIBRARY_FILES@ |
80 |
| - ${LINKER_END_GROUP} |
81 |
| - ) |
82 |
| - |
83 |
| - target_include_directories(remill INTERFACE @THIRDPARTY_INCLUDE_DIRECTORIES@) |
84 |
| - target_include_directories(remill INTERFACE @REMILL_INCLUDE_LOCATION@) |
85 |
| - target_compile_options(remill INTERFACE @REMILL_COMPILE_OPTIONS@) |
86 |
| - target_compile_definitions(remill INTERFACE @REMILL_COMPILE_DEFINITIONS@) |
87 | 42 |
|
88 |
| - # Add a dummy 'semantics' target to satisfy the protobuf generator |
89 |
| - add_custom_target(semantics) |
| 43 | + # External libs |
| 44 | + include(CMakeFindDependencyMacro) |
| 45 | + find_dependency(XED) |
| 46 | + find_dependency(glog) |
| 47 | + find_dependency(LLVM) |
| 48 | + # NOTE: If changing this, also replicate in CMakeLists.txt |
| 49 | + if (LLVM_WITH_Z3) |
| 50 | + find_dependency(Z3) |
| 51 | + get_target_property(LLVMSupport_LIBS LLVMSupport INTERFACE_LINK_LIBRARIES) |
| 52 | + list(REMOVE_ITEM LLVMSupport_LIBS Z3) |
| 53 | + list(APPEND LLVMSupport_LIBS z3::libz3) |
| 54 | + set_target_properties(LLVMSupport PROPERTIES |
| 55 | + INTERFACE_LINK_LIBRARIES "${LLVMSupport_LIBS}") |
| 56 | + endif() |
| 57 | + |
| 58 | + # Exported Targets |
| 59 | + include("${CMAKE_CURRENT_LIST_DIR}/remillTargets.cmake") |
| 60 | + |
| 61 | + if(TARGET thirdparty_llvm) |
| 62 | + # Need this so that LLVM doesn't hardcode it's include directories |
| 63 | + set_target_properties(thirdparty_llvm PROPERTIES |
| 64 | + INTERFACE_INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIRS}" |
| 65 | + INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${LLVM_INCLUDE_DIRS}" |
| 66 | + ) |
| 67 | + endif() |
| 68 | + |
90 | 69 | endif()
|
| 70 | + |
| 71 | +set(remill_setup_vcpkg False) |
0 commit comments