summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Henrie <alexhenrie24@gmail.com>2014-09-16 15:12:13 -0600
committerPeter Simons <simons@cryp.to>2014-10-15 10:48:09 +0200
commit4751f10fd0fd27693210c95d0309714ce7ac8248 (patch)
tree5fae2b4edc704a9ab7f4f1d85d113bbc78628e36
parente012eb17b3d67f31dee477592328207437206c33 (diff)
downloadautoconf-archive-4751f10fd0fd27693210c95d0309714ce7ac8248.tar.gz
AX_HAVE_QT: Only check $PATH and qmake for Qt variables
The old logic for detecting Qt without $PATH or qmake was never very reliable and the last change to this macro broke it entirely. If the Qt variables cannot be found via $PATH and qmake, then it would be best to manually define them in the makefile.
-rw-r--r--NEWS6
-rw-r--r--m4/ax_have_qt.m4320
2 files changed, 19 insertions, 307 deletions
diff --git a/NEWS b/NEWS
index d41ab96..968c24e 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,12 @@
* Noteworthy changes in release ?.? (????-??-??) [?]
+ AX_HAVE_QT: Only check $PATH and qmake for Qt variables. The old logic for
+ detecting Qt without $PATH or qmake was never very reliable and the last
+ change to this macro broke it entirely. If the Qt variables cannot be found
+ via $PATH and qmake, then it would be best to manually define them in the
+ makefile.
+
AX_TLS: fix quoting problem.
AX_F90_LIBRARY: several bug fixes and improvements. Further details are at
diff --git a/m4/ax_have_qt.m4 b/m4/ax_have_qt.m4
index 2f5d9c6..b15daf2 100644
--- a/m4/ax_have_qt.m4
+++ b/m4/ax_have_qt.m4
@@ -4,32 +4,12 @@
#
# SYNOPSIS
#
-# AX_HAVE_QT [--with-Qt-dir=DIR] [--with-Qt-lib-dir=DIR] [--with-Qt-lib=LIB]
-# AX_HAVE_QT [--with-Qt-include-dir=DIR] [--with-Qt-bin-dir=DIR] [--with-Qt-lib-dir=DIR] [--with-Qt-lib=LIB]
+# AX_HAVE_QT
#
# DESCRIPTION
#
-# Searches common directories for Qt include files, libraries and Qt
-# binary utilities. The macro supports several different versions of the
-# Qt framework being installed on the same machine. However, without
-# options the macro will only look for a working Qt5 installation in
-# $PATH.
-#
-# By use of one or more options a different library, such as a Qt4
-# installation, may be selected. There are two different sets of options.
-# Both sets contain the option --with-Qt-lib=LIB which can be used to
-# force the use of a particular version of the library file when more than
-# one are available. LIB must be in the form as it would appear behind the
-# "-l" option to the compiler. Examples for LIB would be "qt-mt" for the
-# multi-threaded version and "qt" for the regular version.
-#
-# In addition to this, the first set consists of an option
-# --with-Qt-dir=DIR which can be used when the installation conforms to
-# Trolltech's standard installation, which means that header files are in
-# DIR/include, binary utilities are in DIR/bin and the library is in
-# DIR/lib. The second set of options can be used to indicate individual
-# locations for the header files, the binary utilities and the library
-# file, in addition to the specific version of the library file.
+# Searches $PATH and queries qmake for Qt include files, libraries and Qt
+# binary utilities. The macro only supports Qt5 or later.
#
# The following shell variable is set to either "yes" or "no":
#
@@ -46,10 +26,9 @@
# QT_DIR
#
# which respectively contain an "-I" flag pointing to the Qt include
-# directory (and "-DQT_THREAD_SUPPORT" when LIB is "qt-mt"), link flags
-# necessary to link with Qt and X, the name of the meta object compiler
-# and the user interface compiler both with full path, and finally the
-# variable QTDIR as Trolltech likes to see it defined (if possible).
+# directory, link flags necessary to link with Qt and X, the full path to
+# the meta object compiler and the user interface compiler both, and
+# finally the variable QTDIR as Qt likes to see it defined.
#
# Example lines for Makefile.in:
#
@@ -64,36 +43,18 @@
#
# No common variables such as $LIBS or $CFLAGS are polluted.
#
-# Options:
-#
-# --with-Qt-dir=DIR: DIR is equal to $QTDIR if you have followed the
-# installation instructions of Trolltech. Header files are in DIR/include,
-# binary utilities are in DIR/bin and the library is in DIR/lib.
-#
-# --with-Qt-include-dir=DIR: Qt header files are in DIR.
-#
-# --with-Qt-bin-dir=DIR: Qt utilities such as moc and uic are in DIR.
-#
-# --with-Qt-lib-dir=DIR: The Qt library is in DIR.
-#
-# --with-Qt-lib=LIB: Use -lLIB to link with the Qt library.
-#
-# If some option "=no" or, equivalently, a --without-Qt-* version is given
-# in stead of a --with-Qt-*, "have_qt" is set to "no" and the other
-# variables are set to the empty string.
-#
# LICENSE
#
# Copyright (c) 2008 Bastiaan Veelo <Bastiaan@Veelo.net>
+# Copyright (c) 2014 Alex Henrie <alexhenrie24@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 11
+#serial 12
-dnl Calls AX_PATH_QT_DIRECT (contained in this file) as a subroutine.
AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT])
AC_DEFUN([AX_HAVE_QT],
[
@@ -102,78 +63,10 @@ AC_DEFUN([AX_HAVE_QT],
AC_REQUIRE([AC_PATH_XTRA])
AC_MSG_CHECKING(for Qt)
-
- AC_ARG_WITH([Qt-dir],
- AS_HELP_STRING([--with-Qt-dir=DIR],
- [DIR is equal to $QTDIR if you have followed the
- installation instructions of Trolltech. Header
- files are in DIR/include, binary utilities are
- in DIR/bin. The library is in DIR/lib, unless
- --with-Qt-lib-dir is also set.]))
- AC_ARG_WITH([Qt-include-dir],
- AS_HELP_STRING([--with-Qt-include-dir=DIR],
- [Qt header files are in DIR]))
- AC_ARG_WITH([Qt-bin-dir],
- AS_HELP_STRING([--with-Qt-bin-dir=DIR],
- [Qt utilities such as moc and uic are in DIR]))
- AC_ARG_WITH([Qt-lib-dir],
- AS_HELP_STRING([--with-Qt-lib-dir=DIR],
- [The Qt library is in DIR]))
- AC_ARG_WITH([Qt-lib],
- AS_HELP_STRING([--with-Qt-lib=LIB],
- [Use -lLIB to link with the Qt library]))
- if test x"$with_Qt_dir" = x"no" ||
- test x"$with_Qt_include-dir" = x"no" ||
- test x"$with_Qt_bin_dir" = x"no" ||
- test x"$with_Qt_lib_dir" = x"no" ||
- test x"$with_Qt_lib" = x"no"; then
- # user disabled Qt. Leave cache alone.
- have_qt="User disabled Qt."
- else
- # "yes" is a bogus option
- if test x"$with_Qt_dir" = xyes; then
- with_Qt_dir=
- fi
- if test x"$with_Qt_include_dir" = xyes; then
- with_Qt_include_dir=
- fi
- if test x"$with_Qt_bin_dir" = xyes; then
- with_Qt_bin_dir=
- fi
- if test x"$with_Qt_lib_dir" = xyes; then
- with_Qt_lib_dir=
- fi
- if test x"$with_Qt_lib" = xyes; then
- with_Qt_lib=
- fi
- # No Qt unless we discover otherwise
- have_qt=no
- # Check whether we are requested to link with a specific version
- if test x"$with_Qt_lib" != x; then
- ax_qt_lib="$with_Qt_lib"
- fi
- # Check whether we were supplied with an answer already
- if test x"$with_Qt_dir" != x; then
- have_qt=yes
- ax_qt_dir="$with_Qt_dir"
- ax_qt_include_dir="$with_Qt_dir/include"
- ax_qt_bin_dir="$with_Qt_dir/bin"
- ax_qt_lib_dir="$with_Qt_dir/lib"
- # Only search for the lib if the user did not define one already
- if test x"$ax_qt_lib" = x; then
- ax_qt_lib="`ls $ax_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$ax_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- ax_qt_LIBS="-L$ax_qt_lib_dir -l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # If we have Qt5 or later in the path, we're golden
- ver=`qmake --version | grep -o "Qt version ."`
- if test "$ver" ">" "Qt version 4"; then
- have_qt=yes
- fi
- fi
- fi # $have_qt reflects the system status
- if test x"$have_qt" = xyes; then
+ # If we have Qt5 or later in the path, we're golden
+ ver=`qmake --version | grep -o "Qt version ."`
+ if test "$ver" ">" "Qt version 4"; then
+ have_qt=yes
# This pro file dumps qmake's variables, but it only works on Qt 5 or later
am_have_qt_pro=`mktemp`
am_have_qt_makefile=`mktemp`
@@ -235,18 +128,9 @@ EOF
QT_MOC=$QT_MOC
QT_LRELEASE=$QT_LRELEASE
QT_LUPDATE=$QT_LUPDATE])
-
- # All variables are defined, report the result
- AC_MSG_RESULT([$have_qt:
- QT_CXXFLAGS=$QT_CXXFLAGS
- QT_DIR=$QT_DIR
- QT_LIBS=$QT_LIBS
- QT_UIC=$QT_UIC
- QT_MOC=$QT_MOC
- QT_LRELEASE=$QT_LRELEASE
- QT_LUPDATE=$QT_LUPDATE])
else
# Qt was not found
+ have_qt=no
QT_CXXFLAGS=
QT_DIR=
QT_LIBS=
@@ -339,181 +223,3 @@ EOF
ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main
fi
])
-
-dnl Internal subroutine of AX_HAVE_QT
-dnl Set ax_qt_dir ax_qt_include_dir ax_qt_bin_dir ax_qt_lib_dir ax_qt_lib
-AC_DEFUN([AX_PATH_QT_DIRECT],
-[
- ## Binary utilities ##
- if test x"$with_Qt_bin_dir" != x; then
- ax_qt_bin_dir=$with_Qt_bin_dir
- fi
- ## Look for header files ##
- if test x"$with_Qt_include_dir" != x; then
- ax_qt_include_dir="$with_Qt_include_dir"
- else
- # The following header file is expected to define QT_VERSION.
- qt_direct_test_header=qglobal.h
- # Look for the header file in a standard set of common directories.
- ax_include_path_list="
- /usr/include
- `ls -dr ${QTDIR}/include 2>/dev/null`
- `ls -dr /usr/include/qt* 2>/dev/null`
- `ls -dr /usr/lib/qt*/include 2>/dev/null`
- `ls -dr /usr/local/qt*/include 2>/dev/null`
- `ls -dr /opt/qt*/include 2>/dev/null`
- `ls -dr /Developer/qt*/include 2>/dev/null`
- "
- for ax_dir in $ax_include_path_list; do
- if test -r "$ax_dir/$qt_direct_test_header"; then
- ax_dirs="$ax_dirs $ax_dir"
- fi
- done
- # Now look for the newest in this list
- ax_prev_ver=0
- for ax_dir in $ax_dirs; do
- ax_this_ver=`egrep -w '#define QT_VERSION' $ax_dir/$qt_direct_test_header | sed s/'#define QT_VERSION'//`
- if expr $ax_this_ver '>' $ax_prev_ver > /dev/null; then
- ax_qt_include_dir=$ax_dir
- ax_prev_ver=$ax_this_ver
- fi
- done
- fi dnl Found header files.
-
- # Are these headers located in a traditional Trolltech installation?
- # That would be $ax_qt_include_dir stripped from its last element:
- ax_possible_qt_dir=`dirname $ax_qt_include_dir`
- if (test -x $ax_possible_qt_dir/bin/moc) &&
- ((ls $ax_possible_qt_dir/lib/libqt* > /dev/null 2>/dev/null) ||
- (ls $ax_possible_qt_dir/lib64/libqt* > /dev/null 2>/dev/null)); then
- # Then the rest is a piece of cake
- ax_qt_dir=$ax_possible_qt_dir
- ax_qt_bin_dir="$ax_qt_dir/bin"
- if test x"$with_Qt_lib_dir" != x; then
- ax_qt_lib_dir="$with_Qt_lib_dir"
- else
- if (test -d $ax_qt_dir/lib64); then
- ax_qt_lib_dir="$ax_qt_dir/lib64"
- else
- ax_qt_lib_dir="$ax_qt_dir/lib"
- fi
- fi
- # Only look for lib if the user did not supply it already
- if test x"$ax_qt_lib" = xNO; then
- ax_qt_lib="`ls $ax_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$ax_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- ax_qt_LIBS="-L$ax_qt_lib_dir -l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # There is no valid definition for $QTDIR as Trolltech likes to see it
- ax_qt_dir=
- ## Look for Qt library ##
- if test x"$with_Qt_lib_dir" != x; then
- ax_qt_lib_dir="$with_Qt_lib_dir"
- # Only look for lib if the user did not supply it already
- if test x"$ax_qt_lib" = xNO; then
- ax_qt_lib="`ls $ax_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$ax_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- ax_qt_LIBS="-L$ax_qt_lib_dir -l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # Normally, when there is no traditional Trolltech installation,
- # the library is installed in a place where the linker finds it
- # automatically.
- # If the user did not define the library name, try with qt
- if test x"$ax_qt_lib" = xNO; then
- ax_qt_lib=qt
- fi
- qt_direct_test_header=qapplication.h
- qt_direct_test_main="
- int argc;
- char ** argv;
- QApplication app(argc,argv);
- "
- # See if we find the library without any special options.
- # Don't add top $LIBS permanently yet
- ax_save_LIBS="$LIBS"
- LIBS="-l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- ax_qt_LIBS="$LIBS"
- ax_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="-I$ax_qt_include_dir"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- ax_qt_lib_dir=
- ], [
- # That did not work. Try the multi-threaded version
- echo "Non-critical error, please neglect the above." >&AS_MESSAGE_LOG_FD
- ax_qt_lib=qt-mt
- LIBS="-l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- ax_qt_lib_dir=
- ], [
- # That did not work. Try the OpenGL version
- echo "Non-critical error, please neglect the above." >&AS_MESSAGE_LOG_FD
- ax_qt_lib=qt-gl
- LIBS="-l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- ax_qt_lib_dir=
- ], [
- # That did not work. Maybe a library version I don't know about?
- echo "Non-critical error, please neglect the above." >&AS_MESSAGE_LOG_FD
- # Look for some Qt lib in a standard set of common directories.
- ax_dir_list="
- `echo $ax_qt_includes | sed ss/includess`
- /lib
- /usr/lib64
- /usr/lib
- /usr/local/lib64
- /usr/local/lib
- /opt/lib64
- /opt/lib
- `ls -dr /usr/lib64/qt* 2>/dev/null`
- `ls -dr /usr/lib64/qt*/lib64 2>/dev/null`
- `ls -dr /usr/lib/qt* 2>/dev/null`
- `ls -dr /usr/local/qt* 2>/dev/null`
- `ls -dr /opt/qt* 2>/dev/null`
- "
- for ax_dir in $ax_dir_list; do
- if ls $ax_dir/libqt* >/dev/null 2>/dev/null; then
- # Gamble that it's the first one...
- ax_qt_lib="`ls $ax_dir/libqt* | sed -n 1p |
- sed s@$ax_dir/lib@@ | sed s/[[.]].*//`"
- ax_qt_lib_dir="$ax_dir"
- break
- fi
- done
- # Try with that one
- LIBS="-l$ax_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- ax_qt_lib_dir=
- ], [
- : # Leave ax_qt_lib_dir defined
- ])
- ])
- ])
- ])
- if test x"$ax_qt_lib_dir" != x; then
- ax_qt_LIBS="-L$ax_qt_lib_dir $LIBS"
- else
- ax_qt_LIBS="$LIBS"
- fi
- LIBS="$ax_save_LIBS"
- CXXFLAGS="$ax_save_CXXFLAGS"
- fi dnl $with_Qt_lib_dir was not given
- fi dnl Done setting up for non-traditional Trolltech installation
-])