readline: add configure --enable-readline-bundled option

Cleanup autoconf handling, should always work as expected.
Use of --enable-readline-bundled when readline is needed will use
copy in subdir.
This commit is contained in:
Darryl L. Miles 2025-10-03 23:32:54 +01:00 committed by R. Timothy Edwards
parent 2b62123459
commit 8b0616eaf5
4 changed files with 51 additions and 16 deletions

View File

@ -58,13 +58,15 @@ LIBS_SUBDIR := $(shell for i in ${MODULES}; do echo "$${i}/lib$${i}.a"; done)
${MODULES_SUBDIR}: FORCE ${MODULES_SUBDIR}: FORCE
@${MAKE} -C $(dir $@) module @${MAKE} -C $(dir $@) module
.PHONY: modules
modules: database/database.h depend ${MODULES_SUBDIR} modules: database/database.h depend ${MODULES_SUBDIR}
${LIBS_SUBDIR}: FORCE ${LIBS_SUBDIR}: FORCE
@${MAKE} -C $(dir $@) lib @${MAKE} -C $(dir $@) lib
# Force the tiles/utils modules to exist first for libdatabase.a # Force the tiles/utils modules to exist first for libdatabase.a
libs: database/database.h tiles/libtiles.o utils/libutils.o depend ${LIBS_SUBDIR} .PHONY: libs
libs: database/database.h depend tiles/libtiles.o utils/libutils.o ${LIBS_SUBDIR}
# #
# extcheck - utility tool # extcheck - utility tool

View File

@ -2,9 +2,18 @@ MAGICDIR = ..
include ${MAGICDIR}/defs.mak include ${MAGICDIR}/defs.mak
module: readline-create-symlinks libreadline.a libhistory.a
lib: libreadline.a libhistory.a ifeq ($(MAKE_READLINE),1)
TARGETS = libreadline.a libhistory.a
else
TARGETS =
endif
# We don't make a libreadline.o
module:
# We do make a libreadline.a
lib: $(TARGETS)
depend: depend:
@ -48,7 +57,7 @@ libreadline.a: build-readline/libreadline.a
build-readline/libreadline.a build-readline/libhistory.a: readline-create-symlinks build-readline build-readline/libreadline.a build-readline/libhistory.a: readline-create-symlinks build-readline
.PHONY: build-readline .PHONY: build-readline
build-readline: build-readline: readline-create-symlinks
@if ! test -e build-readline/Makefile ; then \ @if ! test -e build-readline/Makefile ; then \
echo --- building GNU readline ; \ echo --- building GNU readline ; \
$(MKDIR) -p build-readline ; \ $(MKDIR) -p build-readline ; \

View File

@ -1100,25 +1100,48 @@ AC_ARG_ENABLE(readline,
fi fi
]) ])
use_system_readline=yes
use_bundled_readline=auto
AC_ARG_ENABLE(readline-bundled,
[ --enable-readline-bundled enable readline bundled package],
[ use_bundled_readline=yes
], [
use_bundled_readline=no
])
if test "x$enable_readline" = "xyes" ; then if test "x$enable_readline" = "xyes" ; then
AC_DEFINE(USE_READLINE) AC_DEFINE(USE_READLINE)
use_system_readline=yes if test $use_bundled_readline != yes ; then
AC_CHECK_LIB(readline, rl_pre_input_hook,, AC_CHECK_LIB(readline, rl_pre_input_hook,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no) use_system_readline=no)
AC_CHECK_LIB(readline, rl_username_completion_function,, AC_CHECK_LIB(readline, rl_username_completion_function,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no) use_system_readline=no)
AC_CHECK_LIB(readline, rl_filename_completion_function,, AC_CHECK_LIB(readline, rl_filename_completion_function,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no) use_system_readline=no)
AC_CHECK_LIB(readline, rl_attempted_completion_over,, AC_CHECK_LIB(readline, rl_attempted_completion_over,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no) use_system_readline=no)
if test $use_system_readline = yes ; then fi
if test $use_system_readline = yes && test $use_bundled_readline != yes; then
AC_DEFINE(HAVE_READLINE) AC_DEFINE(HAVE_READLINE)
rl_libs="-lreadline" rl_libs="-lreadline"
use_bundled_readline=
else else
rl_libs="\${MAGICDIR}/readline/readline/libreadline.a" echo "Using bundled readline"
AC_DEFINE(NEED_READLINE)
# not readline/libhistory.a (seems subset of libreadline.a)
rl_libs="\${MAGICDIR}/readline/libreadline.a"
CPPFLAGS="$CPPFLAGS -I\${MAGICDIR}/readline" CPPFLAGS="$CPPFLAGS -I\${MAGICDIR}/readline"
use_bundled_readline=1 use_bundled_readline=1
fi
AC_CHECK_LIB(termcap, tgetent, [ AC_CHECK_LIB(termcap, tgetent, [
rl_libs="$rl_libs -ltermcap" rl_libs="$rl_libs -ltermcap"
], [ ], [
@ -1127,6 +1150,7 @@ if test "x$enable_readline" = "xyes" ; then
], ) ], )
], ) ], )
modules="$modules readline" modules="$modules readline"
fi
else else
unused="$unused readline" unused="$unused readline"
fi fi

View File

@ -51,8 +51,8 @@ global bool TxStdoutIsatty;
#include <readline/readline.h> #include <readline/readline.h>
#include <readline/history.h> #include <readline/history.h>
#else #else
#include "readline/readline.h" #include "readline/readline/readline.h"
#include "readline/history.h" #include "readline/readline/history.h"
#endif #endif
int TxPrefix(void); int TxPrefix(void);