0433f778edf2ceebb234780cabda5c0c12b7e0cf
[ginac.git] / acinclude.m4
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
4 dnl future trouble.
5 dnl ===========================================================================
6
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, [
15 AC_TRY_RUN([
16 #include <stdio.h>
17 #include <stdlib.h>
18 #include <sys/types.h>
19 #include <readline/readline.h>
20
21 main()
22 {
23     FILE *fd;
24     fd = fopen("conftest.out", "w");
25     fprintf(fd, "%s\n", rl_library_version);
26     fclose(fd);
27     exit(0);
28 }], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')
29 if test "x${ginac_cv_rlversion}" != "xunknown"; then
30   RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\1/'`
31   AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.])
32   RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\2/'`
33   AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MINOR, $RL_VERSION_MINOR, [Minor version of installed readline library.])
34 else
35   GINAC_WARNING([I could not run a test of libreadline (needed for building ginsh ginsh).])
36 fi
37 ])])
38
39 dnl Usage: GINAC_TERMCAP
40 dnl libreadline is based on the termcap functions.
41 dnl Some systems have tgetent(), tgetnum(), tgetstr(), tgetflag(), tputs(),
42 dnl tgoto() in libc, some have it in libtermcap, some have it in libncurses.
43 dnl When both libtermcap and libncurses exist, we prefer the latter, because
44 dnl libtermcap is being phased out.
45 AC_DEFUN(GINAC_TERMCAP,
46 [LIBTERMCAP=
47 AC_CHECK_FUNCS(tgetent)
48 if test "x$ac_cv_func_tgetent" = "xyes"; then
49     :
50 else
51     AC_CHECK_LIB(ncurses, tgetent, LIBTERMCAP="-lncurses")
52     if test -z "$LIBTERMCAP"; then
53         AC_CHECK_LIB(termcap, tgetent, LIBTERMCAP="-ltermcap")
54     fi
55 fi
56 AC_SUBST(LIBTERMCAP)
57 ])
58
59 dnl Usage: GINAC_ERROR(message)
60 dnl This macro displays the warning "message" and sets the flag ginac_error
61 dnl to yes.
62 AC_DEFUN(GINAC_ERROR,[
63 ginac_error_txt="$ginac_error_txt
64 ** $1
65 "
66 ginac_error=yes])
67
68 dnl Usage: GINAC_WARNING(message)
69 dnl This macro displays the warning "message" and sets the flag ginac_warning
70 dnl to yes.
71 AC_DEFUN(GINAC_WARNING,[
72 ginac_warning_txt="$ginac_warning_txt
73 == $1
74 "
75 ginac_warning=yes])
76
77 dnl Usage: GINAC_CHECK_ERRORS
78 dnl (preferably to be put at end of configure.in)
79 dnl This macro displays a warning message if GINAC_ERROR or GINAC_WARNING 
80 dnl has occured previously.
81 AC_DEFUN(GINAC_CHECK_ERRORS,[
82 if test "x${ginac_error}" = "xyes"; then
83     echo "**** The following problems have been detected by configure."
84     echo "**** Please check the messages below before running \"make\"."
85     echo "**** (see the section 'Common Problems' in the INSTALL file)"
86     echo "$ginac_error_txt"
87     if test "x${ginac_warning_txt}" != "x"; then
88         echo "${ginac_warning_txt}"
89     fi
90     echo "deleting cache ${cache_file}"
91     rm -f $cache_file
92     else 
93         if test x$ginac_warning = xyes; then
94             echo "=== The following minor problems have been detected by configure."
95             echo "=== Please check the messages below before running \"make\"."
96             echo "=== (see the section 'Common Problems' in the INSTALL file)"
97             echo "$ginac_warning_txt"
98         fi
99     echo "Configuration of GiNaC $VERSION done. Now type \"make\"."
100 fi])