bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bison 3.5.91 and readline


From: Bruno Haible
Subject: Bison 3.5.91 and readline
Date: Sun, 03 May 2020 15:10:43 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-177-generic; KDE/5.18.0; x86_64; ; )

The 'bistromathic' example uses readline. Due to the variations in which
it can be installed on the system, this causes build failured during
"make check" on several platforms.

Code like

  # You probably need to customize this for your own environment.
  CPPFLAGS = -I/opt/local/include
  LDFLAGS = -L/opt/local/lib

is not flying for examples that are part of "make check".


1) On FreeBSD 12.0
------------------

  CC       examples/c/bistromathic/bistromathic-parse.o
examples/c/bistromathic/parse.c:75:12: fatal error: 'readline/readline.h' file 
not found
  #include <readline/readline.h>
           ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
*** Error code 1


On this machine, <readline/readline.h> and libreadline.so are installed in 
/usr/local.
But this is apparently not in the compiler's default search path.


2) On NetBSD 9.0
----------------

  CC       examples/c/bistromathic/bistromathic-parse.o
  CCLD     examples/c/bistromathic/bistromathic
ld: cannot find -lreadline
*** Error code 1


On this machine, <readline/readline.h> is installed in /usr/include, but there 
is
no libreadline.* anywhere.


3) On Solaris 11.4
------------------

  CC       examples/c/bistromathic/bistromathic-parse.o
  CCLD     examples/c/bistromathic/bistromathic
Undefined                       first referenced
 symbol                             in file
tgoto                               /usr/lib/amd64/libreadline.so
tputs                               /usr/lib/amd64/libreadline.so
tgetent                             /usr/lib/amd64/libreadline.so
tgetnum                             /usr/lib/amd64/libreadline.so
tgetstr                             /usr/lib/amd64/libreadline.so
tgetflag                            /usr/lib/amd64/libreadline.so
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
gmake[3]: *** [Makefile:3961: examples/c/bistromathic/bistromathic] Error 1

On this machine, <readline/readline.h> and libreadline.so are installed
in /usr. 'ldd /usr/lib/amd64/libreadline.so' shows libc as the only
dependency. But the library also needs the symbols 'tgoto' etc., which
are defined in libcurses.so (and this library is also visible under the
symlinks libncurses.so, libtermcap.so, libtermlib.so).


Conclusion
----------
An autoconf test is really needed. Ideally it will look for the include file and
library, based on an option --with-readline-prefix=DIR. You find some code to
this effect
  - in gnulib/m4/readline.m4
  - in bash:
    
https://git.savannah.gnu.org/gitweb/?p=bash.git;a=blob_plain;f=aclocal.m4;hb=HEAD
  - in clisp:
    https://gitlab.com/gnu-clisp/clisp/-/blob/master/src/m4/readline.m4
    https://gitlab.com/gnu-clisp/clisp/-/blob/master/src/m4/termcap.m4

Bruno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]