AC_INIT(configure.in) CONFIG_RULES dnl AH_TEMPLATE([HAVE_STRUCT_SOCKADDR_STORAGE], [Define if "struct sockaddr_storage" is available.]) dnl AC_CONFIG_HEADER(krb5/autoconf.h) AC_PROG_INSTALL AC_PROG_AWK AC_PROG_LEX AC_C_CONST AC_CHECK_FUNCS(strdup setvbuf inet_ntoa inet_aton seteuid setresuid setreuid setegid setresgid setregid setsid flock fchmod chmod strftime strptime geteuid setenv unsetenv getenv gethostbyname2 getifaddrs getpwnam_r getpwuid_r gmtime_r localtime_r pthread_mutex_lock sched_yield) AC_CHECK_FUNCS( mkstemp) AC_HEADER_STDARG AC_CHECK_HEADERS(unistd.h paths.h regex.h regexp.h regexpr.h fcntl.h memory.h ifaddrs.h sys/filio.h sched.h) dnl dnl Check what the return types for gethostbyname_r and getservbyname_r are. dnl AC_CHECK_FUNC(gethostbyname_r,[ ac_cv_func_gethostbyname_r=yes if test "$ac_cv_func_gethostbyname_r" = yes; then AC_MSG_CHECKING([if gethostbyname_r returns an int]) AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_int, [AC_TRY_COMPILE([#include <netdb.h> extern int gethostbyname_r ();], [1;], krb5_cv_gethostbyname_r_returns_int=yes, krb5_cv_gethostbyname_r_returns_int=no)]) AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_int) AC_MSG_CHECKING([if gethostbyname_r returns a pointer]) AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_ptr, [AC_TRY_COMPILE([#include <netdb.h> extern struct hostent *gethostbyname_r ();], [1;], krb5_cv_gethostbyname_r_returns_ptr=yes, krb5_cv_gethostbyname_r_returns_ptr=no)]) AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_ptr) if test "$krb5_cv_gethostbyname_r_returns_int" = "$krb5_cv_gethostbyname_r_returns_ptr"; then AC_MSG_WARN(cannot determine return type of gethostbyname_r -- disabling) ac_cv_func_gethostbyname_r=no fi if test "$krb5_cv_gethostbyname_r_returns_int" = yes; then AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns int rather than struct hostent * ]) fi fi if test "$ac_cv_func_gethostbyname_r" = yes; then AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, [Define if gethostbyname_r exists and its return type is known]) AC_CHECK_FUNC(gethostbyaddr_r) fi ]) dnl if test "$ac_cv_func_getpwnam_r" = yes; then AC_MSG_CHECKING([return type of getpwnam_r]) AC_CACHE_VAL(krb5_cv_getpwnam_r_return_type, [AC_TRY_COMPILE([#include <pwd.h> extern int getpwnam_r();], [1;], getpwnam_r_returns_int=yes,getpwnam_r_returns_int=no) AC_TRY_COMPILE([#include <pwd.h> extern struct passwd *getpwnam_r();], [1;], getpwnam_r_returns_ptr=yes,getpwnam_r_returns_ptr=no) case "$getpwnam_r_returns_int/$getpwnam_r_returns_ptr" in yes/no) krb5_cv_getpwnam_r_return_type=int ;; no/yes) krb5_cv_getpwnam_r_return_type=ptr ;; *) krb5_cv_getpwnam_r_return_type=unknown ;; esac]) AC_MSG_RESULT($krb5_cv_getpwnam_r_return_type) if test $krb5_cv_getpwnam_r_return_type = int; then AC_DEFINE(GETPWNAM_R_RETURNS_INT, 1, [Define if getpwnam_r returns an int]) elif test $krb5_cv_getpwnam_r_return_type = unknown; then AC_MSG_WARN([Cannot determine getpwnam_r return type, disabling]) ac_cv_func_getpwnam_r=no fi fi if test "$ac_cv_func_getpwnam_r" = yes; then AC_MSG_CHECKING([number of arguments to getpwnam_r]) AC_CACHE_VAL(krb5_cv_getpwnam_r_args, [AC_TRY_COMPILE([#include <pwd.h> struct passwd pwx; char buf[1024];], [getpwnam_r("", &pwx, buf, sizeof(buf));], krb5_cv_getpwnam_r_args=4,krb5_cv_getpwnam_r_args=5)]) AC_MSG_RESULT($krb5_cv_getpwnam_r_args) if test "$krb5_cv_getpwnam_r_args" = 4; then AC_DEFINE(GETPWNAM_R_4_ARGS,1,[Define if getpwnam_r exists but takes only 4 arguments (e.g., POSIX draft 6 implementations like some Solaris releases).]) fi fi if test "$ac_cv_func_getpwuid_r" = yes; then AC_MSG_CHECKING([number of arguments to getpwuid_r]) AC_CACHE_VAL(krb5_cv_getpwuid_r_args, [AC_TRY_COMPILE([#include <pwd.h> struct passwd pwx; char buf[1024];], [getpwuid_r(0, &pwx, buf, sizeof(buf));], krb5_cv_getpwuid_r_args=4,krb5_cv_getpwuid_r_args=5)]) AC_MSG_RESULT($krb5_cv_getpwuid_r_args) if test "$krb5_cv_getpwuid_r_args" = 4; then AC_DEFINE(GETPWUID_R_4_ARGS,1,[Define if getpwuid_r exists but takes only 4 arguments (e.g., POSIX draft 6 implementations like some Solaris releases).]) fi fi if test "$ac_cv_func_gmtime_r" = yes; then AC_MSG_CHECKING([whether gmtime_r returns int]) AC_CACHE_VAL(krb5_cv_gmtime_r_returns_int, [AC_TRY_COMPILE([#include <time.h> extern int gmtime_r ();], [1;], return_int=yes, return_int=no) AC_TRY_COMPILE([#include <time.h> extern struct tm *gmtime_r ();], [1;], return_ptr=yes, return_ptr=no) case $return_int/$return_ptr in yes/no) krb5_cv_gmtime_r_returns_int=yes ;; no/yes) krb5_cv_gmtime_r_returns_int=no ;; *) # Can't figure it out, punt the function. ac_cv_func_gmtime_r=no ;; esac]) if test "$ac_cv_func_gmtime_r" = no; then AC_MSG_RESULT(unknown -- ignoring gmtime_r) else AC_MSG_RESULT($krb5_cv_gmtime_r_returns_int) if test "$krb5_cv_gmtime_r_returns_int" = yes; then AC_DEFINE(GMTIME_R_RETURNS_INT,1,[Define if gmtime_r returns int instead of struct tm pointer, as on old HP-UX systems.]) fi fi fi AC_CHECK_FUNC(getservbyname_r,[ ac_cv_func_getservbyname_r=yes if test "$ac_cv_func_getservbyname_r" = yes; then AC_MSG_CHECKING([if getservbyname_r returns an int]) AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_int, [AC_TRY_COMPILE([#include <netdb.h> extern int getservbyname_r ();], [1;], krb5_cv_getservbyname_r_returns_int=yes, krb5_cv_getservbyname_r_returns_int=no)]) AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_int) AC_MSG_CHECKING([if getservbyname_r returns a pointer]) AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_ptr, [AC_TRY_COMPILE([#include <netdb.h> extern struct servent *getservbyname_r ();], [1;], krb5_cv_getservbyname_r_returns_ptr=yes, krb5_cv_getservbyname_r_returns_ptr=no)]) AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_ptr) if test "$krb5_cv_getservbyname_r_returns_int" = "$krb5_cv_getservbyname_r_returns_ptr"; then AC_MSG_WARN(cannot determine return type of getservbyname_r -- disabling) ac_cv_func_getservbyname_r=no fi if test "$krb5_cv_getservbyname_r_returns_int" = yes; then AC_DEFINE(GETSERVBYNAME_R_RETURNS_INT, 1, [Define if getservbyname_r returns int rather than struct servent * ]) fi fi if test "$ac_cv_func_getservbyname_r" = yes; then AC_DEFINE(HAVE_GETSERVBYNAME_R, 1, [Define if getservbyname_r exists and its return type is known]) AC_CHECK_FUNC(getservbyport_r) fi ]) dnl HAVE_YYLINENO CHECK_DIRENT AC_TYPE_UID_T AC_TYPE_MODE_T dnl AC_CHECK_HEADER(termios.h,dnl [AC_CHECK_FUNC([tcsetattr],dnl AC_DEFINE(POSIX_TERMIOS,1,[Define if termios.h exists and tcsetattr exists]))]) dnl KRB5_SIGTYPE AC_CHECK_HEADERS(stdlib.h string.h stddef.h unistd.h sys/types.h sys/file.h sys/param.h sys/stat.h sys/time.h netinet/in.h xom.h sys/uio.h sys/filio.h sys/select.h time.h paths.h) AC_HEADER_STDARG KRB5_AC_INET6 dnl dnl If compiling with IPv6 support, test if in6addr_any functions. dnl Irix 6.5.16 defines it, but lacks support in the C library. if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes ; then AC_CACHE_CHECK([for in6addr_any definition in library], krb5_cv_var_in6addr_any, [AC_TRY_LINK([ #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> ],[ struct sockaddr_in6 in; in.sin6_addr = in6addr_any; printf("%x", &in); ],krb5_cv_var_in6addr_any=yes, krb5_cv_var_in6addr_any=no)]) if test $krb5_cv_var_in6addr_any = no; then AC_DEFINE(NEED_INSIXADDR_ANY,1,[Define if in6addr_any is not defined in libc]) fi fi dnl dnl dnl check for ANSI stdio, esp "b" option to fopen(). This (unfortunately) dnl requires a run check... dnl AC_MSG_CHECKING([for ANSI stdio]) AC_CACHE_VAL(krb5_cv_has_ansi_stdio, [AC_TRY_RUN( [#include <stdio.h> int main() { FILE *conftest; if ((conftest = fopen("conftest.dat", "w")) == NULL) exit(1); if (fclose(conftest)) exit(1); if ((conftest = fopen("conftest.dat", "rb+")) == NULL) exit(1); if (fputs("testing ANSI for stdio\n", conftest) == EOF) exit(1); exit(0); }], krb5_cv_has_ansi_stdio=yes, krb5_cv_has_ansi_stdio=no, krb5_cv_has_ansi_stdio=yes)])dnl assume ANSI in cross environment AC_MSG_RESULT($krb5_cv_has_ansi_stdio) if test $krb5_cv_has_ansi_stdio = yes; then AC_DEFINE(ANSI_STDIO,1,[Define if ANSI stdio is present (in particular "b" option to fopen)]) fi dnl dnl Word sizes... AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) dnl dnl then from osconf.h, we have dnl AC_HEADER_TIME AC_CHECK_TYPE(time_t, long) dnl dnl Determine where to put the replay cache. dnl AC_MSG_CHECKING([for replay cache directory]) AC_CACHE_VAL(krb5_cv_sys_rcdir, [ for t_dir in /var/tmp /usr/tmp /var/usr/tmp /tmp ; do test -d $t_dir || continue krb5_cv_sys_rcdir=$t_dir break done])dnl AC_MSG_RESULT($krb5_cv_sys_rcdir) KRB5_RCTMPDIR=$krb5_cv_sys_rcdir AC_SUBST(KRB5_RCTMPDIR) dnl dnl AC_MSG_CHECKING(for socklen_t) AC_CACHE_VAL(krb5_cv_has_type_socklen_t, [AC_TRY_COMPILE( [#include <sys/types.h> #include <sys/socket.h> ],[sizeof (socklen_t);], krb5_cv_has_type_socklen_t=yes,krb5_cv_has_type_socklen_t=no)]) AC_MSG_RESULT($krb5_cv_has_type_socklen_t) if test $krb5_cv_has_type_socklen_t = yes; then AC_DEFINE(HAVE_SOCKLEN_T,1,[Define if there is a socklen_t type. If not, probably use size_t]) fi dnl AC_MSG_CHECKING(for struct lifconf) AC_CACHE_VAL(krb5_cv_has_struct_lifconf, [AC_TRY_COMPILE( [#include <sys/socket.h> #include <net/if.h> ],[sizeof (struct lifconf);], krb5_cv_has_struct_lifconf=yes,krb5_cv_has_struct_lifconf=no)]) AC_MSG_RESULT($krb5_cv_has_struct_lifconf) if test $krb5_cv_has_struct_lifconf = yes; then AC_DEFINE(HAVE_STRUCT_LIFCONF,1,[Define if there is a struct lifconf.]) fi dnl HP-UX 11 uses stuct if_laddrconf AC_MSG_CHECKING(for struct if_laddrconf) AC_CACHE_VAL(krb5_cv_has_struct_if_laddrconf, [AC_TRY_COMPILE( [#include <sys/socket.h> #include <net/if.h> #include <net/if6.h> ],[sizeof (struct if_laddrconf);], krb5_cv_has_struct_if_laddrconf=yes,krb5_cv_has_struct_if_laddrconf=no)]) AC_MSG_RESULT($krb5_cv_has_struct_if_laddrconf) if test $krb5_cv_has_struct_if_laddrconf = yes; then AC_DEFINE(HAVE_STRUCT_IF_LADDRCONF,1,[Define if there is a struct if_laddrconf.]) fi dnl dnl AC_MSG_CHECKING([for h_errno in netdb.h]) AC_CACHE_VAL(krb5_cv_header_netdb_h_h_errno, [AC_TRY_COMPILE( [#include <netdb.h>], [int x = h_errno;], krb5_cv_header_netdb_h_h_errno=yes, krb5_cv_header_netdb_h_h_errno=no)]) AC_MSG_RESULT($krb5_cv_header_netdb_h_h_errno) if test $krb5_cv_header_netdb_h_h_errno = yes; then AC_DEFINE([HAVE_NETDB_H_H_ERRNO], 1, [Define if netdb.h declares h_errno]) fi dnl dnl AC_ARG_ENABLE([athena], [ --enable-athena build with MIT Project Athena configuration], AC_DEFINE(KRB5_ATHENA_COMPAT,1,[Define if MIT Project Athena default configuration should be used]),) if test "$KRB4_LIB" = ''; then AC_MSG_NOTICE(No Kerberos 4 compatibility) maybe_kerberosIV= else AC_MSG_NOTICE(Kerberos 4 compatibility enabled) maybe_kerberosIV=kerberosIV AC_DEFINE(KRB5_KRB4_COMPAT,1,[Define if Kerberos V4 backwards compatibility should be supported]) fi AC_SUBST(maybe_kerberosIV) dnl AC_C_INLINE AH_BOTTOM([ #if defined(__GNUC__) && !defined(inline) /* Silence gcc pedantic warnings about ANSI C. */ # define inline __inline__ #endif ]) dnl dnl Not used yet, but let's find out what we've got on the platforms dnl we're working with.... AC_CHECK_HEADERS(inttypes.h stdint.h) AC_CHECK_TYPES([uint64_t, int64_t, uint_least32_t, uintptr_t, uintmax_t, long long], , , [ #ifdef HAVE_STDINT_H # include <stdint.h> #elif defined(HAVE_INTTYPES_H) # include <inttypes.h> #endif ]) dnl V5_AC_OUTPUT_MAKEFILE(. krb5 kerberosIV)