From cbb822ff9e228883bb877ebcf4f22bb4e2cc0e8e Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sat, 31 Jan 2026 14:38:08 +0100 Subject: fixup: require wide-char support even on PDCurses and document new requirements Also, Scinterm had to be updated again since NetBSD curses stores up to 8 wchar_t per cell. --- INSTALL | 9 +++++---- README | 2 +- configure.ac | 19 +++++++++++-------- contrib/scinterm | 2 +- m4/ax_with_ncurses.m4 | 4 ++-- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/INSTALL b/INSTALL index a44ee66..3816fde 100644 --- a/INSTALL +++ b/INSTALL @@ -21,13 +21,14 @@ SciTECO Build and Runtime Dependencies * Glib 2 as a cross-platform runtime library (v2.44 or later): https://developer.gnome.org/glib/ * When choosing the Curses interface, you need one of: - * NCurses (http://www.gnu.org/software/ncurses/). - If you plan to use the ncurses MinGW port, - I recommend ncurses 6.0 or later. + * ncurses (http://www.gnu.org/software/ncurses/). + Should be built with wide-character support (--enable-widec). + If you plan to use the ncurses MinGW port, I recommend ncurses 6.0 or later. * NetBSD Curses (https://github.com/sabotage-linux/netbsd-curses). - This is the default on NetBSD. + This is the default on NetBSD and should always support wide characters. * PDCursesMod v4.5.4 or later (https://github.com/Bill-Gray/PDCursesMod.git). This is the recommended flavor of PDCurses to use. + It must be built with WIDE=Y and UTF8=Y. * PDCurses/EMCurses (https://github.com/rhaberkorn/emcurses). * PDCurses/XCurses (http://pdcurses.sourceforge.net/). Note that XCurses v3.4 appears to be broken, you may have to diff --git a/README b/README index 4e1fd79..4ed071d 100644 --- a/README +++ b/README @@ -23,7 +23,7 @@ The Curses frontend is verified to work with [ncurses](https://www.gnu.org/softw [PDCurses/XCurses](https://github.com/wmcbrine/PDCurses), [PDCursesMod](https://github.com/Bill-Gray/PDCursesMod) and [EMCurses](https://github.com/rhaberkorn/emcurses). -All X/Open-compatible libraries should be supported. +All X/Open-compatible libraries with enhanced and wide-character support should be supported. SVr4 curses without enhanced definitions is **not** supported. Linux, FreeBSD, NetBSD, [Mac OS X](https://sciteco.fmsbw.de/knowledge/Mac%20OS%20Support), diff --git a/configure.ac b/configure.ac index a469a98..ebe7b8b 100644 --- a/configure.ac +++ b/configure.ac @@ -289,7 +289,8 @@ case $INTERFACE in case $INTERFACE in ncurses) # This gives precendence to the widechar version of ncurses, - # which is necessary for Unicode support even when not using widechar APIs. + # which is necessary for Unicode support and when using more than + # 256 color pairs. # However we also accept libncurses.so if it also contains the # enhanced definitions. # NOTE: This also defines CURSES_CFLAGS and CURSES_LIBS arguments, @@ -376,16 +377,18 @@ case $INTERFACE in LIBS="$LIBS $CURSES_LIBS" fi + AC_CHECK_FUNC([add_wch], [], [ + AC_MSG_ERROR([libpdcurses does not include wide-character support!]) + ]) + # It is crucial to define PDC_WIDE before including curses.h. # FIXME: MinGW has a pdcurses.h that already defines all necessary macros, # but it's not in upstream PDCurses/PDCursesMod. - AC_CHECK_FUNC([add_wch], [ - AC_DEFINE(PDC_WIDE, 1, [PDCurses built with wide-character support]) - # FIXME: It would be better to check for PDC_FORCE_UTF8. - # Theoretically, we could check for endwin_u[32|64]_4302, - # but I'm not sure this will work reliably in the future. - AC_DEFINE(PDC_FORCE_UTF8, 1, [PDCursesMod forces use of UTF8]) - ]) + AC_DEFINE(PDC_WIDE, 1, [PDCurses built with wide-character support]) + # FIXME: It would be better to check for PDC_FORCE_UTF8. + # Theoretically, we could check for endwin_u[32|64]_4302, + # but I'm not sure this will work reliably in the future. + AC_DEFINE(PDC_FORCE_UTF8, 1, [PDCursesMod forces use of UTF8]) AC_CHECK_FUNC([has_mouse], [ AC_DEFINE(PDC_NCMOUSE, 1, [PDCurses built with ncurses mouse API]) diff --git a/contrib/scinterm b/contrib/scinterm index c579c79..5a89baa 160000 --- a/contrib/scinterm +++ b/contrib/scinterm @@ -1 +1 @@ -Subproject commit c579c794e085e8b4c8cd812d9e2e1613ab70d0c3 +Subproject commit 5a89baa751e2655f3f11be90c2130e19244acf05 diff --git a/m4/ax_with_ncurses.m4 b/m4/ax_with_ncurses.m4 index 4dc2f33..cdcfd04 100644 --- a/m4/ax_with_ncurses.m4 +++ b/m4/ax_with_ncurses.m4 @@ -5,8 +5,8 @@ # DESCRIPTION # # This macro checks for an ncurses library with enhanced definitions -# providing a curses.h either in the default search path or as -# established by pkg-config. +# (including wide-char support) providing a curses.h either in the default +# search path or as established by pkg-config. # # It is based on the AX_WITH_CURSES macro but does not attempt # to find any non-standard header, which would require #ifdefing -- cgit v1.2.3