summaryrefslogtreecommitdiffstats
path: root/cmake/FindLibb2.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindLibb2.cmake')
-rw-r--r--cmake/FindLibb2.cmake36
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()