diff mbox

Fix legacy ncurses detection.

Message ID 20161109110400.118d4750.cornelia.huck@de.ibm.com
State New
Headers show

Commit Message

Cornelia Huck Nov. 9, 2016, 10:04 a.m. UTC
On Wed, 9 Nov 2016 10:52:38 +0100
Samuel Thibault <samuel.thibault@gnu.org> wrote:

> Hello,
> 
> Cornelia Huck, on Wed 09 Nov 2016 10:40:28 +0100, wrote:
> > Still curses=no... log attached.
> 
> Oops, sorry, I misplaced my code, and it somehow worked in my case.
> Could you give a try at the attached patch instead?

Works for me on SLES, Fedora, Ubuntu.

Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>

Sergey, could you test whether the patch works for you as well?
(Inserted for convenience.)

commit cc8965eb848f53599895a650a6e062319189be1f
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Tue Nov 8 20:57:27 2016 +0100

    Fix cursesw detection
    
    On systems which do not provide ncursesw.pc and whose /usr/include/curses.h
    does not include wide support, we should not only try with no -I, i.e.
    /usr/include, but also with -I/usr/include/ncursesw.
    
    To properly detect for wide support with and without -Werror, we need to
    check for the presence of e.g. the WACS_DEGREE macro.
    
    We also want to stop at the first curses_inc_list configuration which works,
    and make sure to set IFS to : at each new loop.
    
    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Comments

Sergey Smolov Nov. 9, 2016, 10:15 a.m. UTC | #1
On 09.11.2016 13:04, Cornelia Huck wrote:
> On Wed, 9 Nov 2016 10:52:38 +0100
> Samuel Thibault <samuel.thibault@gnu.org> wrote:
>
>> Hello,
>>
>> Cornelia Huck, on Wed 09 Nov 2016 10:40:28 +0100, wrote:
>>> Still curses=no... log attached.
>> Oops, sorry, I misplaced my code, and it somehow worked in my case.
>> Could you give a try at the attached patch instead?
> Works for me on SLES, Fedora, Ubuntu.
>
> Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
>
> Sergey, could you test whether the patch works for you as well?
> (Inserted for convenience.)
>
> commit cc8965eb848f53599895a650a6e062319189be1f
> Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
> Date:   Tue Nov 8 20:57:27 2016 +0100
>
>      Fix cursesw detection
>      
>      On systems which do not provide ncursesw.pc and whose /usr/include/curses.h
>      does not include wide support, we should not only try with no -I, i.e.
>      /usr/include, but also with -I/usr/include/ncursesw.
>      
>      To properly detect for wide support with and without -Werror, we need to
>      check for the presence of e.g. the WACS_DEGREE macro.
>      
>      We also want to stop at the first curses_inc_list configuration which works,
>      and make sure to set IFS to : at each new loop.
>      
>      Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
>
> diff --git a/configure b/configure
> index fd6f898..7d2a34e 100755
> --- a/configure
> +++ b/configure
> @@ -2926,7 +2926,7 @@ if test "$curses" != "no" ; then
>       curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
>       curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
>     else
> -    curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):"
> +    curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
>       curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
>     fi
>     curses_found=no
> @@ -2941,11 +2941,13 @@ int main(void) {
>     resize_term(0, 0);
>     addwstr(L"wide chars\n");
>     addnwstr(&wch, 1);
> +  add_wch(WACS_DEGREE);
>     return s != 0;
>   }
>   EOF
>     IFS=:
>     for curses_inc in $curses_inc_list; do
> +    IFS=:
>       for curses_lib in $curses_lib_list; do
>         unset IFS
>         if compile_prog "$curses_inc" "$curses_lib" ; then
> @@ -2955,6 +2957,9 @@ EOF
>           break
>         fi
>       done
> +    if test "$curses_found" = yes ; then
> +      break
> +    fi
>     done
>     unset IFS
>     if test "$curses_found" = "yes" ; then
>

It works, thank you!

Is it planned to publish this patch into master?
Samuel Thibault Nov. 9, 2016, 10:25 a.m. UTC | #2
Sergey Smolov, on Wed 09 Nov 2016 13:15:18 +0300, wrote:
> Is it planned to publish this patch into master?

Yes.

Samuel
diff mbox

Patch

diff --git a/configure b/configure
index fd6f898..7d2a34e 100755
--- a/configure
+++ b/configure
@@ -2926,7 +2926,7 @@  if test "$curses" != "no" ; then
     curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
     curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
   else
-    curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):"
+    curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
     curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
   fi
   curses_found=no
@@ -2941,11 +2941,13 @@  int main(void) {
   resize_term(0, 0);
   addwstr(L"wide chars\n");
   addnwstr(&wch, 1);
+  add_wch(WACS_DEGREE);
   return s != 0;
 }
 EOF
   IFS=:
   for curses_inc in $curses_inc_list; do
+    IFS=:
     for curses_lib in $curses_lib_list; do
       unset IFS
       if compile_prog "$curses_inc" "$curses_lib" ; then
@@ -2955,6 +2957,9 @@  EOF
         break
       fi
     done
+    if test "$curses_found" = yes ; then
+      break
+    fi
   done
   unset IFS
   if test "$curses_found" = "yes" ; then