AC_REVISION($Revision$)
AC_PREREQ(2.62)
test -z "$CFLAGS" && CFLAGS="-g"
-AC_INIT([Heimdal],[6.99.1],[https://github.com/heimdal/heimdal/issues])
+AC_INIT([Heimdal],[7.99.1],[https://github.com/heimdal/heimdal/issues])
AC_CONFIG_SRCDIR([kuser/kinit.c])
AC_CONFIG_HEADERS(include/config.h)
AC_CONFIG_MACRO_DIR([cf])
dnl AC_KRB_PROG_YACC
AC_PROG_YACC
AM_PROG_LEX
+AS_IF([$LEX --nounput -V > /dev/null 2>&1 && test $? -eq 0],
+ [AC_SUBST([FLEXNOUNPUTARGS], ["--nounput"])],
+ [AC_SUBST([FLEXNOUNPUTARGS], [""])])
dnl AC_PROG_RANLIB
AC_PROG_AWK
AC_KRB_PROG_LN_S
AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
rk_VERSIONSCRIPT
+dnl Code coverage
+AC_ARG_ENABLE([gcov],
+ AC_HELP_STRING([--enable-gcov], [enable gcov code coverage tool]))
+AM_CONDITIONAL([ENABLE_GCOV], [test "x$enable_gcov" = xyes])
+
+
dnl
dnl Helper bits for cross compiling
dnl
AC_SUBST([CAPNG_CFLAGS])
AC_SUBST([CAPNG_LIBS])
+dnl libmicrohttpd
+AC_ARG_WITH([microhttpd],
+ AC_HELP_STRING([--with-microhttpd], [use microhttpd to serve KDC REST API @<:@default=check@:>@]),
+ [],
+ [with_microhttpd=check])
+if test "$with_microhttpd" != "no"; then
+ PKG_CHECK_MODULES([MICROHTTPD], [libmicrohttpd >= 0.9.37],
+ [with_microhttpd=yes],[with_microhttpd=no])
+fi
+if test "$with_microhttpd" = "yes"; then
+ AC_DEFINE_UNQUOTED([HAVE_MICROHTTPD], 1, [whether libmicrohttpd is available for KDC REST API])
+fi
+AM_CONDITIONAL([HAVE_MICROHTTPD], [test "$with_microhttpd" != "no"])
+AC_SUBST([MICROHTTPD_CFLAGS])
+AC_SUBST([MICROHTTPD_LIBS])
+
+dnl libcjwt
+AC_ARG_WITH([cjwt],
+ AC_HELP_STRING([--with-cjwt], [(Experimental) use cjwt to validate JWT tokens @<:@default=check@:>@]),
+ [],
+ [with_cjwt=check])
+if test "$with_cjwt" != "no"; then
+ PKG_CHECK_MODULES([CJWT], [libcjwt >= 1.0.0],
+ [with_cjwt=yes],[with_cjwt=no])
+fi
+if test "$with_cjwt" = "yes"; then
+ AC_DEFINE_UNQUOTED([HAVE_CJWT], 1, [whether libcjwt is available for KDC REST API])
+fi
+AM_CONDITIONAL([HAVE_CJWT], [test "$with_cjwt" != "no"])
+AC_SUBST([CJWT_CFLAGS])
+AC_SUBST([CJWT_LIBS])
+
+dnl libcjson
+AC_ARG_WITH([cjson],
+ AC_HELP_STRING([--with-cjson], [(Experimental) use cJSON to extract private claims from JWT tokens @<:@default=check@:>@]),
+ [],
+ [with_cjson=check])
+if test "$with_cjson" != "no"; then
+ PKG_CHECK_MODULES([CJSON], [libcjson >= 1.0.0],
+ [with_cjson=yes],[with_cjson=no])
+fi
+if test "$with_cjson" = "yes"; then
+ AC_DEFINE_UNQUOTED([HAVE_CJSON], 1, [whether libcjson is available for KDC REST API])
+fi
+AM_CONDITIONAL([HAVE_CJSON], [test "$with_cjson" != "no"])
+AC_SUBST([CJSON_CFLAGS])
+AC_SUBST([CJSON_LIBS])
+
dnl Check for sqlite
rk_TEST_PACKAGE(sqlite3,
[#include <sqlite3.h>
if test "$enable_afs_string_to_key" = "yes"; then
AC_DEFINE(ENABLE_AFS_STRING_TO_KEY, 1, [Define if want to use the weak AFS string to key functions.])
+ ENABLE_AFS_STRING_TO_KEY=1
fi
+AC_SUBST(ENABLE_AFS_STRING_TO_KEY)dnl
rk_CHECK_MAN
AC_CONFIG_SUBDIRS([lib/libedit])
-rk_TEST_PACKAGE(hesiod,[#include <hesiod.h>],-lhesiod,,, HESIOD)
-
KRB_C_BIGENDIAN
AC_C_INLINE
-KRB_CHECK_X
-
-AM_CONDITIONAL(HAVE_X, test "$no_x" != yes)
-
-AC_CHECK_XAU
-
dnl AM_C_PROTOTYPES
dnl Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADERS([\
CommonCrypto/CommonDigest.h \
CommonCrypto/CommonCryptor.h \
- arpa/ftp.h \
arpa/telnet.h \
bind/bitypes.h \
bsdsetjmp.h \
fnmatch.h \
inttypes.h \
io.h \
+ keyutils.h \
libutil.h \
limits.h \
maillock.h \
netgroup.h \
netinet/in6_machtypes.h \
+ netinet/tcp.h \
pthread.h \
pty.h \
sac.h \
tmpdir.h \
udb.h \
util.h \
- utmp.h \
- utmpx.h \
])
dnl On Solaris 8 there's a compilation warning for term.h because
#endif
],[0,0,0,0,0])
-AC_FIND_FUNC_NO_LIBS(tgetent, termcap ncurses curses,[
+AC_FIND_FUNC_NO_LIBS(tgetent, termcap ncurses curses tinfo,[
#ifdef HAVE_TERMCAP_H
#include <termcap.h>
#endif
backtrace \
fcntl \
fork \
+ fseeko \
+ ftello \
getpeereid \
getpeerucred \
+ getresgid \
+ getresuid \
grantpt \
kill \
mktime \
rk_DLADDR
AC_CHECK_GETPWNAM_R_POSIX
+AC_CHECK_GETPWUID_R_POSIX
dnl detect doors on solaris
if test "$enable_pthread_support" != no; then
fi
AM_CONDITIONAL(KCM, test "$enable_kcm" = yes)
+dnl detect keyring on Linux
+if test "$ac_cv_header_keyutils_h" = yes; then
+ AC_CHECK_SIZEOF([key_serial_t],,[
+ #ifdef HAVE_INTTYPES_H
+ #include <inttypes.h>
+ #endif
+ #ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #include <keyutils.h>
+ ])
+fi
+
+AC_FIND_FUNC_NO_LIBS(add_key, keyutils)
+if test -n "$LIB_add_key"; then
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIB_add_key"
+ AC_CHECK_FUNCS(keyctl_get_persistent)
+ LIBS="$saved_LIBS"
+fi
+AC_CHECK_SIZEOF([time_t])
dnl Cray stuff
AC_CHECK_FUNCS(getudbnam setlim)
dnl AC_KRB_FUNC_GETCWD_BROKEN
-dnl
-dnl Check for fields in struct utmp
-dnl
-
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_addr, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_host, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_id, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_pid, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_type, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmp, ut_user, [#include <utmp.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_host, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_id, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_line, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_pid, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_tv, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_type, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_user, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_exit, [#include <utmpx.h>])
-AC_HAVE_STRUCT_FIELD(struct utmpx, ut_syslen, [#include <utmpx.h>])
-
AC_CHECK_TYPES([int8_t, int16_t, int32_t, int64_t,
u_int8_t, u_int16_t, u_int32_t, u_int64_t,
uint8_t, uint16_t, uint32_t, uint64_t],,,[
])
rk_FRAMEWORK_SECURITY
+rk_FRAMEWORK_COREFOUNDATION
KRB_READLINE
appl/Makefile \
appl/afsutil/Makefile \
appl/dbutils/Makefile \
- appl/ftp/Makefile \
- appl/ftp/common/Makefile \
- appl/ftp/ftp/Makefile \
- appl/ftp/ftpd/Makefile \
appl/gssmask/Makefile \
- appl/login/Makefile \
appl/otp/Makefile \
- appl/push/Makefile \
- appl/su/Makefile \
appl/test/Makefile \
appl/kf/Makefile \
appl/dceutils/Makefile \
dnl This is the release version name-number[beta]
dnl
-cat > include/newversion.h.in <<EOF
+if test -d "$srcdir/.git"; then
+ cat > include/newversion.h.in <<EOF
+#ifndef VERSION_HIDDEN
+#define VERSION_HIDDEN
+#endif
+VERSION_HIDDEN const char *heimdal_long_version = "@([#])\$Version: $PACKAGE_STRING by @USER@ on @HOST@ @BRANCH@ @TAG@ ($host) @COMMIT@ @DATE@ \$";
+VERSION_HIDDEN const char *heimdal_version = "AC_PACKAGE_STRING";
+EOF
+else
+ cat > include/newversion.h.in <<EOF
#ifndef VERSION_HIDDEN
#define VERSION_HIDDEN
#endif
VERSION_HIDDEN const char *heimdal_long_version = "@([#])\$Version: $PACKAGE_STRING by @USER@ on @HOST@ ($host) @DATE@ \$";
VERSION_HIDDEN const char *heimdal_version = "AC_PACKAGE_STRING";
EOF
+fi
if test -f include/version.h && cmp -s include/newversion.h.in include/version.h.in; then
echo "include/version.h is unchanged"
rm -f include/newversion.h.in
else
echo "creating include/version.h"
- User=${USER-${LOGNAME}}
- Host=`(hostname || uname -n || echo unknown) 2>/dev/null | sed 1q`
- Date=`date`
+ if test -n "$SOURCE_DATE_EPOCH"; then
+ Date=`
+ # BSD, OS X
+ date -u -r "$SOURCE_DATE_EPOCH" "+%Y-%m-%dT%H:%M:%SZ" 2>/dev/null ||
+ # Linux
+ date -u -d "@${SOURCE_DATE_EPOCH}" 2>/dev/null ||
+ # Illumos -- sorry, no -r/-d here
+ date -u ||
+ date`
+ else
+ Date=`date -u "+%Y-%m-%dT%H:%M:%SZ"`
+ fi
+ if test -n "$SOURCE_HOST"; then
+ Host=$SOURCE_HOST
+ else
+ Host=`uname -n`
+ fi
+ if test -n "$SOURCE_USER"; then
+ User=$SOURCE_USER
+ else
+ User=${USER:-${LOGNAME:-`id -nu`}}
+ fi
+ if test -d "$srcdir/.git"; then
+ GitCommit=`cd $srcdir && git rev-parse HEAD`
+ GitBranch=`cd $srcdir && git rev-parse --abbrev-ref HEAD`
+ if test "x$GitBranch" = master; then
+ GitDesc=`cd $srcdir && git describe --all --dirty`
+ else
+ GitDesc=`cd $srcdir && \
+ git describe --tags --match 'heimdal-*' --dirty`
+ fi
+ else
+ GitCommit='<commit-unknown>'
+ GitBranch='<branch-unknown>'
+ GitDesc='<tag-unknown>'
+ fi
mv -f include/newversion.h.in include/version.h.in
- sed -e "s/@USER@/$User/" -e "s/@HOST@/$Host/" -e "s/@DATE@/$Date/" include/version.h.in > include/version.h
+ sed -e "s/@HOST@/$Host/" \
+ -e "s;@USER@;$User;" \
+ -e "s;@DATE@;$Date;" \
+ -e "s;@BRANCH@;$GitBranch;" \
+ -e "s;@TAG@;$GitDesc;" \
+ -e "s;@COMMIT@;$GitCommit;" \
+ include/version.h.in > include/version.h
fi