]>
Commit | Line | Data |
---|---|---|
cc88a640 JK |
1 | dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB |
2 | dnl require: | |
3 | dnl AC_PROG_CC | |
4 | dnl BASH_CHECK_LIB_TERMCAP | |
5 | ||
6 | AC_DEFUN([RL_LIB_READLINE_VERSION], | |
7 | [ | |
8 | AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) | |
9 | ||
10 | AC_MSG_CHECKING([version of installed readline library]) | |
11 | ||
12 | # What a pain in the ass this is. | |
13 | ||
14 | # save cpp and ld options | |
15 | _save_CFLAGS="$CFLAGS" | |
16 | _save_LDFLAGS="$LDFLAGS" | |
17 | _save_LIBS="$LIBS" | |
18 | ||
19 | # Don't set ac_cv_rl_prefix if the caller has already assigned a value. This | |
20 | # allows the caller to do something like $_rl_prefix=$withval if the user | |
21 | # specifies --with-installed-readline=PREFIX as an argument to configure | |
22 | ||
23 | if test -z "$ac_cv_rl_prefix"; then | |
24 | test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} | |
25 | fi | |
26 | ||
27 | eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include | |
28 | eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib | |
29 | ||
30 | LIBS="$LIBS -lreadline ${TERMCAP_LIB}" | |
31 | CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" | |
32 | LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" | |
33 | ||
34 | AC_CACHE_VAL(ac_cv_rl_version, | |
35 | [AC_TRY_RUN([ | |
36 | #include <stdio.h> | |
37 | #include <readline/readline.h> | |
38 | ||
39 | extern int rl_gnu_readline_p; | |
40 | ||
41 | main() | |
42 | { | |
43 | FILE *fp; | |
44 | fp = fopen("conftest.rlv", "w"); | |
45 | if (fp == 0) | |
46 | exit(1); | |
47 | if (rl_gnu_readline_p != 1) | |
48 | fprintf(fp, "0.0\n"); | |
49 | else | |
50 | fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); | |
51 | fclose(fp); | |
52 | exit(0); | |
53 | } | |
54 | ], | |
55 | ac_cv_rl_version=`cat conftest.rlv`, | |
56 | ac_cv_rl_version='0.0', | |
57 | ac_cv_rl_version='4.2')]) | |
58 | ||
59 | CFLAGS="$_save_CFLAGS" | |
60 | LDFLAGS="$_save_LDFLAGS" | |
61 | LIBS="$_save_LIBS" | |
62 | ||
63 | RL_MAJOR=0 | |
64 | RL_MINOR=0 | |
65 | ||
66 | # ( | |
67 | case "$ac_cv_rl_version" in | |
68 | 2*|3*|4*|5*|6*|7*|8*|9*) | |
69 | RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` | |
70 | RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` | |
71 | ;; | |
72 | esac | |
73 | ||
74 | # ((( | |
75 | case $RL_MAJOR in | |
76 | [[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; | |
77 | [[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; | |
78 | *) _RL_MAJOR=00 ;; | |
79 | esac | |
80 | ||
81 | # ((( | |
82 | case $RL_MINOR in | |
83 | [[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; | |
84 | [[0-9]]) _RL_MINOR=0$RL_MINOR ;; | |
85 | *) _RL_MINOR=00 ;; | |
86 | esac | |
87 | ||
88 | RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" | |
89 | ||
90 | # Readline versions greater than 4.2 have these defines in readline.h | |
91 | ||
92 | if test $ac_cv_rl_version = '0.0' ; then | |
93 | AC_MSG_WARN([Could not test version of installed readline library.]) | |
94 | elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then | |
95 | # set these for use by the caller | |
96 | RL_PREFIX=$ac_cv_rl_prefix | |
97 | RL_LIBDIR=$ac_cv_rl_libdir | |
98 | RL_INCLUDEDIR=$ac_cv_rl_includedir | |
99 | AC_MSG_RESULT($ac_cv_rl_version) | |
100 | else | |
101 | ||
102 | AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) | |
103 | AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) | |
104 | AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) | |
105 | ||
106 | AC_SUBST(RL_VERSION) | |
107 | AC_SUBST(RL_MAJOR) | |
108 | AC_SUBST(RL_MINOR) | |
109 | ||
110 | # set these for use by the caller | |
111 | RL_PREFIX=$ac_cv_rl_prefix | |
112 | RL_LIBDIR=$ac_cv_rl_libdir | |
113 | RL_INCLUDEDIR=$ac_cv_rl_includedir | |
114 | ||
115 | AC_MSG_RESULT($ac_cv_rl_version) | |
116 | ||
117 | fi | |
118 | ]) |