From 33b89cca0826a883c0542d5504155b40393c45d9 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Tue, 10 Aug 2021 16:05:38 +0200 Subject: [PATCH 1/3] cmake: Add options to unbundle some externals --- CMakeLists.txt | 21 +++++++++++++++++++++ externals/CMakeLists.txt | 16 ++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c62398ee..aee640fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,6 +121,22 @@ if (NOT TARGET boost) target_include_directories(boost SYSTEM INTERFACE ${Boost_INCLUDE_DIRS}) endif() +if (DYNARMIC_NO_BUNDLED_FMT) + find_package(fmt REQUIRED) + add_library(fmt ALIAS fmt::fmt) +endif() + +if (DYNARMIC_NO_BUNDLED_ROBIN_MAP) + find_package(tsl-robin-map REQUIRED) +endif() + +if (DYNARMIC_NO_BUNDLED_XBYAK) + if (ARCHITECTURE STREQUAL "x86" OR ARCHITECTURE STREQUAL "x86_64") + find_package(xbyak REQUIRED) + add_library(xbyak ALIAS xbyak::xbyak) + endif() +endif() + # Enable unit-testing. enable_testing(true) @@ -136,6 +152,11 @@ if (DYNARMIC_TESTS_USE_UNICORN) find_package(Unicorn REQUIRED) endif() +if (DYNARMIC_TESTS AND DYNARMIC_NO_BUNDLED_CATCH) + find_package(Catch2 REQUIRED) + add_library(catch ALIAS Catch2::Catch2) +endif() + # Pull in externals CMakeLists for libs where available add_subdirectory(externals) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 5326e2e6..2f937307 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -4,12 +4,14 @@ # catch -add_library(catch INTERFACE) -target_include_directories(catch INTERFACE $) +if (DYNARMIC_TESTS AND NOT TARGET catch) + add_library(catch INTERFACE) + target_include_directories(catch INTERFACE $) +endif() # fmt -if (NOT DYNARMIC_NO_BUNDLED_FMT) +if (NOT TARGET fmt) # fmtlib formatting library add_subdirectory(fmt) endif() @@ -21,9 +23,11 @@ target_include_directories(mp INTERFACE $") +if (NOT TARGET tsl::robin_map) + add_library(robin_map INTERFACE) + add_library(tsl::robin_map ALIAS robin_map) + target_include_directories(robin_map SYSTEM INTERFACE "$") +endif() # vixl From 04b1c78166571458234fe2f57f46ad0b543ded8c Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Tue, 10 Aug 2021 16:16:02 +0200 Subject: [PATCH 2/3] cmake: Add checks for projects using dynarmic as subproject --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aee640fb..13e8434e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,16 +121,16 @@ if (NOT TARGET boost) target_include_directories(boost SYSTEM INTERFACE ${Boost_INCLUDE_DIRS}) endif() -if (DYNARMIC_NO_BUNDLED_FMT) +if (DYNARMIC_NO_BUNDLED_FMT AND NOT TARGET fmt) find_package(fmt REQUIRED) add_library(fmt ALIAS fmt::fmt) endif() -if (DYNARMIC_NO_BUNDLED_ROBIN_MAP) +if (DYNARMIC_NO_BUNDLED_ROBIN_MAP AND NOT TARGET tsl::robin_map) find_package(tsl-robin-map REQUIRED) endif() -if (DYNARMIC_NO_BUNDLED_XBYAK) +if (DYNARMIC_NO_BUNDLED_XBYAK AND NOT TARGET xbyak) if (ARCHITECTURE STREQUAL "x86" OR ARCHITECTURE STREQUAL "x86_64") find_package(xbyak REQUIRED) add_library(xbyak ALIAS xbyak::xbyak) @@ -152,7 +152,7 @@ if (DYNARMIC_TESTS_USE_UNICORN) find_package(Unicorn REQUIRED) endif() -if (DYNARMIC_TESTS AND DYNARMIC_NO_BUNDLED_CATCH) +if (DYNARMIC_TESTS AND DYNARMIC_NO_BUNDLED_CATCH AND NOT TARGET catch) find_package(Catch2 REQUIRED) add_library(catch ALIAS Catch2::Catch2) endif() From 352898e88bc1500df4385d1433d7ad9414b29234 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Tue, 24 Aug 2021 12:28:44 +0200 Subject: [PATCH 3/3] cmake: Add options to unbundle Zydis --- CMakeLists.txt | 5 +++++ externals/CMakeLists.txt | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13e8434e..f052b4a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,6 +137,11 @@ if (DYNARMIC_NO_BUNDLED_XBYAK AND NOT TARGET xbyak) endif() endif() +if (DYNARMIC_NO_BUNDLED_ZYDIS AND NOT TARGET Zydis) + find_package(Zydis REQUIRED) + add_library(Zydis ALIAS Zydis::Zydis) +endif() + # Enable unit-testing. enable_testing(true) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 2f937307..32d80773 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -49,7 +49,9 @@ endif() # zydis -option(ZYDIS_BUILD_TOOLS "" OFF) -option(ZYDIS_BUILD_EXAMPLES "" OFF) -set(ZYDIS_ZYCORE_PATH "${CMAKE_CURRENT_LIST_DIR}/zycore" CACHE PATH "") -add_subdirectory(zydis EXCLUDE_FROM_ALL) +if (NOT TARGET Zydis) + option(ZYDIS_BUILD_TOOLS "" OFF) + option(ZYDIS_BUILD_EXAMPLES "" OFF) + set(ZYDIS_ZYCORE_PATH "${CMAKE_CURRENT_LIST_DIR}/zycore" CACHE PATH "") + add_subdirectory(zydis EXCLUDE_FROM_ALL) +endif()