1 | dnl $Id$
|
---|
2 | dnl
|
---|
3 | dnl CHECK_COMPILE_ET
|
---|
4 | AC_DEFUN([CHECK_COMPILE_ET], [
|
---|
5 |
|
---|
6 | AC_CHECK_PROG(COMPILE_ET, compile_et, [compile_et])
|
---|
7 |
|
---|
8 | krb_cv_compile_et="no"
|
---|
9 | krb_cv_com_err_need_r=""
|
---|
10 | krb_cv_compile_et_cross=no
|
---|
11 | if test "${COMPILE_ET}" = "compile_et"; then
|
---|
12 |
|
---|
13 | dnl We have compile_et. Now let's see if it supports `prefix' and `index'.
|
---|
14 | AC_MSG_CHECKING(whether compile_et has the features we need)
|
---|
15 | cat > conftest_et.et <<'EOF'
|
---|
16 | error_table test conf
|
---|
17 | prefix CONFTEST
|
---|
18 | index 1
|
---|
19 | error_code CODE1, "CODE1"
|
---|
20 | index 128
|
---|
21 | error_code CODE2, "CODE2"
|
---|
22 | end
|
---|
23 | EOF
|
---|
24 | if ${COMPILE_ET} conftest_et.et >/dev/null 2>&1; then
|
---|
25 | dnl XXX Some systems have <et/com_err.h>.
|
---|
26 | save_CPPFLAGS="${CPPFLAGS}"
|
---|
27 | if test -d "/usr/include/et"; then
|
---|
28 | CPPFLAGS="-I/usr/include/et ${CPPFLAGS}"
|
---|
29 | fi
|
---|
30 | dnl Check that the `prefix' and `index' directives were honored.
|
---|
31 | AC_RUN_IFELSE([
|
---|
32 | #include <com_err.h>
|
---|
33 | #include <string.h>
|
---|
34 | #include "conftest_et.h"
|
---|
35 | int main(int argc, char **argv){
|
---|
36 | #ifndef ERROR_TABLE_BASE_conf
|
---|
37 | #error compile_et does not handle error_table N M
|
---|
38 | #endif
|
---|
39 | return (CONFTEST_CODE2 - CONFTEST_CODE1) != 127;}
|
---|
40 | ], [krb_cv_compile_et="yes"],[CPPFLAGS="${save_CPPFLAGS}"],
|
---|
41 | [krb_cv_compile_et="yes" krb_cv_compile_et_cross=yes] )
|
---|
42 | fi
|
---|
43 | AC_MSG_RESULT(${krb_cv_compile_et})
|
---|
44 | if test "${krb_cv_compile_et}" = "yes" -a "${krb_cv_compile_et_cross}" = no; then
|
---|
45 | AC_MSG_CHECKING([for if com_err generates a initialize_conf_error_table_r])
|
---|
46 | AC_EGREP_CPP([initialize_conf_error_table_r.*struct et_list],
|
---|
47 | [#include "conftest_et.h"],
|
---|
48 | [krb_cv_com_err_need_r="ok"])
|
---|
49 | if test X"$krb_cv_com_err_need_r" = X ; then
|
---|
50 | AC_MSG_RESULT(no)
|
---|
51 | krb_cv_compile_et=no
|
---|
52 | else
|
---|
53 | AC_MSG_RESULT(yes)
|
---|
54 | fi
|
---|
55 | fi
|
---|
56 | rm -fr conftest*
|
---|
57 | fi
|
---|
58 |
|
---|
59 | if test "${krb_cv_compile_et_cross}" = yes ; then
|
---|
60 | krb_cv_com_err="cross"
|
---|
61 | elif test "${krb_cv_compile_et}" = "yes"; then
|
---|
62 | dnl Since compile_et seems to work, let's check libcom_err
|
---|
63 | krb_cv_save_LIBS="${LIBS}"
|
---|
64 | LIBS="${LIBS} -lcom_err"
|
---|
65 | AC_MSG_CHECKING(for com_err)
|
---|
66 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <com_err.h>]],[[
|
---|
67 | const char *p;
|
---|
68 | p = error_message(0);
|
---|
69 | initialize_error_table_r(0,0,0,0);
|
---|
70 | com_right_r(0, 0, 0, 0);
|
---|
71 | ]])],[krb_cv_com_err="yes"],[krb_cv_com_err="no"; CPPFLAGS="${save_CPPFLAGS}"])
|
---|
72 | AC_MSG_RESULT(${krb_cv_com_err})
|
---|
73 | LIBS="${krb_cv_save_LIBS}"
|
---|
74 | else
|
---|
75 | dnl Since compile_et doesn't work, forget about libcom_err
|
---|
76 | krb_cv_com_err="no"
|
---|
77 | fi
|
---|
78 |
|
---|
79 | dnl Only use the system's com_err if we found compile_et, libcom_err, and
|
---|
80 | dnl com_err.h.
|
---|
81 | if test "${krb_cv_com_err}" = "yes"; then
|
---|
82 | DIR_com_err=""
|
---|
83 | LIB_com_err="-lcom_err"
|
---|
84 | LIB_com_err_a=""
|
---|
85 | LIB_com_err_so=""
|
---|
86 | AC_MSG_NOTICE(Using the already-installed com_err)
|
---|
87 | COMPILE_ET="${ac_cv_prog_COMPILE_ET}"
|
---|
88 | localcomerr=no
|
---|
89 | elif test "${krb_cv_com_err}" = "cross"; then
|
---|
90 | DIR_com_err="com_err"
|
---|
91 | LIB_com_err="\$(top_builddir)/lib/com_err/libcom_err.la"
|
---|
92 | LIB_com_err_a="\$(top_builddir)/lib/com_err/.libs/libcom_err.a"
|
---|
93 | LIB_com_err_so="\$(top_builddir)/lib/com_err/.libs/libcom_err.so"
|
---|
94 | AC_MSG_NOTICE(Using our own com_err with toolchain compile_et)
|
---|
95 | COMPILE_ET="${ac_cv_prog_COMPILE_ET}"
|
---|
96 | localcomerr=yes
|
---|
97 | else
|
---|
98 | COMPILE_ET="\$(top_builddir)/lib/com_err/compile_et"
|
---|
99 | DIR_com_err="com_err"
|
---|
100 | LIB_com_err="\$(top_builddir)/lib/com_err/libcom_err.la"
|
---|
101 | LIB_com_err_a="\$(top_builddir)/lib/com_err/.libs/libcom_err.a"
|
---|
102 | LIB_com_err_so="\$(top_builddir)/lib/com_err/.libs/libcom_err.so"
|
---|
103 | AC_MSG_NOTICE(Using our own com_err)
|
---|
104 | localcomerr=yes
|
---|
105 | fi
|
---|
106 | AM_CONDITIONAL(COM_ERR, test "$localcomerr" = yes)dnl
|
---|
107 | AC_SUBST(COMPILE_ET)
|
---|
108 | AC_SUBST(DIR_com_err)
|
---|
109 | AC_SUBST(LIB_com_err)
|
---|
110 | AC_SUBST(LIB_com_err_a)
|
---|
111 | AC_SUBST(LIB_com_err_so)
|
---|
112 |
|
---|
113 | ])
|
---|