That wasn't it, I am going to attatch the current aclocal.m4. the
$ac_save__LIBS does get set prior to my adding to it. I appreciate any
help I can get. You know I also had a hard time finding any tutorials
on using the acinclude.m4 stuff using google. I could find man pages
etc. but no real in depth resources on creating custom macros, do you
know of any good books on the subject as well?
acinclude.m4
dnl
dnl --with-pamdir
dnl Stolen from nectar.com
dnl
AC_DEFUN([PKRB5_CHECK_PAM],
[
AC_ARG_WITH(pamdir,
[[ --with-pamdir=dir Where to put pam module [LIBDIR/security]]],
[
case "$withval" in
yes|no)
#
# Just in case anybody calls it without argument
#
AC_MSG_ERROR([--with-pam-dir requires a valid argument])
;;
*)
PAMDIR="$withval"
AC_MSG_CHECKING(installing PAM modules in)
AC_MSG_RESULT(${PAMDIR})
;;
esac
],
[
for dir in /lib/security /usr/lib/security /usr/lib \
${prefix}/lib ${prefix}/lib/security
do
AC_MSG_CHECKING(if we can install PAM modules in ${dir})
if test -d ${dir}; then
AC_MSG_RESULT(yes)
PAMDIR=${dir}
break;
else
AC_MSG_RESULT(no)
fi
done
if test -z "${PAMDIR}"; then
AC_MSG_ERROR(couldn't figure it out: please use --with-pamdir)
fi
])
ac_cv_pam_headers_found=no
AC_CHECK_HEADERS(security/pam_appl.h
security/pam_modules.h,ac_cv_pam_headers_found=security)
AC_CHECK_HEADERS(pam/pam_appl.h
pam/pam_modules.h,ac_cv_pam_headers_found=pam)
if test "$ac_cv_pam_headers_found" = no; then
AC_MSG_ERROR(Can't find pam header files)
fi
AC_CHECK_LIB(pam,pam_authenticate,,[AC_MSG_ERROR(Can't find pam
library)])
dnl Do we use const void *, or just void *?
AC_MSG_CHECKING(whether PAM prototypes use const pointers)
AC_EGREP_HEADER([const void
\*\*item],${ac_cv_pam_headers_found}/pam_appl.h,
[ AC_DEFINE(HAVE_PAM_CONST_PROTO,1,
[Define if our PAM header files give us
decent prototypes.]
)
AC_MSG_RESULT(yes)
]
,AC_MSG_RESULT(no))
AC_SUBST(PAMDIR)
AC_ARG_WITH(pamimpl,
[[ --with-pamimpl=implementation
Which PAM implementation to use [linux|solaris]]],
[
case "$withval" in
linux)
ac_cv_pam_impl=linux
;;
solaris)
ac_cv_pam_impl=solaris
;;
*)
AC_MSG_ERROR(Unknown pam implementation: $withval)
;;
esac
ac_cv_pam_impl_forced=yes
],
[
dnl Check to see if this is Linux-PAM. If it doesn't, assume
that it
dnl is Solaris-like.
dnl Linux-PAM has the <security/pam_misc.h> header and a misc_conv
dnl conversation function.
ac_cv_pam_impl=solaris
AC_CHECK_HEADERS(security/pam_misc.h, ac_cv_pam_impl=linux)
AC_CHECK_HEADERS(pam/pam_misc.h, ac_cv_pam_impl=linux)
]
)
if test "${ac_cv_pam_impl}" == 'linux'; then
AC_DEFINE(PAM_LINUX_CODEBASE,1,[Define if we think we have the
Linux-PAM implementation.])
ac_cv_pam_impl_msg='Linux-PAM'
elif test "${ac_cv_pam_impl}" == 'solaris'; then
AC_DEFINE(PAM_SUN_CODEBASE,1,[Define if we think we have a
Solaris-like PAM implementation.])
ac_cv_pam_impl_msg='Solaris-like PAM'
else
AC_MSG_ERROR(Unknown pam implementation: ${ac_cv_pam_impl})
fi
AC_MSG_CHECKING(PAM implementation)
if test "$ac_cv_pam_impl_forced" == 'yes'; then
AC_MSG_RESULT(FORCED ${ac_cv_pam_impl_msg})
else
AC_MSG_RESULT(${ac_cv_pam_impl_msg})
fi
])dnl
dnl
dnl PKRB5_CONF_PARSER
dnl
AC_DEFUN([PKRB5_CONF_PARSER],
[
AC_ARG_ENABLE(confparser,
[[ --enable-confparser enable the krb5.conf parser [disable]
require flex and yacc/bison]],,
enable_confparser=no
)
if test "$enable_confparser" != yes; then
enable_confparser=no
OWN_CONF_PARSER=no
fi
if test "$enable_confparser" = yes; then
AC_PATH_PROG(FLEX,flex,no)
if test "$FLEX" = no; then
AC_MSG_ERROR(Can't find flex)
fi
AM_PROG_LEX
AC_PATH_PROG(YACC,yacc,no)
if test "$YACC" = no; then
AC_MSG_ERROR(Can't find yacc)
fi
AC_PROG_YACC
AC_DEFINE(OWN_CONF_PARSER,1,[Define if you need the own
krb5.conf parser.])
OWN_CONF_PARSER=yes
fi
AM_CONDITIONAL(OWN_CONF_PARSER, test "$enable_confparser" = yes)
krb5_appdefault=yes
AC_CHECK_FUNC(krb5_appdefault_string,
AC_DEFINE(HAVE_KRB5_APPDEFAULT_STRING,1,[Define if you
have krb5_appdefault_string.]),
krb5_appdefault=no)
AC_CHECK_FUNC(krb5_appdefault_boolean,
AC_DEFINE(HAVE_KRB5_APPDEFAULT_BOOLEAN,1,[Define if
you have krb5_appdefault_boolean.]),
krb5_appdefault=no)
if test "$krb5_appdefault" = no; then
AC_MSG_WARN(Can't find a krb5_appdefault function.)
if test "$enable_confparser" = no; then
AC_MSG_ERROR(Can't find a krb5_appdefault function in your
kerberos libraries
Maybe your libs are to old.
Plese run configure with --enable-confparser
option like:
./configure --enable-confparser
This require flex and yacc.)
fi
fi
])dnl
dnl
dnl PKRB5_PROG_KRB5CONFIG(PATH)
dnl
AC_DEFUN([PKRB5_PROG_KRB5CONFIG],
[
AC_PATH_PROG(krb5config, krb5-config,,[$1:$PATH:/usr/lib/mit/bin])dnl
if test "X$ac_cv_path_krb5config" != "X"; then
ac_cv_krb5_prefix=`$ac_cv_path_krb5config --prefix 2>/dev/null`
ac_cv_krb5_libs=`$ac_cv_path_krb5config --libs 2>/dev/null`
ac_cv_krb5_cflags=`$ac_cv_path_krb5config --cflags 2>/dev/null`
fi
])dnl
dnl PKRB5_PROG_KINIT(PATH)
AC_DEFUN([PKRB5_PROG_KINIT],
[
AC_PATH_PROG(kinit, kinit,,$1)
])dnl
AC_DEFUN([PKRB5_CHECK_KRBAFS], [
AC_ARG_WITH(krbafs,
[ --with-krbafs=dir use Kerberos 5-hacked krbafs package
under dir],
[if test x$withval != xyes ; then
KRBAFS=$withval
CPPFLAGS="-I$withval/include $CPPFLAGS"
CFLAGS="-I$withval/include $CFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
ac_cv_arg_with_krbafs="$withval"
])
if test "$ac_cv_arg_with_krbafs" = no -o "$ac_cv_build_with_krb4" !=
yes; then
AC_MSG_WARN([AFS token-grabbing disabled])
else
if test "$KRB5IMPL" = "mit" -a "$KRB4IMPL" = "mit"; then
AC_CHECK_HEADER(krbafs.h,
[AC_DEFINE(HAVE_KRBAFS_H,1,[Define if you
have krbafs.h])
AC_CHECK_LIB(krbafs,krb_afslog,
[AC_DEFINE(HAVE_LIB_KRBAFS,1,[Define if you have the krbafs library.])
LIBS="-lkrbafs $LIBS"
ac_cv_build_pam_krb5afs="yes"]
)]
)
elif test "$KRB5IMPL" = "heimdal" -a "$KRB4IMPL" = "kth"; then
AC_CHECK_HEADER(kafs.h,
[AC_DEFINE(HAVE_KAFS_H,1,[Define if you have
kafs.h])
AC_CHECK_LIB(kafs,krb5_afslog,
[AC_DEFINE(HAVE_HEIMDAL_KAFS,1,[Define
if you have Heimdal's kafs library.])
LIBS="-lkafs $LIBS"
ac_cv_build_pam_krb5afs="yes"],
[AC_CHECK_LIB(kafs,krb_afslog,
[AC_DEFINE(HAVE_KTH_KRB4_KAFS,1,[Define if you have KTH's kafs library.])
LIBS="-lkafs $LIBS"
ac_cv_build_pam_krb5afs="yes"]
)]
)]
)
fi
if test "$ac_cv_build_pam_krb5afs" != yes; then
AC_MSG_WARN([AFS token-grabbing disabled])
fi
AM_CONDITIONAL(BUILD_PAM_KRB5AFS, test
"$ac_cv_build_pam_krb5afs" = yes)
fi
])dnl
AC_DEFUN([PKRB5_CHECK_KRB4], [
ac_arg_with_krb4=""
AC_ARG_WITH(krb4,
[ --with-krb4=dir use Kerberos 4 headers and libs under dir],
[ ac_cv_arg_with_krb4="$withval" ]
)
if test "$ac_cv_arg_with_krb4" = no; then
AC_MSG_WARN([Kerberos 4 features are disabled])
else
AC_MSG_CHECKING(where Kerberos 4 is installed)
if test "$ac_cv_path_krb5config" -a "$KRB5IMPL" = "mit"; then
ac_cv_krb4_prefix=`$ac_cv_path_krb5config --prefix 2>/dev/null`
ac_cv_krb4_libs=`$ac_cv_path_krb5config --libs krb4
2>/dev/null`
ac_cv_krb4_cflags=`$ac_cv_path_krb5config --cflags 2>/dev/null`
fi
if test "$ac_cv_path_krb5config" -a "$ac_cv_krb4_prefix"; then
AC_MSG_RESULT(found in $ac_cv_krb4_prefix (krb5-config))
elif test "$ac_cv_arg_with_krb4"; then
ac_cv_krb4_prefix=$ac_cv_arg_with_krb4
AC_MSG_RESULT(try to use in $ac_cv_krb4_prefix)
else
ac_cv_krb4_prefix=/usr
AC_MSG_RESULT(try to use in $ac_cv_krb4_prefix)
fi
ac_cv_krb4_lib=$ac_cv_krb4_prefix/lib
ac_cv_krb4_include=$ac_cv_krb4_prefix/include
dnl
dnl save state
dnl
ac_save__LDFLAGS="$LDFLAGS"
ac_save__LIBS="$LIBS"
ac_save__CFLAGS="$CFLAGS"
ac_save__CPPFLAGS="$CPPFLAGS"
if test -z "$ac_cv_krb4_libs"; then
LDFLAGS="-L$ac_cv_krb4_lib $KRB5LIBS"
CFLAGS="-I$ac_cv_krb4_include $KRB5CFLAGS"
else
LIBS="$ac_cv_krb4_libs"
LDFLAGS=""
CFLAGS="$ac_cv_krb4_cflags"
fi
AC_CHECK_FUNC(in_tkt,,
AC_CHECK_LIB(krb4,in_tkt,,
AC_CHECK_LIB(krb,in_tkt)))
CPPFLAGS="$CFLAGS $CPPFLAGS"
AC_CHECK_HEADER(kerberosIV/krb.h,
[ac_cv_have_krb_h="kerberosIV/krb.h"
AC_DEFINE(HAVE_KERBEROSIV_KRB_H,1,[Define if you
have kerberosIV/krb.h])],
[AC_CHECK_HEADER(krb.h,[
ac_cv_have_krb_h="krb.h"
AC_DEFINE(HAVE_KRB_H,1,[Define if your
Kerberos IV support
includes krb.h
instead of kerberosIV/krb.h])
])])
if test \( "$ac_cv_func_in_tkt" = yes \
-o "$ac_cv_lib_krb4_in_tkt" = yes \
-o "$ac_cv_lib_krb_in_tkt" = yes \) \
-a x"$ac_cv_have_krb_h" != x
then
AC_MSG_CHECKING([whether we are using KTH Kerberos IV])
AC_TRY_COMPILE([#include <$ac_cv_have_krb_h>],
[ char *tmp = krb4_version; ],
[ AC_MSG_RESULT(yes)
KRB4IMPL="kth"
],
[ AC_MSG_RESULT(no)
KRB4IMPL="mit"
])
if test "$KRB5IMPL" = "mit" -a "$KRB4IMPL" = "mit"; then
AC_DEFINE(HAVE_KERBEROS_V4,1,[Define if you have MIT
Kerberos IV or KTH Kerberos IV.])
AC_CHECK_FUNC(krb524_convert_creds_kdc,ac_cv_have_mit_krb524="yes",
[AC_CHECK_LIB(krb524,krb524_convert_creds_kdc,
[ ac_cv_have_mit_krb524="yes"
LIBS="-lkrb524 $LIBS"
])
])
if test "$ac_cv_have_mit_krb524" = "yes"; then
AC_DEFINE(HAVE_LIBKRB524,1,[Define if you have MIT
Kerberos 5 524 libs.])
AC_DEFINE(HAVE_524_LIBS,1,[Define if you have MIT
Kerberos 5 or Heimdal 524 libs.])
fi
AC_CHECK_FUNCS(krb_mk_in_tkt_preauth krb_mk_in_tkt)
elif test "$KRB5IMPL" = "heimdal" -a "$KRB4IMPL" = "kth"; then
AC_DEFINE(KTH_KRB4,1,[Define if your Kerberos IV
distribution is KTH Kerberos.])
AC_DEFINE(HAVE_KERBEROS_V4)
AC_CHECK_LIB(krb5,krb524_convert_creds_kdc,
AC_DEFINE(HAVE_524_LIBS)
AC_DEFINE(HAVE_HEIMDAL_524,1,[Define if you
have Heimdal's 524 functions.]))
else
AC_MSG_ERROR([Please use for MIT Kerberos5 -- MIT Kerberos4
for Heimdal -- KTH Kerberos4
or disable the krb4 functions with
--disable-krb4])
fi
AC_CHECK_FUNCS(krb524_convert_creds_kdc_ccache)
ac_cv_build_with_krb4=yes
LIBS="$ac_save__LIBS $LIBS"
CFLAGS="$ac_save__CFLAGS $CFLAGS"
LDFLAGS="$ac_save__LDFLAGS $LDFLAGS"
CPPFLAGS="$ac_save__CPPFLAGS $CPPFLAGS"
else
AC_MSG_WARN([Can't find Kerberos 4. Kerberos 4 features
disabled])
LDFLAGS="$ac_save__LDFLAGS"
LIBS="$ac_save__LIBS"
CFLAGS="$ac_save__CFLAGS"
CPPFLAGS="$ac_save__CPPFLAGS"
fi
fi
])dnl
dnl
dnl --with-krb5
dnl
dnl Stolen from nectar.com
dnl
AC_DEFUN([PKRB5_CHECK_KRB5], [
ac_arg_with_krb5=""
AC_ARG_WITH(krb5,
[ --with-krb5=dir Look for Kerberos libs, headers in
another directory],
[
case "$withval" in
no)
#
# Just in case anybody calls it without argument
#
AC_MSG_ERROR([Well this is pam_krb5, so please dont use the
--without-krb5 option])
;;
yes)
ac_cv_arg_with_krb5="/usr"
;;
*)
if test "$withval" = ""; then
ac_cv_arg_with_krb5="/usr"
else
ac_cv_arg_with_krb5="$withval"
fi
;;
esac
])
dnl Check to see if krb5-config exists.
PKRB5_PROG_KRB5CONFIG("$ac_cv_arg_with_krb5/bin")
AC_MSG_CHECKING(where Kerberos 5 is installed)
if test "$ac_cv_path_krb5config" -a "$ac_cv_krb5_prefix"; then
AC_MSG_RESULT(found in $ac_cv_krb5_prefix (krb5-config))
elif test "$ac_cv_arg_with_krb5"; then
ac_cv_krb5_prefix=$ac_cv_arg_with_krb5
AC_MSG_RESULT(found in $ac_cv_arg_with_krb5)
else
AC_MSG_ERROR(could not find kerberos)
fi
ac_cv_krb5_bin=$ac_cv_krb5_prefix/bin
ac_cv_krb5_sbin=$ac_cv_krb5_prefix/sbin
ac_cv_krb5_lib=$ac_cv_krb5_prefix/lib
ac_cv_krb5_rpath=$ac_cv_krb5_prefix/lib
ac_cv_krb5_include=$ac_cv_krb5_prefix/include
ac_cv_krb5_man=$ac_cv_krb5_prefix/man
if test -z "$ac_cv_krb5_libs"; then
ac_cv_krb5_libs=""
fi
if test -z "$ac_cv_krb5_cflags"; then
ac_cv_krb5_cflags=""
fi
dnl
dnl save state
dnl
ac_save__LDFLAGS="$LDFLAGS"
ac_save__LIBS="$LIBS"
ac_save__CFLAGS="$CFLAGS"
if test -z "$ac_cv_krb5_libs"; then
LIBS="-lkrb5 -lasn1 -lcrypto -lroken -lcrypt -lcom_err $LIBS"
LDFLAGS="-L$ac_cv_krb5_lib $LDFLAGS"
CFLAGS="-I$ac_cv_krb5_include $CFLAGS"
else
LIBS="$ac_cv_krb5_libs $LIBS"
LDFLAGS="$LDFLAGS"
CFLAGS="$ac_cv_krb5_cflags $CFLAGS"
fi
AC_MSG_CHECKING([which implementation of Kerberos we have])
AC_TRY_LINK_FUNC(__heimdal_version,KRB5IMPL="heimdal",KRB5IMPL="mit")
AC_MSG_RESULT([looks like $KRB5IMPL])
dnl if $ac_cv_krb5_libs was not set we defaulted to Heimdal libraries,
dnl but we might have MIT krb5. If we do, we need to again modify
dnl LIBS before this will work.
if test -z "$ac_cv_krb5_libs" -a "$KRB5IMPL" = "mit" ; then
LIBS="-lkrb5 -lk5crypto -lcom_err $ac_save__LIBS"
fi
AC_CHECK_FUNC(krb5_init_context,,
AC_CHECK_LIB(krb5,krb5_init_context,,
[AC_MSG_ERROR([Can't find a useable krb5
library])]
)
)
dnl If we didn't get the compiler flags from krb5-config, make a
dnl guess based on the implementation.
if test -z "$ac_cv_krb5_libs"; then
if test "$KRB5IMPL" = "mit"; then
KRB5LIBS="-L${ac_cv_krb5_lib} -lkrb5 -lk5crypto -lcom_err"
KRB5CFLAGS="-I${ac_cv_krb5_include}"
elif test "$KRB5IMPL" = "heimdal"; then
KRB5LIBS="-L${ac_cv_krb5_lib} -lkrb5 -lasn1 -lcrypto -lroken
-lcrypt -lcom_err"
KRB5CFLAGS="-I${ac_cv_krb5_include}"
else
AC_MSG_ERROR(Unknown Kerberos implementation: $KRB5IMPL)
fi
else
KRB5LIBS="${ac_cv_krb5_libs}"
KRB5CFLAGS="${ac_cv_krb5_cflags}"
fi
if test "$KRB5IMPL" = "heimdal"; then
AC_DEFINE(HEIMDAL,1,[Define if your Kerberos 5 distribution is
Heimdal.])
fi
ac_save__CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$KRB5CFLAGS $CPPFLAGS"
dnl Do we have krb5_free_data_contents, or krb5_xfree? (MIT v. Heimdal)
dnl AC_EGREP_HEADER(krb5_free_data_contents,krb5.h,
dnl [COMPAT_SRCS=compat_mit.c COMPAT_OBJS=compat_mit.o],
dnl [COMPAT_SRCS=compat_heimdal.c COMPAT_OBJS=compat_heimdal.o])
AC_CHECK_HEADER(krb5.h, :,
AC_MSG_ERROR(krb5.h not found! Please use --with-krb5 to specify
an alternate basedir))
AC_CHECK_HEADER(krb5.h,AC_DEFINE(HAVE_KRB5_H,1,[Define if you have
krb5.h]),
[AC_MSG_ERROR(krb5.h not found! Please install Kerberos 5 or use
--with-krb5 to specify an alternate basedir)])
dnl AC_EGREP_HEADER(KRB5KDC_ERR_KEY_EXPIRED,krb5.h,:,
dnl AC_DEFINE(HAVE_KRB5KDC_ERR_KEY_EXP))
AC_CHECK_FUNC(krb5_change_password,,[AC_MSG_WARN([password-changing
disabled])])
AC_CHECK_FUNCS(krb5_verify_init_creds krb5_decode_ticket
initialize_krb5_error_table \
krb5_init_ets)
dnl Functions that are in the MIT Kerberos 5 API but not Heimdal
AC_CHECK_FUNCS(krb5_string_to_deltat krb5_free_data_contents \
krb5_get_prompt_types krb524_init_ets)
dnl Functions that are in Heimdal but not MIT Kerberos 5
AC_CHECK_FUNCS(krb5_cc_copy_cache)
AC_CHECK_FUNCS(krb5_get_init_creds_opt_set_default_flags)
dnl LDFLAGS="$ac_save__LDFLAGS"
dnl LIBS="$ac_save__LIBS"
dnl CFLAGS="$ac_save__CFLAGS"
dnl CPPFLAGS="$ac_save__CPPFLAGS"
LIBS="$KRB5LIBS $ac_save__LIBS"
CFLAGS="$KRB5CFLAGS $ac_save__CFLAGS"
LDFLAGS="$LDFLAGS $ac_save__LDFLAGS"
dnl AC_SUBST(KRB5LIBS)
dnl AC_SUBST(KRB5IMPL)
dnl AC_SUBST(KRB5CFLAGS)
dnl AC_SUBST(COMPAT_SRCS)
dnl AC_SUBST(COMPAT_OBJS)
])dnl
dnl
dnl --enable-ldap
dnl
AC_DEFUN([PKRB5_CHECK_LDAP],
[
AC_ARG_ENABLE(enable_ldap,[
Optional LDAP Support: *NEW
--enable-ldap Enable ldap support for non-local users
(requires OpenLDAP libraries @
http://www.openldap.org
and configuration of the
/etc/pam_krb5+ldap.conf file.)],
[enable_ldap="$enableval"],
[enable_ldap="no"])
if test "$enable_ldap" = "yes"; then
AC_DEFINE(_LIBLDAP,1,[Define if you require OpenLDAP
support.])
AC_CHECK_HEADER([ldap.h], [:], [AC_MSG_ERROR([ldap.h not
found! Please install the OpenLDAP libraries from openldap.org.])])
LIBS="-lldap $ac_save__LIBS"
_LIBLDAP=yes
fi
])dnl
Ralf Wildenhues wrote:
* Jason Gerfen wrote on Fri, Oct 07, 2005 at 02:40:23PM CEST:
LIBS="-lldap $ac_save__LIBS"
_LIBLDAP=yes
fi
])dnl
Your macro also uses $ac_save__LIBS without ever setting it.
You probably just wanted
LIBS="-lldap $LIBS"
instead.
Cheers,
Ralf
--
Jason Gerfen
"My girlfriend threated to
leave me if I went boarding...
I will miss her."
~ DIATRIBE aka FBITKK
_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf