Blame m4/qt.m4

Packit d7e8d0
dnl qt.m4
Packit d7e8d0
dnl Copyright (C) 2016 Intevation GmbH
Packit d7e8d0
dnl
Packit d7e8d0
dnl This file is part of gpgme and is provided under the same license as gpgme
Packit d7e8d0
Packit d7e8d0
dnl Autoconf macro to find either Qt4 or Qt5
Packit d7e8d0
dnl
Packit d7e8d0
dnl sets GPGME_QT_LIBS and GPGME_QT_CFLAGS
Packit d7e8d0
dnl
Packit d7e8d0
dnl if QT5 was found have_qt5_libs is set to yes
Packit d7e8d0
Packit d7e8d0
AC_DEFUN([FIND_QT],
Packit d7e8d0
[
Packit d7e8d0
  have_qt5_libs="no";
Packit d7e8d0
Packit d7e8d0
  PKG_CHECK_MODULES(GPGME_QT,
Packit d7e8d0
                    Qt5Core >= 5.0.0,
Packit d7e8d0
                    [have_qt5_libs="yes"],
Packit d7e8d0
                    [have_qt5_libs="no"])
Packit d7e8d0
Packit d7e8d0
  PKG_CHECK_MODULES(GPGME_QTTEST,
Packit d7e8d0
                    Qt5Test >= 5.0.0,
Packit d7e8d0
                    [have_qt5test_libs="yes"],
Packit d7e8d0
                    [have_qt5test_libs="no"])
Packit d7e8d0
Packit d7e8d0
  if ! test "$have_w32_system" = yes; then
Packit d7e8d0
    if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
Packit d7e8d0
      GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fpic"
Packit d7e8d0
    fi
Packit d7e8d0
  fi
Packit d7e8d0
  if test "$have_qt5_libs" = "yes"; then
Packit d7e8d0
    AC_CHECK_TOOL(MOC, moc)
Packit d7e8d0
    AC_MSG_CHECKING([moc version])
Packit d7e8d0
    mocversion=`$MOC -v 2>&1`
Packit d7e8d0
    mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
Packit d7e8d0
    if test x"$mocversiongrep" != x"$mocversion"; then
Packit d7e8d0
      AC_MSG_RESULT([no])
Packit d7e8d0
      # moc was not the qt5 one, try with moc-qt5
Packit d7e8d0
      AC_CHECK_TOOL(MOC2, moc-qt5)
Packit d7e8d0
      mocversion=`$MOC2 -v 2>&1`
Packit d7e8d0
      mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"`
Packit d7e8d0
      if test x"$mocversiongrep" != x"$mocversion"; then
Packit d7e8d0
        AC_CHECK_TOOL(QTCHOOSER, qtchooser)
Packit d7e8d0
        qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
Packit d7e8d0
        mocversion=`$qt5tooldir/moc -v 2>&1`
Packit d7e8d0
        mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
Packit d7e8d0
        if test x"$mocversiongrep" != x"$mocversion"; then
Packit d7e8d0
          # no valid moc found
Packit d7e8d0
          have_qt5_libs="no";
Packit d7e8d0
        else
Packit d7e8d0
          MOC=$qt5tooldir/moc
Packit d7e8d0
        fi
Packit d7e8d0
      else
Packit d7e8d0
        MOC=$MOC2
Packit d7e8d0
      fi
Packit d7e8d0
    fi
Packit d7e8d0
    AC_MSG_RESULT([$mocversion])
Packit d7e8d0
    dnl Check that a binary can actually be build with this qt.
Packit Service 30b792
    dnl pkg-config may be set up in a way that it looks also for libraries
Packit d7e8d0
    dnl of the build system and not only for the host system. In that case
Packit d7e8d0
    dnl we check here that we can actually compile / link a qt application
Packit d7e8d0
    dnl for host.
Packit d7e8d0
    OLDCPPFLAGS=$CPPFLAGS
Packit d7e8d0
    CPPFLAGS=$GPGME_QT_CFLAGS
Packit d7e8d0
    OLDLIBS=$LIBS
Packit d7e8d0
    LIBS=$GPGME_QT_LIBS
Packit d7e8d0
    AC_LANG_PUSH(C++)
Packit d7e8d0
    AC_MSG_CHECKING([whether a simple qt program can be built])
Packit d7e8d0
    AC_LINK_IFELSE([AC_LANG_SOURCE([
Packit d7e8d0
    #include <QCoreApplication>
Packit d7e8d0
    int main (int argc, char **argv) {
Packit d7e8d0
    QCoreApplication app(argc, argv);
Packit d7e8d0
    app.exec();
Packit d7e8d0
    }])], [have_qt5_libs='yes'], [have_qt5_libs='no'])
Packit d7e8d0
    AC_MSG_RESULT([$have_qt5_libs])
Packit d7e8d0
    AC_LANG_POP()
Packit d7e8d0
    CPPFLAGS=$OLDCPPFLAGS
Packit d7e8d0
    LIBS=$OLDLIBS
Packit d7e8d0
  fi
Packit d7e8d0
])