diff options
author | Alex Henrie <alexhenrie24@gmail.com> | 2014-09-16 15:12:13 -0600 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2014-10-15 10:48:09 +0200 |
commit | 4751f10fd0fd27693210c95d0309714ce7ac8248 (patch) | |
tree | 5fae2b4edc704a9ab7f4f1d85d113bbc78628e36 | |
parent | e012eb17b3d67f31dee477592328207437206c33 (diff) | |
download | autoconf-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-- | NEWS | 6 | ||||
-rw-r--r-- | m4/ax_have_qt.m4 | 320 |
2 files changed, 19 insertions, 307 deletions
@@ -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 -]) |