4 AC_DEFUN([CHECK_COMPILE_ET], [
6 AC_CHECK_PROG(COMPILE_ET, compile_et, [compile_et])
9 krb_cv_com_err_need_r=""
10 krb_cv_compile_et_cross=no
11 if test "${COMPILE_ET}" = "compile_et"; then
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'
19 error_code CODE1, "CODE1"
21 error_code CODE2, "CODE2"
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}"
30 dnl Check that the `prefix' and `index' directives were honored.
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
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] )
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
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>]],[[
69 initialize_error_table_r(0,0,0,0);
70 ]])],[krb_cv_com_err="yes"],[krb_cv_com_err="no"; CPPFLAGS="${save_CPPFLAGS}"])
71 AC_MSG_RESULT(${krb_cv_com_err})
72 LIBS="${krb_cv_save_LIBS}"
74 dnl Since compile_et doesn't work, forget about libcom_err
78 dnl Only use the system's com_err if we found compile_et, libcom_err, and
80 if test "${krb_cv_com_err}" = "yes"; then
82 LIB_com_err="-lcom_err"
85 AC_MSG_NOTICE(Using the already-installed com_err)
87 elif test "${krb_cv_com_err}" = "cross"; then
89 LIB_com_err="\$(top_builddir)/lib/com_err/libcom_err.la"
90 LIB_com_err_a="\$(top_builddir)/lib/com_err/.libs/libcom_err.a"
91 LIB_com_err_so="\$(top_builddir)/lib/com_err/.libs/libcom_err.so"
92 AC_MSG_NOTICE(Using our own com_err with toolchain compile_et)
95 COMPILE_ET="\$(top_builddir)/lib/com_err/compile_et"
97 LIB_com_err="\$(top_builddir)/lib/com_err/libcom_err.la"
98 LIB_com_err_a="\$(top_builddir)/lib/com_err/.libs/libcom_err.a"
99 LIB_com_err_so="\$(top_builddir)/lib/com_err/.libs/libcom_err.so"
100 AC_MSG_NOTICE(Using our own com_err)
103 AM_CONDITIONAL(COM_ERR, test "$localcomerr" = yes)dnl
104 AC_SUBST(DIR_com_err)
105 AC_SUBST(LIB_com_err)
106 AC_SUBST(LIB_com_err_a)
107 AC_SUBST(LIB_com_err_so)