aboutsummaryrefslogtreecommitdiffstats
path: root/m4
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2022-10-11 08:14:53 +0000
committerIngo Klöcker <[email protected]>2022-10-11 09:00:14 +0000
commit8d019bbb8d40de2cbed7ad6d3367c6a46a561fab (patch)
tree5baa88dc77a099da27e54c85fcd0bf4ff9fa6f9b /m4
parentbuild,qt: Explicitly namespace a few Qt variables for Qt5 (diff)
downloadgpgme-8d019bbb8d40de2cbed7ad6d3367c6a46a561fab.tar.gz
gpgme-8d019bbb8d40de2cbed7ad6d3367c6a46a561fab.zip
build,qt: Allow building QGpgME for Qt 6
* configure.ac: Look for Qt 5 and/or Qt 6. Require C++17 if Qt 6 binding is built. Build cmake files QGpgmeConfig* for Qt 5 and QGpgmeQt6Config* for Qt 6. (available_languages): Add "qt5" and "qt6". (WANT_QT5, WANT_QT6): New conditionals. * lang/qt/src/Makefile.am: Keep building libqgpgme for Qt 5. Build libqgpgmeqt6 for Qt 6. * lang/qt/tests/Makefile.am: Build tests for Qt 5 or Qt 6. * lang/qt/src/QGpgmeQt6Config-w32.cmake.in.in, lang/qt/src/QGpgmeQt6Config.cmake.in.in, lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in, m4/qt6.m4: New. -- This makes it possible to build QGpgME optionally for Qt 6.4.0 or later. By default or if the language "qt" is enabled, then QGpgME is built either for Qt 5 (if found) or Qt 6. A build for Qt 5 or Qt 6 can be requested by explicitly enabling the language "qt5" or "qt6". Building QGpgME for Qt 5 and Qt 6 simultaneously is not supported.
Diffstat (limited to 'm4')
-rw-r--r--m4/qt6.m482
1 files changed, 82 insertions, 0 deletions
diff --git a/m4/qt6.m4 b/m4/qt6.m4
new file mode 100644
index 00000000..6e864fb1
--- /dev/null
+++ b/m4/qt6.m4
@@ -0,0 +1,82 @@
+dnl qt6.m4
+dnl Copyright (C) 2016 Intevation GmbH
+dnl
+dnl This file is part of gpgme and is provided under the same license as gpgme
+
+dnl Autoconf macro to find Qt6
+dnl
+dnl sets GPGME_QT6_LIBS and GPGME_QT6_CFLAGS
+dnl
+dnl if QT6 was found have_qt6_libs is set to yes
+
+AC_DEFUN([FIND_QT6],
+[
+ have_qt6_libs="no";
+
+ PKG_CHECK_MODULES(GPGME_QT6,
+ Qt6Core >= 6.4.0,
+ [have_qt6_libs="yes"],
+ [have_qt6_libs="no"])
+
+ PKG_CHECK_MODULES(GPGME_QT6TEST,
+ Qt6Test >= 6.4.0,
+ [have_qt6test_libs="yes"],
+ [have_qt6test_libs="no"])
+
+ if ! test "$have_w32_system" = yes; then
+ if "$PKG_CONFIG" --variable qt_config Qt6Core | grep -q "reduce_relocations"; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -fpic"
+ fi
+ fi
+ if test "$have_qt6_libs" = "yes"; then
+ # Qt6 moved moc to libexec
+ qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0')
+ AC_PATH_TOOL(MOC, moc, [], [$qt6libexecdir])
+ AC_MSG_CHECKING([moc version])
+ mocversion=`$MOC -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ AC_MSG_RESULT([no])
+ # moc was not the qt6 one, try with moc-qt6
+ AC_CHECK_TOOL(MOC2, moc-qt6)
+ mocversion=`$MOC2 -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ AC_CHECK_TOOL(QTCHOOSER, qtchooser)
+ qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+ mocversion=`$qt6tooldir/moc -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ # no valid moc found
+ have_qt6_libs="no";
+ else
+ MOC=$qt6tooldir/moc
+ fi
+ else
+ MOC=$MOC2
+ fi
+ fi
+ AC_MSG_RESULT([$mocversion])
+ dnl Check that a binary can actually be build with this qt.
+ dnl pkg-config may be set up in a way that it looks also for libraries
+ dnl of the build system and not only for the host system. In that case
+ dnl we check here that we can actually compile / link a qt application
+ dnl for host.
+ OLDCPPFLAGS=$CPPFLAGS
+ CPPFLAGS=$GPGME_QT6_CFLAGS
+ OLDLIBS=$LIBS
+ LIBS=$GPGME_QT6_LIBS
+ AC_LANG_PUSH(C++)
+ AC_MSG_CHECKING([whether a simple qt program can be built])
+ AC_LINK_IFELSE([AC_LANG_SOURCE([
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }])], [have_qt6_libs='yes'], [have_qt6_libs='no'])
+ AC_MSG_RESULT([$have_qt6_libs])
+ AC_LANG_POP()
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+])