summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@qt.io>2021-01-14 15:01:28 +1100
committerCraig Scott <craig.scott@qt.io>2021-01-18 15:42:52 +1100
commitb59f77aab461302f51a9a4d395349fbb4b072b55 (patch)
tree253b6b7a43f7eacf681d6d65e486b723a47f0e8d
parentf283f0621607ab8d19b5ca53b31158b41456a6df (diff)
FindLibb2: Don't rely solely on pkg-config
Task-number: QTBUG-86283 Change-Id: Ie455d7cfc6e6f9ae8297f8bc0daf2816ccce91b6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--cmake/FindLibb2.cmake36
-rw-r--r--src/corelib/CMakeLists.txt2
-rw-r--r--src/corelib/configure.cmake2
-rw-r--r--src/corelib/configure.json3
-rw-r--r--util/cmake/helper.py2
5 files changed, 38 insertions, 7 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()
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index dde69339f0..355ba42ee6 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -756,7 +756,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_doubleconversion AND NOT QT_
qt_internal_extend_target(Core CONDITION QT_FEATURE_system_libb2
LIBRARIES
- PkgConfig::Libb2
+ Libb2::Libb2
)
qt_internal_extend_target(Core CONDITION QT_FEATURE_easingcurve
diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake
index 095b12ea96..1c585f5b3c 100644
--- a/src/corelib/configure.cmake
+++ b/src/corelib/configure.cmake
@@ -22,7 +22,7 @@ if(QT_FEATURE_dlopen)
endif()
qt_find_package(Libsystemd PROVIDED_TARGETS PkgConfig::Libsystemd MODULE_NAME core QMAKE_LIB journald)
qt_find_package(WrapAtomic PROVIDED_TARGETS WrapAtomic::WrapAtomic MODULE_NAME core QMAKE_LIB libatomic)
-qt_find_package(Libb2 PROVIDED_TARGETS PkgConfig::Libb2 MODULE_NAME core QMAKE_LIB libb2)
+qt_find_package(Libb2 PROVIDED_TARGETS Libb2::Libb2 MODULE_NAME core QMAKE_LIB libb2)
qt_find_package(WrapRt PROVIDED_TARGETS WrapRt::WrapRt MODULE_NAME core QMAKE_LIB librt)
qt_find_package(LTTngUST PROVIDED_TARGETS LTTng::UST MODULE_NAME core QMAKE_LIB lttng-ust)
qt_add_qmake_lib_dependency(lttng-ust libdl)
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 5e0bd51ec9..9c8615cf74 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -119,7 +119,8 @@
},
"headers": "blake2.h",
"sources": [
- { "type": "pkgConfig", "args": "libb2" }
+ { "type": "pkgConfig", "args": "libb2" },
+ "-lb2"
]
},
"librt": {
diff --git a/util/cmake/helper.py b/util/cmake/helper.py
index f7de8e75cb..23bc39982c 100644
--- a/util/cmake/helper.py
+++ b/util/cmake/helper.py
@@ -440,7 +440,7 @@ _library_map = [
LibraryMapping("journald", "Libsystemd", "PkgConfig::Libsystemd"),
LibraryMapping("jpeg", "JPEG", "JPEG::JPEG"), # see also libjpeg
LibraryMapping("libatomic", "WrapAtomic", "WrapAtomic::WrapAtomic"),
- LibraryMapping("libb2", "Libb2", "PkgConfig::Libb2"),
+ LibraryMapping("libb2", "Libb2", "Libb2::Libb2"),
LibraryMapping("libclang", "WrapLibClang", "WrapLibClang::WrapLibClang"),
LibraryMapping("libdl", None, "${CMAKE_DL_LIBS}"),
LibraryMapping("libinput", "Libinput", "Libinput::Libinput"),