diff options
Diffstat (limited to 'cmake/FindLibb2.cmake')
-rw-r--r-- | cmake/FindLibb2.cmake | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/cmake/FindLibb2.cmake b/cmake/FindLibb2.cmake index 18b6e4df04..0e4a7f2a95 100644 --- a/cmake/FindLibb2.cmake +++ b/cmake/FindLibb2.cmake @@ -1,7 +1,37 @@ +# Blake2 contains a reference implementation, libb2 is a more efficient +# implementation of a subset of Blake2 functions and should be preferred. +# This Find module only searches for libb2 for that reason. + +if(TARGET Libb2::Libb2) + set(Libb2_FOUND TRUE) + return() +endif() + find_package(PkgConfig QUIET) -pkg_check_modules(Libb2 libb2 IMPORTED_TARGET) +if(PkgConfig_FOUND) + pkg_check_modules(Libb2 libb2 IMPORTED_TARGET) + + if (TARGET PkgConfig::Libb2) + add_library(Libb2::Libb2 INTERFACE IMPORTED) + target_link_libraries(Libb2::Libb2 INTERFACE PkgConfig::Libb2) + set(Libb2_FOUND TRUE) + endif() +else() + find_path(LIBB2_INCLUDE_DIR NAMES blake2.h) + find_library(LIBB2_LIBRARY NAMES b2) + + if(LIBB2_LIBRARY AND LIBB2_INCLUDE_DIR) + add_library(Libb2::Libb2 UNKNOWN IMPORTED) + set_target_properties(Libb2::Libb2 PROPERTIES + IMPORTED_LOCATION ${LIBB2_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${LIBB2_INCLUDE_DIR} + ) + endif() -if (NOT TARGET PkgConfig::Libb2) - set(Libb2_FOUND 0) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Libb2 REQUIRED_VARS + LIBB2_LIBRARY + LIBB2_INCLUDE_DIR + ) endif() |