Mercurial > octave
diff m4/acinclude.m4 @ 32049:1c99c8f020f7
gui: Show encodings available with iconv in file editor preferences.
* liboctave/wrappers/iconv-wrappers.h, liboctave/wrappers/iconv-wrappers.c
(octave_iconvlist_wrapper, octave_iconv_canonicalize_wrapper): Add wrappers for
libiconv functions.
* liboctave/util/oct-string.h, liboctave/util/oct-string.cc
(octave::string::get_encoding_list): Add new function that returns an ordered
list of canonicalized encoding names that are available from libiconv. Use list
of encoding identifiers as fallback on platforms without the required funcions.
* libgui/src/gui-settings.cc, libgui/src/gui-settings.h
(octave::gui_settings::get_codecs): Remove function.
(octave::gui_settings::combo_encoding): Show list of encoding names that are
actually available to the interpreter instead of a list of encodings available
in Qt.
* libgui/src/qt-interpreter-events.cc
(octave::qt_interpreter_events::gui_preference_adjust): Remove logic for mapping
between Qt encoding names and iconv encoding names.
* libgui/src/settings-dialog.cc: Remove unused header.
* m4/acinclude.m4 (OCTAVE_CHECK_ICONVLIST, OCTAVE_CHECK_ICONV_CANONICALIZE):
Add checks for functions from libiconv that are not available on all platforms.
* configure.ac: Call new functions.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sat, 22 Apr 2023 19:01:35 +0200 |
parents | 4d15e1304a48 |
children | 17a09d2bbe0f |
line wrap: on
line diff
--- a/m4/acinclude.m4 Fri Apr 21 14:49:23 2023 -0400 +++ b/m4/acinclude.m4 Sat Apr 22 19:01:35 2023 +0200 @@ -1256,6 +1256,68 @@ fi ]) dnl +dnl Check whether iconv provides the function iconvlist. +dnl +AC_DEFUN([OCTAVE_CHECK_ICONVLIST], [ + AC_CACHE_CHECK([whether the function iconvlist is available], + [octave_cv_iconvlist], + [ac_octave_save_LIBS="$LIBS" + LIBS="$LIBICONV $LIBS" + AC_LANG_PUSH(C++) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #if HAVE_ICONV + extern "C" + { + # include <iconv.h> + } + #endif + ]], [[ + iconvlist ( + [] (unsigned int, const char * const *, void *) -> int + { + return 0; + }, + nullptr); + ]])], + octave_cv_iconvlist=yes, + octave_cv_iconvlist=no) + AC_LANG_POP(C++) + LIBS="$ac_octave_save_LIBS" + ]) + if test $octave_cv_iconvlist = yes; then + AC_DEFINE(HAVE_ICONVLIST, 1, [Define to 1 if iconvlist is available.]) + fi +]) +dnl +dnl Check whether iconv provides the function iconv_canonicalize. +dnl +AC_DEFUN([OCTAVE_CHECK_ICONV_CANONICALIZE], [ + AC_CACHE_CHECK([whether the function iconv_canonicalize is available], + [octave_cv_iconv_canonicalize], + [ac_octave_save_LIBS="$LIBS" + LIBS="$LIBICONV $LIBS" + AC_LANG_PUSH(C++) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #if HAVE_ICONV + extern "C" + { + # include <iconv.h> + } + #endif + ]], [[ + iconv_canonicalize ("UTF-8"); + ]])], + octave_cv_iconv_canonicalize=yes, + octave_cv_iconv_canonicalize=no) + AC_LANG_POP(C++) + LIBS="$ac_octave_save_LIBS" + ]) + if test $octave_cv_iconv_canonicalize = yes; then + AC_DEFINE(HAVE_ICONV_CANONICALIZE, 1, + [Define to 1 if iconv_canonicalize is available.]) + fi +]) +dnl dnl Check whether using HDF5 DLL under Windows. This is done by dnl testing for a data symbol in the HDF5 library, which would dnl require the definition of _HDF5USEDL_ under MSVC compiler.