|
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