e6830b58b6
* m4/qt5.m4: Export moc for Qt 5 in variable MOC5. Unset temporary MOC2. * m4/qt6.m4: Export moc for Qt 6 in variable MOC6. * lang/qt/src/Makefile.am: Generate .moc5 files from .h files. Generate .moc forwarding headers in moc5 subfolder. Add moc5 subfolder to include paths for Qt 5-based qgpgme library. Ditto for Qt 6. Clean up moc5 and moc6 subfolders. * lang/qt/tests/Makefile.am: List tests and test runners for Qt 5 and Qt 6. Generate .moc5 files from .cpp files of tests. Generate .moc forwarding headers in moc5 subfolder. Generate .hmoc file from t-support.h directly in moc5 subfolder. Add moc5 subfolder to include paths for all Qt 5-based tests and runners. Ditto for Qt 6. Specify sources, LDADD and CPPFLAGS for all tests and test runners for Qt 5 and Qt 6. Clean up moc5 and moc6 subfolders. -- The output of Qt 5's moc and Qt 6's moc is incompatible. Therefore, we need to generate different .moc files for Qt 5 and Qt 6 to support co-building of the Qt 5 and Qt 6 bindings. The duplication of the listing of the tests couldn't be avoided because automake doesn't understand `the_tests5 = $(the_tests:%=%5)` and couldn't match the tests with their _SOURCES. Maybe some m4 programming would have helped, but that would have made the Makefiles even more unreadable. GnuPG-bug-id: 7205
84 lines
2.7 KiB
Plaintext
84 lines
2.7 KiB
Plaintext
dnl qt5.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 Qt5
|
|
dnl
|
|
dnl sets GPGME_QT5_LIBS, GPGME_QT5_CFLAGS, and MOC5
|
|
dnl
|
|
dnl if QT5 was found have_qt5_libs is set to yes
|
|
|
|
AC_DEFUN([FIND_QT5],
|
|
[
|
|
have_qt5_libs="no";
|
|
|
|
PKG_CHECK_MODULES(GPGME_QT5,
|
|
Qt5Core >= 5.0.0,
|
|
[have_qt5_libs="yes"],
|
|
[have_qt5_libs="no"])
|
|
|
|
PKG_CHECK_MODULES(GPGME_QT5TEST,
|
|
Qt5Test >= 5.0.0,
|
|
[have_qt5test_libs="yes"],
|
|
[have_qt5test_libs="no"])
|
|
|
|
if ! test "$have_w32_system" = yes; then
|
|
if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
|
|
GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fpic"
|
|
fi
|
|
fi
|
|
if test "$have_qt5_libs" = "yes"; then
|
|
AC_CHECK_TOOL(MOC5, moc)
|
|
AC_MSG_CHECKING([moc version])
|
|
mocversion=`$MOC5 -v 2>&1`
|
|
mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
|
|
if test x"$mocversiongrep" != x"$mocversion"; then
|
|
AC_MSG_RESULT([no])
|
|
# moc was not the qt5 one, try with moc-qt5
|
|
AC_CHECK_TOOL(MOC2, moc-qt5)
|
|
mocversion=`$MOC2 -v 2>&1`
|
|
mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"`
|
|
if test x"$mocversiongrep" != x"$mocversion"; then
|
|
AC_CHECK_TOOL(QTCHOOSER, qtchooser)
|
|
qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
|
|
mocversion=`$qt5tooldir/moc -v 2>&1`
|
|
mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
|
|
if test x"$mocversiongrep" != x"$mocversion"; then
|
|
# no valid moc found
|
|
have_qt5_libs="no";
|
|
else
|
|
MOC5=$qt5tooldir/moc
|
|
fi
|
|
else
|
|
MOC5=$MOC2
|
|
fi
|
|
unset MOC2
|
|
fi
|
|
AC_MSG_RESULT([$mocversion])
|
|
fi
|
|
if test "$have_qt5_libs" = "yes"; then
|
|
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_QT5_CFLAGS
|
|
OLDLIBS=$LIBS
|
|
LIBS=$GPGME_QT5_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_qt5_libs='yes'], [have_qt5_libs='no'])
|
|
AC_MSG_RESULT([$have_qt5_libs])
|
|
AC_LANG_POP()
|
|
CPPFLAGS=$OLDCPPFLAGS
|
|
LIBS=$OLDLIBS
|
|
fi
|
|
])
|