|
Packit |
8f70b4 |
# SYNOPSIS
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# lftp_LIB_READLINE([MINIMUM-VERSION])
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# DESCRIPTION
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# This macro provides tests of availability of Readline of
|
|
Packit |
8f70b4 |
# particular version or newer. This macro checks for Readline
|
|
Packit |
8f70b4 |
# headers and libraries and defines compilation flags
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# Macro supports following options and their values:
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# 1) Single-option usage:
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# --with-readline -- yes, no, or path to Readline
|
|
Packit |
8f70b4 |
# installation prefix
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# 2) Three-options usage (all options are required):
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# --with-readline=yes
|
|
Packit |
8f70b4 |
# --with-readline-inc -- path to base directory with Readline headers
|
|
Packit |
8f70b4 |
# --with-readline-lib -- linker flags for Readline
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# This macro calls:
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# AC_SUBST(READLINE_CFLAGS)
|
|
Packit |
8f70b4 |
# AC_SUBST(READLINE_LIBS)
|
|
Packit |
8f70b4 |
# AC_SUBST(READLINE_LDFLAGS)
|
|
Packit |
8f70b4 |
# AC_SUBST(READLINE_VERSION) -- only if version requirement is used
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# And sets:
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# HAVE_READLINE
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# LICENSE
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net>
|
|
Packit |
8f70b4 |
# Copyright (c) 2015 Alexander V. Lukyanov <lavv17f@gmail.com>
|
|
Packit |
8f70b4 |
#
|
|
Packit |
8f70b4 |
# Copying and distribution of this file, with or without modification, are
|
|
Packit |
8f70b4 |
# permitted in any medium without royalty provided the copyright notice
|
|
Packit |
8f70b4 |
# and this notice are preserved. This file is offered as-is, without any
|
|
Packit |
8f70b4 |
# warranty.
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_DEFUN([lftp_LIB_READLINE],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
AC_ARG_WITH([readline],
|
|
Packit |
8f70b4 |
AS_HELP_STRING([--with-readline=@<:@ARG@:>@],
|
|
Packit |
8f70b4 |
[use Readline from given prefix (ARG=path); check standard prefixes (ARG=yes); disable (ARG=no)]
|
|
Packit |
8f70b4 |
),
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
if test "$withval" = "yes"; then
|
|
Packit |
8f70b4 |
if test -f /usr/local/include/readline.h -o -f /usr/local/include/readline/readline.h; then
|
|
Packit |
8f70b4 |
readline_prefix=/usr/local
|
|
Packit |
8f70b4 |
elif test -f /usr/include/readline.h -o -f /usr/include/readline/readline.h; then
|
|
Packit |
8f70b4 |
readline_prefix=/usr
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
readline_prefix=""
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
readline_requested="yes"
|
|
Packit |
8f70b4 |
elif test -d "$withval"; then
|
|
Packit |
8f70b4 |
readline_prefix="$withval"
|
|
Packit |
8f70b4 |
readline_requested="yes"
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
readline_prefix=""
|
|
Packit |
8f70b4 |
readline_requested="no"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
dnl Default behavior is implicit yes
|
|
Packit |
8f70b4 |
if test -f /usr/local/include/readline.h -o -f /usr/local/include/readline/readline.h; then
|
|
Packit |
8f70b4 |
readline_prefix=/usr/local
|
|
Packit |
8f70b4 |
elif test -f /usr/include/readline.h -o -f /usr/include/readline/readline.h; then
|
|
Packit |
8f70b4 |
readline_prefix=/usr
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
readline_prefix=""
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
]
|
|
Packit |
8f70b4 |
)
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_ARG_WITH([readline-inc],
|
|
Packit |
8f70b4 |
AS_HELP_STRING([--with-readline-inc=@<:@DIR@:>@],
|
|
Packit |
8f70b4 |
[path to Readline headers]
|
|
Packit |
8f70b4 |
),
|
|
Packit |
8f70b4 |
[readline_include_dir="$withval"],
|
|
Packit |
8f70b4 |
[readline_include_dir=""]
|
|
Packit |
8f70b4 |
)
|
|
Packit |
8f70b4 |
AC_ARG_WITH([readline-lib],
|
|
Packit |
8f70b4 |
AS_HELP_STRING([--with-readline-lib=@<:@ARG@:>@],
|
|
Packit |
8f70b4 |
[link options for Readline libraries]
|
|
Packit |
8f70b4 |
),
|
|
Packit |
8f70b4 |
[readline_lib_flags="$withval"],
|
|
Packit |
8f70b4 |
[readline_lib_flags=""]
|
|
Packit |
8f70b4 |
)
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
READLINE_CFLAGS=""
|
|
Packit |
8f70b4 |
READLINE_LIBS=""
|
|
Packit |
8f70b4 |
READLINE_VERSION=""
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
dnl Collect include/lib paths and flags
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
run_readline_test="no"
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
if test -n "$readline_prefix"; then
|
|
Packit |
8f70b4 |
readline_include_dir="$readline_prefix/include"
|
|
Packit |
8f70b4 |
if test -f "$readline_include_dir/readline/readline.h"; then
|
|
Packit |
8f70b4 |
readline_include_dir="$readline_include_dir/readline"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
readline_ld_flags="-L$readline_prefix/lib"
|
|
Packit |
8f70b4 |
readline_lib_flags="-lreadline"
|
|
Packit |
8f70b4 |
run_readline_test="yes"
|
|
Packit |
8f70b4 |
elif test "$readline_requested" = "yes"; then
|
|
Packit |
8f70b4 |
if test -n "$readline_include_dir" -a -n "$readline_lib_flags"; then
|
|
Packit |
8f70b4 |
if test -f "$readline_include_dir/readline/readline.h"; then
|
|
Packit |
8f70b4 |
readline_include_dir="$readline_include_dir/readline"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
run_readline_test="yes"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
run_readline_test="no"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
dnl Check Readline files
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
if test "$run_readline_test" = "yes"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
saved_CPPFLAGS="$CPPFLAGS"
|
|
Packit |
8f70b4 |
CPPFLAGS="$CPPFLAGS -I$readline_include_dir"
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
saved_LIBS="$LIBS"
|
|
Packit |
8f70b4 |
LIBS="$LIBS $readline_lib_flags"
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
saved_LDFLAGS="$LDFLAGS"
|
|
Packit |
8f70b4 |
LDFLAGS="$LDFLAGS $readline_ld_flags"
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
dnl Check Readline headers
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
AC_MSG_CHECKING([for Readline headers in $readline_include_dir])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_LANG_PUSH([C++])
|
|
Packit |
8f70b4 |
AC_COMPILE_IFELSE([
|
|
Packit |
8f70b4 |
AC_LANG_PROGRAM(
|
|
Packit |
8f70b4 |
[[
|
|
Packit |
8f70b4 |
@%:@include <stdio.h>
|
|
Packit |
8f70b4 |
@%:@include <readline.h>
|
|
Packit |
8f70b4 |
]],
|
|
Packit |
8f70b4 |
[[]]
|
|
Packit |
8f70b4 |
)],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
READLINE_CFLAGS="-I$readline_include_dir"
|
|
Packit |
8f70b4 |
readline_header_found="yes"
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([found])
|
|
Packit |
8f70b4 |
],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
readline_header_found="no"
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([not found])
|
|
Packit |
8f70b4 |
]
|
|
Packit |
8f70b4 |
)
|
|
Packit |
8f70b4 |
AC_LANG_POP([C++])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
dnl Check Readline libraries
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
if test "$readline_header_found" = "yes"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_MSG_CHECKING([for Readline libraries])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_LANG_PUSH([C++])
|
|
Packit |
8f70b4 |
AC_LINK_IFELSE([
|
|
Packit |
8f70b4 |
AC_LANG_PROGRAM(
|
|
Packit |
8f70b4 |
[[
|
|
Packit |
8f70b4 |
@%:@include <stdio.h>
|
|
Packit |
8f70b4 |
@%:@include <readline.h>
|
|
Packit |
8f70b4 |
]],
|
|
Packit |
8f70b4 |
[[
|
|
Packit |
8f70b4 |
rl_getc_function=0;
|
|
Packit |
8f70b4 |
rl_completion_matches(0,0);
|
|
Packit |
8f70b4 |
]]
|
|
Packit |
8f70b4 |
)],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
READLINE_LIBS="$readline_lib_flags"
|
|
Packit |
8f70b4 |
READLINE_LDFLAGS="$readline_ld_flags"
|
|
Packit |
8f70b4 |
test "$enable_rpath" = yes -a "$readline_prefix" != /usr && \
|
|
Packit |
8f70b4 |
READLINE_LDFLAGS="$READLINE_LDFLAGS -R$readline_prefix/lib"
|
|
Packit |
8f70b4 |
readline_lib_found="yes"
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([found])
|
|
Packit |
8f70b4 |
],
|
|
Packit |
8f70b4 |
[
|
|
Packit |
8f70b4 |
readline_lib_found="no"
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([not found])
|
|
Packit |
8f70b4 |
]
|
|
Packit |
8f70b4 |
)
|
|
Packit |
8f70b4 |
AC_LANG_POP([C++])
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
CPPFLAGS="$saved_CPPFLAGS"
|
|
Packit |
8f70b4 |
LDFLAGS="$saved_LDFLAGS"
|
|
Packit |
8f70b4 |
LIBS="$saved_LIBS"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_MSG_CHECKING([for Readline])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
if test "$run_readline_test" = "yes"; then
|
|
Packit |
8f70b4 |
if test "$readline_header_found" = "yes" -a "$readline_lib_found" = "yes"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_SUBST([READLINE_CFLAGS])
|
|
Packit |
8f70b4 |
AC_SUBST([READLINE_LDFLAGS])
|
|
Packit |
8f70b4 |
AC_SUBST([READLINE_LIBS])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
HAVE_READLINE="yes"
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
HAVE_READLINE="no"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([$HAVE_READLINE])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
dnl Check Readline version
|
|
Packit |
8f70b4 |
dnl
|
|
Packit |
8f70b4 |
if test "$HAVE_READLINE" = "yes"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_version_req=ifelse([$1], [], [], [$1])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
if test -n "$readline_version_req"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
AC_MSG_CHECKING([if Readline version is >= $readline_version_req])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
if test -f "$readline_include_dir/readline.h"; then
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_major=`cat $readline_include_dir/readline.h | \
|
|
Packit |
8f70b4 |
grep '^#define.*RL_VERSION_MAJOR.*[0-9]$' | \
|
|
Packit |
8f70b4 |
sed -e 's/#define RL_VERSION_MAJOR.//'`
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_minor=`cat $readline_include_dir/readline.h | \
|
|
Packit |
8f70b4 |
grep '^#define.*RL_VERSION_MINOR.*[0-9]$' | \
|
|
Packit |
8f70b4 |
sed -e 's/#define RL_VERSION_MINOR.//'`
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_revision=0
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
READLINE_VERSION="$readline_major.$readline_minor"
|
|
Packit |
8f70b4 |
AC_SUBST([READLINE_VERSION])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl Decompose required version string and calculate numerical representation
|
|
Packit |
8f70b4 |
readline_version_req_major=`expr $readline_version_req : '\([[0-9]]*\)'`
|
|
Packit |
8f70b4 |
readline_version_req_minor=`expr $readline_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
|
Packit |
8f70b4 |
readline_version_req_revision=`expr $readline_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
|
Packit |
8f70b4 |
if test "x$readline_version_req_revision" = "x"; then
|
|
Packit |
8f70b4 |
readline_version_req_revision="0"
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_version_req_number=`expr $readline_version_req_major \* 10000 \
|
|
Packit |
8f70b4 |
\+ $readline_version_req_minor \* 100 \
|
|
Packit |
8f70b4 |
\+ $readline_version_req_revision`
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
dnl Calculate numerical representation of detected version
|
|
Packit |
8f70b4 |
readline_version_number=`expr $readline_major \* 10000 \
|
|
Packit |
8f70b4 |
\+ $readline_minor \* 100 \
|
|
Packit |
8f70b4 |
\+ $readline_revision`
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
readline_version_check=`expr $readline_version_number \>\= $readline_version_req_number`
|
|
Packit |
8f70b4 |
if test "$readline_version_check" = "1"; then
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([yes])
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([no])
|
|
Packit |
8f70b4 |
AC_MSG_WARN([Found Readline $READLINE_VERSION, which is older than required. Possible compilation failure.])
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([no])
|
|
Packit |
8f70b4 |
AC_MSG_WARN([Missing readline.h header. Unable to determine Readline version.])
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
else
|
|
Packit |
8f70b4 |
HAVE_READLINE="no"
|
|
Packit |
8f70b4 |
AC_MSG_RESULT([$HAVE_READLINE])
|
|
Packit |
8f70b4 |
|
|
Packit |
8f70b4 |
if test "$readline_requested" = "yes"; then
|
|
Packit |
8f70b4 |
AC_MSG_WARN([Readline support requested but headers or library not found. Specify valid prefix of Readline using --with-readline=@<:@DIR@:>@ or provide include directory and linker flags using --with-readline-inc and --with-readline-lib])
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
fi
|
|
Packit |
8f70b4 |
])
|