From 29179d769502873b63ca7f16fa3069d118d5ab1c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov 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(-) 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 // QT_REDUCE_RELOCATIONS +# ifdef QT_REDUCE_RELOCATIONS +# define __PIE__ +# endif +# endif #include #include @@ -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 -#include +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 -#include - -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 -#include - -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 -#include - -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