mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
7c34de8096
domains, this patch ensures that we always use the ADS backend when security=ADS, and the remote server is capable. The routines used for this behaviour have been upgraded to modern Samba codeing standards. This is a change in behaviour for mixed mode domains, and if the trusted domain cannot be reached with our current krb5.conf file, we will show that domain as disconnected. This is in line with existing behaviour for native mode domains, and for our primary domain. As a consequence of testing this patch, I found that our kerberos error handling was well below par - we would often throw away useful error values. These changes move more routines to ADS_STATUS to return kerberos errors. Also found when valgrinding the setup, fix a few memory leaks. While sniffing the resultant connections, I noticed we would query our list of trusted domains twice - so I have reworked some of the code to avoid that. Andrew Bartlett
4349 lines
139 KiB
Plaintext
4349 lines
139 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
dnl We must use autotools 2.53 or above
|
|
AC_PREREQ(2.53)
|
|
AC_INIT(include/includes.h)
|
|
AC_CONFIG_HEADER(include/config.h)
|
|
|
|
AC_DISABLE_STATIC
|
|
AC_ENABLE_SHARED
|
|
|
|
#################################################
|
|
# Directory handling stuff to support both the
|
|
# legacy SAMBA directories and FHS compliant
|
|
# ones...
|
|
AC_PREFIX_DEFAULT(/usr/local/samba)
|
|
|
|
AC_ARG_WITH(fhs,
|
|
[ --with-fhs Use FHS-compliant paths (default=no)],
|
|
configdir="${sysconfdir}/samba"
|
|
lockdir="\${VARDIR}/lib/samba"
|
|
piddir="\${VARDIR}/run"
|
|
mandir="\${prefix}/share/man"
|
|
logfilebase="\${VARDIR}/log/samba"
|
|
privatedir="\${CONFIGDIR}/private"
|
|
libdir="\${prefix}/lib/samba"
|
|
swatdir="\${DATADIR}/samba/swat",
|
|
configdir="\${LIBDIR}"
|
|
logfilebase="\${VARDIR}"
|
|
lockdir="\${VARDIR}/locks"
|
|
piddir="\${VARDIR}/locks"
|
|
privatedir="\${prefix}/private"
|
|
swatdir="\${prefix}/swat")
|
|
|
|
#################################################
|
|
# set private directory location
|
|
AC_ARG_WITH(privatedir,
|
|
[ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody calls it without argument
|
|
#
|
|
AC_MSG_WARN([--with-privatedir called without argument - will use default])
|
|
;;
|
|
* )
|
|
privatedir="$withval"
|
|
;;
|
|
esac])
|
|
|
|
#################################################
|
|
# set lock directory location
|
|
AC_ARG_WITH(lockdir,
|
|
[ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody calls it without argument
|
|
#
|
|
AC_MSG_WARN([--with-lockdir called without argument - will use default])
|
|
;;
|
|
* )
|
|
lockdir="$withval"
|
|
;;
|
|
esac])
|
|
|
|
#################################################
|
|
# set pid directory location
|
|
AC_ARG_WITH(piddir,
|
|
[ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody calls it without argument
|
|
#
|
|
AC_MSG_WARN([--with-piddir called without argument - will use default])
|
|
;;
|
|
* )
|
|
piddir="$withval"
|
|
;;
|
|
esac])
|
|
|
|
#################################################
|
|
# set SWAT directory location
|
|
AC_ARG_WITH(swatdir,
|
|
[ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody does it
|
|
#
|
|
AC_MSG_WARN([--with-swatdir called without argument - will use default])
|
|
;;
|
|
* )
|
|
swatdir="$withval"
|
|
;;
|
|
esac])
|
|
|
|
#################################################
|
|
# set configuration directory location
|
|
AC_ARG_WITH(configdir,
|
|
[ --with-configdir=DIR Where to put configuration files (\$libdir)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody does it
|
|
#
|
|
AC_MSG_WARN([--with-configdir called without argument - will use default])
|
|
;;
|
|
* )
|
|
configdir="$withval"
|
|
;;
|
|
esac])
|
|
|
|
#################################################
|
|
# set log directory location
|
|
AC_ARG_WITH(logfilebase,
|
|
[ --with-logfilebase=DIR Where to put log files (\$(VARDIR))],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
#
|
|
# Just in case anybody does it
|
|
#
|
|
AC_MSG_WARN([--with-logfilebase called without argument - will use default])
|
|
;;
|
|
* )
|
|
logfilebase="$withval"
|
|
;;
|
|
esac])
|
|
|
|
AC_ARG_WITH(cfenc,
|
|
[ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
|
|
for optimization (Mac OS X/Darwin only)],
|
|
[
|
|
# May be in source $withval/CoreFoundation/StringEncodings.subproj.
|
|
# Should have been in framework $withval/CoreFoundation.framework/Headers.
|
|
for d in \
|
|
$withval/CoreFoundation/StringEncodings.subproj \
|
|
$withval/StringEncodings.subproj \
|
|
$withval/CoreFoundation.framework/Headers \
|
|
$withval/Headers \
|
|
$withval
|
|
do
|
|
if test -r $d/CFStringEncodingConverter.h; then
|
|
ln -sfh $d include/CoreFoundation
|
|
fi
|
|
done
|
|
])
|
|
|
|
AC_SUBST(configdir)
|
|
AC_SUBST(lockdir)
|
|
AC_SUBST(piddir)
|
|
AC_SUBST(logfilebase)
|
|
AC_SUBST(privatedir)
|
|
AC_SUBST(swatdir)
|
|
AC_SUBST(bindir)
|
|
AC_SUBST(sbindir)
|
|
|
|
dnl Unique-to-Samba variables we'll be playing with.
|
|
AC_SUBST(SHELL)
|
|
AC_SUBST(LDSHFLAGS)
|
|
AC_SUBST(SONAMEFLAG)
|
|
AC_SUBST(SHLD)
|
|
AC_SUBST(HOST_OS)
|
|
AC_SUBST(PICFLAGS)
|
|
AC_SUBST(PICSUFFIX)
|
|
AC_SUBST(POBAD_CC)
|
|
AC_SUBST(SHLIBEXT)
|
|
AC_SUBST(INSTALLCLIENT)
|
|
AC_SUBST(INSTALLCLIENTCMD_SH)
|
|
AC_SUBST(INSTALLCLIENTCMD_A)
|
|
AC_SUBST(LIBSMBCLIENT_SHARED)
|
|
AC_SUBST(LIBSMBCLIENT)
|
|
AC_SUBST(PRINT_LIBS)
|
|
AC_SUBST(AUTH_LIBS)
|
|
AC_SUBST(ACL_LIBS)
|
|
AC_SUBST(PASSDB_LIBS)
|
|
AC_SUBST(IDMAP_LIBS)
|
|
AC_SUBST(KRB5_LIBS)
|
|
AC_SUBST(LDAP_LIBS)
|
|
AC_SUBST(SHLIB_PROGS)
|
|
AC_SUBST(SMBWRAPPER)
|
|
AC_SUBST(EXTRA_BIN_PROGS)
|
|
AC_SUBST(EXTRA_SBIN_PROGS)
|
|
AC_SUBST(EXTRA_ALL_TARGETS)
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[ --enable-debug Turn on compiler debugging information (default=no)],
|
|
[if eval "test x$enable_debug = xyes"; then
|
|
CFLAGS="${CFLAGS} -g"
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
|
|
[if eval "test x$enable_developer = xyes"; then
|
|
developer=yes
|
|
CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
|
|
[if eval "test x$enable_krb5developer = xyes"; then
|
|
developer=yes
|
|
CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
|
|
fi])
|
|
|
|
AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
|
|
|
|
if test "x$enable_dmalloc" = xyes
|
|
then
|
|
AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
|
|
AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
|
|
[Define to check invariants around some common functions])
|
|
LIBS="$LIBS -ldmalloc"
|
|
fi
|
|
|
|
dnl Checks for programs.
|
|
|
|
##
|
|
## for some reason this macro resets the CFLAGS
|
|
## so save and restore
|
|
##
|
|
OLD_CFLAGS=${CFLAGS}
|
|
AC_PROG_CC
|
|
CFLAGS=${OLD_CFLAGS}
|
|
|
|
OLD_CFLAGS=${CFLAGS}
|
|
AC_PROG_CPP
|
|
CFLAGS=${OLD_CFLAGS}
|
|
|
|
AC_PROG_INSTALL
|
|
AC_PROG_AWK
|
|
AC_PATH_PROG(PERL, perl)
|
|
|
|
AC_CHECK_TOOL(AR, ar)
|
|
|
|
# compile with optimization and without debugging by default, but
|
|
# allow people to set their own preference.
|
|
if test "x$CFLAGS" = x
|
|
then
|
|
CFLAGS="-O ${CFLAGS}"
|
|
fi
|
|
|
|
dnl Check if we use GNU ld
|
|
LD=ld
|
|
AC_PROG_LD_GNU
|
|
|
|
dnl needed before AC_TRY_COMPILE
|
|
AC_ISC_POSIX
|
|
|
|
dnl look for executable suffix
|
|
AC_EXEEXT
|
|
|
|
dnl Check if C compiler understands -c and -o at the same time
|
|
AC_PROG_CC_C_O
|
|
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
|
|
BROKEN_CC=
|
|
else
|
|
BROKEN_CC=#
|
|
fi
|
|
AC_SUBST(BROKEN_CC)
|
|
|
|
dnl Check if the C compiler understands -Werror
|
|
AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
|
|
AC_TRY_RUN_STRICT([
|
|
int main(void)
|
|
{
|
|
return 0;
|
|
}],[-Werror],[$CPPFLAGS],[$LDFLAGS],
|
|
samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
|
|
if test x"$samba_cv_HAVE_Werror" = x"yes"; then
|
|
Werror_FLAGS="-Werror"
|
|
else
|
|
dnl Check if the C compiler understands -w2
|
|
AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
|
|
AC_TRY_RUN_STRICT([
|
|
int main(void)
|
|
{
|
|
return 0;
|
|
}],[-w2],[$CPPFLAGS],[$LDFLAGS],
|
|
samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
|
|
if test x"$samba_cv_HAVE_w2" = x"yes"; then
|
|
Werror_FLAGS="-w2"
|
|
fi
|
|
fi
|
|
|
|
dnl Check if the C compiler understands volatile (it should, being ANSI).
|
|
AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
|
|
AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
|
|
samba_cv_volatile=yes,samba_cv_volatile=no)])
|
|
if test x"$samba_cv_volatile" = x"yes"; then
|
|
AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
|
|
fi
|
|
|
|
UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
|
|
AC_MSG_CHECKING(uname -s)
|
|
AC_MSG_RESULT(${UNAME_S})
|
|
|
|
UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
|
|
AC_MSG_CHECKING(uname -r)
|
|
AC_MSG_RESULT(${UNAME_R})
|
|
|
|
UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
|
|
AC_MSG_CHECKING(uname -m)
|
|
AC_MSG_RESULT(${UNAME_M})
|
|
|
|
UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
|
|
AC_MSG_CHECKING(uname -p)
|
|
AC_MSG_RESULT(${UNAME_P})
|
|
|
|
AC_CANONICAL_SYSTEM
|
|
|
|
dnl Add #include for broken IRIX header files
|
|
case "$host_os" in
|
|
*irix6*) AC_ADD_INCLUDE(<standards.h>)
|
|
;;
|
|
esac
|
|
|
|
AC_VALIDATE_CACHE_SYSTEM_TYPE
|
|
|
|
DYNEXP=
|
|
|
|
dnl Add modules that have to be built by default here
|
|
dnl These have to be built static:
|
|
default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
|
|
|
|
dnl These are preferably build shared, and static if dlopen() is not available
|
|
default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap charset_CP850 charset_CP437"
|
|
|
|
if test "x$developer" = xyes; then
|
|
default_static_modules="$default_static_modules rpc_echo"
|
|
default_shared_modules="$default_shared_modules charset_weird"
|
|
fi
|
|
|
|
#
|
|
# Config CPPFLAG settings for strange OS's that must be set
|
|
# before other tests.
|
|
#
|
|
case "$host_os" in
|
|
# Try to work out if this is the native HPUX compiler that uses the -Ae flag.
|
|
*hpux*)
|
|
|
|
AC_PROG_CC_FLAG(Ae)
|
|
# mmap on HPUX is completely broken...
|
|
AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
|
|
if test $ac_cv_prog_cc_Ae = yes; then
|
|
CPPFLAGS="$CPPFLAGS -Ae"
|
|
fi
|
|
#
|
|
# Defines needed for HPUX support.
|
|
# HPUX has bigcrypt but (sometimes?) doesn't use it for
|
|
# password hashing - hence the USE_BOTH_CRYPT_CALLS define.
|
|
#
|
|
case `uname -r` in
|
|
*9*|*10*)
|
|
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
|
|
AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
|
|
AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
|
|
AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
|
|
AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
|
|
AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
|
|
;;
|
|
*11*)
|
|
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
|
|
AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
|
|
AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
|
|
AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
|
|
AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
|
|
AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
|
|
;;
|
|
esac
|
|
DYNEXP="-Wl,-E"
|
|
;;
|
|
|
|
#
|
|
# CRAY Unicos has broken const handling
|
|
*unicos*)
|
|
AC_MSG_RESULT([disabling const])
|
|
CPPFLAGS="$CPPFLAGS -Dconst="
|
|
;;
|
|
|
|
#
|
|
# AIX4.x doesn't even admit to having large
|
|
# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
|
|
#
|
|
*aix4*)
|
|
AC_MSG_RESULT([enabling large file support])
|
|
CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
|
|
AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
|
|
;;
|
|
#
|
|
# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
|
|
# to the existance of large files..
|
|
# Note that -D_LARGEFILE64_SOURCE is different from the Sun
|
|
# recommendations on large file support, however it makes the
|
|
# compile work using gcc 2.7 and 2.8, whereas using the Sun
|
|
# recommendation makes the compile fail on gcc2.7. JRA.
|
|
#
|
|
# Solaris uses SYSV printing. Make sure to set that here. --jerry
|
|
#
|
|
*solaris*)
|
|
AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
|
|
case `uname -r` in
|
|
5.0*|5.1*|5.2*|5.3*|5.5*)
|
|
AC_MSG_RESULT([no large file support])
|
|
;;
|
|
5.*)
|
|
AC_MSG_RESULT([enabling large file support])
|
|
if test "$ac_cv_prog_gcc" = yes; then
|
|
${CC-cc} -v >conftest.c 2>&1
|
|
ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
|
|
rm -fr conftest.c
|
|
case "$ac_cv_gcc_compiler_version_number" in
|
|
*"gcc version 2.6"*|*"gcc version 2.7"*)
|
|
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
;;
|
|
*)
|
|
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
|
|
;;
|
|
esac
|
|
else
|
|
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
#
|
|
# IRIX uses SYSV printing. Make sure to set that here
|
|
#
|
|
*irix*)
|
|
AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
|
|
;;
|
|
*freebsd*)
|
|
AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
|
|
;;
|
|
#
|
|
# VOS may need to have POSIX support and System V compatibility enabled.
|
|
#
|
|
*vos*)
|
|
case "$CPPFLAGS" in
|
|
*-D_POSIX_C_SOURCE*)
|
|
;;
|
|
*)
|
|
CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
|
|
AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
|
|
;;
|
|
esac
|
|
case "$CPPFLAGS" in
|
|
*-D_SYSV*|*-D_SVID_SOURCE*)
|
|
;;
|
|
*)
|
|
CPPFLAGS="$CPPFLAGS -D_SYSV"
|
|
AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
|
|
esac
|
|
;;
|
|
#
|
|
# Tests needed for SINIX large file support.
|
|
#
|
|
*sysv4*)
|
|
if test $host = mips-sni-sysv4 ; then
|
|
AC_MSG_CHECKING([for LFS support])
|
|
old_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
|
|
AC_TRY_RUN([
|
|
#include <unistd.h>
|
|
main () {
|
|
#if _LFS64_LARGEFILE == 1
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
|
|
CPPFLAGS="$old_CPPFLAGS"
|
|
if test x$SINIX_LFS_SUPPORT = xyes ; then
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
|
|
LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
|
|
LIBS="`getconf LFS64_LIBS` $LIBS"
|
|
fi
|
|
AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
|
|
fi
|
|
;;
|
|
|
|
# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
|
|
#
|
|
*linux*)
|
|
AC_MSG_CHECKING([for LFS support])
|
|
old_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
|
|
AC_TRY_RUN([
|
|
#include <unistd.h>
|
|
#include <sys/utsname.h>
|
|
main() {
|
|
#if _LFS64_LARGEFILE == 1
|
|
struct utsname uts;
|
|
char *release;
|
|
int major, minor;
|
|
|
|
/* Ensure this is glibc 2.2 or higher */
|
|
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
|
int libc_major = __GLIBC__;
|
|
int libc_minor = __GLIBC_MINOR__;
|
|
|
|
if (libc_major < 2)
|
|
exit(1);
|
|
if (libc_minor < 2)
|
|
exit(1);
|
|
#endif
|
|
|
|
/* Ensure this is kernel 2.4 or higher */
|
|
|
|
uname(&uts);
|
|
release = strdup(uts.release);
|
|
major = atoi(strsep(&release, "."));
|
|
minor = atoi(strsep(&release, "."));
|
|
|
|
if (major > 2 || (major == 2 && minor > 3))
|
|
exit(0);
|
|
exit(1);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}
|
|
], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
|
|
CPPFLAGS="$old_CPPFLAGS"
|
|
if test x$LINUX_LFS_SUPPORT = xyes ; then
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
|
|
AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
|
|
fi
|
|
AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
|
|
;;
|
|
|
|
#
|
|
# MacOS X is the *only* system that uses compose character in utf8. This
|
|
# is so horribly broken....
|
|
#
|
|
*darwin*)
|
|
AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
|
|
# Add Fink directories for various packages, like dlcompat.
|
|
# Note: iconv does that explicitly below, but other packages
|
|
# don't.
|
|
CPPFLAGS="$CPPFLAGS -I/sw/include"
|
|
LDFLAGS="$LDFLAGS -L/sw/lib"
|
|
|
|
# If we have dlsym_prepend_underscore (from Fink's dlcompat),
|
|
# use that instead of plain dlsym.
|
|
|
|
AC_CHECK_LIB(dl,dlopen)
|
|
AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
|
|
|
|
#Add a system specific charset module.
|
|
|
|
default_shared_modules="$default_shared_modules charset_macosxfs"
|
|
old_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="-Iinclude $CPPFLAGS"
|
|
AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
|
|
CPPFLAGS="$old_CPPFLAGS"
|
|
;;
|
|
*hurd*)
|
|
AC_MSG_CHECKING([for LFS support])
|
|
old_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
|
|
AC_TRY_RUN([
|
|
#include <unistd.h>
|
|
main () {
|
|
#if _LFS64_LARGEFILE == 1
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
|
|
CPPFLAGS="$old_CPPFLAGS"
|
|
if test x$GLIBC_LFS_SUPPORT = xyes ; then
|
|
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
|
|
AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
|
|
AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
|
|
fi
|
|
AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_INLINE
|
|
AC_HEADER_STDC
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_TIME
|
|
AC_HEADER_SYS_WAIT
|
|
AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
|
|
AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
|
|
AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
|
|
AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
|
|
AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
|
|
AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
|
|
AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
|
|
AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h)
|
|
AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
|
|
AC_CHECK_HEADERS(langinfo.h locale.h)
|
|
|
|
# In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
|
|
# subdirectory of headers.
|
|
AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
|
|
|
|
#
|
|
# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
|
|
# This causes configure to fail to detect it. Check for shadow separately on HPUX.
|
|
#
|
|
case "$host_os" in
|
|
*hpux*)
|
|
AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
|
|
ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
|
|
if test x"$ac_cv_header_shadow_h" = x"yes"; then
|
|
AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
|
|
fi
|
|
;;
|
|
esac
|
|
AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
|
|
AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
|
|
AC_CHECK_HEADERS(stropts.h poll.h)
|
|
AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
|
|
AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/cdefs.h glob.h)
|
|
|
|
# For experimental utmp support (lastlog on some BSD-like systems)
|
|
AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
|
|
|
|
AC_CHECK_SIZEOF(int,cross)
|
|
AC_CHECK_SIZEOF(long,cross)
|
|
AC_CHECK_SIZEOF(short,cross)
|
|
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_C_BIGENDIAN
|
|
AC_C_CHAR_UNSIGNED
|
|
|
|
AC_TYPE_SIGNAL
|
|
AC_TYPE_UID_T
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_PID_T
|
|
AC_STRUCT_ST_RDEV
|
|
AC_DIRENT_D_OFF
|
|
AC_CHECK_TYPE(ino_t,unsigned)
|
|
AC_CHECK_TYPE(loff_t,off_t)
|
|
AC_CHECK_TYPE(offset_t,loff_t)
|
|
AC_CHECK_TYPE(ssize_t, int)
|
|
AC_CHECK_TYPE(wchar_t, unsigned short)
|
|
|
|
############################################
|
|
# for cups support we need libcups, and a handful of header files
|
|
|
|
AC_ARG_ENABLE(cups,
|
|
[ --enable-cups Turn on CUPS support (default=auto)])
|
|
|
|
if test x$enable_cups != xno; then
|
|
AC_PATH_PROG(CUPS_CONFIG, cups-config)
|
|
|
|
if test "x$CUPS_CONFIG" != x; then
|
|
AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
|
|
CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
|
|
LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
|
|
PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
|
|
fi
|
|
fi
|
|
|
|
############################################
|
|
# we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
|
|
AC_SEARCH_LIBS(dlopen, [dl])
|
|
# dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
|
|
|
|
############################################
|
|
# check if the compiler can do immediate structures
|
|
AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
|
|
AC_TRY_COMPILE([
|
|
#include <stdio.h>],
|
|
[
|
|
typedef struct {unsigned x;} FOOBAR;
|
|
#define X_FOOBAR(x) ((FOOBAR) { x })
|
|
#define FOO_ONE X_FOOBAR(1)
|
|
FOOBAR f = FOO_ONE;
|
|
static struct {
|
|
FOOBAR y;
|
|
} f2[] = {
|
|
{FOO_ONE}
|
|
};
|
|
],
|
|
samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
|
|
if test x"$samba_cv_immediate_structures" = x"yes"; then
|
|
AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
|
|
fi
|
|
|
|
############################################
|
|
# check if the compiler can do immediate structures
|
|
AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
|
|
AC_TRY_LINK([
|
|
#include <stdio.h>],
|
|
[
|
|
if (0) {
|
|
this_function_does_not_exist();
|
|
} else {
|
|
return 1;
|
|
}
|
|
|
|
],
|
|
samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
|
|
if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
|
|
AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
|
|
fi
|
|
|
|
############################################
|
|
# check for unix domain sockets
|
|
AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/un.h>],
|
|
[
|
|
struct sockaddr_un sunaddr;
|
|
sunaddr.sun_family = AF_UNIX;
|
|
],
|
|
samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
|
|
if test x"$samba_cv_unixsocket" = x"yes"; then
|
|
AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#if STDC_HEADERS
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#endif
|
|
#include <sys/socket.h>],[socklen_t i = 0],
|
|
samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
|
|
if test x"$samba_cv_socklen_t" = x"yes"; then
|
|
AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#if STDC_HEADERS
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#endif
|
|
#include <signal.h>],[sig_atomic_t i = 0],
|
|
samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
|
|
if test x"$samba_cv_sig_atomic_t" = x"yes"; then
|
|
AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
|
|
fi
|
|
|
|
# stupid headers have the functions but no declaration. grrrr.
|
|
AC_HAVE_DECL(errno, [#include <errno.h>])
|
|
AC_HAVE_DECL(setresuid, [#include <unistd.h>])
|
|
AC_HAVE_DECL(setresgid, [#include <unistd.h>])
|
|
AC_HAVE_DECL(asprintf, [#include <stdio.h>])
|
|
AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
|
|
AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
|
|
AC_HAVE_DECL(snprintf, [#include <stdio.h>])
|
|
|
|
# and glibc has setresuid under linux but the function does
|
|
# nothing until kernel 2.1.44! very dumb.
|
|
AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
|
|
AC_TRY_RUN([#include <errno.h>
|
|
main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
|
|
samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
|
|
if test x"$samba_cv_have_setresuid" = x"yes"; then
|
|
AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
|
|
fi
|
|
|
|
# Do the same check for setresguid...
|
|
#
|
|
AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
|
|
AC_TRY_RUN([#include <unistd.h>
|
|
#include <errno.h>
|
|
main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
|
|
samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
|
|
if test x"$samba_cv_have_setresgid" = x"yes"; then
|
|
AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
|
|
fi
|
|
|
|
AC_FUNC_MEMCMP
|
|
|
|
###############################################
|
|
# Readline included by default unless explicitly asked not to
|
|
test "${with_readline+set}" != "set" && with_readline=yes
|
|
|
|
# test for where we get readline() from
|
|
AC_MSG_CHECKING(whether to use readline)
|
|
AC_ARG_WITH(readline,
|
|
[ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
|
|
[ case "$with_readline" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
|
|
AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
|
|
AC_CHECK_HEADERS(readline/history.h)
|
|
|
|
AC_CHECK_HEADERS(readline.h readline/readline.h,[
|
|
for termlib in ncurses curses termcap terminfo termlib tinfo; do
|
|
AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
|
|
done
|
|
AC_CHECK_LIB(readline, rl_callback_handler_install,
|
|
[TERMLIBS="-lreadline $TERMLIBS"
|
|
AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
|
|
break], [TERMLIBS=], $TERMLIBS)])
|
|
;;
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(yes)
|
|
|
|
# Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
|
|
# alternate readline path
|
|
_ldflags=${LDFLAGS}
|
|
_cppflags=${CPPFLAGS}
|
|
|
|
# Add additional search path
|
|
LDFLAGS="-L$with_readline/lib $LDFLAGS"
|
|
CPPFLAGS="-I$with_readline/include $CPPFLAGS"
|
|
|
|
AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
|
|
AC_CHECK_HEADERS(readline/history.h)
|
|
|
|
AC_CHECK_HEADERS(readline.h readline/readline.h,[
|
|
for termlib in ncurses curses termcap terminfo termlib; do
|
|
AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
|
|
done
|
|
AC_CHECK_LIB(readline, rl_callback_handler_install,
|
|
[TERMLDFLAGS="-L$with_readline/lib"
|
|
TERMCPPFLAGS="-I$with_readline/include"
|
|
CPPFLAGS="-I$with_readline/include $CPPFLAGS"
|
|
TERMLIBS="-lreadline $TERMLIBS"
|
|
AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
|
|
break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
|
|
|
|
LDFLAGS=$_ldflags
|
|
;;
|
|
esac],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
AC_SUBST(TERMLIBS)
|
|
AC_SUBST(TERMLDFLAGS)
|
|
|
|
# The readline API changed slightly from readline3 to readline4, so
|
|
# code will generate warnings on one of them unless we have a few
|
|
# special cases.
|
|
AC_CHECK_LIB(readline, rl_completion_matches,
|
|
[AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
|
|
[Do we have rl_completion_matches?])],
|
|
[],
|
|
[$TERMLIBS])
|
|
|
|
# The following test taken from the cvs sources
|
|
# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
|
|
# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
|
|
# libsocket.so which has a bad implementation of gethostbyname (it
|
|
# only looks in /etc/hosts), so we only look for -lsocket if we need
|
|
# it.
|
|
AC_CHECK_FUNCS(connect)
|
|
if test x"$ac_cv_func_connect" = x"no"; then
|
|
case "$LIBS" in
|
|
*-lnsl*) ;;
|
|
*) AC_CHECK_LIB(nsl_s, printf) ;;
|
|
esac
|
|
case "$LIBS" in
|
|
*-lnsl*) ;;
|
|
*) AC_CHECK_LIB(nsl, printf) ;;
|
|
esac
|
|
case "$LIBS" in
|
|
*-lsocket*) ;;
|
|
*) AC_CHECK_LIB(socket, connect) ;;
|
|
esac
|
|
case "$LIBS" in
|
|
*-linet*) ;;
|
|
*) AC_CHECK_LIB(inet, connect) ;;
|
|
esac
|
|
dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
|
|
dnl has been cached.
|
|
if test x"$ac_cv_lib_socket_connect" = x"yes" ||
|
|
test x"$ac_cv_lib_inet_connect" = x"yes"; then
|
|
# ac_cv_func_connect=yes
|
|
# don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
|
|
AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
|
|
fi
|
|
fi
|
|
|
|
###############################################
|
|
# test for where we get yp_get_default_domain() from
|
|
AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
|
|
AC_CHECK_FUNCS(yp_get_default_domain)
|
|
|
|
# Check if we have execl, if not we need to compile smbrun.
|
|
AC_CHECK_FUNCS(execl)
|
|
if test x"$ac_cv_func_execl" = x"no"; then
|
|
EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
|
|
fi
|
|
|
|
AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
|
|
AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
|
|
AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
|
|
AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
|
|
AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
|
|
AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
|
|
AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
|
|
AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
|
|
AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
|
|
AC_CHECK_FUNCS(syslog vsyslog timegm)
|
|
AC_CHECK_FUNCS(setlocale nl_langinfo)
|
|
# setbuffer, shmget, shm_open are needed for smbtorture
|
|
AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
|
|
|
|
# syscall() is needed for smbwrapper.
|
|
AC_CHECK_FUNCS(syscall)
|
|
|
|
AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
|
|
AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
|
|
AC_CHECK_FUNCS(__getcwd _getcwd)
|
|
AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
|
|
AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
|
|
AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
|
|
AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
|
|
AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
|
|
AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
|
|
AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
|
|
AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
|
|
AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
|
|
AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
|
|
AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
|
|
|
|
#
|
|
#
|
|
#
|
|
case "$host_os" in
|
|
*linux*)
|
|
# glibc <= 2.3.2 has a broken getgrouplist
|
|
AC_TRY_RUN([
|
|
#include <unistd.h>
|
|
#include <sys/utsname.h>
|
|
main() {
|
|
/* glibc up to 2.3 has a broken getgrouplist */
|
|
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
|
int libc_major = __GLIBC__;
|
|
int libc_minor = __GLIBC_MINOR__;
|
|
|
|
if (libc_major < 2)
|
|
exit(1);
|
|
if ((libc_major == 2) && (libc_minor <= 3))
|
|
exit(1);
|
|
#endif
|
|
exit(0);
|
|
}
|
|
], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
|
|
if test x"$linux_getgrouplist_ok" = x"yes"; then
|
|
AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
|
|
fi
|
|
;;
|
|
*)
|
|
AC_CHECK_FUNCS(getgrouplist)
|
|
;;
|
|
esac
|
|
|
|
#
|
|
# stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
|
|
#
|
|
|
|
if test x$ac_cv_func_stat64 = xno ; then
|
|
AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
|
|
AC_TRY_LINK([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/stat.h>
|
|
], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
|
|
AC_MSG_RESULT([$ac_cv_func_stat64])
|
|
if test x$ac_cv_func_stat64 = xyes ; then
|
|
AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
|
|
fi
|
|
fi
|
|
|
|
if test x$ac_cv_func_lstat64 = xno ; then
|
|
AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
|
|
AC_TRY_LINK([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/stat.h>
|
|
], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
|
|
AC_MSG_RESULT([$ac_cv_func_lstat64])
|
|
if test x$ac_cv_func_lstat64 = xyes ; then
|
|
AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
|
|
fi
|
|
fi
|
|
|
|
if test x$ac_cv_func_fstat64 = xno ; then
|
|
AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
|
|
AC_TRY_LINK([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/stat.h>
|
|
], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
|
|
AC_MSG_RESULT([$ac_cv_func_fstat64])
|
|
if test x$ac_cv_func_fstat64 = xyes ; then
|
|
AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
|
|
fi
|
|
fi
|
|
|
|
#####################################
|
|
# we might need the resolv library on some systems
|
|
AC_CHECK_LIB(resolv, dn_expand)
|
|
|
|
#
|
|
# Check for the functions putprpwnam, set_auth_parameters,
|
|
# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
|
|
# Needed for OSF1 and HPUX.
|
|
#
|
|
|
|
AC_LIBTESTFUNC(security, putprpwnam)
|
|
AC_LIBTESTFUNC(sec, putprpwnam)
|
|
|
|
AC_LIBTESTFUNC(security, set_auth_parameters)
|
|
AC_LIBTESTFUNC(sec, set_auth_parameters)
|
|
|
|
# UnixWare 7.x has its getspnam in -lgen
|
|
AC_LIBTESTFUNC(gen, getspnam)
|
|
|
|
AC_LIBTESTFUNC(security, getspnam)
|
|
AC_LIBTESTFUNC(sec, getspnam)
|
|
|
|
AC_LIBTESTFUNC(security, bigcrypt)
|
|
AC_LIBTESTFUNC(sec, bigcrypt)
|
|
|
|
AC_LIBTESTFUNC(security, getprpwnam)
|
|
AC_LIBTESTFUNC(sec, getprpwnam)
|
|
|
|
############################################
|
|
# Check if we have libattr
|
|
AC_SEARCH_LIBS(getxattr, [attr])
|
|
AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
|
|
AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
|
|
AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
|
|
AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
|
|
AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
|
|
|
|
# Assume non-shared by default and override below
|
|
BLDSHARED="false"
|
|
|
|
# these are the defaults, good for lots of systems
|
|
HOST_OS="$host_os"
|
|
LDSHFLAGS="-shared"
|
|
SONAMEFLAG="#"
|
|
SHLD="\${CC} \${CFLAGS}"
|
|
PICFLAGS=""
|
|
PICSUFFIX="po"
|
|
POBAD_CC="#"
|
|
SHLIBEXT="so"
|
|
|
|
if test "$enable_shared" = "yes"; then
|
|
# this bit needs to be modified for each OS that is suported by
|
|
# smbwrapper. You need to specify how to created a shared library and
|
|
# how to compile C code to produce PIC object files
|
|
|
|
AC_MSG_CHECKING([ability to build shared libraries])
|
|
|
|
# and these are for particular systems
|
|
case "$host_os" in
|
|
*linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-shared"
|
|
DYNEXP="-Wl,--export-dynamic"
|
|
PICFLAGS="-fPIC"
|
|
SONAMEFLAG="-Wl,-soname="
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-G"
|
|
SONAMEFLAG="-h "
|
|
if test "${GCC}" = "yes"; then
|
|
PICFLAGS="-fPIC"
|
|
if test "${ac_cv_prog_gnu_ld}" = "yes"; then
|
|
DYNEXP="-Wl,-E"
|
|
fi
|
|
else
|
|
PICFLAGS="-KPIC"
|
|
## ${CFLAGS} added for building 64-bit shared
|
|
## libs using Sun's Compiler
|
|
LDSHFLAGS="-G \${CFLAGS}"
|
|
POBAD_CC=""
|
|
PICSUFFIX="po.o"
|
|
fi
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
|
|
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
|
|
;;
|
|
*sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-G"
|
|
SONAMEFLAG="-Wl,-h,"
|
|
PICFLAGS="-KPIC" # Is this correct for SunOS
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
|
|
;;
|
|
*netbsd* | *freebsd*) BLDSHARED="true"
|
|
LDSHFLAGS="-shared"
|
|
DYNEXP="-Wl,--export-dynamic"
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
PICFLAGS="-fPIC -DPIC"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
|
|
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
|
|
;;
|
|
*openbsd*) BLDSHARED="true"
|
|
LDSHFLAGS="-shared"
|
|
DYNEXP="-Wl,-Bdynamic"
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
PICFLAGS="-fPIC"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
|
|
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
|
|
;;
|
|
*irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
|
|
case "$host_os" in
|
|
*irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
|
|
;;
|
|
esac
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-set_version sgi1.0 -shared"
|
|
SONAMEFLAG="-soname "
|
|
SHLD="\${LD}"
|
|
if test "${GCC}" = "yes"; then
|
|
PICFLAGS="-fPIC"
|
|
else
|
|
PICFLAGS="-KPIC"
|
|
fi
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
|
|
;;
|
|
*aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
|
|
DYNEXP="-Wl,-brtl,-bexpall"
|
|
PICFLAGS="-O2"
|
|
if test "${GCC}" != "yes"; then
|
|
## for funky AIX compiler using strncpy()
|
|
CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
|
|
fi
|
|
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
|
|
;;
|
|
*hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
|
|
SHLIBEXT="sl"
|
|
# Use special PIC flags for the native HP-UX compiler.
|
|
if test $ac_cv_prog_cc_Ae = yes; then
|
|
BLDSHARED="true"
|
|
SHLD="/usr/bin/ld"
|
|
LDSHFLAGS="-B symbolic -b -z"
|
|
SONAMEFLAG="+h "
|
|
PICFLAGS="+z"
|
|
elif test "${GCC}" = "yes"; then
|
|
PICFLAGS="-fPIC"
|
|
fi
|
|
DYNEXP="-Wl,-E"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
|
|
AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
|
|
;;
|
|
*qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-shared"
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
PICFLAGS="-fPIC"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
|
|
;;
|
|
*sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-shared"
|
|
SONAMEFLAG="-Wl,-soname,"
|
|
PICFLAGS="-KPIC"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
|
|
case "$host" in
|
|
*-univel-*) if [ test "$GCC" != yes ]; then
|
|
AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
|
|
fi
|
|
LDSHFLAGS="-G"
|
|
DYNEXP="-Bexport"
|
|
;;
|
|
*mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
|
|
esac
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
|
|
*sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
|
|
if [ test "$GCC" != yes ]; then
|
|
AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
|
|
fi
|
|
LDSHFLAGS="-G"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
*vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
|
|
BLDSHARED="false"
|
|
LDSHFLAGS=""
|
|
;;
|
|
|
|
*darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
|
|
BLDSHARED="true"
|
|
LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
|
|
SHLIBEXT="dylib"
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
|
|
*)
|
|
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
|
|
;;
|
|
esac
|
|
AC_SUBST(DYNEXP)
|
|
AC_MSG_RESULT($BLDSHARED)
|
|
AC_MSG_CHECKING([linker flags for shared libraries])
|
|
AC_MSG_RESULT([$LDSHFLAGS])
|
|
AC_MSG_CHECKING([compiler flags for position-independent code])
|
|
AC_MSG_RESULT([$PICFLAGS])
|
|
fi
|
|
|
|
#######################################################
|
|
# test whether building a shared library actually works
|
|
if test $BLDSHARED = true; then
|
|
AC_CACHE_CHECK([whether building shared libraries actually works],
|
|
[ac_cv_shlib_works],[
|
|
ac_cv_shlib_works=no
|
|
# try building a trivial shared library
|
|
$CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
|
|
shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
|
|
$CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
|
|
shlib.$PICSUFFIX && \
|
|
ac_cv_shlib_works=yes
|
|
rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
|
|
])
|
|
if test $ac_cv_shlib_works = no; then
|
|
BLDSHARED=false
|
|
fi
|
|
fi
|
|
|
|
################
|
|
|
|
AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
|
|
samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
|
|
if test x"$samba_cv_have_longlong" = x"yes"; then
|
|
AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
|
|
fi
|
|
|
|
#
|
|
# Check if the compiler supports the LL prefix on long long integers.
|
|
# AIX needs this.
|
|
|
|
AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
|
|
AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
|
|
samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
|
|
if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
|
|
AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
|
|
samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
|
|
if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
|
|
AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
|
|
samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
|
|
if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
|
|
AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
|
|
samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
|
|
if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
|
|
AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
|
|
samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
|
|
if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
|
|
AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
|
|
samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
|
|
if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
|
|
AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
|
|
AC_TRY_COMPILE([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
#include <dirent.h>],
|
|
[struct dirent64 de;],
|
|
samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
|
|
if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
|
|
AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
main() { dev_t dev; int i = major(dev); return 0; }],
|
|
samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
|
|
if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
|
|
AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
main() { dev_t dev; int i = minor(dev); return 0; }],
|
|
samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
|
|
if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
|
|
AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
|
|
AC_TRY_RUN([#include <stdio.h>
|
|
main() { char c; c=250; exit((c > 0)?0:1); }],
|
|
samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
|
|
if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
|
|
AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>],
|
|
[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
|
|
samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
|
|
if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
|
|
AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <dirent.h>
|
|
void seekdir(DIR *d, long loc) { return; }],[return 0;],
|
|
samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
|
|
if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
|
|
AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
|
|
AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
|
|
samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
|
|
if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
|
|
AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
|
|
AC_TRY_RUN([
|
|
#include <sys/time.h>
|
|
#include <unistd.h>
|
|
main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
|
|
samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
|
|
if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
|
|
AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
|
|
AC_TRY_LINK([#include <stdarg.h>
|
|
va_list ap1,ap2;], [va_copy(ap1,ap2);],
|
|
samba_cv_HAVE_VA_COPY=yes,
|
|
samba_cv_HAVE_VA_COPY=no)])
|
|
if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
|
|
AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
|
|
else
|
|
AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
|
|
AC_TRY_LINK([#include <stdarg.h>
|
|
va_list ap1,ap2;], [__va_copy(ap1,ap2);],
|
|
samba_cv_HAVE___VA_COPY=yes,
|
|
samba_cv_HAVE___VA_COPY=no)])
|
|
if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
|
|
AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <stdarg.h>
|
|
void foo(const char *format, ...) {
|
|
va_list ap;
|
|
int len;
|
|
char buf[5];
|
|
|
|
va_start(ap, format);
|
|
len = vsnprintf(buf, 0, format, ap);
|
|
va_end(ap);
|
|
if (len != 5) exit(1);
|
|
|
|
va_start(ap, format);
|
|
len = vsnprintf(0, 0, format, ap);
|
|
va_end(ap);
|
|
if (len != 5) exit(1);
|
|
|
|
if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
|
|
|
|
exit(0);
|
|
}
|
|
main() { foo("hello"); }
|
|
],
|
|
samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
|
|
if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
|
|
AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
|
|
AC_TRY_RUN([#include <sys/types.h>
|
|
#include <dirent.h>
|
|
main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
|
|
if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
|
|
di->d_name[0] == 0) exit(0); exit(1);} ],
|
|
samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
|
|
if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
|
|
AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utime.h>],
|
|
[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
|
|
samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
|
|
if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
|
|
AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
|
|
fi
|
|
|
|
##############
|
|
# Check utmp details, but only if our OS offers utmp.h
|
|
if test x"$ac_cv_header_utmp_h" = x"yes"; then
|
|
dnl utmp and utmpx come in many flavours
|
|
dnl We need to check for many of them
|
|
dnl But we don't need to do each and every one, because our code uses
|
|
dnl mostly just the utmp (not utmpx) fields.
|
|
|
|
AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
|
|
|
|
AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_name[0] = 'a';],
|
|
samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_user[0] = 'a';],
|
|
samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_id[0] = 'a';],
|
|
samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_host[0] = 'a';],
|
|
samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; time_t t; ut.ut_time = t;],
|
|
samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
|
|
samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_type = 0;],
|
|
samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_pid = 0;],
|
|
samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_exit.e_exit = 0;],
|
|
samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp ut; ut.ut_addr = 0;],
|
|
samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
|
|
if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
|
|
AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
|
|
fi
|
|
|
|
if test x$ac_cv_func_pututline = xyes ; then
|
|
AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmp.h>],
|
|
[struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
|
|
samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
|
|
if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
|
|
AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <utmpx.h>],
|
|
[struct utmpx ux; ux.ut_syslen = 0;],
|
|
samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
|
|
if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
|
|
AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
|
|
fi
|
|
|
|
fi
|
|
# end utmp details
|
|
|
|
|
|
ICONV_LOCATION=standard
|
|
LOOK_DIRS="/usr /usr/local /sw"
|
|
AC_ARG_WITH(libiconv,
|
|
[ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
|
|
[
|
|
if test "$withval" = "no" ; then
|
|
AC_MSG_ERROR([argument to --with-libiconv must be a directory])
|
|
else
|
|
if test "$withval" != "yes" ; then
|
|
ICONV_PATH_SPEC=yes
|
|
LOOK_DIRS="$withval"
|
|
fi
|
|
fi
|
|
])
|
|
|
|
ICONV_FOUND="no"
|
|
for i in $LOOK_DIRS ; do
|
|
save_LIBS=$LIBS
|
|
save_LDFLAGS=$LDFLAGS
|
|
save_CPPFLAGS=$CPPFLAGS
|
|
CPPFLAGS="$CPPFLAGS -I$i/include"
|
|
dnl This is here to handle -withval stuff for --with-libiconv
|
|
dnl Perhaps we should always add a -L
|
|
LDFLAGS="$LDFLAGS -L$i/lib"
|
|
LIBS=
|
|
export LDFLAGS LIBS CPPFLAGS
|
|
dnl Try to find iconv(3)
|
|
jm_ICONV($i)
|
|
|
|
if test "$ICONV_FOUND" = yes; then
|
|
LDFLAGS=$save_LDFLAG
|
|
LIB_ADD_DIR(LDFLAGS, "$i/lib")
|
|
CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
|
|
LIBS="$save_LIBS"
|
|
ICONV_LOCATION=$i
|
|
export LDFLAGS LIBS CPPFLAGS
|
|
dnl Now, check for a working iconv ... we want to do it here because
|
|
dnl there might be a working iconv further down the list of LOOK_DIRS
|
|
|
|
############
|
|
# check for iconv in libc
|
|
ic_save_LIBS="$LIBS"
|
|
if test x"$ICONV_PATH_SPEC" = "xyes" ; then
|
|
LIBS="$LIBS -L$ICONV_LOCATION/lib"
|
|
fi
|
|
if test x"$jm_cv_lib_iconv" != x; then
|
|
LIBS="$LIBS -l$jm_cv_lib_iconv"
|
|
fi
|
|
dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
|
|
default_dos_charset=no
|
|
default_display_charset=no
|
|
default_unix_charset=no
|
|
|
|
# check for default dos charset name
|
|
for j in CP850 IBM850 ; do
|
|
rjs_CHARSET($j)
|
|
if test x"$ICONV_CHARSET" = x"$j"; then
|
|
default_dos_charset="\"$j\""
|
|
break
|
|
fi
|
|
done
|
|
# check for default display charset name
|
|
for j in ASCII 646 ; do
|
|
rjs_CHARSET($j)
|
|
if test x"$ICONV_CHARSET" = x"$j"; then
|
|
default_display_charset="\"$j\""
|
|
break
|
|
fi
|
|
done
|
|
# check for default unix charset name
|
|
for j in UTF-8 UTF8 ; do
|
|
rjs_CHARSET($j)
|
|
if test x"$ICONV_CHARSET" = x"$j"; then
|
|
default_unix_charset="\"$j\""
|
|
break
|
|
fi
|
|
done
|
|
|
|
if test "$default_dos_charset" != "no" -a \
|
|
"$default_dos_charset" != "cross" -a \
|
|
"$default_display_charset" != "no" -a \
|
|
"$default_display_charset" != "cross" -a \
|
|
"$default_unix_charset" != "no" -a \
|
|
"$default_unix_charset" != "cross"
|
|
then
|
|
samba_cv_HAVE_NATIVE_ICONV=yes
|
|
else if test "$default_dos_charset" = "cross" -o \
|
|
"$default_display_charset" = "cross" -o \
|
|
"$default_unix_charset" = "cross"
|
|
then
|
|
samba_cv_HAVE_NATIVE_ICONV=cross
|
|
else
|
|
samba_cv_HAVE_NATIVE_ICONV=no
|
|
fi
|
|
fi
|
|
dnl ])
|
|
|
|
LIBS="$ic_save_LIBS"
|
|
if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
|
|
CPPFLAGS=$save_CPPFLAGS
|
|
LDFLAGS=$save_LDFLAGS
|
|
LIBS=$save_LIBS
|
|
if test x"$jm_cv_lib_iconv" != x; then
|
|
LIBS="$LIBS -l$jm_cv_lib_iconv"
|
|
fi
|
|
dnl Add the flags we need to CPPFLAGS and LDFLAGS
|
|
CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
|
|
LIB_ADD_DIR(LDFLAGS, "$i/lib")
|
|
export CPPFLAGS
|
|
AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
|
|
break
|
|
fi
|
|
dnl We didn't find a working iconv, so keep going
|
|
fi
|
|
dnl We only need to clean these up here for the next pass through the loop
|
|
CPPFLAGS=$save_CPPFLAGS
|
|
LDFLAGS=$save_LDFLAGS
|
|
LIBS=$save_LIBS
|
|
export LDFLAGS LIBS CPPFLAGS
|
|
done
|
|
|
|
|
|
if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
|
|
AC_MSG_WARN([Sufficient support for iconv function was not found.
|
|
Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
|
|
AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <fcntl.h>
|
|
#ifndef F_GETLEASE
|
|
#define F_GETLEASE 1025
|
|
#endif
|
|
main() {
|
|
int fd = open("/dev/null", O_RDONLY);
|
|
return fcntl(fd, F_GETLEASE, 0) == -1;
|
|
}
|
|
],
|
|
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
|
|
if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
|
|
AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <fcntl.h>
|
|
#include <signal.h>
|
|
#ifndef F_NOTIFY
|
|
#define F_NOTIFY 1026
|
|
#endif
|
|
main() {
|
|
exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
|
|
}
|
|
],
|
|
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
|
|
if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
|
|
AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <fcntl.h>
|
|
#include <signal.h>
|
|
#include <sys/file.h>
|
|
#ifndef LOCK_MAND
|
|
#define LOCK_MAND 32
|
|
#define LOCK_READ 64
|
|
#endif
|
|
main() {
|
|
exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
|
|
}
|
|
],
|
|
samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
|
|
if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
|
|
AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
|
|
fi
|
|
|
|
|
|
|
|
|
|
AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <fcntl.h>],
|
|
[oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
|
|
samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
|
|
if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
|
|
AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
|
|
AC_TRY_RUN([#include <sys/types.h>
|
|
#include <sys/capability.h>
|
|
main() {
|
|
cap_t cap;
|
|
if ((cap = cap_get_proc()) == NULL)
|
|
exit(1);
|
|
cap->cap_effective |= CAP_NETWORK_MGT;
|
|
cap->cap_inheritable |= CAP_NETWORK_MGT;
|
|
cap_set_proc(cap);
|
|
exit(0);
|
|
}
|
|
],
|
|
samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
|
|
if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
|
|
AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
|
|
fi
|
|
|
|
#
|
|
# Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
|
|
# This is *really* broken but some systems (DEC OSF1) do this.... JRA.
|
|
#
|
|
|
|
AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#if defined(HAVE_RPC_RPC_H)
|
|
#include <rpc/rpc.h>
|
|
#endif],
|
|
[int16 testvar;],
|
|
samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
|
|
if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
|
|
AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#if defined(HAVE_RPC_RPC_H)
|
|
#include <rpc/rpc.h>
|
|
#endif],
|
|
[uint16 testvar;],
|
|
samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
|
|
if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
|
|
AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#if defined(HAVE_RPC_RPC_H)
|
|
#include <rpc/rpc.h>
|
|
#endif],
|
|
[int32 testvar;],
|
|
samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
|
|
if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
|
|
AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#if defined(HAVE_RPC_RPC_H)
|
|
#include <rpc/rpc.h>
|
|
#endif],
|
|
[uint32 testvar;],
|
|
samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
|
|
if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
|
|
AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
|
|
fi
|
|
|
|
dnl
|
|
dnl Some systems (SCO) have a problem including
|
|
dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
|
|
dnl as a #define in <prot.h> and as part of an enum
|
|
dnl in <rpc/rpc.h>.
|
|
dnl
|
|
|
|
AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#ifdef HAVE_SYS_SECURITY_H
|
|
#include <sys/security.h>
|
|
#include <prot.h>
|
|
#endif /* HAVE_SYS_SECURITY_H */
|
|
#if defined(HAVE_RPC_RPC_H)
|
|
#include <rpc/rpc.h>
|
|
#endif],
|
|
[int testvar;],
|
|
samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
|
|
if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
|
|
AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for test routines])
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_ERROR([cant find test code. Aborting config]),
|
|
AC_MSG_WARN([cannot run when cross-compiling]))
|
|
|
|
AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
|
|
samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
|
|
if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
|
|
AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
|
|
samba_cv_HAVE_WORKING_AF_LOCAL=yes,
|
|
samba_cv_HAVE_WORKING_AF_LOCAL=no,
|
|
samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
|
|
if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
|
|
then
|
|
AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
|
|
samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
|
|
if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
|
|
AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
|
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper"
|
|
AC_TRY_COMPILE([
|
|
#define REPLACE_GETPASS 1
|
|
#define NO_PROTO_H 1
|
|
#define NO_CONFIG_H 1
|
|
#define main dont_declare_main
|
|
#include "${srcdir-.}/lib/getsmbpass.c"
|
|
#undef main
|
|
],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
|
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
|
])
|
|
if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
|
|
AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#ifdef HAVE_ARPA_INET_H
|
|
#include <arpa/inet.h>
|
|
#endif
|
|
main() { struct in_addr ip; ip.s_addr = 0x12345678;
|
|
if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
|
|
strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); }
|
|
exit(1);}],
|
|
samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
|
|
if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
|
|
AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
|
|
AC_TRY_RUN([#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
main() {
|
|
struct stat st;
|
|
char tpl[20]="/tmp/test.XXXXXX";
|
|
int fd = mkstemp(tpl);
|
|
if (fd == -1) exit(1);
|
|
unlink(tpl);
|
|
if (fstat(fd, &st) != 0) exit(1);
|
|
if ((st.st_mode & 0777) != 0600) exit(1);
|
|
exit(0);
|
|
}],
|
|
samba_cv_HAVE_SECURE_MKSTEMP=yes,
|
|
samba_cv_HAVE_SECURE_MKSTEMP=no,
|
|
samba_cv_HAVE_SECURE_MKSTEMP=cross)])
|
|
if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
|
|
AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
|
|
AC_TRY_RUN([#include <unistd.h>
|
|
main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
|
|
samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
|
|
if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
|
|
AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
|
|
AC_TRY_RUN([#include <unistd.h>
|
|
main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
|
|
samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
|
|
if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
|
|
AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
|
|
AC_TRY_RUN([main() { exit(getuid() != 0); }],
|
|
samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
|
|
if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
|
|
AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
|
|
else
|
|
AC_MSG_WARN(running as non-root will disable some tests)
|
|
fi
|
|
|
|
##################
|
|
# look for a method of finding the list of network interfaces
|
|
iface=no;
|
|
AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
|
|
AC_TRY_RUN([
|
|
#define HAVE_IFACE_AIX 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/interfaces.c"],
|
|
samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
|
|
if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
|
|
iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
|
|
fi
|
|
|
|
if test $iface = no; then
|
|
AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
|
|
AC_TRY_RUN([
|
|
#define HAVE_IFACE_IFCONF 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/interfaces.c"],
|
|
samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
|
|
if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
|
|
iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
|
|
fi
|
|
fi
|
|
|
|
if test $iface = no; then
|
|
AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
|
|
AC_TRY_RUN([
|
|
#define HAVE_IFACE_IFREQ 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/interfaces.c"],
|
|
samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
|
|
if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
|
|
iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
|
|
fi
|
|
fi
|
|
|
|
|
|
################################################
|
|
# look for a method of setting the effective uid
|
|
seteuid=no;
|
|
if test $seteuid = no; then
|
|
AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
|
|
AC_TRY_RUN([
|
|
#define AUTOCONF_TEST 1
|
|
#define USE_SETRESUID 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/util_sec.c"],
|
|
samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
|
|
if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
|
|
seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
|
|
fi
|
|
fi
|
|
|
|
|
|
if test $seteuid = no; then
|
|
AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
|
|
AC_TRY_RUN([
|
|
#define AUTOCONF_TEST 1
|
|
#define USE_SETREUID 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/util_sec.c"],
|
|
samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
|
|
if test x"$samba_cv_USE_SETREUID" = x"yes"; then
|
|
seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
|
|
fi
|
|
fi
|
|
|
|
if test $seteuid = no; then
|
|
AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
|
|
AC_TRY_RUN([
|
|
#define AUTOCONF_TEST 1
|
|
#define USE_SETEUID 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/util_sec.c"],
|
|
samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
|
|
if test x"$samba_cv_USE_SETEUID" = x"yes"; then
|
|
seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
|
|
fi
|
|
fi
|
|
|
|
if test $seteuid = no; then
|
|
AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
|
|
AC_TRY_RUN([
|
|
#define AUTOCONF_TEST 1
|
|
#define USE_SETUIDX 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/lib/util_sec.c"],
|
|
samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
|
|
if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
|
|
seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
|
|
fi
|
|
fi
|
|
|
|
|
|
AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
|
|
samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
|
|
if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
|
|
AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
|
|
samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
|
|
if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
|
|
AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
|
|
samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
|
|
if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
|
|
AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
|
|
samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
|
|
if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
|
|
AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
|
|
|
|
else
|
|
|
|
dnl
|
|
dnl Don't check for 64 bit fcntl locking if we know that the
|
|
dnl glibc2.1 broken check has succeeded.
|
|
dnl
|
|
|
|
AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
|
|
AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef HAVE_FCNTL_H
|
|
#include <fcntl.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_FCNTL_H
|
|
#include <sys/fcntl.h>
|
|
#endif
|
|
main() { struct flock64 fl64;
|
|
#if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
|
|
exit(0);
|
|
#else
|
|
exit(1);
|
|
#endif
|
|
}],
|
|
samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
|
|
|
|
if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
|
|
AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>],
|
|
[struct stat st; st.st_blocks = 0;],
|
|
samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
|
|
if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
|
|
AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
|
|
AC_TRY_COMPILE([#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>],
|
|
[struct stat st; st.st_blksize = 0;],
|
|
samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
|
|
if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
|
|
AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
|
|
fi
|
|
|
|
case "$host_os" in
|
|
*linux*)
|
|
AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
|
|
AC_TRY_COMPILE([
|
|
#ifdef HAVE_SYS_VFS_H
|
|
#include <sys/vfs.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_CAPABILITY_H
|
|
#include <sys/capability.h>
|
|
#endif
|
|
],[int i;],
|
|
samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
|
|
if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
|
|
AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
|
|
AC_TRY_COMPILE([#include <sys/acl.h>
|
|
#if defined(HAVE_RPCSVC_NIS_H)
|
|
#include <rpcsvc/nis.h>
|
|
#endif],
|
|
[int i;],
|
|
samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
|
|
if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
|
|
AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
|
|
fi
|
|
|
|
|
|
#################################################
|
|
# check for smbwrapper support
|
|
AC_MSG_CHECKING(whether to use smbwrapper)
|
|
AC_ARG_WITH(smbwrapper,
|
|
[ --with-smbwrapper Include SMB wrapper support (default=no) ],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
|
|
WRAPPROG="bin/smbsh\$(EXEEXT)"
|
|
WRAP="bin/smbwrapper.$SHLIBEXT"
|
|
|
|
# Conditions under which smbwrapper should not be built.
|
|
|
|
if test x$PICFLAGS = x; then
|
|
echo No support for PIC code - disabling smbwrapper and smbsh
|
|
WRAPPROG=""
|
|
WRAP=""
|
|
elif test x$ac_cv_func_syscall = xno; then
|
|
AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
|
|
WRAPPROG=""
|
|
WRAP=""
|
|
fi
|
|
EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
|
|
SMBWRAPPER="$WRAPPROG $WRAP"
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for AFS clear-text auth support
|
|
samba_cv_WITH_AFS=no
|
|
AC_MSG_CHECKING(whether to use AFS clear-text auth)
|
|
AC_ARG_WITH(afs,
|
|
[ --with-afs Include AFS clear-text auth support (default=no) ],
|
|
[ case "$withval" in
|
|
yes|auto)
|
|
AC_MSG_RESULT($withval)
|
|
samba_cv_WITH_AFS=$withval
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
####################################################
|
|
# check for Linux-specific AFS fake-kaserver support
|
|
samba_cv_WITH_FAKE_KASERVER=no
|
|
AC_MSG_CHECKING(whether to use AFS fake-kaserver)
|
|
AC_ARG_WITH(fake-kaserver,
|
|
[ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
|
|
[ case "$withval" in
|
|
yes|auto)
|
|
AC_MSG_RESULT($withval)
|
|
samba_cv_WITH_FAKE_KASERVER=$withval
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
|
|
if test x"$samba_cv_WITH_AFS" != x"no" ||
|
|
test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
|
|
|
|
# see if this box has the afs-headers in /usr/include/afs
|
|
AC_MSG_CHECKING(for /usr/include/afs)
|
|
if test -d /usr/include/afs; then
|
|
CFLAGS="$CFLAGS -I/usr/include/afs"
|
|
CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
# check for afs.h
|
|
have_afs_headers=no
|
|
AC_CHECK_HEADERS(afs.h afs/afs.h)
|
|
if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
|
|
if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
|
|
test x"$samba_cv_WITH_AFS" = x"auto"; then
|
|
AC_MSG_WARN([AFS cannot be supported without afs.h])
|
|
else
|
|
AC_MSG_ERROR([AFS cannot be supported without afs.h])
|
|
fi
|
|
else
|
|
have_afs_headers=yes
|
|
fi
|
|
fi
|
|
|
|
if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" == x"yes"; then
|
|
AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
|
|
fi
|
|
|
|
if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
|
|
AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
|
|
fi
|
|
|
|
#################################################
|
|
# check for the DFS clear-text auth system
|
|
AC_MSG_CHECKING(whether to use DFS clear-text auth)
|
|
AC_ARG_WITH(dfs,
|
|
[ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
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([for Active Directory and krb5 support])
|
|
|
|
AC_ARG_WITH(ads,
|
|
[ --with-ads Active Directory support (default auto)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
with_ads_support="$withval"
|
|
;;
|
|
esac ])
|
|
|
|
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.
|
|
|
|
#################################################
|
|
# 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
|
|
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
|
|
AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
|
|
fi
|
|
|
|
if test x$FOUND_KRB5 = x"no"; then
|
|
#################################################
|
|
# check for location of Kerberos 5 install
|
|
AC_MSG_CHECKING(for kerberos 5 install path)
|
|
AC_ARG_WITH(krb5,
|
|
[ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
|
|
[ case "$withval" in
|
|
no)
|
|
AC_MSG_RESULT(no krb5-path given)
|
|
;;
|
|
yes)
|
|
AC_MSG_RESULT(/usr)
|
|
FOUND_KRB5=yes
|
|
;;
|
|
*)
|
|
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 krb5-path given)
|
|
)
|
|
fi
|
|
|
|
if test x$FOUND_KRB5 = x"no"; then
|
|
#################################################
|
|
# see if this box has the SuSE location for the heimdal krb implementation
|
|
AC_MSG_CHECKING(for /usr/include/heimdal)
|
|
if test -d /usr/include/heimdal; then
|
|
if test -f /usr/lib/heimdal/lib/libkrb5.a; then
|
|
KRB5_CFLAGS="-I/usr/include/heimdal"
|
|
KRB5_CPPFLAGS="-I/usr/include/heimdal"
|
|
KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
KRB5_CFLAGS="-I/usr/include/heimdal"
|
|
KRB5_CPPFLAGS="-I/usr/include/heimdal"
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
|
|
if test x$FOUND_KRB5 = 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
|
|
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
|
|
AC_CHECK_HEADERS(krb5.h)
|
|
|
|
if test x"$ac_cv_header_krb5_h" = x"no"; then
|
|
|
|
# Give a warning if AD support was not explicitly requested,
|
|
# i.e with_ads_support = auto, otherwise die with an error.
|
|
|
|
if test x"$with_ads_support" = x"yes"; then
|
|
AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
|
|
else
|
|
AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
|
|
fi
|
|
|
|
# Turn off AD support and restore CFLAGS and LIBS variables
|
|
|
|
with_ads_support="no"
|
|
|
|
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"no"; then
|
|
ac_save_LIBS=$LIBS
|
|
|
|
# now check for gssapi headers. This is also done here to allow for
|
|
# different kerberos include paths
|
|
AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
|
|
|
|
##################################################################
|
|
# we might need the k5crypto and com_err libraries on some systems
|
|
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_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_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_free_data_contents, $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>],
|
|
[krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
|
|
samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
|
|
samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
|
|
|
|
if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
|
|
AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
|
|
[Whether the krb5_address struct has a addrtype property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for addr_type in krb5_address],
|
|
samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
|
|
samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
|
|
samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
|
|
|
|
if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
|
|
AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
|
|
[Whether the krb5_address struct has a addr_type property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
|
|
samba_cv_HAVE_KRB5_TKT_ENC_PART2,
|
|
[AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
|
|
samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
|
|
|
|
if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
|
|
AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
|
|
[Whether the krb5_ticket struct has a enc_part2 property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
|
|
samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_keyblock key; key.keyvalue.data = NULL;],
|
|
samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
|
|
samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
|
|
|
|
if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
|
|
AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
|
|
[Whether the krb5_keyblock struct has a keyvalue property])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
|
|
samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
|
|
samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
|
|
samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
|
|
AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
|
|
samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
|
|
samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
|
|
samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
|
|
# Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
|
|
# w.r.t. arcfour and windows, so we must not enable it here
|
|
if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
|
|
x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
|
|
AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
|
|
[Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
|
|
samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
|
|
samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
|
|
samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
|
|
|
|
if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
|
|
AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
|
|
[Whether the AP_OPTS_USE_SUBKEY ap option is available])
|
|
fi
|
|
|
|
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_CACHE_CHECK([for memory keytab support],
|
|
samba_cv_HAVE_MEMORY_KEYTAB,[
|
|
AC_TRY_RUN([
|
|
#include<krb5.h>
|
|
main()
|
|
{
|
|
krb5_context context;
|
|
krb5_keytab keytab;
|
|
|
|
krb5_init_context(&context);
|
|
if (krb5_kt_resolve(context, "MEMORY:", &keytab))
|
|
exit(1);
|
|
exit(0);
|
|
}],
|
|
samba_cv_HAVE_MEMORY_KEYTAB=yes,
|
|
samba_cv_HAVE_MEMORY_KEYTAB=no)])
|
|
|
|
if test x"$samba_cv_HAVE_MEMORY_KEYTAB" = x"yes"; then
|
|
AC_DEFINE(HAVE_MEMORY_KEYTAB,1,
|
|
[Whether in-memory keytabs are supported])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for key in krb5_keytab_entry],
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
|
|
|
|
if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
|
|
AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
|
|
[Whether krb5_keytab_entry has key member])
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
|
|
AC_TRY_COMPILE([#include <krb5.h>],
|
|
[krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
|
|
samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
|
|
|
|
if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
|
|
AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
|
|
[Whether krb5_keytab_entry has keyblock member])
|
|
fi
|
|
|
|
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(libkrb5 is needed for Active Directory support)
|
|
else
|
|
AC_MSG_WARN(libkrb5 is needed for Active Directory support)
|
|
fi
|
|
KRB5_LIBS=""
|
|
with_ads_support=no
|
|
fi
|
|
LIBS="$ac_save_LIBS"
|
|
fi
|
|
|
|
########################################################
|
|
# Compile experimental passdb backends?
|
|
# (pdb_xml, pdb_mysql, pdb_pgsql)
|
|
AC_MSG_CHECKING(whether to build experimental passdb libraries)
|
|
AC_ARG_WITH(expsam,
|
|
[ --with-expsam=<list> Include experimental passdb libraries (default=no)]
|
|
[ Valid choices include (comma separated list): ]
|
|
[ xml, mysql & pgsql],
|
|
[ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
|
|
if test "z$expsam_pdb_modules" = "zyes"; then
|
|
expsam_pdb_modules="xml mysql pgsql"
|
|
fi
|
|
AC_MSG_RESULT($expsam_pdb_modules)
|
|
for i in $expsam_pdb_modules
|
|
do
|
|
case "$i" in
|
|
xml|all|yes)
|
|
## pdb_xml
|
|
AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
|
|
CFLAGS="$CFLAGS $XML_CFLAGS"
|
|
;;
|
|
mysql|all|yes)
|
|
## pdb_mysql
|
|
AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
|
|
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
|
|
;;
|
|
pgsql|all|yes)
|
|
## pdb_pgsql
|
|
AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
|
|
CFLAGS="$CFLAGS $PGSQL_CFLAGS"
|
|
;;
|
|
no)
|
|
;;
|
|
*)
|
|
echo "Unknown module name \"$i\"! Exiting..."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for automount support
|
|
AC_MSG_CHECKING(whether to use automount)
|
|
AC_ARG_WITH(automount,
|
|
[ --with-automount Include automount support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for smbmount support
|
|
AC_MSG_CHECKING(whether to use smbmount)
|
|
AC_ARG_WITH(smbmount,
|
|
[ --with-smbmount Include smbmount (Linux only) support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
case "$host_os" in
|
|
*linux*)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
|
|
EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(not on a linux system!)
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
|
|
#################################################
|
|
# check for a PAM clear-text auth, accounts, password and session support
|
|
with_pam_for_crypt=no
|
|
AC_MSG_CHECKING(whether to use PAM)
|
|
AC_ARG_WITH(pam,
|
|
[ --with-pam Include PAM support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
|
|
if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
|
|
if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
|
|
AC_MSG_ERROR(--with-pam specified but no PAM headers found)
|
|
fi
|
|
fi
|
|
fi
|
|
AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
|
|
AUTH_LIBS="$AUTH_LIBS -lpam"
|
|
with_pam_for_crypt=yes
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
# we can't build a pam module if we don't have pam.
|
|
AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
|
|
|
|
#################################################
|
|
# check for pam_smbpass support
|
|
AC_MSG_CHECKING(whether to use pam_smbpass)
|
|
AC_ARG_WITH(pam_smbpass,
|
|
[ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
|
|
# Conditions under which pam_smbpass should not be built.
|
|
|
|
if test x$PICFLAGS = x; then
|
|
AC_MSG_ERROR([No support for PIC code])
|
|
elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
|
|
AC_MSG_ERROR([No security/pam_appl.h found])
|
|
elif test x$ac_cv_lib_pam_pam_get_data = xno; then
|
|
AC_MSG_ERROR([No libpam found])
|
|
else
|
|
AUTH_LIBS="$AUTH_LIBS -lpam"
|
|
SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
|
|
fi
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
|
|
###############################################
|
|
# test for where we get crypt() from
|
|
AC_SEARCH_LIBS(crypt, [crypt],
|
|
[test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
|
|
AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
|
|
|
|
##
|
|
## moved after the check for -lcrypt in order to
|
|
## ensure that the necessary libraries are included
|
|
## check checking for truncated salt. Wrapped by the
|
|
## $with_pam_for_crypt variable as above --jerry
|
|
##
|
|
if test $with_pam_for_crypt = no; then
|
|
AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
|
|
crypt_LIBS="$LIBS"
|
|
LIBS="$AUTH_LIBS $LIBS"
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
|
|
samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
|
|
LIBS="$crypt_LIBS"])
|
|
if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
|
|
AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
|
|
fi
|
|
fi
|
|
|
|
########################################################################################
|
|
##
|
|
## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER
|
|
##
|
|
########################################################################################
|
|
|
|
#################################################
|
|
# check for a LDAP password database configuration backwards compatibility
|
|
AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
|
|
AC_ARG_WITH(ldapsam,
|
|
[ --with-ldapsam Include LDAP SAM 2.2 compatible configuration (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
########################################################################################
|
|
##
|
|
## END OF TESTS FOR SAM BACKENDS.
|
|
##
|
|
########################################################################################
|
|
|
|
#################################################
|
|
# check for a NISPLUS_HOME support
|
|
AC_MSG_CHECKING(whether to use NISPLUS_HOME)
|
|
AC_ARG_WITH(nisplus-home,
|
|
[ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for syslog logging
|
|
AC_MSG_CHECKING(whether to use syslog logging)
|
|
AC_ARG_WITH(syslog,
|
|
[ --with-syslog Include experimental SYSLOG support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for a shared memory profiling support
|
|
AC_MSG_CHECKING(whether to use profiling)
|
|
AC_ARG_WITH(profiling-data,
|
|
[ --with-profiling-data Include gathering source code profile information (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
|
|
#################################################
|
|
# check for experimental disk-quotas support
|
|
|
|
samba_cv_WITH_QUOTAS=auto
|
|
samba_cv_TRY_QUOTAS=no
|
|
samba_cv_RUN_QUOTA_TESTS=auto
|
|
samba_cv_WITH_SYS_QUOTAS=auto
|
|
samba_cv_TRY_SYS_QUOTAS=no
|
|
samba_cv_SYSQUOTA_FOUND=no;
|
|
|
|
AC_MSG_CHECKING(whether to try disk-quotas support)
|
|
AC_ARG_WITH(quotas,
|
|
[ --with-quotas Include disk-quota support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
samba_cv_WITH_QUOTAS=yes
|
|
samba_cv_TRY_QUOTAS=yes
|
|
samba_cv_RUN_QUOTA_TESTS=yes
|
|
#set sys quotas to auto in this case
|
|
samba_cv_TRY_SYS_QUOTAS=auto
|
|
;;
|
|
auto)
|
|
AC_MSG_RESULT(auto)
|
|
samba_cv_WITH_QUOTAS=auto
|
|
samba_cv_TRY_QUOTAS=auto
|
|
samba_cv_RUN_QUOTA_TESTS=auto
|
|
#set sys quotas to auto in this case
|
|
samba_cv_TRY_SYS_QUOTAS=auto
|
|
;;
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
samba_cv_WITH_QUOTAS=no
|
|
samba_cv_TRY_QUOTAS=no
|
|
samba_cv_RUN_QUOTA_TESTS=no
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
|
|
)
|
|
|
|
AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
|
|
AC_ARG_WITH(sys-quotas,
|
|
[ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
|
|
[ case "$withval" in
|
|
yes)
|
|
AC_MSG_RESULT(yes)
|
|
samba_cv_WITH_SYS_QUOTAS=yes
|
|
samba_cv_TRY_SYS_QUOTAS=yes
|
|
samba_cv_RUN_QUOTA_TESTS=yes
|
|
;;
|
|
auto)
|
|
AC_MSG_RESULT(auto)
|
|
samba_cv_WITH_SYS_QUOTAS=auto
|
|
samba_cv_TRY_SYS_QUOTAS=auto
|
|
samba_cv_RUN_QUOTA_TESTS=auto
|
|
;;
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
samba_cv_WITH_SYS_QUOTAS=no
|
|
samba_cv_TRY_SYS_QUOTAS=no
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
|
|
)
|
|
|
|
if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
|
|
AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
|
|
case "$host_os" in
|
|
*linux*)
|
|
AC_MSG_RESULT(yes)
|
|
samba_cv_TRY_SYS_QUOTAS=yes
|
|
samba_cv_RUN_QUOTA_TESTS=yes
|
|
samba_cv_SYSQUOTA_FOUND=yes
|
|
AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
|
|
samba_cv_sysquotas_file="lib/sysquotas_linux.c"
|
|
AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
|
|
samba_cv_found_xfs_header=yes
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
samba_cv_TRY_SYS_QUOTAS=no
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
#############################################
|
|
# only check for quota stuff if --with-quotas
|
|
if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
|
|
|
|
# some broken header files need this
|
|
AC_CHECK_HEADER(asm/types.h,[
|
|
AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
|
|
AC_ADD_INCLUDE(<asm/types.h>)
|
|
])
|
|
|
|
# For quotas on Veritas VxFS filesystems
|
|
AC_CHECK_HEADERS(sys/fs/vx_quota.h)
|
|
|
|
# For sys/quota.h and linux/quota.h
|
|
AC_CHECK_HEADERS(sys/quota.h)
|
|
|
|
if test x"$samba_cv_found_xfs_header" != x"yes"; then
|
|
# if we have xfs quota support <sys/quota.h> (IRIX) we should use it
|
|
AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
|
|
AC_TRY_COMPILE([
|
|
#include "confdefs.h"
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_ASM_TYPES_H
|
|
#include <asm/types.h>
|
|
#endif
|
|
#include <sys/quota.h>
|
|
],[int i = Q_XGETQUOTA;],
|
|
samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
|
|
if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
|
|
samba_cv_found_xfs_header=yes
|
|
fi
|
|
fi
|
|
|
|
# if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
|
|
AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
|
|
AC_TRY_COMPILE([
|
|
#include "confdefs.h"
|
|
#ifdef HAVE_SYS_QUOTA_H
|
|
#include <sys/quota.h>
|
|
#endif
|
|
],[
|
|
struct dqblk D;
|
|
D.dqb_fsoftlimit = 0;],
|
|
samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
|
|
if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
|
|
AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
|
|
fi
|
|
|
|
##################
|
|
# look for a working quota system
|
|
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
|
|
AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
|
|
AC_TRY_RUN_STRICT([
|
|
#define HAVE_QUOTACTL_4A 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
|
|
samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
|
|
if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
|
|
samba_cv_SYSQUOTA_FOUND=yes;
|
|
AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
|
|
samba_cv_sysquotas_file="lib/sysquotas_4A.c"
|
|
fi
|
|
fi
|
|
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
|
|
AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
|
|
AC_TRY_RUN_STRICT([
|
|
#define HAVE_QUOTACTL_4B 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
|
|
samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
|
|
if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
|
|
echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
|
|
samba_cv_SYSQUOTA_FOUND=yes;
|
|
AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
|
|
samba_cv_sysquotas_file="lib/sysquotas_4B.c"
|
|
fi
|
|
fi
|
|
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
|
|
AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
|
|
AC_TRY_RUN_STRICT([
|
|
#define HAVE_QUOTACTL_3 1
|
|
#define AUTOCONF_TEST 1
|
|
#include "confdefs.h"
|
|
#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
|
|
samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
|
|
if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
|
|
echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
|
|
samba_cv_SYSQUOTA_FOUND=yes;
|
|
AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
|
|
samba_cv_sysquotas_file="lib/sysquotas_3.c"
|
|
fi
|
|
fi
|
|
|
|
#################################################
|
|
# check for mntent.h and struct mntent
|
|
AC_CHECK_HEADERS(mntent.h)
|
|
#################################################
|
|
# check for setmntent,getmntent,endmntent
|
|
AC_CHECK_FUNCS(setmntent getmntent endmntent)
|
|
|
|
#################################################
|
|
# check for devnm.h and struct mntent
|
|
AC_CHECK_HEADERS(devnm.h)
|
|
#################################################
|
|
# check for devnm
|
|
AC_CHECK_FUNCS(devnm)
|
|
|
|
if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
|
|
# if --with-sys-quotas=yes then build it
|
|
# you have can use the get/set quota command smb.conf
|
|
# options then
|
|
samba_cv_SYSQUOTA_FOUND=auto
|
|
fi
|
|
if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
|
|
# if --with-sys-quotas=yes then build it
|
|
# you have can use the get/set quota command smb.conf
|
|
# options then
|
|
samba_cv_TRY_SYS_QUOTAS=auto
|
|
fi
|
|
fi
|
|
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
|
|
AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
|
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
|
|
AC_TRY_COMPILE([
|
|
#include "confdefs.h"
|
|
#define NO_PROTO_H 1
|
|
#define NO_CONFIG_H 1
|
|
#define HAVE_SYS_QUOTAS 1
|
|
#include "${srcdir-.}/${samba_cv_sysquotas_file}"
|
|
#include "${srcdir-.}/lib/sysquotas.c"
|
|
],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
|
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
|
])
|
|
if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
|
|
AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
|
|
if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
|
|
AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
|
|
AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
|
|
samba_cv_WE_USE_SYS_QUOTAS=yes
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
|
|
AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
|
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
|
|
AC_TRY_COMPILE([
|
|
#include "confdefs.h"
|
|
#define NO_PROTO_H 1
|
|
#define NO_CONFIG_H 1
|
|
#define HAVE_SYS_QUOTAS 1
|
|
#define HAVE_XFS_QUOTAS 1
|
|
#include "${srcdir-.}/lib/sysquotas_xfs.c"
|
|
],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
|
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
|
])
|
|
if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
|
|
if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
|
|
AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
|
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
|
|
AC_TRY_COMPILE([
|
|
#include "confdefs.h"
|
|
#define NO_PROTO_H 1
|
|
#define NO_CONFIG_H 1
|
|
#include "${srcdir-.}/smbd/quotas.c"
|
|
],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
|
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
|
])
|
|
if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
|
|
AC_MSG_CHECKING(whether to use the old quota support)
|
|
if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
|
|
if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
|
|
AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
fi
|
|
|
|
####################
|
|
# End of quota check samba_cv_RUN_QUOTA_TESTS
|
|
fi
|
|
|
|
#################################################
|
|
# check for experimental utmp accounting
|
|
|
|
AC_MSG_CHECKING(whether to support utmp accounting)
|
|
WITH_UTMP=yes
|
|
AC_ARG_WITH(utmp,
|
|
[ --with-utmp Include utmp accounting (default, if supported by OS)],
|
|
[ case "$withval" in
|
|
no)
|
|
WITH_UTMP=no
|
|
;;
|
|
*)
|
|
WITH_UTMP=yes
|
|
;;
|
|
esac ],
|
|
)
|
|
|
|
# utmp requires utmp.h
|
|
# Note similar check earlier, when checking utmp details.
|
|
|
|
if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
|
|
utmp_no_reason=", no utmp.h on $host_os"
|
|
WITH_UTMP=no
|
|
fi
|
|
|
|
# Display test results
|
|
|
|
if test x"$WITH_UTMP" = x"yes"; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
|
|
else
|
|
AC_MSG_RESULT(no$utmp_no_reason)
|
|
fi
|
|
|
|
#################################################
|
|
# choose native language(s) of man pages
|
|
AC_MSG_CHECKING(chosen man pages' language(s))
|
|
AC_ARG_WITH(manpages-langs,
|
|
[ --with-manpages-langs={en,ja,pl} Choose man pages' language(s). (en)],
|
|
[ case "$withval" in
|
|
yes|no)
|
|
AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
|
|
manlangs="en"
|
|
;;
|
|
*)
|
|
manlangs="$withval"
|
|
;;
|
|
esac
|
|
|
|
AC_MSG_RESULT($manlangs)
|
|
manlangs=`echo $manlangs | sed "s/,/ /g"` # replacing commas with spaces to produce a list
|
|
AC_SUBST(manlangs)],
|
|
|
|
[manlangs="en"
|
|
AC_MSG_RESULT($manlangs)
|
|
AC_SUBST(manlangs)]
|
|
)
|
|
|
|
#################################################
|
|
# should we build libsmbclient?
|
|
|
|
INSTALLCLIENTCMD_SH=:
|
|
INSTALLCLIENTCMD_A=:
|
|
INSTALLCLIENT=
|
|
LIBSMBCLIENT_SHARED=
|
|
LIBSMBCLIENT=
|
|
AC_MSG_CHECKING(whether to build the libsmbclient shared library)
|
|
AC_ARG_WITH(libsmbclient,
|
|
[ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
|
|
[ case "$withval" in
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
*)
|
|
if test $BLDSHARED = true; then
|
|
INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
|
|
## build the static version of libsmbclient as well
|
|
INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
|
|
LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
|
|
LIBSMBCLIENT=libsmbclient
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
enable_static=yes
|
|
AC_MSG_RESULT(no shared library support -- will supply static library)
|
|
fi
|
|
if test $enable_static = yes; then
|
|
INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
|
|
LIBSMBCLIENT=libsmbclient
|
|
fi
|
|
INSTALLCLIENT=installclientlib
|
|
;;
|
|
esac ],
|
|
[
|
|
# if unspecified, default is to built it iff possible.
|
|
if test $BLDSHARED = true; then
|
|
INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
|
|
LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
|
|
LIBSMBCLIENT=libsmbclient
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
enable_static=yes
|
|
AC_MSG_RESULT(no shared library support -- will supply static library)
|
|
fi
|
|
if test $enable_static = yes; then
|
|
INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
|
|
LIBSMBCLIENT=libsmbclient
|
|
fi]
|
|
INSTALLCLIENT=installclientlib
|
|
)
|
|
|
|
|
|
#################################################
|
|
# these tests are taken from the GNU fileutils package
|
|
AC_CHECKING(how to get filesystem space usage)
|
|
space=no
|
|
|
|
# Test for statvfs64.
|
|
if test $space = no; then
|
|
# SVR4
|
|
AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
|
|
[AC_TRY_RUN([
|
|
#if defined(HAVE_UNISTD_H)
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <sys/types.h>
|
|
#include <sys/statvfs.h>
|
|
main ()
|
|
{
|
|
struct statvfs64 fsd;
|
|
exit (statvfs64 (".", &fsd));
|
|
}],
|
|
fu_cv_sys_stat_statvfs64=yes,
|
|
fu_cv_sys_stat_statvfs64=no,
|
|
fu_cv_sys_stat_statvfs64=cross)])
|
|
if test $fu_cv_sys_stat_statvfs64 = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
|
|
fi
|
|
fi
|
|
|
|
# Perform only the link test since it seems there are no variants of the
|
|
# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
|
|
# because that got a false positive on SCO OSR5. Adding the declaration
|
|
# of a `struct statvfs' causes this test to fail (as it should) on such
|
|
# systems. That system is reported to work fine with STAT_STATFS4 which
|
|
# is what it gets when this test fails.
|
|
if test $space = no; then
|
|
# SVR4
|
|
AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
|
|
[AC_TRY_LINK([#include <sys/types.h>
|
|
#include <sys/statvfs.h>],
|
|
[struct statvfs fsd; statvfs (0, &fsd);],
|
|
fu_cv_sys_stat_statvfs=yes,
|
|
fu_cv_sys_stat_statvfs=no)])
|
|
if test $fu_cv_sys_stat_statvfs = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
|
|
fi
|
|
fi
|
|
|
|
if test $space = no; then
|
|
# DEC Alpha running OSF/1
|
|
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
|
|
AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
|
|
[AC_TRY_RUN([
|
|
#include <sys/param.h>
|
|
#include <sys/types.h>
|
|
#include <sys/mount.h>
|
|
main ()
|
|
{
|
|
struct statfs fsd;
|
|
fsd.f_fsize = 0;
|
|
exit (statfs (".", &fsd, sizeof (struct statfs)));
|
|
}],
|
|
fu_cv_sys_stat_statfs3_osf1=yes,
|
|
fu_cv_sys_stat_statfs3_osf1=no,
|
|
fu_cv_sys_stat_statfs3_osf1=no)])
|
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
|
|
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
|
|
fi
|
|
fi
|
|
|
|
if test $space = no; then
|
|
# AIX
|
|
AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
|
|
member (AIX, 4.3BSD)])
|
|
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
|
|
[AC_TRY_RUN([
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_MOUNT_H
|
|
#include <sys/mount.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_VFS_H
|
|
#include <sys/vfs.h>
|
|
#endif
|
|
main ()
|
|
{
|
|
struct statfs fsd;
|
|
fsd.f_bsize = 0;
|
|
exit (statfs (".", &fsd));
|
|
}],
|
|
fu_cv_sys_stat_statfs2_bsize=yes,
|
|
fu_cv_sys_stat_statfs2_bsize=no,
|
|
fu_cv_sys_stat_statfs2_bsize=no)])
|
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
|
|
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
|
|
fi
|
|
fi
|
|
|
|
if test $space = no; then
|
|
# SVR3
|
|
AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
|
|
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
|
|
[AC_TRY_RUN([#include <sys/types.h>
|
|
#include <sys/statfs.h>
|
|
main ()
|
|
{
|
|
struct statfs fsd;
|
|
exit (statfs (".", &fsd, sizeof fsd, 0));
|
|
}],
|
|
fu_cv_sys_stat_statfs4=yes,
|
|
fu_cv_sys_stat_statfs4=no,
|
|
fu_cv_sys_stat_statfs4=no)])
|
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
|
|
if test $fu_cv_sys_stat_statfs4 = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
|
|
fi
|
|
fi
|
|
|
|
if test $space = no; then
|
|
# 4.4BSD and NetBSD
|
|
AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
|
|
member (4.4BSD and NetBSD)])
|
|
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
|
|
[AC_TRY_RUN([#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_MOUNT_H
|
|
#include <sys/mount.h>
|
|
#endif
|
|
main ()
|
|
{
|
|
struct statfs fsd;
|
|
fsd.f_fsize = 0;
|
|
exit (statfs (".", &fsd));
|
|
}],
|
|
fu_cv_sys_stat_statfs2_fsize=yes,
|
|
fu_cv_sys_stat_statfs2_fsize=no,
|
|
fu_cv_sys_stat_statfs2_fsize=no)])
|
|
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
|
|
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
|
|
fi
|
|
fi
|
|
|
|
if test $space = no; then
|
|
# Ultrix
|
|
AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
|
|
AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
|
|
[AC_TRY_RUN([#include <sys/types.h>
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_MOUNT_H
|
|
#include <sys/mount.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_FS_TYPES_H
|
|
#include <sys/fs_types.h>
|
|
#endif
|
|
main ()
|
|
{
|
|
struct fs_data fsd;
|
|
/* Ultrix's statfs returns 1 for success,
|
|
0 for not mounted, -1 for failure. */
|
|
exit (statfs (".", &fsd) != 1);
|
|
}],
|
|
fu_cv_sys_stat_fs_data=yes,
|
|
fu_cv_sys_stat_fs_data=no,
|
|
fu_cv_sys_stat_fs_data=no)])
|
|
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
|
|
if test $fu_cv_sys_stat_fs_data = yes; then
|
|
space=yes
|
|
AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# As a gating factor for large file support, in order to
|
|
# use <4GB files we must have the following minimal support
|
|
# available.
|
|
# long long, and a 64 bit off_t or off64_t.
|
|
# If we don't have all of these then disable large
|
|
# file support.
|
|
#
|
|
AC_MSG_CHECKING([if large file support can be enabled])
|
|
AC_TRY_COMPILE([
|
|
#if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
|
|
#include <sys/types.h>
|
|
#else
|
|
__COMPILE_ERROR_
|
|
#endif
|
|
],
|
|
[int i],
|
|
samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
|
|
if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
|
|
AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
|
|
fi
|
|
AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
|
|
|
|
AC_ARG_WITH(spinlocks,
|
|
[ --with-spinlocks Use spin locks instead of fcntl locks (default=no) ])
|
|
if test "x$with_spinlocks" = "xyes"; then
|
|
AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
|
|
|
|
case "$host_cpu" in
|
|
sparc)
|
|
AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
|
|
;;
|
|
|
|
i386|i486|i586|i686)
|
|
AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
|
|
;;
|
|
|
|
mips)
|
|
AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
|
|
;;
|
|
|
|
powerpc)
|
|
AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
#################################################
|
|
# check for ACL support
|
|
|
|
AC_MSG_CHECKING(whether to support ACLs)
|
|
AC_ARG_WITH(acl-support,
|
|
[ --with-acl-support Include ACL support (default=no)],
|
|
[ case "$withval" in
|
|
yes)
|
|
|
|
case "$host_os" in
|
|
*sysv5*)
|
|
AC_MSG_RESULT(Using UnixWare ACLs)
|
|
AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
|
|
;;
|
|
*solaris*)
|
|
AC_MSG_RESULT(Using solaris ACLs)
|
|
AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
|
|
;;
|
|
*hpux*)
|
|
AC_MSG_RESULT(Using HPUX ACLs)
|
|
AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
|
|
;;
|
|
*irix*)
|
|
AC_MSG_RESULT(Using IRIX ACLs)
|
|
AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
|
|
;;
|
|
*aix*)
|
|
AC_MSG_RESULT(Using AIX ACLs)
|
|
AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
|
|
;;
|
|
*osf*)
|
|
AC_MSG_RESULT(Using Tru64 ACLs)
|
|
AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
|
|
ACL_LIBS="$ACL_LIBS -lpacl"
|
|
;;
|
|
*freebsd5*)
|
|
AC_MSG_RESULT(Using FreeBSD posix ACLs)
|
|
AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
|
|
AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
|
|
;;
|
|
*linux*)
|
|
AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
|
|
AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
|
|
AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
|
|
acl_LIBS=$LIBS
|
|
LIBS="$LIBS -lacl"
|
|
AC_TRY_LINK([#include <sys/types.h>
|
|
#include <sys/acl.h>],
|
|
[ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
|
|
samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
|
|
LIBS=$acl_LIBS])
|
|
if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
|
|
AC_MSG_RESULT(Using posix ACLs)
|
|
AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
|
|
AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
|
|
acl_LIBS=$LIBS
|
|
LIBS="$LIBS -lacl"
|
|
AC_TRY_LINK([#include <sys/types.h>
|
|
#include <sys/acl.h>],
|
|
[ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
|
|
samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
|
|
LIBS=$acl_LIBS])
|
|
if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
|
|
AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
|
|
fi
|
|
fi
|
|
;;
|
|
*)
|
|
AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
|
|
AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
|
|
acl_LIBS=$LIBS
|
|
LIBS="$LIBS -lacl"
|
|
AC_TRY_LINK([#include <sys/types.h>
|
|
#include <sys/acl.h>],
|
|
[ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
|
|
samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
|
|
LIBS=$acl_LIBS])
|
|
if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
|
|
AC_MSG_RESULT(Using posix ACLs)
|
|
AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
|
|
AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
|
|
acl_LIBS=$LIBS
|
|
LIBS="$LIBS -lacl"
|
|
AC_TRY_LINK([#include <sys/types.h>
|
|
#include <sys/acl.h>],
|
|
[ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
|
|
samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
|
|
LIBS=$acl_LIBS])
|
|
if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
|
|
AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
|
|
;;
|
|
esac ],
|
|
AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
#################################################
|
|
# check for sendfile support
|
|
|
|
with_sendfile_support=yes
|
|
AC_MSG_CHECKING(whether to check to support sendfile)
|
|
AC_ARG_WITH(sendfile-support,
|
|
[ --with-sendfile-support Check for sendfile support (default=yes)],
|
|
[ case "$withval" in
|
|
yes)
|
|
|
|
AC_MSG_RESULT(yes);
|
|
|
|
case "$host_os" in
|
|
*linux*)
|
|
AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
|
|
AC_TRY_LINK([#include <sys/sendfile.h>],
|
|
[\
|
|
int tofd, fromfd;
|
|
off64_t offset;
|
|
size_t total;
|
|
ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
|
|
],
|
|
samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
|
|
|
|
AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
|
|
AC_TRY_LINK([#include <sys/sendfile.h>],
|
|
[\
|
|
int tofd, fromfd;
|
|
off_t offset;
|
|
size_t total;
|
|
ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
|
|
],
|
|
samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
|
|
|
|
# Try and cope with broken Linux sendfile....
|
|
AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
|
|
AC_TRY_LINK([\
|
|
#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
|
|
#undef _FILE_OFFSET_BITS
|
|
#endif
|
|
#include <sys/sendfile.h>],
|
|
[\
|
|
int tofd, fromfd;
|
|
off_t offset;
|
|
size_t total;
|
|
ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
|
|
],
|
|
samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
|
|
|
|
if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
|
|
AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
|
|
elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
|
|
AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
|
|
elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
|
|
AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
;;
|
|
*freebsd*)
|
|
AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
|
|
AC_TRY_LINK([\
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/uio.h>],
|
|
[\
|
|
int fromfd, tofd, ret, total=0;
|
|
off_t offset, nwritten;
|
|
struct sf_hdtr hdr;
|
|
struct iovec hdtrl;
|
|
hdr.headers = &hdtrl;
|
|
hdr.hdr_cnt = 1;
|
|
hdr.trailers = NULL;
|
|
hdr.trl_cnt = 0;
|
|
hdtrl.iov_base = NULL;
|
|
hdtrl.iov_len = 0;
|
|
ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
|
|
],
|
|
samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
|
|
|
|
if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
|
|
AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
;;
|
|
|
|
*hpux*)
|
|
AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
|
|
AC_TRY_LINK([\
|
|
#include <sys/socket.h>
|
|
#include <sys/uio.h>],
|
|
[\
|
|
int fromfd, tofd;
|
|
size_t total=0;
|
|
struct iovec hdtrl[2];
|
|
ssize_t nwritten;
|
|
off64_t offset;
|
|
|
|
hdtrl[0].iov_base = 0;
|
|
hdtrl[0].iov_len = 0;
|
|
|
|
nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
|
|
],
|
|
samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
|
|
if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
|
|
AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
|
|
AC_TRY_LINK([\
|
|
#include <sys/socket.h>
|
|
#include <sys/uio.h>],
|
|
[\
|
|
int fromfd, tofd;
|
|
size_t total=0;
|
|
struct iovec hdtrl[2];
|
|
ssize_t nwritten;
|
|
off_t offset;
|
|
|
|
hdtrl[0].iov_base = 0;
|
|
hdtrl[0].iov_len = 0;
|
|
|
|
nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
|
|
],
|
|
samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
|
|
if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
|
|
AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
;;
|
|
|
|
*solaris*)
|
|
AC_CHECK_LIB(sendfile,sendfilev)
|
|
AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
|
|
AC_TRY_LINK([\
|
|
#include <sys/sendfile.h>],
|
|
[\
|
|
int sfvcnt;
|
|
size_t xferred;
|
|
struct sendfilevec vec[2];
|
|
ssize_t nwritten;
|
|
int tofd;
|
|
|
|
sfvcnt = 2;
|
|
|
|
vec[0].sfv_fd = SFV_FD_SELF;
|
|
vec[0].sfv_flag = 0;
|
|
vec[0].sfv_off = 0;
|
|
vec[0].sfv_len = 0;
|
|
|
|
vec[1].sfv_fd = 0;
|
|
vec[1].sfv_flag = 0;
|
|
vec[1].sfv_off = 0;
|
|
vec[1].sfv_len = 0;
|
|
nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
|
|
],
|
|
samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
|
|
|
|
if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
|
|
AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
|
|
AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
|
|
AC_TRY_LINK([\
|
|
#include <sys/sendfile.h>],
|
|
[\
|
|
int sfvcnt;
|
|
size_t xferred;
|
|
struct sendfilevec vec[2];
|
|
ssize_t nwritten;
|
|
int tofd;
|
|
|
|
sfvcnt = 2;
|
|
|
|
vec[0].sfv_fd = SFV_FD_SELF;
|
|
vec[0].sfv_flag = 0;
|
|
vec[0].sfv_off = 0;
|
|
vec[0].sfv_len = 0;
|
|
|
|
vec[1].sfv_fd = 0;
|
|
vec[1].sfv_flag = 0;
|
|
vec[1].sfv_off = 0;
|
|
vec[1].sfv_len = 0;
|
|
nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
|
|
],
|
|
samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
|
|
|
|
if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
|
|
AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
|
|
AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
|
|
AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
|
|
else
|
|
AC_MSG_RESULT(no);
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(yes)
|
|
)
|
|
|
|
|
|
#################################################
|
|
# Check whether winbind is supported on this platform. If so we need to
|
|
# build and install client programs, sbin programs and shared libraries
|
|
|
|
AC_MSG_CHECKING(whether to build winbind)
|
|
|
|
# Initially, the value of $host_os decides whether winbind is supported
|
|
|
|
HAVE_WINBIND=yes
|
|
|
|
# Define the winbind shared library name and any specific linker flags
|
|
# it needs to be built with.
|
|
|
|
WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
|
|
WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
|
|
WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
|
|
|
|
case "$host_os" in
|
|
*linux*)
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
|
|
;;
|
|
*freebsd5*)
|
|
# FreeBSD winbind client is implemented as a wrapper around
|
|
# the Linux version.
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
|
|
nsswitch/winbind_nss_linux.o"
|
|
;;
|
|
*irix*)
|
|
# IRIX has differently named shared libraries
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
|
|
WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
|
|
WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
|
|
;;
|
|
*solaris*)
|
|
# Solaris winbind client is implemented as a wrapper around
|
|
# the Linux version.
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
|
|
nsswitch/winbind_nss_linux.o"
|
|
WINBIND_NSS_EXTRA_LIBS="-lsocket"
|
|
;;
|
|
*hpux11*)
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
|
|
;;
|
|
*aix*)
|
|
# AIX has even differently named shared libraries. No
|
|
# WINS support has been implemented yet.
|
|
WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
|
|
WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
|
|
WINBIND_NSS="nsswitch/WINBIND"
|
|
WINBIND_WINS_NSS=""
|
|
;;
|
|
*)
|
|
HAVE_WINBIND=no
|
|
winbind_no_reason=", unsupported on $host_os"
|
|
;;
|
|
esac
|
|
|
|
AC_SUBST(WINBIND_NSS)
|
|
AC_SUBST(WINBIND_WINS_NSS)
|
|
AC_SUBST(WINBIND_NSS_LDSHFLAGS)
|
|
AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
|
|
AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
|
|
|
|
# Check the setting of --with-winbindd
|
|
|
|
AC_ARG_WITH(winbind,
|
|
[ --with-winbind Build winbind (default, if supported by OS)],
|
|
[
|
|
case "$withval" in
|
|
yes)
|
|
HAVE_WINBIND=yes
|
|
;;
|
|
no)
|
|
HAVE_WINBIND=no
|
|
winbind_reason=""
|
|
;;
|
|
esac ],
|
|
)
|
|
|
|
# We need unix domain sockets for winbind
|
|
|
|
if test x"$HAVE_WINBIND" = x"yes"; then
|
|
if test x"$samba_cv_unixsocket" = x"no"; then
|
|
winbind_no_reason=", no unix domain socket support on $host_os"
|
|
HAVE_WINBIND=no
|
|
fi
|
|
fi
|
|
|
|
# Display test results
|
|
|
|
if test x"$HAVE_WINBIND" = x"yes"; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
|
|
|
|
EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
|
|
EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
|
|
if test x"$BLDSHARED" = x"true"; then
|
|
SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
|
|
|
|
if test x"$with_pam" = x"yes"; then
|
|
SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
|
|
fi
|
|
fi
|
|
else
|
|
AC_MSG_RESULT(no$winbind_no_reason)
|
|
fi
|
|
|
|
# Solaris has some extra fields in struct passwd that need to be
|
|
# initialised otherwise nscd crashes.
|
|
|
|
AC_CHECK_MEMBER(struct passwd.pw_comment,
|
|
AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
|
|
[#include <pwd.h>])
|
|
|
|
AC_CHECK_MEMBER(struct passwd.pw_age,
|
|
AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
|
|
[#include <pwd.h>])
|
|
|
|
#################################################
|
|
# Check to see if we should use the included popt
|
|
|
|
AC_ARG_WITH(included-popt,
|
|
[ --with-included-popt use bundled popt library, not from system],
|
|
[
|
|
case "$withval" in
|
|
yes)
|
|
INCLUDED_POPT=yes
|
|
;;
|
|
no)
|
|
INCLUDED_POPT=no
|
|
;;
|
|
esac ],
|
|
)
|
|
if test x"$INCLUDED_POPT" != x"yes"; then
|
|
AC_CHECK_LIB(popt, poptGetContext,
|
|
INCLUDED_POPT=no, INCLUDED_POPT=yes)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(whether to use included popt)
|
|
if test x"$INCLUDED_POPT" = x"yes"; then
|
|
AC_MSG_RESULT(yes)
|
|
BUILD_POPT='$(POPT_OBJS)'
|
|
POPTLIBS='$(POPT_OBJS)'
|
|
FLAGS1="-I$srcdir/popt"
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
BUILD_POPT=""
|
|
POPTLIBS="-lpopt"
|
|
fi
|
|
AC_SUBST(BUILD_POPT)
|
|
AC_SUBST(POPTLIBS)
|
|
AC_SUBST(FLAGS1)
|
|
|
|
#################################################
|
|
# Check if the user wants Python
|
|
|
|
# At the moment, you can use this to set which Python binary to link
|
|
# against. (Libraries built for Python2.2 can't be used by 2.1,
|
|
# though they can coexist in different directories.) In the future
|
|
# this might make the Python stuff be built by default.
|
|
|
|
# Defaulting python breaks the clean target if python isn't installed
|
|
|
|
PYTHON=
|
|
|
|
AC_ARG_WITH(python,
|
|
[ --with-python=PYTHONNAME build Python libraries],
|
|
[ case "${withval-python}" in
|
|
yes)
|
|
PYTHON=python
|
|
EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
|
|
;;
|
|
no)
|
|
PYTHON=
|
|
;;
|
|
*)
|
|
PYTHON=${withval-python}
|
|
;;
|
|
esac ])
|
|
AC_SUBST(PYTHON)
|
|
|
|
for i in `echo $default_static_modules | sed -e's/,/ /g'`
|
|
do
|
|
eval MODULE_DEFAULT_$i=STATIC
|
|
done
|
|
|
|
for i in `echo $default_shared_modules | sed -e's/,/ /g'`
|
|
do
|
|
dnl Fall back to static if dlopen() is not available
|
|
eval MODULE_DEFAULT_$i=STATIC
|
|
|
|
if test x"$ac_cv_func_dlopen" = xyes; then
|
|
eval MODULE_DEFAULT_$i=SHARED
|
|
fi
|
|
done
|
|
|
|
dnl Always built these modules static
|
|
MODULE_pdb_guest=STATIC
|
|
MODULE_rpc_spoolss=STATIC
|
|
MODULE_rpc_srv=STATIC
|
|
MODULE_idmap_tdb=STATIC
|
|
|
|
AC_ARG_WITH(static-modules,
|
|
[ --with-static-modules=MODULES Comma-seperated list of names of modules to statically link in],
|
|
[ if test $withval; then
|
|
for i in `echo $withval | sed -e's/,/ /g'`
|
|
do
|
|
eval MODULE_$i=STATIC
|
|
done
|
|
fi ])
|
|
|
|
AC_ARG_WITH(shared-modules,
|
|
[ --with-shared-modules=MODULES Comma-seperated list of names of modules to build shared],
|
|
[ if test $withval; then
|
|
for i in `echo $withval | sed -e's/,/ /g'`
|
|
do
|
|
eval MODULE_$i=SHARED
|
|
done
|
|
fi ])
|
|
|
|
###########################################################################
|
|
## contributed pdb_modules
|
|
|
|
SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
|
|
[ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
|
|
SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB,
|
|
[ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ] )
|
|
SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB,
|
|
[ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ] )
|
|
|
|
## end of contributed pdb_modules
|
|
###########################################################################
|
|
|
|
SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB,
|
|
[ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
|
|
SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
|
|
SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
|
|
SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
|
|
SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
|
|
|
|
SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
|
|
SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
|
|
SMB_SUBSYSTEM(RPC,smbd/server.o)
|
|
|
|
SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
|
|
SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
|
|
SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
|
|
|
|
SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
|
|
SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
|
|
SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
|
|
SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
|
|
SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
|
|
|
|
SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
|
|
SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
|
|
SMB_SUBSYSTEM(AUTH,auth/auth.o)
|
|
|
|
SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
|
|
SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
|
|
SMB_SUBSYSTEM(VFS,smbd/vfs.o)
|
|
|
|
AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
|
|
|
|
#################################################
|
|
# do extra things if we are running insure
|
|
|
|
if test "${ac_cv_prog_CC}" = "insure"; then
|
|
CPPFLAGS="$CPPFLAGS -D__INSURE__"
|
|
fi
|
|
|
|
#################################################
|
|
# Display summary of libraries detected
|
|
|
|
AC_MSG_RESULT([Using libraries:])
|
|
AC_MSG_RESULT([ LIBS = $LIBS])
|
|
if test x"$with_ads_support" != x"no"; then
|
|
AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
|
|
fi
|
|
if test x"$with_ldap_support" != x"no"; then
|
|
AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
|
|
fi
|
|
AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
|
|
|
|
#################################################
|
|
# final configure stuff
|
|
|
|
AC_MSG_CHECKING([configure summary])
|
|
AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
|
|
AC_MSG_WARN([cannot run when cross-compiling]))
|
|
|
|
builddir=`pwd`
|
|
AC_SUBST(builddir)
|
|
|
|
dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
|
|
LIB_REMOVE_USR_LIB(LDFLAGS)
|
|
LIB_REMOVE_USR_LIB(LIBS)
|
|
|
|
dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
|
|
CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
|
|
CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
|
|
|
|
AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
|
|
|
|
#################################################
|
|
# Print very concise instructions on building/use
|
|
if test "x$enable_dmalloc" = xyes
|
|
then
|
|
AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
|
|
AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])
|
|
fi
|