changeset 240:6ffe42286978

m4: use different method for CXXFLAGS
author Paper <paper@paper.us.eu.org>
date Fri, 19 Jan 2024 13:47:56 -0500
parents cae61340cc86
children 06d6c351925c
files configure.ac m4/m4_ax_have_qt.m4
diffstat 2 files changed, 146 insertions(+), 128 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac	Fri Jan 19 12:29:53 2024 -0500
+++ b/configure.ac	Fri Jan 19 13:47:56 2024 -0500
@@ -23,9 +23,9 @@
 AX_HAVE_QT
 
 if test "x$have_qt" = "xno"; then
-	PKG_CHECK_MODULES([QT], [Qt6Widgets >= 6.0.0], [have_qt=yes], [])
+	PKG_CHECK_MODULES([QT], [Qt6Widgets >= 6.0.0], [have_qt=yes], [true])
 	# prioritize qt 5
-	PKG_CHECK_MODULES([QT], [Qt5Widgets >= 5.15.0], [have_qt=yes], [])
+	PKG_CHECK_MODULES([QT], [Qt5Widgets >= 5.15.0], [have_qt=yes], [true])
 
 	if test "x$have_qt" = "xno"; then
 		AC_MSG_ERROR([*** Qt not found.])
--- a/m4/m4_ax_have_qt.m4	Fri Jan 19 12:29:53 2024 -0500
+++ b/m4/m4_ax_have_qt.m4	Fri Jan 19 13:47:56 2024 -0500
@@ -49,6 +49,7 @@
 #
 #   Copyright (c) 2008 Bastiaan Veelo <Bastiaan@Veelo.net>
 #   Copyright (c) 2014 Alex Henrie <alexhenrie24@gmail.com>
+#   Copyright (c) 2024 Paper <mrpapersonic@gmail.com>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
@@ -60,32 +61,37 @@
 AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT])
 AC_DEFUN([AX_HAVE_QT],
 [
-  AC_REQUIRE([AC_PROG_CXX])
-  AC_REQUIRE([AC_PATH_X])
-  AC_REQUIRE([AC_PATH_XTRA])
-  # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example.
-  # Store the full name (like qmake-qt5) into QMAKE
-  # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff.
-  AC_ARG_VAR([QMAKE],"Qt make tool")
-  AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false])
+	AC_REQUIRE([AC_PROG_CXX])
+	AC_REQUIRE([AC_PATH_X])
+	AC_REQUIRE([AC_PATH_XTRA])
+	# openSUSE leap 15.3 installs qmake-qt5, not qmake, for example.
+	# Store the full name (like qmake-qt5) into QMAKE
+	# and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff.
+	AC_ARG_VAR([QMAKE],"Qt make tool")
+	AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false])
+
+	AC_MSG_CHECKING(for Qt)
+	am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'`
+	# If we have Qt5 or later in the path, we're golden
+	ver=`$QMAKE --version | grep -o "Qt version ."`
 
-  AC_MSG_CHECKING(for Qt)
-  am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'`
-  # 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_dir=`mktemp -d`
-    am_have_qt_pro="$am_have_qt_dir/test.pro"
-    am_have_qt_stash="$am_have_qt_dir/.qmake.stash"
-    am_have_qt_makefile="$am_have_qt_dir/Makefile"
-    # http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt
-    cat > $am_have_qt_pro << EOF
+	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_dir=`mktemp -d`
+		am_have_qt_pro="$am_have_qt_dir/test.pro"
+		am_have_qt_stash="$am_have_qt_dir/.qmake.stash"
+		am_have_qt_makefile="$am_have_qt_dir/Makefile"
+		am_have_qt_makefile_cxxflags="$am_have_qt_dir/cxxm"
+		am_have_qt_makefile_libs="$am_have_qt_dir/libsm"
+		# http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt
+		cat > $am_have_qt_pro << EOF
 win32 {
-    CONFIG -= debug_and_release
-    CONFIG += release
+		CONFIG -= debug_and_release
+		CONFIG += release
+}
+mac {
+	CONFIG += sdk_no_version_check
 }
 # commented out all the modules we don't use
 #   - paper
@@ -118,132 +124,144 @@
 #qtHaveModule(webkitwidgets):     QT += webkitwidgets
 #qtHaveModule(xml):               QT += xml
 #qtHaveModule(xmlpatterns):       QT += xmlpatterns
-qtHaveModule(widgets):            QT += widgets
+qtHaveModule(widgets):           QT += widgets
 percent.target = %
 percent.commands = @echo -n "\$(\$(@))\ "
 QMAKE_EXTRA_TARGETS += percent
 EOF
-    $QMAKE $am_have_qt_pro -o $am_have_qt_makefile
-    QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile CXXFLAGS INCPATH`
-    QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile LIBS`
-    rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile
-    rmdir $am_have_qt_dir
+		cat > $am_have_qt_makefile_cxxflags << EOF
+include $am_have_qt_makefile
+
+VAR:
+	@echo \$(CXXFLAGS) \$(INCPATH)
+EOF
+		cat > $am_have_qt_makefile_libs << EOF
+include $am_have_qt_makefile
 
-    # Look for specific tools in $PATH
-    QT_MOC=`which moc$am_have_qt_qmexe_suff`
-    QT_UIC=`which uic$am_have_qt_qmexe_suff`
-    QT_RCC=`which rcc$am_have_qt_qmexe_suff`
-    QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff`
-    QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff`
+VAR:
+	@echo \$(LIBS)
+EOF
+		$QMAKE "$am_have_qt_pro" -o "$am_have_qt_makefile"
+		QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_cxxflags VAR`
+		QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_libs VAR`
+		rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile $am_have_qt_makefile_cxxflags $am_have_qt_makefile_libs
+		rmdir $am_have_qt_dir
 
-    # Get Qt version from qmake
-    QT_DIR=`$QMAKE --version | grep -o -E /.+`
+		# Look for specific tools in $PATH
+		QT_MOC=`which moc$am_have_qt_qmexe_suff`
+		QT_UIC=`which uic$am_have_qt_qmexe_suff`
+		QT_RCC=`which rcc$am_have_qt_qmexe_suff`
+		QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff`
+		QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff`
+
+		# Get Qt version from qmake
+		QT_DIR=`$QMAKE --version | grep -o -E /.+`
 
-    # 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_RCC=$QT_RCC
-    QT_LRELEASE=$QT_LRELEASE
-    QT_LUPDATE=$QT_LUPDATE])
-  else
-    # Qt was not found
-    have_qt=no
-    QT_CXXFLAGS=
-    QT_DIR=
-    QT_LIBS=
-    QT_UIC=
-    QT_MOC=
-    QT_RCC=
-    QT_LRELEASE=
-    QT_LUPDATE=
-    AC_MSG_RESULT($have_qt)
-  fi
-  AC_SUBST(QT_CXXFLAGS)
-  AC_SUBST(QT_DIR)
-  AC_SUBST(QT_LIBS)
-  AC_SUBST(QT_UIC)
-  AC_SUBST(QT_MOC)
-  AC_SUBST(QT_RCC)
-  AC_SUBST(QT_LRELEASE)
-  AC_SUBST(QT_LUPDATE)
-  AC_SUBST(QMAKE)
+		# 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_RCC=$QT_RCC
+		QT_LRELEASE=$QT_LRELEASE
+		QT_LUPDATE=$QT_LUPDATE])
+	else
+		# Qt was not found
+		have_qt=no
+		QT_CXXFLAGS=
+		QT_DIR=
+		QT_LIBS=
+		QT_UIC=
+		QT_MOC=
+		QT_RCC=
+		QT_LRELEASE=
+		QT_LUPDATE=
+		AC_MSG_RESULT($have_qt)
+	fi
+	AC_SUBST(QT_CXXFLAGS)
+	AC_SUBST(QT_DIR)
+	AC_SUBST(QT_LIBS)
+	AC_SUBST(QT_UIC)
+	AC_SUBST(QT_MOC)
+	AC_SUBST(QT_RCC)
+	AC_SUBST(QT_LRELEASE)
+	AC_SUBST(QT_LUPDATE)
+	AC_SUBST(QMAKE)
 
-  #### Being paranoid:
-  if test x"$have_qt" = xyes; then
-    AC_MSG_CHECKING(correct functioning of Qt installation)
-    AC_CACHE_VAL(ax_cv_qt_test_result,
-    [
-      cat > ax_qt_test.h << EOF
+	#### Being paranoid:
+	if test x"$have_qt" = xyes; then
+		AC_MSG_CHECKING(correct functioning of Qt installation)
+		AC_CACHE_VAL(ax_cv_qt_test_result,
+		[
+			cat > ax_qt_test.h << EOF
 #include <qobject.h>
 class Test : public QObject
 {
 Q_OBJECT
 public:
-  Test() {}
-  ~Test() {}
+	Test() {}
+	~Test() {}
 public slots:
-  void receive() {}
+	void receive() {}
 signals:
-  void send();
+	void send();
 };
 EOF
 
-      cat > ax_qt_main.$ac_ext << EOF
+			cat > ax_qt_main.$ac_ext << EOF
 #include "ax_qt_test.h"
 #include <qapplication.h>
 int main( int argc, char **argv )
 {
-  QApplication app( argc, argv );
-  Test t;
-  QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) );
+	QApplication app( argc, argv );
+	Test t;
+	QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) );
 }
 EOF
 
-      ax_cv_qt_test_result="failure"
-      ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null"
-      AC_TRY_EVAL(ax_try_1)
-      if test x"$ac_status" != x0; then
-        echo "$ax_err_1" >&AS_MESSAGE_LOG_FD
-        echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD
-        cat ax_qt_test.h >&AS_MESSAGE_LOG_FD
-      else
-        ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null"
-        AC_TRY_EVAL(ax_try_2)
-        if test x"$ac_status" != x0; then
-          echo "$ax_err_2" >&AS_MESSAGE_LOG_FD
-          echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
-          cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD
-        else
-          ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null"
-          AC_TRY_EVAL(ax_try_3)
-          if test x"$ac_status" != x0; then
-            echo "$ax_err_3" >&AS_MESSAGE_LOG_FD
-            echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
-            cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD
-          else
-            ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null"
-            AC_TRY_EVAL(ax_try_4)
-            if test x"$ac_status" != x0; then
-              echo "$ax_err_4" >&AS_MESSAGE_LOG_FD
-            else
-              ax_cv_qt_test_result="success"
-            fi
-          fi
-        fi
-      fi
-    ])dnl AC_CACHE_VAL ax_cv_qt_test_result
-    AC_MSG_RESULT([$ax_cv_qt_test_result])
-    if test x"$ax_cv_qt_test_result" = "xfailure"; then
-      AC_MSG_ERROR([Failed to find matching components of a complete
-                  Qt installation. Try using more options,
-                  see ./configure --help.])
-    fi
+			ax_cv_qt_test_result="failure"
+			ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null"
+			AC_TRY_EVAL(ax_try_1)
+			if test x"$ac_status" != x0; then
+				echo "$ax_err_1" >&AS_MESSAGE_LOG_FD
+				echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD
+				cat ax_qt_test.h >&AS_MESSAGE_LOG_FD
+			else
+				ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >AS_MESSAGE_LOG_FD 2>&1"
+				AC_TRY_EVAL(ax_try_2)
+				if test x"$ac_status" != x0; then
+					echo "$ax_err_2" >&AS_MESSAGE_LOG_FD
+					echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
+					cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD
+				else
+					ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null"
+					AC_TRY_EVAL(ax_try_3)
+					if test x"$ac_status" != x0; then
+						echo "$ax_err_3" >&AS_MESSAGE_LOG_FD
+						echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD
+						cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD
+					else
+						ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null"
+						AC_TRY_EVAL(ax_try_4)
+						if test x"$ac_status" != x0; then
+							echo "$ax_err_4" >&AS_MESSAGE_LOG_FD
+						else
+							ax_cv_qt_test_result="success"
+						fi
+					fi
+				fi
+			fi
+		])dnl AC_CACHE_VAL ax_cv_qt_test_result
+		AC_MSG_RESULT([$ax_cv_qt_test_result])
+		if test x"$ax_cv_qt_test_result" = "xfailure"; then
+			AC_MSG_ERROR([Failed to find matching components of a complete
+									Qt installation. Try using more options,
+									see ./configure --help.])
+		fi
 
-    rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \
-          ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main
-  fi
+		rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \
+					ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main
+	fi
 ])