Re: [PATCHSET] [4/4] Fix various issue in TUI

Eli Zaretskii
2015-01-22T16:26:31Z

> Date: Thu, 22 Jan 2015 12:07:26 +0000
> From: Pedro Alves <palves@redhat.com>
> CC: gdb-patches@sourceware.org
>
> >>> > > On 12/31/2014 05:56 PM, Eli Zaretskii wrote:
> >>>> > > > Well, one patch is Windows-specific after all. This patch makes sure
> >>>> > > > windows-termcap is not compiled when GDB is linked against ncurses,
> >>> > >
> >>> > > ...
> >>> > >
> >>>> > > > and also makes the file a no-op should it compile in that
> >>>> > > > configuration.
> >>> > >
> >>> > > With the configure.ac change, how can that happen?
> >> >
> >> > It shouldn't.
>
> I'd have preferred to drop that hunk then. It just seems to
> be either pointless or hiding some problem with the
> configure.ac check.

At the very least how about an #error in those conditions? Otherwise,
any bit-rot (something that happens now and then with the MinGW build)
will silently do the wrong thing.

> "This patch makes sure windows-termcap is not compiled
> when GDB is linked against ncurses".
>
> But that doesn't look to be what the patch does.
>
> I asked about $curses_found before because AFAICS, it's quite
> possible for $prefer_curses to be set, but $curses_found
> to be "no". By default, we try configuring the TUI:
>
> # Enable TUI.
> AC_ARG_ENABLE(tui,
> AS_HELP_STRING([--enable-tui], [enable full-screen terminal user interface (TUI)]),
> [case $enableval in
> yes | no | auto)
> ;;
> *)
> AC_MSG_ERROR([bad value $enableval for --enable-tui]) ;;
> esac],enable_tui=auto)
>
> And that always results in $prefer_curses set to yes:
>
> # For the TUI, we need enhanced curses functionality.
> if test x"$enable_tui" != xno; then
> prefer_curses=yes
> fi
>
>
> But then we check if curses is really found:
>
> curses_found=no
> if test x"$prefer_curses" = xyes; then
> ...
> AC_SEARCH_LIBS(waddstr, [ncurses cursesX curses])
>
> if test "$ac_cv_search_waddstr" != no; then
> curses_found=yes
> fi
> fi
>
>
> And then it's $curses_found that we check:
>
> # Check whether we should enable the TUI, but only do so if we really
> # can.
> if test x"$enable_tui" != xno; then
> if test -d $srcdir/tui; then
> if test "$curses_found" != no; then
> ...
> else
> if test x"$enable_tui" = xyes; then
> AC_MSG_ERROR([no enhanced curses library found; disable TUI])
> else
> AC_MSG_WARN([no enhanced curses library found; disabling TUI])
> fi
> fi
> fi
> fi
>
>
> So shouldn't the right check be this:
>
> if test x"$curses_found" != xyes; then
> ac_cv_search_tgetent="none required"
> CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
> fi ;;
>
> ?

I'm not sure. GDB can be configured --without-tui --with-curses.
Does your logic work then?