1 dnl ===========================================================================
2 dnl Additional macros used to configure GiNaC. We don't start our own
3 dnl additions' names with AC_ but with GINAC_ in order to steer clear of
5 dnl ===========================================================================
7 dnl Usage: GINAC_RLVERSION
8 dnl The maintainers of libreadline are complete morons: they don't care a shit
9 dnl about compatiblilty (which is not so bad by itself) and at the same time
10 dnl they don't export the version to the preprocessor so we could kluge around
11 dnl incomatiblities. The only reliable way to figure out the version is by
12 dnl checking the extern variable rl_library_version at runtime. &#@$%*!
13 AC_DEFUN([GINAC_LIB_READLINE_VERSION],
14 [AC_CACHE_CHECK([for version of libreadline], ginac_cv_rlversion, [
17 #include <sys/types.h>
18 #include <readline/readline.h>
23 fd = fopen("conftest.out", "w");
24 fprintf(fd, "%s\n", rl_library_version);
27 }], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')])
28 if test "x${ginac_cv_rlversion}" != "xunknown"; then
29 RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
30 AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.])
31 RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
32 AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MINOR, $RL_VERSION_MINOR, [Minor version of installed readline library.])
34 GINAC_WARNING([I could not run a test of libreadline (needed for building ginsh).])
38 dnl Usage: GINAC_TERMCAP
39 dnl libreadline is based on the termcap functions.
40 dnl Some systems have tgetent(), tgetnum(), tgetstr(), tgetflag(), tputs(),
41 dnl tgoto() in libc, some have it in libtermcap, some have it in libncurses.
42 dnl When both libtermcap and libncurses exist, we prefer the latter, because
43 dnl libtermcap is being phased out.
44 AC_DEFUN([GINAC_TERMCAP],
48 ;; dnl no termcap libraries are necessary (need hacked libreadline)
50 AC_CHECK_FUNCS(tgetent)
51 if test "x$ac_cv_func_tgetent" = "xyes"; then
54 AC_CHECK_LIB(ncurses, tgetent, LIBTERMCAP="-lncurses")
55 if test -z "$LIBTERMCAP"; then
56 AC_CHECK_LIB(termcap, tgetent, LIBTERMCAP="-ltermcap")
64 dnl Usage: GINAC_ERROR(message)
65 dnl This macro displays the warning "message" and sets the flag ginac_error
67 AC_DEFUN([GINAC_ERROR],[
68 ginac_error_txt="$ginac_error_txt
73 dnl Usage: GINAC_WARNING(message)
74 dnl This macro displays the warning "message" and sets the flag ginac_warning
76 AC_DEFUN([GINAC_WARNING],[
77 ginac_warning_txt="$ginac_warning_txt
82 dnl Usage: GINAC_CHECK_ERRORS
83 dnl (must be put at end of configure.in, because it exits on error)
84 dnl This macro displays a warning message if GINAC_ERROR or GINAC_WARNING
85 dnl has occured previously.
86 AC_DEFUN([GINAC_CHECK_ERRORS],[
87 if test "x${ginac_error}" = "xyes"; then
88 echo "**** The following problems have been detected by configure."
89 echo "**** Please check the messages below before running \"make\"."
90 echo "**** (see the section 'Common Problems' in the INSTALL file)"
91 echo "$ginac_error_txt"
92 if test "x${ginac_warning_txt}" != "x"; then
93 echo "${ginac_warning_txt}"
95 if test "x$cache_file" != "x/dev/null"; then
96 echo "deleting cache ${cache_file}"
101 if test "x${ginac_warning}" = "xyes"; then
102 echo "=== The following minor problems have been detected by configure."
103 echo "=== Please check the messages below before running \"make\"."
104 echo "=== (see the section 'Common Problems' in the INSTALL file)"
105 echo "$ginac_warning_txt"
107 echo "Configuration of GiNaC $VERSION done. Now type \"make\"."
110 AC_DEFUN([GINAC_HAVE_RUSAGE],
111 [AC_CACHE_CHECK([whether struct rusage is declared in <sys/resource.h>],
113 [AC_TRY_COMPILE([#include <sys/times.h>
114 #include <sys/resource.h>],
115 [struct rusage resUsage;
116 getrusage(RUSAGE_SELF, &resUsage);
118 [ac_cv_have_rusage=yes],
119 [ac_cv_have_rusage=no])
122 if test "$ac_cv_have_rusage" = yes; then
124 AC_DEFINE(HAVE_RUSAGE,,[define if struct rusage declared in <sys/resource.h>])
126 AC_SUBST(CONFIG_RUSAGE)