diff options
author | ambrosin <ambrosin@google.com> | 2022-02-03 00:54:16 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-02-03 00:54:59 -0800 |
commit | f73835dbc64e4724a4ae07a0335aea58bb9f72c3 (patch) | |
tree | dc41c61d521c53b5b182237bf9c111daeeeec1f0 /cmake | |
parent | 573ca7917f00d28f3709fd89a9f4d6d1fb3b5719 (diff) | |
download | tink-f73835dbc64e4724a4ae07a0335aea58bb9f72c3.tar.gz |
Add option to link against installed GTest.
Add a macro to create interface targets.
PiperOrigin-RevId: 426077117
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/TinkWorkspace.cmake | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/cmake/TinkWorkspace.cmake b/cmake/TinkWorkspace.cmake index e3256317e..58ae827ce 100644 --- a/cmake/TinkWorkspace.cmake +++ b/cmake/TinkWorkspace.cmake @@ -36,13 +36,34 @@ include(HttpArchive) include(TinkUtil) +# Creates an interface target from an imported one. +# +# Parameters: +# INTERFACE_TARGET Name of the interface target. +# IMPORTED_TARGET Name of the imported target (e.g., with find_package). +# +macro(_create_interface_target INTERFACE_TARGET IMPORTED_TARGET) + add_library(${INTERFACE_TARGET} INTERFACE) + target_link_libraries(${INTERFACE_TARGET} INTERFACE ${IMPORTED_TARGET}) + target_include_directories(${INTERFACE_TARGET} INTERFACE ${IMPORTED_TARGET}) +endmacro() + set(gtest_force_shared_crt ON CACHE BOOL "Tink dependency override" FORCE) -http_archive( - NAME com_google_googletest - URL https://github.com/google/googletest/archive/eb9225ce361affe561592e0912320b9db84985d0.zip - SHA256 a7db7d1295ce46b93f3d1a90dbbc55a48409c00d19684fcd87823037add88118 -) +if (NOT TINK_USE_INSTALLED_GOOGLETEST) + http_archive( + NAME com_google_googletest + URL https://github.com/google/googletest/archive/eb9225ce361affe561592e0912320b9db84985d0.zip + SHA256 a7db7d1295ce46b93f3d1a90dbbc55a48409c00d19684fcd87823037add88118 + ) +else() + # This uses the CMake's FindGTest module; if successful, this call to + # find_package generates the targets GTest::gmock, GTest::gtest and + # GTest::gtest_main. + find_package(GTest CONFIG REQUIRED) + _create_interface_target(gmock GTest::gmock) + _create_interface_target(gtest_main GTest::gtest_main) +endif() if (NOT TINK_USE_INSTALLED_ABSEIL) # Commit from 2021-12-03 @@ -79,11 +100,9 @@ if (NOT TINK_USE_SYSTEM_OPENSSL) # BoringSSL targets do not carry include directory info, this fixes it. target_include_directories(crypto PUBLIC "${boringssl_SOURCE_DIR}/src/include") else() - add_library(crypto INTERFACE) # Support for ED25519 was added from 1.1.1. find_package(OpenSSL 1.1.1 REQUIRED) - target_link_libraries(crypto INTERFACE OpenSSL::Crypto) - target_include_directories(crypto INTERFACE OpenSSL::Crypto) + _create_interface_target(crypto OpenSSL::Crypto) endif() set(RAPIDJSON_BUILD_DOC OFF CACHE BOOL "Tink dependency override" FORCE) |