diff options
Diffstat (limited to 'source3')
| -rw-r--r-- | source3/Makefile.in | 28 | ||||
| -rw-r--r-- | source3/aclocal.m4 | 107 | ||||
| -rw-r--r-- | source3/configure.in | 388 | 
3 files changed, 326 insertions, 197 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in index ffcd4a2872..39033ab41b 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -32,7 +32,6 @@ AUTHLIBS=@AUTHLIBS@  ACLLIBS=@ACLLIBS@  PASSDBLIBS=@PASSDBLIBS@  IDMAP_LIBS=@IDMAP_LIBS@ -ADSLIBS=@ADSLIBS@  KRB5LIBS=@KRB5_LIBS@  LDAPLIBS=@LDAP_LIBS@ @@ -727,12 +726,12 @@ bin/.dummy:  bin/smbd@EXEEXT@: $(SMBD_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(ADSLIBS) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \ +	@$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(KRB5LIBS) $(LDAPLIBS) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \  	  $(AUTHLIBS) $(ACLLIBS) $(PASSDBLIBS) $(LIBS) @POPTLIBS@  bin/nmbd@EXEEXT@: $(NMBD_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(ADSLIBS) +	@$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAPLIBS)  bin/wrepld@EXEEXT@: $(WREPL_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ @@ -741,19 +740,19 @@ bin/wrepld@EXEEXT@: $(WREPL_OBJ) @BUILD_POPT@ bin/.dummy  bin/swat@EXEEXT@: $(SWAT_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@  	@$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \ -	  $(AUTHLIBS) $(LIBS) $(PASSDBLIBS) @POPTLIBS@ $(KRB5LIBS) +	  $(AUTHLIBS) $(LIBS) $(PASSDBLIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAPLIBS)  bin/rpcclient@EXEEXT@: $(RPCCLIENT_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(PASSDBLIBS) $(RPCCLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(ADSLIBS) +	@$(CC) $(FLAGS) -o $@ $(PASSDBLIBS) $(RPCCLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAPLIBS)  bin/smbclient@EXEEXT@: $(CLIENT_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(ADSLIBS) +	@$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAPLIBS)  bin/net@EXEEXT@: $(NET_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(NET_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(ADSLIBS) $(PASSDBLIBS) +	@$(CC) $(FLAGS) -o $@ $(NET_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) @POPTLIBS@ $(KRB5LIBS) $(LDAPLIBS) $(PASSDBLIBS)  bin/profiles@EXEEXT@: $(PROFILES_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ @@ -801,7 +800,7 @@ bin/smbtree@EXEEXT@: $(SMBTREE_OBJ) @BUILD_POPT@ bin/.dummy  bin/smbpasswd@EXEEXT@: $(SMBPASSWD_OBJ) bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(PASSDBLIBS) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) +	@$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(PASSDBLIBS) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAPLIBS)  bin/pdbedit@EXEEXT@: $(PDBEDIT_OBJ) @BUILD_POPT@ bin/.dummy  	@echo Linking $@ @@ -873,7 +872,7 @@ bin/smbfilter@EXEEXT@: $(SMBFILTER_OBJ) bin/.dummy  bin/smbw_sample@EXEEXT@: $(SMBW_OBJ) utils/smbw_sample.o bin/.dummy  	@echo Linking $@ -	@$(CC) $(FLAGS) -o $@ $(SMBW_OBJ) utils/smbw_sample.o $(LDFLAGS) $(LIBS) $(KRB5LIBS) +	@$(CC) $(FLAGS) -o $@ $(SMBW_OBJ) utils/smbw_sample.o $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAPLIBS)  bin/smbsh@EXEEXT@: $(SMBSH_OBJ) bin/.dummy  	@echo Linking $@ @@ -882,12 +881,14 @@ bin/smbsh@EXEEXT@: $(SMBSH_OBJ) bin/.dummy  bin/smbwrapper.@SHLIBEXT@: $(PICOBJS) bin/.dummy  	@echo Linking shared library $@  	@$(SHLD) $(LDSHFLAGS) -o $@ $(PICOBJS) $(LIBS) \ -		@SONAMEFLAG@`basename $@` $(KRB5LIBS) +		$(KRB5LIBS) $(LDAPLIBS) \ +		@SONAMEFLAG@`basename $@`  bin/libsmbclient.@SHLIBEXT@: $(LIBSMBCLIENT_PICOBJS)  	@echo Linking libsmbclient shared library $@  	@$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_PICOBJS) $(LDFLAGS) $(LIBS) \ -	$(KRB5LIBS) @SONAMEFLAG@`basename $@`.$(LIBSMBCLIENT_MAJOR) +		$(KRB5LIBS) $(LDAPLIBS) \ +		@SONAMEFLAG@`basename $@`.$(LIBSMBCLIENT_MAJOR)  bin/libsmbclient.a: $(LIBSMBCLIENT_PICOBJS)  	@echo Linking libsmbclient non-shared library $@ @@ -897,7 +898,8 @@ bin/libsmbclient.a: $(LIBSMBCLIENT_PICOBJS)  bin/libbigballofmud.@SHLIBEXT@: $(LIBBIGBALLOFMUD_PICOBJS)  	@echo Linking bigballofmud shared library $@  	@$(SHLD) $(LDSHFLAGS) -o $@ $(LIBBIGBALLOFMUD_PICOBJS) $(LIBS) \ -		@SONAMEFLAG@`basename $@`.$(LIBBIGBALLOFMUD_MAJOR) $(PASSDBLIBS) $(IDMAP_LIBS) $(ADSLIBS) +		$(PASSDBLIBS) $(IDMAP_LIBS) $(KRB5LIBS) $(LDAPLIBS) \ +		@SONAMEFLAG@`basename $@`.$(LIBBIGBALLOFMUD_MAJOR)  	ln -snf libbigballofmud.so bin/libbigballofmud.so.0  # It would be nice to build a static bigballofmud too, but when I try @@ -1149,7 +1151,7 @@ python_ext: $(PYTHON_PICOBJS)  	fi  	PYTHON_OBJS="$(PYTHON_PICOBJS)" \  	PYTHON_CFLAGS="$(CFLAGS) $(CPPFLAGS) $(FLAGS)" \ -	LIBS="$(LIBS) $(PASSDBLIBS) $(IDMAP_LIBS) $(KRB5LIBS)" \ +	LIBS="$(LIBS) $(PASSDBLIBS) $(IDMAP_LIBS) $(KRB5LIBS) $(LDAPLIBS)" \  		$(PYTHON) python/setup.py build  python_install: $(PYTHON_PICOBJS) diff --git a/source3/aclocal.m4 b/source3/aclocal.m4 index 21358e2a71..3a49f7e249 100644 --- a/source3/aclocal.m4 +++ b/source3/aclocal.m4 @@ -111,6 +111,113 @@ AC_DEFUN(AC_LIBTESTFUNC,    esac  ]) +# AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION], +#              [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +#              [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES]) +# ------------------------------------------------------ +# +# Use a cache variable name containing both the library and function name, +# because the test really is for library $1 defining function $3, not +# just for library $1.  Separate tests with the same $1 and different $3s +# may have different results. +# +# Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3]) +# is asking for troubles, since AC_CHECK_LIB($lib, fun) would give +# ac_cv_lib_$lib_fun, which is definitely not what was meant.  Hence +# the AS_LITERAL_IF indirection. +# +# FIXME: This macro is extremely suspicious.  It DEFINEs unconditionnally, +# whatever the FUNCTION, in addition to not being a *S macro.  Note +# that the cache does depend upon the function we are looking for. +# +# It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just +# `ac_save_LIBS': there are many macros which don't want to see `LIBS' +# changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'. +# And ``ac_save_LIBS' is too tempting a name, so let's leave them some +# freedom. +AC_DEFUN([AC_CHECK_LIB_EXT], +[ +AH_CHECK_LIB_EXT([$1]) +ac_check_lib_ext_save_LIBS=$LIBS +LIBS="-l$1 $$2 $7 $LIBS" +AS_LITERAL_IF([$1], +      [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])], +      [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl + +m4_ifval([$3], + [ +    AH_CHECK_FUNC_EXT([$3]) +    AS_LITERAL_IF([$1], +              [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])], +              [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl +    AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func, +	[AC_TRY_LINK_FUNC($3, +                 [AS_VAR_SET(ac_Lib_func, yes); +		  AS_VAR_SET(ac_Lib_ext, yes)], +                 [AS_VAR_SET(ac_Lib_func, no); +		  AS_VAR_SET(ac_Lib_ext, no)]) +	]) +    AS_IF([test AS_VAR_GET(ac_Lib_func) = yes], +        [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl +    AS_VAR_POPDEF([ac_Lib_func])dnl + ],[ +    AC_CACHE_CHECK([for -l$1], ac_Lib_ext, +	[AC_TRY_LINK_FUNC([main], +                 [AS_VAR_SET(ac_Lib_ext, yes)], +                 [AS_VAR_SET(ac_Lib_ext, no)]) +	]) + ]) +LIBS=$ac_check_lib_ext_save_LIBS + +AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes], +    [m4_default([$4],  +        [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1)) +		case "$$2" in +		    *-l$1*) +			;; +		    *) +			$2="$$2 -l$1" +			;; +		esac]) +		[$6] +	    ], +	    [$5])dnl +AS_VAR_POPDEF([ac_Lib_ext])dnl +])# AC_CHECK_LIB_EXT + +# AH_CHECK_LIB_EXT(LIBNAME) +# --------------------- +m4_define([AH_CHECK_LIB_EXT], +[AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1), +             [Define to 1 if you have the `]$1[' library (-l]$1[).])]) + +# AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ----------------------------------------------------------------- +dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable. +dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE) +AC_DEFUN([AC_CHECK_FUNC_EXT], +[ +    AH_CHECK_FUNC_EXT($1)	 +    ac_check_func_ext_save_LIBS=$LIBS +    LIBS="$2 $LIBS" +    AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl +    AC_CACHE_CHECK([for $1], ac_var, +	[AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])], +                [AS_VAR_SET(ac_var, yes)], +                [AS_VAR_SET(ac_var, no)])]) +    LIBS=$ac_check_func_ext_save_LIBS +    AS_IF([test AS_VAR_GET(ac_var) = yes],  +	    [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3],  +	    [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +])# AC_CHECK_FUNC + +# AH_CHECK_FUNC_EXT(FUNCNAME) +# --------------------- +m4_define([AH_CHECK_FUNC_EXT], +[AH_TEMPLATE(AS_TR_CPP(HAVE_$1), +             [Define to 1 if you have the `]$1[' function.])]) +  dnl Define an AC_DEFINE with ifndef guard.  dnl AC_N_DEFINE(VARIABLE [, VALUE])  define(AC_N_DEFINE, diff --git a/source3/configure.in b/source3/configure.in index af56395007..3c33a57f40 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -152,12 +152,10 @@ AC_SUBST(LIBSMBCLIENT)  AC_SUBST(PRINTLIBS)  AC_SUBST(AUTHLIBS)  AC_SUBST(ACLLIBS) -AC_SUBST(ADSLIBS)  AC_SUBST(PASSDBLIBS)  AC_SUBST(IDMAP_LIBS)  AC_SUBST(KRB5_LIBS)  AC_SUBST(LDAP_LIBS) -AC_SUBST(LDAP_OBJ)  AC_SUBST(SHLIB_PROGS)  AC_SUBST(SMBWRAPPER)  AC_SUBST(EXTRA_BIN_PROGS) @@ -2127,14 +2125,105 @@ AC_ARG_WITH(dfs,    AC_MSG_RESULT(no)  ) +######################################################## +# Compile with LDAP support? + +with_ldap_support=auto +AC_MSG_CHECKING([for LDAP support]) + +AC_ARG_WITH(ldap, +[  --with-ldap             LDAP support (default yes)], +[ case "$withval" in +    yes|no) +	with_ldap_support=$withval +	;; +  esac ]) + +AC_MSG_RESULT($with_ldap_support) + +SMBLDAP="" +AC_SUBST(SMBLDAP) +if test x"$with_ldap_support" != x"no"; then + +  ################################################################## +  # first test for ldap.h and lber.h +  # (ldap.h is required for this test) +  AC_CHECK_HEADERS(ldap.h lber.h) +   +  if test x"$ac_cv_header_ldap_h" != x"yes"; then +	if test x"$with_ldap_support" = x"yes"; then +	 AC_MSG_ERROR(ldap.h is needed for LDAP support) +	else +	 AC_MSG_WARN(ldap.h is needed for LDAP support) +	fi +	 +	with_ldap_support=no +  fi +fi + +if test x"$with_ldap_support" != x"no"; then +  ac_save_LIBS=$LIBS + +  ################################################################## +  # we might need the lber lib on some systems. To avoid link errors +  # this test must be before the libldap test +  AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf) + +  ######################################################## +  # now see if we can find the ldap libs in standard paths +  AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init) + +  AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS) +   +  ######################################################## +  # If we have LDAP, does it's rebind procedure take 2 or 3 arguments? +  # Check found in pam_ldap 145. +  AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS) + +  LIBS="$LIBS $LDAP_LIBS" +  AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [ +    AC_TRY_COMPILE([ +	#include <lber.h> +	#include <ldap.h>],  +	[ldap_set_rebind_proc(0, 0, 0);],  +	[smb_ldap_cv_ldap_set_rebind_proc=3],  +	[smb_ldap_cv_ldap_set_rebind_proc=2] +    )  +  ]) +   +  AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc]) + +  AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)	 +   +  if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then +    AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available]) +    default_static_modules="$default_static_modules pdb_ldap idmap_ldap"; +    SMBLDAP="lib/smbldap.o" +    with_ldap_support=yes +    AC_MSG_CHECKING(whether LDAP support is used) +    AC_MSG_RESULT(yes) +  else +    if test x"$with_ldap_support" = x"yes"; then +	AC_MSG_ERROR(libldap is needed for LDAP support) +    else +	AC_MSG_WARN(libldap is needed for LDAP support) +    fi +     +    LDAP_LIBS="" +    with_ldap_support=no +  fi +  LIBS=$ac_save_LIBS +fi + +  #################################################  # active directory support  with_ads_support=auto -AC_MSG_CHECKING([whether to use Active Directory]) +AC_MSG_CHECKING([for Active Directory and krb5 support])  AC_ARG_WITH(ads, -[  --with-ads              Active Directory support (default yes)], +[  --with-ads              Active Directory support (default auto)],  [ case "$withval" in      yes|no)  	with_ads_support="$withval" @@ -2146,22 +2235,34 @@ AC_MSG_RESULT($with_ads_support)  FOUND_KRB5=no  KRB5_LIBS="" +if test x"$with_ldap_support" != x"yes"; then +    if test x"$with_ads_support" = x"yes"; then +	AC_MSG_ERROR(Active Directory Support requires LDAP support) +    elif test x"$with_ads_support" != x"no"; then +	AC_MSG_WARN(Active Directory Support requires LDAP support) +    fi +    with_ads_support=no +fi +  if test x"$with_ads_support" != x"no"; then    # Do no harm to the values of CFLAGS and LIBS while testing for    # Kerberos support. -  ac_save_CFLAGS="$CFLAGS" -  ac_save_LIBS="$LIBS" -    #################################################    # check for krb5-config from recent MIT and Heimdal kerberos 5    AC_PATH_PROG(KRB5_CONFIG, krb5-config)    AC_MSG_CHECKING(for working krb5-config)    if test -x "$KRB5_CONFIG"; then -    LIBS="$LIBS `$KRB5_CONFIG --libs`" -    CFLAGS="$CFLAGS `$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"  -    CPPFLAGS="$CPPFLAGS `$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" +    ac_save_CFLAGS=$CFLAGS +    CFLAGS="";export CFLAGS +    ac_save_LDFLAGS=$LDFLAGS +    LDFLAGS="";export LDFLAGS +    KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`" +    KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"  +    KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" +    CFLAGS=$ac_save_CFLAGS;export CFLAGS +    LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS      FOUND_KRB5=yes      AC_MSG_RESULT(yes)    else @@ -2176,18 +2277,21 @@ if test x"$with_ads_support" != x"no"; then      [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],      [ case "$withval" in        no) -        AC_MSG_RESULT(no) +        AC_MSG_RESULT(no krb5-path given) +        ;; +      yes) +        AC_MSG_RESULT(/usr) +        FOUND_KRB5=yes          ;;        *) -        AC_MSG_RESULT(yes) -        LIBS="$LIBS -lkrb5" -        CFLAGS="$CFLAGS -I$withval/include" -        CPPFLAGS="$CPPFLAGS -I$withval/include" -        LDFLAGS="$LDFLAGS -L$withval/lib" +        AC_MSG_RESULT($withval) +        KRB5_CFLAGS="-I$withval/include" +        KRB5_CPPFLAGS="-I$withval/include" +        KRB5_LDFLAGS="-L$withval/lib"          FOUND_KRB5=yes          ;;        esac ], -      AC_MSG_RESULT(no) +      AC_MSG_RESULT(no krb5-path given)      )    fi @@ -2197,15 +2301,13 @@ if test x"$with_ads_support" != x"no"; then      AC_MSG_CHECKING(for /usr/include/heimdal)      if test -d /usr/include/heimdal; then        if test -f /usr/lib/heimdal/lib/libkrb5.a; then -          LIBS="$LIBS -lkrb5" -          CFLAGS="$CFLAGS -I/usr/include/heimdal" -          CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal" -          LDFLAGS="$LDFLAGS -L/usr/lib/heimdal/lib" +          KRB5_CFLAGS="-I/usr/include/heimdal" +          KRB5_CPPFLAGS="-I/usr/include/heimdal" +          KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"            AC_MSG_RESULT(yes)        else -          LIBS="$LIBS -lkrb5" -          CFLAGS="$CFLAGS -I/usr/include/heimdal" -          CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal" +          KRB5_CFLAGS="-I/usr/include/heimdal" +          KRB5_CPPFLAGS="-I/usr/include/heimdal"            AC_MSG_RESULT(yes)        fi      else @@ -2218,16 +2320,25 @@ if test x"$with_ads_support" != x"no"; then      # see if this box has the RedHat location for kerberos      AC_MSG_CHECKING(for /usr/kerberos)      if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then -      LIBS="$LIBS -lkrb5" -      LDFLAGS="$LDFLAGS -L/usr/kerberos/lib" -      CFLAGS="$CFLAGS -I/usr/kerberos/include" -      CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" +      KRB5_LDFLAGS="-L/usr/kerberos/lib" +      KRB5_CFLAGS="-I/usr/kerberos/include" +      KRB5_CPPFLAGS="-I/usr/kerberos/include"        AC_MSG_RESULT(yes)      else        AC_MSG_RESULT(no)      fi    fi +  ac_save_CFLAGS=$CFLAGS +  ac_save_CPPFLAGS=$CPPFLAGS +  ac_save_LDFLAGS=$LDFLAGS + +  CFLAGS="$CFLAGS $KRB5_CFLAGS" +  CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS" +  LDFLAGS="$LDFLAGS $KRB5_LDFLAGS" + +  KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS" +    # now check for krb5.h. Some systems have the libraries without the headers!    # note that this check is done here to allow for different kerberos    # include paths @@ -2247,24 +2358,17 @@ if test x"$with_ads_support" != x"no"; then      # Turn off AD support and restore CFLAGS and LIBS variables      with_ads_support="no" - -    CFLAGS="$ac_save_CFLAGS" -    LIBS="$ac_save_LIBS" - -  else - -    # Get rid of case where $with_ads_support=auto - -    with_ads_support="yes" - +     +    CFLAGS=$ac_save_CFLAGS +    CPPFLAGS=$ac_save_CPPFLAGS +    LDFLAGS=$ac_save_LDFLAGS    fi  fi  # Now we have determined whether we really want ADS support -if test x"$with_ads_support" = x"yes"; then - -  AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support]) +if test x"$with_ads_support" != x"no"; then +  ac_save_LIBS=$LIBS    # now check for gssapi headers.  This is also done here to allow for    # different kerberos include paths @@ -2272,77 +2376,46 @@ if test x"$with_ads_support" = x"yes"; then    ##################################################################    # we might need the k5crypto and com_err libraries on some systems -  AC_CHECK_LIB(com_err, _et_list) -  AC_CHECK_LIB(k5crypto, krb5_encrypt_data) +  AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list) +  AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)    # Heimdal checks. -  AC_CHECK_LIB(crypto, des_set_key) -  AC_CHECK_LIB(asn1, copy_Authenticator) -  AC_CHECK_LIB(roken, roken_getaddrinfo_hostspec) +  AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key) +  AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator) +  AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)    # Heimdal checks. On static Heimdal gssapi must be linked before krb5. -  AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi -lkrb5"; -                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])]) - -  AC_CHECK_LIB(krb5, krb5_set_real_time,  -	         [AC_DEFINE(HAVE_KRB5_SET_REAL_TIME,1, -                   [Whether krb5_set_real_time is available])]) -  AC_CHECK_LIB(krb5, krb5_set_default_in_tkt_etypes,  -                 [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES,1, -                   [Whether krb5_set_default_in_tkt_etypes, is available])]) -  AC_CHECK_LIB(krb5, krb5_set_default_tgs_ktypes,  -                 [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_TGS_KTYPES,1, -                   [Whether krb5_set_default_tgs_ktypes is available])]) - -  AC_CHECK_LIB(krb5, krb5_principal2salt,  -                [AC_DEFINE(HAVE_KRB5_PRINCIPAL2SALT,1, -                   [Whether krb5_principal2salt is available])]) -  AC_CHECK_LIB(krb5, krb5_use_enctype,  -                [AC_DEFINE(HAVE_KRB5_USE_ENCTYPE,1, -                   [Whether krb5_use_enctype is available])]) -  AC_CHECK_LIB(krb5, krb5_string_to_key,  -                [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY,1, -                   [Whether krb5_string_to_key is available])]) -  AC_CHECK_LIB(krb5, krb5_get_pw_salt,  -                [AC_DEFINE(HAVE_KRB5_GET_PW_SALT,1, -                   [Whether krb5_get_pw_salt is available])]) -  AC_CHECK_LIB(krb5, krb5_string_to_key_salt,  -                [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY_SALT,1, -                   [Whether krb5_string_to_key_salt is available])]) -  AC_CHECK_LIB(krb5, krb5_auth_con_setkey,  -                [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETKEY,1, -                   [Whether krb5_auth_con_setkey is available])]) -  AC_CHECK_LIB(krb5, krb5_auth_con_setuseruserkey,  -                [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY,1, -                   [Whether krb5_auth_con_setuseruserkey is available])]) -  AC_CHECK_LIB(krb5, krb5_locate_kdc,  -                [AC_DEFINE(HAVE_KRB5_LOCATE_KDC,1, -                   [Whether krb5_locate_kdc is available])]) -  AC_CHECK_LIB(krb5, krb5_get_permitted_enctypes,  -                [AC_DEFINE(HAVE_KRB5_GET_PERMITTED_ENCTYPES,1, -                   [Whether krb5_get_permitted_enctypes is available])]) -  AC_CHECK_LIB(krb5, krb5_get_default_in_tkt_etypes,  -                [AC_DEFINE(HAVE_KRB5_GET_DEFAULT_IN_TKT_ETYPES,1, -                   [Whether krb5_get_default_in_tkt_etypes is available])]) -  AC_CHECK_LIB(krb5, krb5_free_ktypes,  -                [AC_DEFINE(HAVE_KRB5_FREE_KTYPES,1, -                   [Whether krb5_free_ktypes is available])]) -  AC_CHECK_LIB(krb5, krb5_principal_get_comp_string,  -                [AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_COMP_STRING,1, -                   [Whether krb5_principal_get_comp_string is available])]) -  AC_CACHE_CHECK([for the krb5_princ_component macro], -                samba_cv_HAVE_KRB5_PRINC_COMPONENT,[ -    AC_TRY_LINK([#include <krb5.h>], -      [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);], -      samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes, -      samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)]) - -  if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then -    AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1, -               [Whether krb5_princ_component is available]) -  fi +  AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[], +				AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])) +  ######################################################## +  # now see if we can find the krb5 libs in standard paths +  # or as specified above +  AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended) +  ######################################################## +  # now see if we can find the gssapi libs in standard paths +  AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[], +	    AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])) + +  AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)  +  AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)  +  AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)  +  AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)  +  AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)  +  AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS) +  AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS) + +  LIBS="$LIBS $KRB5_LIBS" +      AC_CACHE_CHECK([for addrtype in krb5_address],                  samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[      AC_TRY_COMPILE([#include <krb5.h>], @@ -2402,87 +2475,34 @@ if test x"$with_ads_support" = x"yes"; then                [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])    fi -  ######################################################## -  # now see if we can find the krb5 libs in standard paths -  # or as specified above -  AC_CHECK_LIB(krb5, krb5_mk_req_extended, [KRB5_LIBS="$LIBS -lkrb5"; -	       KRB5_CFLAGS="$CFLAGS"; -               AC_DEFINE(HAVE_KRB5,1,[Whether KRB5 is available])]) - -  ######################################################## -  # now see if we can find the gssapi libs in standard paths -  AC_CHECK_LIB(gssapi_krb5, gss_display_status,  -               [KRB5_LIBS="$KRB5_LIBS -lgssapi_krb5"; -                AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])]) - -  CFLAGS="$ac_save_CFLAGS" -  LIBS="$ac_save_LIBS" -fi - -######################################################## -# Compile with LDAP support? - -LDAP_OBJ="" -with_ldap_support=yes -AC_MSG_CHECKING([whether to use LDAP]) - -AC_ARG_WITH(ldap, -[  --with-ldap             LDAP support (default yes)], -[ case "$withval" in -    no) -	with_ldap_support=no -	;; -  esac ]) - -AC_MSG_RESULT($with_ldap_support) +  AC_CACHE_CHECK([for the krb5_princ_component macro], +                samba_cv_HAVE_KRB5_PRINC_COMPONENT,[ +    AC_TRY_LINK([#include <krb5.h>], +      [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);], +      samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes, +      samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)]) -SMBLDAP="" -if test x"$with_ldap_support" = x"yes"; then -  ac_save_LIBS="$LIBS" -  LIBS="" +  if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then +    AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1, +               [Whether krb5_princ_component is available]) +  fi -  ################################################################## -  # we might need the lber lib on some systems. To avoid link errors -  # this test must be before the libldap test -  AC_CHECK_LIB(lber, ber_scanf) -  ######################################################## -  # now see if we can find the ldap libs in standard paths -  if test x$have_ldap != xyes; then -        AC_CHECK_LIB(ldap, ldap_init, [ -           LIBS="$LIBS -lldap"; -           AC_CHECK_LIB(ldap, ldap_domain2hostlist, [ -	      AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available]) -	      AC_CHECK_HEADERS([ldap.h lber.h],  -                 [default_static_modules="$default_static_modules pdb_ldap idmap_ldap"; -                  SMBLDAP="lib/smbldap.o"]) -           ]) -        ]) - -	######################################################## -	# If we have LDAP, does it's rebind procedure take 2 or 3 arguments? -	# Check found in pam_ldap 145. -	AC_CHECK_FUNCS(ldap_set_rebind_proc) -	AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [ -	AC_TRY_COMPILE([ -	#include <lber.h> -	#include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ]) -	AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc]) -	AC_CHECK_FUNCS(ldap_initialize)	 -  fi -   -  AC_SUBST(SMBLDAP) -  LDAP_LIBS="$LIBS"; -  LIBS="$ac_save_LIBS"; -else -    # Can't have ADS support without LDAP +  if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then +    AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support]) +    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support]) +    AC_MSG_CHECKING(whether Active Directory and krb5 support is used) +    AC_MSG_RESULT(yes) +  else      if test x"$with_ads_support" = x"yes"; then -       AC_MSG_ERROR(Active directory support requires LDAP) +	AC_MSG_ERROR(libkrb5 is needed for Active Directory support) +    else +	AC_MSG_WARN(libkrb5 is needed for Active Directory support)      fi -fi - -if test x"$with_ads_support" = x"yes"; then -	ADSLIBS="$LDAP_LIBS $KRB5_LIBS" +    KRB5_LIBS="" +    with_ads_support=no  +  fi +  LIBS="$ac_save_LIBS"  fi  ######################################################## @@ -3950,10 +3970,10 @@ fi  AC_MSG_RESULT([Using libraries:])  AC_MSG_RESULT([    LIBS = $LIBS]) -if test x"$with_ads_support" = x"yes"; then +if test x"$with_ads_support" != x"no"; then     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])  fi -if test x"$with_ldap_support" = x"yes"; then +if test x"$with_ldap_support" != x"no"; then     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])  fi  | 
