diff m4/acinclude.m4 @ 32008:4d15e1304a48

build: Check for Qt function QTextStream::setEncoding. * m4/acinclude.m4 (OCTAVE_CHECK_FUNC_QTEXTSTREAM_SETENCODING): Check whether the Qt class QTextStream has the member function setEncoding. * libgui/src/m-editor/file-editor-tab.cc (file_editor_tab::do_save_file), src/octave-svgconvert.cc (main): Use QTextStream::setCodec if QTextStream::setEncoding isn't available. * libgui/src/m-edit/file-editor-tab.h: Move including QTextCodec header from file-editor-tab.cc to here.
author Markus Mützel <markus.muetzel@gmx.de>
date Thu, 13 Apr 2023 16:17:45 +0200
parents 5724d89e9244
children 1c99c8f020f7
line wrap: on
line diff
--- a/m4/acinclude.m4	Thu Apr 13 14:50:45 2023 +0200
+++ b/m4/acinclude.m4	Thu Apr 13 16:17:45 2023 +0200
@@ -464,7 +464,7 @@
 ])
 dnl
 dnl Check whether the Qt class QHelpEngine has the documentsForIdentifier
-dnl function.  dnl This member function was introduced in Qt 5.15.
+dnl function.  This member function was introduced in Qt 5.15.
 dnl
 dnl FIXME: Delete this entirely when we drop support for Qt 5.14 or older.
 dnl
@@ -691,6 +691,38 @@
   fi
 ])
 dnl
+dnl Check whether the Qt class QTextStream has the setEncoding function.
+dnl This function was introduced replacing QTextStream::setCodec in Qt6.
+dnl
+dnl FIXME: Delete this check when we drop support for any version of Qt5.
+dnl
+AC_DEFUN([OCTAVE_CHECK_FUNC_QTEXTSTREAM_SETENCODING], [
+  AC_CACHE_CHECK([for QTextStream::setEncoding],
+    [octave_cv_func_qtextstream_setencoding],
+    [AC_LANG_PUSH(C++)
+    ac_octave_save_CPPFLAGS="$CPPFLAGS"
+    ac_octave_save_CXXFLAGS="$CXXFLAGS"
+    CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS"
+    CXXFLAGS="$CXXPICFLAG $CXXFLAGS"
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+        #include <QStringConverter>
+        #include <QTextStream>
+        ]], [[
+        QTextStream textstream;
+        textstream.setEncoding (QStringConverter::Utf8);
+        ]])],
+      octave_cv_func_qtextstream_setencoding=yes,
+      octave_cv_func_qtextstream_setencoding=no)
+    CPPFLAGS="$ac_octave_save_CPPFLAGS"
+    CXXFLAGS="$ac_octave_save_CXXFLAGS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_func_qtextstream_setencoding = yes; then
+    AC_DEFINE(HAVE_QTEXTSTREAM_SETENCODING, 1,
+      [Define to 1 if you have the `QTextStream::setEncoding' member function.])
+  fi
+])
+dnl
 dnl Check whether HDF5 library has version 1.6 API functions.
 dnl
 AC_DEFUN([OCTAVE_CHECK_HDF5_HAS_VER_16_API], [
@@ -2026,6 +2058,7 @@
     OCTAVE_CHECK_FUNC_QPAINTER_SETRENDERHINT_LOSSLESS
     OCTAVE_CHECK_FUNC_QCOLOR_FLOAT_TYPE
     OCTAVE_CHECK_CLASS_QSTRINGVIEW
+    OCTAVE_CHECK_FUNC_QTEXTSTREAM_SETENCODING
 
     OCTAVE_CHECK_QREGION_ITERATORS
     OCTAVE_CHECK_QT_IMCURSORRECTANGLE_ENUM_VALUE