Skip to content

Commit 38c13a4

Browse files
committed
Merge #19689: build: Add Qt version checking
4af4672 build, qt: Add Qt version checking (Hennadii Stepanov) 30e336f build: Drop unused bitcoin_cv_qt58 (Hennadii Stepanov) Pull request description: Now `configure` script checks that Qt version is not less then minimum required (currently [5.5.1](bitcoin/bitcoin#15393)). This PR is an alternative to #15706 (see bitcoin/bitcoin#15706 (comment)). Closes #15688. The first commit removes dead code (see bitcoin/bitcoin#18297 (comment)). ACKs for top commit: fanquake: ACK 4af4672 - this looks ok. I've tested this with Qt 5.15.0 and Qt 5.7.1 system libs, as well as 5.9.8 from depends. Tree-SHA512: 8e3b82fa3a98926814923331038185633fabad962c271f31bd158e1ab293dcde52ab1dbf997745540a9ed27e16835cf5b5f3701d405876d877fa561eb03cc619
2 parents 197450f + 4af4672 commit 38c13a4

File tree

2 files changed

+43
-38
lines changed

2 files changed

+43
-38
lines changed

build-aux/m4/bitcoin_qt.m4

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,15 @@ AC_DEFUN([BITCOIN_QT_INIT],[
8080
])
8181

8282
dnl Find Qt libraries and includes.
83+
dnl
84+
dnl BITCOIN_QT_CONFIGURE([MINIMUM-VERSION])
85+
dnl
8386
dnl Outputs: See _BITCOIN_QT_FIND_LIBS
8487
dnl Outputs: Sets variables for all qt-related tools.
8588
dnl Outputs: bitcoin_enable_qt, bitcoin_enable_qt_dbus, bitcoin_enable_qt_test
8689
AC_DEFUN([BITCOIN_QT_CONFIGURE],[
90+
qt_version=">= $1"
91+
qt_lib_prefix="Qt5"
8792
BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS])
8893
8994
dnl This is ugly and complicated. Yuck. Works as follows:
@@ -221,7 +226,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
221226
bitcoin_enable_qt=no
222227
])
223228
if test x$bitcoin_enable_qt = xyes; then
224-
AC_MSG_RESULT([$bitcoin_enable_qt ($QT_LIB_PREFIX)])
229+
AC_MSG_RESULT([$bitcoin_enable_qt ($qt_lib_prefix)])
225230
else
226231
AC_MSG_RESULT([$bitcoin_enable_qt])
227232
fi
@@ -295,49 +300,49 @@ AC_DEFUN([_BITCOIN_QT_FIND_STATIC_PLUGINS],[
295300
if test -d "$qt_plugin_path/platforms/android"; then
296301
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms/android -lqtfreetype -lEGL"
297302
fi
298-
m4_ifdef([PKG_CHECK_MODULES],[
299-
if test x$bitcoin_cv_qt58 = xno; then
300-
PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"])
301-
else
302-
PKG_CHECK_MODULES([QTFONTDATABASE], [Qt5FontDatabaseSupport], [QT_LIBS="-lQt5FontDatabaseSupport $QT_LIBS"])
303-
PKG_CHECK_MODULES([QTEVENTDISPATCHER], [Qt5EventDispatcherSupport], [QT_LIBS="-lQt5EventDispatcherSupport $QT_LIBS"])
304-
PKG_CHECK_MODULES([QTTHEME], [Qt5ThemeSupport], [QT_LIBS="-lQt5ThemeSupport $QT_LIBS"])
305-
PKG_CHECK_MODULES([QTDEVICEDISCOVERY], [Qt5DeviceDiscoverySupport], [QT_LIBS="-lQt5DeviceDiscoverySupport $QT_LIBS"])
306-
PKG_CHECK_MODULES([QTACCESSIBILITY], [Qt5AccessibilitySupport], [QT_LIBS="-lQt5AccessibilitySupport $QT_LIBS"])
307-
PKG_CHECK_MODULES([QTFB], [Qt5FbSupport], [QT_LIBS="-lQt5FbSupport $QT_LIBS"])
308-
fi
309-
if test "x$TARGET_OS" = xlinux; then
310-
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
311-
elif test "x$TARGET_OS" = xdarwin; then
312-
PKG_CHECK_MODULES([QTCLIPBOARD], [Qt5ClipboardSupport], [QT_LIBS="-lQt5ClipboardSupport $QT_LIBS"])
313-
PKG_CHECK_MODULES([QTGRAPHICS], [Qt5GraphicsSupport], [QT_LIBS="-lQt5GraphicsSupport $QT_LIBS"])
314-
PKG_CHECK_MODULES([QTCGL], [Qt5CglSupport], [QT_LIBS="-lQt5CglSupport $QT_LIBS"])
315-
fi
316-
])
303+
PKG_CHECK_MODULES([QTFONTDATABASE], [Qt5FontDatabaseSupport], [QT_LIBS="-lQt5FontDatabaseSupport $QT_LIBS"])
304+
PKG_CHECK_MODULES([QTEVENTDISPATCHER], [Qt5EventDispatcherSupport], [QT_LIBS="-lQt5EventDispatcherSupport $QT_LIBS"])
305+
PKG_CHECK_MODULES([QTTHEME], [Qt5ThemeSupport], [QT_LIBS="-lQt5ThemeSupport $QT_LIBS"])
306+
PKG_CHECK_MODULES([QTDEVICEDISCOVERY], [Qt5DeviceDiscoverySupport], [QT_LIBS="-lQt5DeviceDiscoverySupport $QT_LIBS"])
307+
PKG_CHECK_MODULES([QTACCESSIBILITY], [Qt5AccessibilitySupport], [QT_LIBS="-lQt5AccessibilitySupport $QT_LIBS"])
308+
PKG_CHECK_MODULES([QTFB], [Qt5FbSupport], [QT_LIBS="-lQt5FbSupport $QT_LIBS"])
309+
if test "x$TARGET_OS" = xlinux; then
310+
PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"])
311+
elif test "x$TARGET_OS" = xdarwin; then
312+
PKG_CHECK_MODULES([QTCLIPBOARD], [Qt5ClipboardSupport], [QT_LIBS="-lQt5ClipboardSupport $QT_LIBS"])
313+
PKG_CHECK_MODULES([QTGRAPHICS], [Qt5GraphicsSupport], [QT_LIBS="-lQt5GraphicsSupport $QT_LIBS"])
314+
PKG_CHECK_MODULES([QTCGL], [Qt5CglSupport], [QT_LIBS="-lQt5CglSupport $QT_LIBS"])
315+
fi
317316
fi
318317
])
319318

320319
dnl Internal. Find Qt libraries using pkg-config.
321320
dnl Outputs: All necessary QT_* variables are set.
322321
dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no.
323322
AC_DEFUN([_BITCOIN_QT_FIND_LIBS],[
324-
m4_ifdef([PKG_CHECK_MODULES],[
325-
QT_LIB_PREFIX=Qt5
326-
qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets"
327-
BITCOIN_QT_CHECK([
328-
PKG_CHECK_MODULES([QT5], [$qt5_modules], [QT_INCLUDES="$QT5_CFLAGS"; QT_LIBS="$QT5_LIBS" have_qt=yes],[have_qt=no])
323+
BITCOIN_QT_CHECK([
324+
PKG_CHECK_MODULES([QT_CORE], [${qt_lib_prefix}Core $qt_version], [],
325+
[BITCOIN_QT_FAIL([${qt_lib_prefix}Core $qt_version not found])])
326+
])
327+
BITCOIN_QT_CHECK([
328+
PKG_CHECK_MODULES([QT_GUI], [${qt_lib_prefix}Gui $qt_version], [],
329+
[BITCOIN_QT_FAIL([${qt_lib_prefix}Gui $qt_version not found])])
330+
])
331+
BITCOIN_QT_CHECK([
332+
PKG_CHECK_MODULES([QT_WIDGETS], [${qt_lib_prefix}Widgets $qt_version], [],
333+
[BITCOIN_QT_FAIL([${qt_lib_prefix}Widgets $qt_version not found])])
334+
])
335+
BITCOIN_QT_CHECK([
336+
PKG_CHECK_MODULES([QT_NETWORK], [${qt_lib_prefix}Network $qt_version], [],
337+
[BITCOIN_QT_FAIL([${qt_lib_prefix}Network $qt_version not found])])
338+
])
339+
QT_INCLUDES="$QT_CORE_CFLAGS $QT_GUI_CFLAGS $QT_WIDGETS_CFLAGS $QT_NETWORK_CFLAGS"
340+
QT_LIBS="$QT_CORE_LIBS $QT_GUI_LIBS $QT_WIDGETS_LIBS $QT_NETWORK_LIBS"
329341
330-
if test "x$have_qt" != xyes; then
331-
have_qt=no
332-
BITCOIN_QT_FAIL([Qt dependencies not found])
333-
fi
334-
])
335-
BITCOIN_QT_CHECK([
336-
PKG_CHECK_MODULES([QT_TEST], [${QT_LIB_PREFIX}Test], [QT_TEST_INCLUDES="$QT_TEST_CFLAGS"; have_qt_test=yes], [have_qt_test=no])
337-
if test "x$use_dbus" != xno; then
338-
PKG_CHECK_MODULES([QT_DBUS], [${QT_LIB_PREFIX}DBus], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no])
339-
fi
340-
])
342+
BITCOIN_QT_CHECK([
343+
PKG_CHECK_MODULES([QT_TEST], [${qt_lib_prefix}Test $qt_version], [QT_TEST_INCLUDES="$QT_TEST_CFLAGS"; have_qt_test=yes], [have_qt_test=no])
344+
if test "x$use_dbus" != xno; then
345+
PKG_CHECK_MODULES([QT_DBUS], [${qt_lib_prefix}DBus $qt_version], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no])
346+
fi
341347
])
342-
true; dnl
343348
])

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,7 @@ else
11611161
BITCOIN_QT_INIT
11621162

11631163
dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
1164-
BITCOIN_QT_CONFIGURE
1164+
BITCOIN_QT_CONFIGURE([5.5.1])
11651165
fi
11661166

11671167
if test x$enable_wallet != xno; then

0 commit comments

Comments
 (0)