dnl future trouble.
dnl ===========================================================================
-dnl Generally, it is a bad idea to put specialized header files for a library
-dnl into a generic directory like /usr/local/include/. Instead, one should put
-dnl them into a subdirectory. GiNaC does it, NTL does it. Unfortunately, CLN
-dnl doesn't do so but some people choose to do it by hand. In these cases we
-dnl need to #include <cln/cln.h>, otherwise #include <cln.h>. This macro
-dnl tries to be clever and find out the correct way by defining the variable
-dnl HAVE_CLN_CLN_H in config.h:
-AC_DEFUN(GINAC_CHECK_CLN_H,
- [AC_PROVIDE([$0])
- AC_CHECK_HEADERS(cln/cln.h, ,
- AC_CHECK_HEADERS(cln.h, ,
- AC_MSG_ERROR([cannot find header for Bruno Haible's CLN]);
- )
- )
+dnl Usage: GINAC_RLVERSION
+dnl The maintainers of libreadline are complete morons: they don't care a shit
+dnl about compatiblilty (which is not so bad by itself) and at the same time
+dnl they don't export the version to the preprocessor so we could kluge around
+dnl incomatiblities. The only reliable way to figure out the version is by
+dnl checking the extern variable rl_library_version at runtime. &#@$%*!
+AC_DEFUN(GINAC_LIB_READLINE_VERSION,
+[AC_CACHE_CHECK([for version of libreadline], ginac_cv_rlversion, [
+AC_TRY_RUN([
+#include <stdio.h>
+#include <sys/types.h>
+#include <readline/readline.h>
+
+main()
+{
+ FILE *fd;
+ fd = fopen("conftest.out", "w");
+ fprintf(fd, "%s\n", rl_library_version);
+ fclose(fd);
+ return 0;
+}], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')])
+if test "x${ginac_cv_rlversion}" != "xunknown"; then
+ RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+ AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.])
+ RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+ AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MINOR, $RL_VERSION_MINOR, [Minor version of installed readline library.])
+else
+ GINAC_WARNING([I could not run a test of libreadline (needed for building ginsh).])
+fi
])
-dnl This macro is needed because the generic AC_CHECK_LIB doesn't work because
-dnl C++ is more strongly typed than C. Therefore we need to work with the
-dnl more fundamental AC_TRY_LINK instead.
-AC_DEFUN(GINAC_CHECK_LIBCLN,
- [AC_PROVIDE([$0])
- AC_MSG_CHECKING([for doublefactorial in -lcln])
- saved_LIBS="${LIBS}"
- AC_CACHE_VAL(ginac_cv_lib_cln_link,
- [LIBS="-lcln"
- case "${ac_cv_header_cln_cln_h}" in
- "yes")
- AC_TRY_LINK([#include <cln/cln.h>],
- [doublefactorial(2);],
- ginac_cv_lib_cln_link="-lcln",
- ginac_cv_lib_cln_link="fail")
- ;;
- *)
- AC_TRY_LINK([#include <cln.h>],
- [doublefactorial(2);],
- ginac_cv_lib_cln_link="-lcln",
- ginac_cv_lib_cln_link="fail")
- ;;
- esac
- ])
- case "${ginac_cv_lib_cln_link}" in
-dnl linking worked:
- "-lcln")
- LIBS="${ginac_cv_lib_cln_link} ${saved_LIBS}"
- AC_MSG_RESULT("yes")
- ;;
-dnl linking failed:
- "fail")
- LIBS="${saved_LIBS}"
- AC_MSG_RESULT([no])
- GINAC_ERROR([I could not successfully link a test-program against libcln and run it.
- You either need to set \$LDFLAGS or install/update the CLN library.])
- ;;
- esac
+dnl Usage: GINAC_TERMCAP
+dnl libreadline is based on the termcap functions.
+dnl Some systems have tgetent(), tgetnum(), tgetstr(), tgetflag(), tputs(),
+dnl tgoto() in libc, some have it in libtermcap, some have it in libncurses.
+dnl When both libtermcap and libncurses exist, we prefer the latter, because
+dnl libtermcap is being phased out.
+AC_DEFUN(GINAC_TERMCAP,
+[LIBTERMCAP=
+AC_CHECK_FUNCS(tgetent)
+if test "x$ac_cv_func_tgetent" = "xyes"; then
+ :
+else
+ AC_CHECK_LIB(ncurses, tgetent, LIBTERMCAP="-lncurses")
+ if test -z "$LIBTERMCAP"; then
+ AC_CHECK_LIB(termcap, tgetent, LIBTERMCAP="-ltermcap")
+ fi
+fi
+AC_SUBST(LIBTERMCAP)
])
dnl Usage: GINAC_ERROR(message)
dnl has occured previously.
AC_DEFUN(GINAC_CHECK_ERRORS,[
if test "x${ginac_error}" = "xyes"; then
- echo "**** The following problems have been detected by configure."
- echo "**** Please check the messages below before running \"make\"."
- echo "**** (see the section 'Common Problems' in the INSTALL file)"
- echo "$ginac_error_txt"
- if test "x${ginac_warning_txt}" != "x"; then
- echo "${ginac_warning_txt}"
- fi
- echo "deleting cache ${cache_file}"
- rm -f $cache_file
- else
- if test x$ginac_warning = xyes; then
- echo "=== The following minor problems have been detected by configure."
- echo "=== Please check the messages below before running \"make\"."
- echo "=== (see the section 'Common Problems' in the INSTALL file)"
- echo "$ginac_warning_txt"
+ echo "**** The following problems have been detected by configure."
+ echo "**** Please check the messages below before running \"make\"."
+ echo "**** (see the section 'Common Problems' in the INSTALL file)"
+ echo "$ginac_error_txt"
+ if test "x${ginac_warning_txt}" != "x"; then
+ echo "${ginac_warning_txt}"
+ fi
+ if test "x$cache_file" != "x/dev/null"; then
+ echo "deleting cache ${cache_file}"
+ rm -f $cache_file
fi
- echo "Configuration of GiNaC $VERSION done. Now type \"make\"."
+ else
+ if test x$ginac_warning = xyes; then
+ echo "=== The following minor problems have been detected by configure."
+ echo "=== Please check the messages below before running \"make\"."
+ echo "=== (see the section 'Common Problems' in the INSTALL file)"
+ echo "$ginac_warning_txt"
+ fi
+ echo "Configuration of GiNaC $VERSION done. Now type \"make\"."
fi])