From 29179d769502873b63ca7f16fa3069d118d5ab1c Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Thu, 7 Feb 2013 10:19:07 +0200
Subject: Autotools support for Qt5

---
 m4/libqt.m4 | 178 ++++++++++++++++++++++--------------------------------------
 1 file changed, 65 insertions(+), 113 deletions(-)

(limited to 'm4')

diff --git a/m4/libqt.m4 b/m4/libqt.m4
index 44cbd5c..0e96da8 100644
--- a/m4/libqt.m4
+++ b/m4/libqt.m4
@@ -2,22 +2,21 @@ dnl file      : m4/libqt.m4
 dnl copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
 dnl license   : GNU GPL v2; see accompanying LICENSE file
 dnl
-dnl LIBQTCORE([ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]])
 dnl
+dnl LIBQTCORE_COMPILE()
 dnl
-AC_DEFUN([LIBQTCORE], [
-libqt_found=no
-
-AC_PATH_PROG([pkg_config],[pkg-config])
-
-AC_MSG_CHECKING([for QtCore])
-
-# First check for QtCore using default CPPFLAGS/LDFLAGS/LIBS. This
-# test allows the user to override the QtCore library name (e.g.,
-# QtCored4) via the LIBS variable.
-#
+AC_DEFUN([LIBQTCORE_COMPILE], [
 CXX_LIBTOOL_LINK_IFELSE([
 AC_LANG_SOURCE([
+// See libodb-qt/odb/qt/details/config.hxx for more information on
+// what's going on here.
+//
+#  if defined(__ELF__) && !defined(__PIC__) && !defined(__PIE__)
+#    include <QtCore/qconfig.h> // QT_REDUCE_RELOCATIONS
+#    ifdef QT_REDUCE_RELOCATIONS
+#      define __PIE__
+#    endif
+#  endif
 #include <string>
 #include <QtCore/QString>
 
@@ -29,91 +28,55 @@ main ()
   return ss.size () != 0;
 }
 ])],
-[
-libqt_found=yes
-])
+[libqt_found=yes])
+])dnl
+dnl
+dnl LIBQTCORE([ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]])
+dnl
+dnl
+AC_DEFUN([LIBQTCORE], [
+libqt_found=no
 
-# Then check for QtCore using default CPPFLAGS/LDFLAGS.
+# QtCore libraries and pkg-config names in the order we should try
+# them.
 #
-if test x"$libqt_found" = xno; then
-
-  save_LIBS="$LIBS"
-  LIBS="-lQtCore $LIBS"
+libqt_lib_names="Qt5Core QtCore5 QtCore Qt4Core QtCore4"
+libqt_pkg_names="Qt5Core QtCore"
 
-  CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <string>
-#include <QtCore/QString>
+AC_PATH_PROG([pkg_config],[pkg-config])
 
-int
-main ()
-{
-  QString qs ("test");
-  std::string ss (qs.toStdString ());
-  return ss.size () != 0;
-}
-])],
-[
-libqt_found=yes
-])
+AC_MSG_CHECKING([for QtCore])
 
-  if test x"$libqt_found" = xno; then
-    LIBS="$save_LIBS"
-  fi
-fi
+# First check for QtCore using default CPPFLAGS/LDFLAGS/LIBS. This
+# test allows the user to override the QtCore library name (e.g.,
+# QtCored4, Qt5Core) via the LIBS variable.
+#
+LIBQTCORE_COMPILE
 
-# Try framework in case we are on Mac OS X.
+# Then check for QtCore using default CPPFLAGS/LDFLAGS.
 #
 if test x"$libqt_found" = xno; then
+  for lib in $libqt_lib_names; do
+    save_LIBS="$LIBS"
+    LIBS="-l$lib $LIBS"
 
-  save_LIBS="$LIBS"
-  LIBS="-framework QtCore $LIBS"
+    LIBQTCORE_COMPILE
 
-  CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <string>
-#include <QtCore/QString>
-
-int
-main ()
-{
-  QString qs ("test");
-  std::string ss (qs.toStdString ());
-  return ss.size () != 0;
-}
-])],
-[
-libqt_found=yes
-])
-
-  if test x"$libqt_found" = xno; then
-    LIBS="$save_LIBS"
-  fi
+    if test x"$libqt_found" = xno; then
+      LIBS="$save_LIBS"
+    else
+      break
+    fi
+  done
 fi
 
-# If QtCore is not found, try its versioned variant, QtCore4.
+# Try framework in case we are on Mac OS X.
 #
 if test x"$libqt_found" = xno; then
-
   save_LIBS="$LIBS"
-  LIBS="-lQtCore4 $LIBS"
+  LIBS="-framework QtCore $LIBS"
 
-  CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <string>
-#include <QtCore/QString>
-
-int
-main ()
-{
-  QString qs ("test");
-  std::string ss (qs.toStdString ());
-  return ss.size () != 0;
-}
-])],
-[
-libqt_found=yes
-])
+  LIBQTCORE_COMPILE
 
   if test x"$libqt_found" = xno; then
     LIBS="$save_LIBS"
@@ -124,39 +87,28 @@ fi
 # them using pkg-config.
 #
 if test x"$libqt_found" = xno; then
-
   if test x"$pkg_config" != x; then
-    if $pkg_config --exists QtCore; then
-      save_CPPFLAGS="$CPPFLAGS"
-      save_LIBS="$LIBS"
-
-      CPPFLAGS=`$pkg_config --cflags QtCore`
-      LIBS=`$pkg_config --libs QtCore`
-
-      CPPFLAGS="$CPPFLAGS $save_CPPFLAGS"
-      LIBS="$LIBS $save_LIBS"
-
-      CXX_LIBTOOL_LINK_IFELSE([
-AC_LANG_SOURCE([
-#include <string>
-#include <QtCore/QString>
-
-int
-main ()
-{
-  QString qs ("test");
-  std::string ss (qs.toStdString ());
-  return ss.size () != 0;
-}
-])],
-[
-libqt_found=yes
-])
-     if test x"$libqt_found" = xno; then
-       CPPFLAGS="$save_CPPFLAGS"
-       LIBS="$save_LIBS"
-     fi
-    fi
+    for pkg in $libqt_pkg_names; do
+      if $pkg_config --exists $pkg; then
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+
+        CPPFLAGS=`$pkg_config --cflags $pkg`
+        LIBS=`$pkg_config --libs $pkg`
+
+        CPPFLAGS="$CPPFLAGS $save_CPPFLAGS"
+        LIBS="$LIBS $save_LIBS"
+
+        LIBQTCORE_COMPILE
+
+        if test x"$libqt_found" = xno; then
+          CPPFLAGS="$save_CPPFLAGS"
+          LIBS="$save_LIBS"
+        else
+          break
+        fi
+      fi
+    done
   fi
 fi
 
-- 
cgit v1.1