diff options
Diffstat (limited to 'source4/heimdal_build/internal.m4')
-rw-r--r-- | source4/heimdal_build/internal.m4 | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/source4/heimdal_build/internal.m4 b/source4/heimdal_build/internal.m4 new file mode 100644 index 0000000000..18ecbb75cd --- /dev/null +++ b/source4/heimdal_build/internal.m4 @@ -0,0 +1,256 @@ +m4_define([upcase],`echo $1 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`)dnl + +dnl love_FIND_FUNC(func, includes, arguments) +dnl kind of like AC_CHECK_FUNC, but with headerfiles +AC_DEFUN([love_FIND_FUNC], [ + +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(ac_cv_love_func_$1, +[ +AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[$1($3)]])], +[eval "ac_cv_love_func_$1=yes"],[eval "ac_cv_love_func_$1=no"])]) + +eval "ac_res=\$ac_cv_love_func_$1" + +if false; then + AC_CHECK_FUNCS($1) +fi +# $1 +eval "ac_tr_func=HAVE_[]upcase($1)" + +case "$ac_res" in + yes) + AC_DEFINE_UNQUOTED($ac_tr_func) + AC_MSG_RESULT([yes]) + ;; + no) + AC_MSG_RESULT([no]) + ;; +esac + + +]) + +dnl Not all systems have err.h, so we provide a replacement. Heimdal +dnl unconditionally #includes <err.h>, so we need to create an err.h, +dnl but we can't just have a static one because we don't want to use +dnl it on systems that have a real err.h. If the system has a real +dnl err.h, we should use that (eg. on Darwin, the declarations get +dnl linker attributes added, so we can't guarantee that our local +dnl declarations will be correct). Phew! +AC_CHECK_HEADERS([err.h], [], + [ cp heimdal/lib/roken/err.hin heimdal_build/err.h ]) + +AC_CHECK_HEADERS([ \ + crypt.h \ + curses.h \ + errno.h \ + inttypes.h \ + netdb.h \ + signal.h \ + sys/bswap.h \ + sys/file.h \ + sys/stropts.h \ + sys/timeb.h \ + sys/times.h \ + sys/uio.h \ + sys/un.h \ + sys/utsname.h \ + term.h \ + termcap.h \ + time.h \ + timezone.h \ + ttyname.h \ + netinet/in.h \ + netinet/in6.h \ + netinet6/in6.h +]) + +AC_CHECK_FUNCS([ \ + atexit \ + cgetent \ + getprogname \ + inet_aton \ + gethostname \ + getnameinfo \ + iruserok \ + putenv \ + rcmd \ + readv \ + sendmsg \ + setitimer \ + socket \ + strlwr \ + strncasecmp \ + strptime \ + strsep \ + strsep_copy \ + strtok_r \ + strupr \ + swab \ + umask \ + uname \ + unsetenv \ + closefrom \ + hstrerror \ + err \ + warn \ + errx \ + warnx \ + flock \ + getipnodebyname \ + getipnodebyaddr \ + freehostent \ + writev +]) + +love_FIND_FUNC(bswap16, [#ifdef HAVE_SYS_BSWAP_H +#include <sys/bswap.h> +#endif], 0) + +love_FIND_FUNC(bswap32, [#ifdef HAVE_SYS_BSWAP_H +#include <sys/bswap.h> +#endif], 0) + +AC_DEFUN([AC_KRB_STRUCT_WINSIZE], [ +AC_MSG_CHECKING(for struct winsize) +AC_CACHE_VAL(ac_cv_struct_winsize, [ +ac_cv_struct_winsize=no +for i in sys/termios.h sys/ioctl.h; do +AC_EGREP_HEADER( +struct[[ ]]*winsize,dnl +$i, ac_cv_struct_winsize=yes; break)dnl +done +]) +if test "$ac_cv_struct_winsize" = "yes"; then + AC_DEFINE(HAVE_STRUCT_WINSIZE, 1, [define if struct winsize is declared in sys/termios.h]) +fi +AC_MSG_RESULT($ac_cv_struct_winsize) +AC_EGREP_HEADER(ws_xpixel, termios.h, + AC_DEFINE(HAVE_WS_XPIXEL, 1, [define if struct winsize has ws_xpixel])) +AC_EGREP_HEADER(ws_ypixel, termios.h, + AC_DEFINE(HAVE_WS_YPIXEL, 1, [define if struct winsize has ws_ypixel])) +]) + +AC_KRB_STRUCT_WINSIZE + +AC_TYPE_SIGNAL +if test "$ac_cv_type_signal" = "void" ; then + AC_DEFINE(VOID_RETSIGTYPE, 1, [Define if signal handlers return void.]) +fi +AC_SUBST(VOID_RETSIGTYPE) + + +m4_include(heimdal/cf/check-var.m4) + +rk_CHECK_VAR(h_errno, +[#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_NETDB_H +#include <netdb.h> +#endif]) + +m4_include(heimdal/cf/find-func.m4) +m4_include(heimdal/cf/find-func-no-libs.m4) +m4_include(heimdal/cf/find-func-no-libs2.m4) +m4_include(heimdal/cf/resolv.m4) + +smb_save_LIBS=$LIBS +RESOLV_LIBS="" +LIBS="" + +dnl This fills in the global LIBS... +rk_RESOLV + +dnl AC_CHECK_LIB_EXT(resolv, RESOLV_LIBS, res_search) + SMB_ENABLE(RESOLV,YES) + +if test x"$LIBS" != "x"; then + RESOLV_LIBS=$LIBS +fi + +LIBS=$smb_save_LIBS + +SMB_EXT_LIB(RESOLV,[${RESOLV_LIBS}],[${RESOLV_CFLAGS}],[${RESOLV_CPPFLAGS}],[${RESOLV_LDFLAGS}]) + + +# these are disabled unless heimdal is found below +SMB_ENABLE(KERBEROS_LIB, NO) +SMB_ENABLE(asn1_compile, NO) +SMB_ENABLE(compile_et, NO) + +# +# We need bison -y and flex in new versions +# Otherwise we get random runtime failures +# +LEX_YACC_COMBINATIONS="" +LEX_YACC_COMBINATIONS="$LEX_YACC_COMBINATIONS flex-2.5.33:bison-2.3" + +AC_PROG_LEX +LEX_BASENAME=`basename "$LEX"` +if test x"$LEX_BASENAME" = x"flex"; then + # "flex 2.5.33" + FLEX_VERSION=`$LEX --version | cut -d ' ' -f2` + AC_MSG_CHECKING(flex version) + AC_MSG_RESULT($FLEX_VERSION) + FLEX_MAJOR=`echo $FLEX_VERSION | cut -d '.' -f1` + FLEX_MINOR=`echo $FLEX_VERSION | cut -d '.' -f2` + FLEX_RELEASE=`echo $FLEX_VERSION | cut -d '.' -f3` + + LEX_VERSION="flex-$FLEX_MAJOR.$FLEX_MINOR.$FLEX_RELEASE" +fi + +AC_PROG_YACC +YACC_BASENAME=`basename "$YACC"` +if test x"$YACC_BASENAME" = x"bison -y"; then + # bison (GNU Bison) 2.3 + BISON_VERSION=`$YACC --version | head -1 | cut -d ' ' -f4` + AC_MSG_CHECKING(bison version) + AC_MSG_RESULT($BISON_VERSION) + BISON_MAJOR=`echo $BISON_VERSION | cut -d '.' -f1` + BISON_MINOR=`echo $BISON_VERSION | cut -d '.' -f2` + + YACC_VERSION="bison-$BISON_MAJOR.$BISON_MINOR" +fi + +AC_MSG_CHECKING(working LEX YACC combination) +LEX_YACC="no" +if test x"$LEX_VERSION" != x"" -a x"$YACC_VERSION" != x""; then + V="$LEX_VERSION:$YACC_VERSION" + for C in $LEX_YACC_COMBINATIONS; do + if test x"$V" = x"$C"; then + LEX_YACC=$V + break; + fi + done +fi +if test x"$LEX_YACC" = x"no"; then + LEX=false + YACC=false +fi +AC_MSG_RESULT($LEX_YACC) + +# Portions of heimdal kerberos are unpacked into source/heimdal +# of the samba source tree. + +# if we ever get to using a host kerberos, we might add conditionals here +AC_DEFINE(HAVE_KRB5,1,[Whether kerberos is available]) +HAVE_KRB5=YES +SMB_ENABLE(KERBEROS_LIB, YES) +SMB_ENABLE(asn1_compile, YES) +SMB_ENABLE(compile_et, YES) + +# only add closefrom if needed +SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, NO) +if test t$ac_cv_func_closefrom != tyes; then + SMB_ENABLE(HEIMDAL_ROKEN_CLOSEFROM, YES) +fi + +# only add getprogname if needed +SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, NO) +SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, NO) +if test t$ac_cv_func_getprogname != tyes; then + SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME, YES) + SMB_ENABLE(HEIMDAL_ROKEN_GETPROGNAME_H, YES) +fi |