[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
- Bison 3.5.91 and readline,
Bruno Haible <=