dnl -*- mode: m4-mode -*- dnl Process this file with autoconf to produce a configure script. AC_INIT(include/includes.h) AC_CONFIG_HEADER(include/config.h) ################################################# # 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)], codepagedir="\$(DATADIR)/samba/codepages" configdir="${sysconfdir}/samba" lockdir="\${VARDIR}/cache/samba" piddir="\$(VARDIR)/run/samba" logfilebase="\${VARDIR}/log/samba" privatedir="\${CONFIGDIR}/private" swatdir="\${DATADIR}/samba/swat", codepagedir="\$(LIBDIR)/codepages" 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 codepage directory location AC_ARG_WITH(codepagedir, [ --with-codepagedir=DIR Where to put codepage files (\$libdir/codepages)], [ case "$withval" in yes|no) # # Just in case anybody does it # AC_MSG_WARN([--with-codepagedir called without argument - will use default]) ;; * ) codepagedir="$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_SUBST(codepagedir) 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(RUNPROG) AC_SUBST(MPROGS) AC_SUBST(LDSHFLAGS) AC_SUBST(SHLD) AC_SUBST(HOST_OS) AC_SUBST(PAM_MOD) AC_SUBST(WRAP) AC_SUBST(WRAP32) AC_SUBST(PICFLAG) AC_SUBST(PICSUFFIX) AC_SUBST(POBAD_CC) AC_SUBST(SHLIBEXT) AC_SUBST(LIBSMBCLIENT_SHARED) # compile with optimisation and without debugging by default CFLAGS="-O ${CFLAGS}" 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 CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -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 CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -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. AC_PROG_CC AC_PROG_INSTALL AC_PROG_AWK dnl Check if we use GNU ld LD=ld AC_PROG_LD_GNU dnl needed before AC_TRY_COMPILE AC_ISC_POSIX 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 volatile (it should, being ANSI). AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [ AC_TRY_COMPILE([#include ],[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) fi AC_CANONICAL_SYSTEM dnl Add #include for broken IRIX header files case "$host_os" in *irix6*) AC_ADD_INCLUDE() ;; esac AC_VALIDATE_CACHE_SYSTEM_TYPE DYNEXP= # # 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) 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" AC_DEFINE(USE_BOTH_CRYPT_CALLS) AC_DEFINE(_HPUX_SOURCE) AC_DEFINE(_POSIX_SOURCE) AC_DEFINE(_ALIGNMENT_REQUIRED,1) AC_DEFINE(_MAX_ALIGNMENT,4) ;; *11*) CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4" AC_DEFINE(USE_BOTH_CRYPT_CALLS) AC_DEFINE(_HPUX_SOURCE) AC_DEFINE(_POSIX_SOURCE) AC_DEFINE(_LARGEFILE64_SOURCE) AC_DEFINE(_ALIGNMENT_REQUIRED,1) AC_DEFINE(_MAX_ALIGNMENT,4) ;; 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) ;; # # 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*) 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) ;; *) CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" AC_DEFINE(_LARGEFILE64_SOURCE) AC_DEFINE(_FILE_OFFSET_BITS,64) ;; esac else CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" AC_DEFINE(_LARGEFILE64_SOURCE) AC_DEFINE(_FILE_OFFSET_BITS,64) fi ;; 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 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) 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 #include 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 = 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) AC_DEFINE(_FILE_OFFSET_BITS,64) AC_DEFINE(_GNU_SOURCE) fi AC_MSG_RESULT([$LINUX_LFS_SUPPORT]) ;; *hurd*) AC_MSG_CHECKING([for LFS support]) old_CPPFLAGS="$CPPFLAGS" CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" AC_TRY_RUN([ #include 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) AC_DEFINE(_GNU_SOURCE) 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(compat.h 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 ldap.h lber.h dlfcn.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 ],[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) 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 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/cdefs.h glob.h) # For experimental utmp support (lastlog on some BSD-like systems) AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h) # For quotas on Veritas VxFS filesystems AC_CHECK_HEADERS(sys/fs/vx_quota.h) # For quotas on Linux XFS filesystems AC_CHECK_HEADERS(linux/xqm.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) CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" LIBS="$LIBS `$CUPS_CONFIG --libs`" fi fi ############################################ # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the new VFS code AC_CHECK_FUNCS(dlopen) if test x"$ac_cv_func_dlopen" = x"no"; then AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl"; AC_DEFINE(HAVE_DLOPEN)]) fi # 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 ], [ 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) fi ############################################ # check for unix domain sockets AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [ AC_TRY_COMPILE([ #include #include #include #include #include ], [ 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) fi AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [ AC_TRY_COMPILE([ #include #if STDC_HEADERS #include #include #endif #include ],[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) fi AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [ AC_TRY_COMPILE([ #include #if STDC_HEADERS #include #include #endif #include ],[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) fi # stupid headers have the functions but no declaration. grrrr. AC_HAVE_DECL(errno, [#include ]) AC_HAVE_DECL(setresuid, [#include ]) AC_HAVE_DECL(setresgid, [#include ]) AC_HAVE_DECL(asprintf, [#include ]) AC_HAVE_DECL(vasprintf, [#include ]) AC_HAVE_DECL(vsnprintf, [#include ]) AC_HAVE_DECL(snprintf, [#include ]) # 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 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) fi # Do the same check for setresguid... # AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[ AC_TRY_RUN([#include #include 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) fi AC_FUNC_MEMCMP ############################################### # test for where we get crypt() from AC_CHECK_FUNCS(crypt) if test x"$ac_cv_func_crypt" = x"no"; then AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt"; AC_DEFINE(HAVE_CRYPT)]) fi ############################################### # 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; 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) 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) 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) fi fi ############################################### # test for where we get get_yp_default_domain() from AC_CHECK_FUNCS(yp_get_default_domain) if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl"; AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) fi # 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 RUNPROG="bin/smbrun" else RUNPROG="" 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) # setbuffer is needed for smbtorture AC_CHECK_FUNCS(setbuffer) # 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(_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) # # stat64 family may need on some systems, notably ReliantUNIX # if test x$ac_cv_func_stat64 = xno ; then AC_MSG_CHECKING([for stat64 in ]) AC_TRY_LINK([ #if defined(HAVE_UNISTD_H) #include #endif #include ], [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) fi fi if test x$ac_cv_func_lstat64 = xno ; then AC_MSG_CHECKING([for lstat64 in ]) AC_TRY_LINK([ #if defined(HAVE_UNISTD_H) #include #endif #include ], [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) fi fi if test x$ac_cv_func_fstat64 = xno ; then AC_MSG_CHECKING([for fstat64 in ]) AC_TRY_LINK([ #if defined(HAVE_UNISTD_H) #include #endif #include ], [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) 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) # 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 # these are the defaults, good for lots of systems HOST_OS="$host_os" LDSHFLAGS="-shared" SHLD="\${CC}" PICFLAG="" PICSUFFIX="po" POBAD_CC="#" SHLIBEXT="so" # Assume non-shared by default and override below BLDSHARED="false" AC_MSG_CHECKING([ability to build shared libraries]) # and these are for particular systems case "$host_os" in *linux*) AC_DEFINE(LINUX) BLDSHARED="true" LDSHFLAGS="-shared" DYNEXP="-Wl,--export-dynamic" PICFLAG="-fPIC" AC_DEFINE(STAT_ST_BLOCKSIZE,512) ;; *solaris*) AC_DEFINE(SUNOS5) BLDSHARED="true" LDSHFLAGS="-G" if test "${GCC}" = "yes"; then PICFLAG="-fPIC" if test "${ac_cv_prog_gnu_ld}" = "yes"; then DYNEXP="-Wl,-E" fi else PICFLAG="-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) ;; *sunos*) AC_DEFINE(SUNOS4) BLDSHARED="true" LDSHFLAGS="-G" PICFLAG="-KPIC" # Is this correct for SunOS ;; *bsd*) BLDSHARED="true" LDSHFLAGS="-shared" DYNEXP="-Wl,-Bdynamic" PICFLAG="-fPIC" AC_DEFINE(STAT_ST_BLOCKSIZE,512) ;; *irix*) AC_DEFINE(IRIX) case "$host_os" in *irix6*) AC_DEFINE(IRIX6) ;; esac ATTEMPT_WRAP32_BUILD=yes BLDSHARED="true" LDSHFLAGS="-set_version sgi1.0 -shared" SHLD="\${LD}" if test "${GCC}" = "yes"; then PICFLAG="-fPIC" else PICFLAG="-KPIC" fi AC_DEFINE(STAT_ST_BLOCKSIZE,512) ;; *aix*) AC_DEFINE(AIX) BLDSHARED="true" LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry" DYNEXP="-Wl,-brtl,-bexpall" if test "${GCC}" = "yes"; then PICFLAG="-O2" else PICFLAG="-O2 -qmaxmem=6000" ## for funky AIX compiler using strncpy() CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT" fi AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE) ;; *hpux*) AC_DEFINE(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" PICFLAG="+z" fi DYNEXP="-Wl,-E" AC_DEFINE(STAT_ST_BLOCKSIZE,8192) ;; *qnx*) AC_DEFINE(QNX);; *osf*) AC_DEFINE(OSF1) BLDSHARED="true" LDSHFLAGS="-shared" PICFLAG="-fPIC" ;; *sco*) AC_DEFINE(SCO);; *unixware*) AC_DEFINE(UNIXWARE) BLDSHARED="true" LDSHFLAGS="-shared" PICFLAG="-KPIC" ;; *next2*) AC_DEFINE(NEXT2);; *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);; *sysv4*) case "$host" in *-univel-*) if [ test "$GCC" != yes ]; then AC_DEFINE(HAVE_MEMSET) fi LDSHFLAGS="-G" DYNEXP="-Bexport" ;; *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);; esac ;; *sysv5*) if [ test "$GCC" != yes ]; then AC_DEFINE(HAVE_MEMSET) fi LDSHFLAGS="-G" ;; 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]) ####################################################### # 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 $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c && $CC $CPPFLAGS $CFLAGS $LDSHFLAGS -o shlib.so shlib.po && ac_cv_shlib_works=yes rm -f shlib.so shlib.po ]) if test $ac_cv_shlib_works = no; then BLDSHARED=false fi fi # this updates our target list if we can build shared libs if test $BLDSHARED = true; then LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT else LIBSMBCLIENT_SHARED= fi ################ AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[ AC_TRY_RUN([#include 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) 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 ],[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) fi AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[ AC_TRY_RUN([#include #include 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) fi AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[ AC_TRY_RUN([ #if defined(HAVE_UNISTD_H) #include #endif #include #include 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) fi AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[ AC_TRY_RUN([#include #include 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) fi AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[ AC_TRY_RUN([ #if defined(HAVE_UNISTD_H) #include #endif #include #include 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) fi AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[ AC_TRY_RUN([ #if defined(HAVE_UNISTD_H) #include #endif #include #include 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) fi AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[ AC_TRY_COMPILE([ #if defined(HAVE_UNISTD_H) #include #endif #include #include ], [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) fi AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[ AC_TRY_RUN([ #if defined(HAVE_UNISTD_H) #include #endif #include 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) fi AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[ AC_TRY_RUN([ #if defined(HAVE_UNISTD_H) #include #endif #include 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) fi AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[ AC_TRY_RUN([#include 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) fi AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[ AC_TRY_COMPILE([#include #include #include ], [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) fi AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[ AC_TRY_COMPILE([#include #include 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) fi AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[ AC_TRY_COMPILE([#include ], [printf("%s\n", __FILE__);], samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)]) if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then AC_DEFINE(HAVE_FILE_MACRO) fi AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[ AC_TRY_COMPILE([#include ], [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) fi AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[ AC_TRY_RUN([ #include #include 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) fi AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[ AC_TRY_LINK([#include 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) fi AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[ AC_TRY_RUN([ #include #include 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) fi AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[ AC_TRY_RUN([#include #include 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) fi AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[ AC_TRY_COMPILE([#include #include ], [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) fi 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 #include ], [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) fi AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[ AC_TRY_COMPILE([#include #include ], [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) 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 #include ], [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) fi fi AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[ AC_TRY_COMPILE([#include #include ], [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) fi ################################################# # check for libiconv support AC_MSG_CHECKING(whether to use libiconv) AC_ARG_WITH(libiconv, [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ], [ case "$withval" in no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) CFLAGS="$CFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" AC_CHECK_LIB(iconv, iconv_open) AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}") ;; esac ], AC_MSG_RESULT(no) ) ############ # check for iconv in libc AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[ AC_TRY_RUN([ #include main() { iconv_t cd = iconv_open("ASCII", "UCS-2LE"); if (cd == 0 || cd == (iconv_t)-1) return -1; return 0; } ], samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)]) if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then AC_DEFINE(HAVE_NATIVE_ICONV) fi AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[ AC_TRY_RUN([ #include #include #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) fi AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[ AC_TRY_RUN([ #include #include #include #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" && test x"$target_cpu" != x"s390"; then AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY) fi AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[ AC_TRY_RUN([ #include #include #include #include #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) fi AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[ AC_TRY_COMPILE([#include #include ], [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) fi AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[ AC_TRY_RUN([#include #include 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) 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 #if defined(HAVE_RPC_RPC_H) #include #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) fi AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[ AC_TRY_COMPILE([#include #if defined(HAVE_RPC_RPC_H) #include #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) fi AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[ AC_TRY_COMPILE([#include #if defined(HAVE_RPC_RPC_H) #include #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) fi AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[ AC_TRY_COMPILE([#include #if defined(HAVE_RPC_RPC_H) #include #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) fi dnl dnl Some systems (SCO) have a problem including dnl and due to AUTH_ERROR being defined dnl as a #define in and as part of an enum dnl in . dnl AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[ AC_TRY_COMPILE([#include #ifdef HAVE_SYS_SECURITY_H #include #include #endif /* HAVE_SYS_SECURITY_H */ #if defined(HAVE_RPC_RPC_H) #include #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) 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) 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) 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_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) fi AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[ AC_TRY_RUN([ #include #include #include #ifdef HAVE_ARPA_INET_H #include #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) fi AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[ AC_TRY_RUN([#include #include #include #include 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) fi AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[ AC_TRY_RUN([#include 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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 #endif #include #include #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_SYS_FCNTL_H #include #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) fi fi AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[ AC_TRY_COMPILE([#include #include #include ], [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) 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 #endif #ifdef HAVE_SYS_CAPABILITY_H #include #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) fi ;; esac AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[ AC_TRY_COMPILE([#include #if defined(HAVE_RPCSVC_NIS_H) #include #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) 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) WRAP="bin/smbsh bin/smbwrapper.$SHLIBEXT" if test x$ATTEMPT_WRAP32_BUILD = x; then WRAP32="" else WRAP32=bin/smbwrapper.32.$SHLIBEXT fi # Conditions under which smbwrapper should not be built. if test x$PICFLAG = x; then echo No support for PIC code - disabling smbwrapper and smbsh WRAP="" WRAP32="" elif test x$ac_cv_func_syscall = xno; then AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh]) WRAP="" WRAP32="" fi ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # check for AFS clear-text auth support 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) AC_MSG_RESULT(yes) AC_DEFINE(WITH_AFS) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # 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) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # see if this box has the RedHat location for kerberos AC_MSG_CHECKING(for /usr/kerberos) if test -d /usr/kerberos; then LDFLAGS="$LDFLAGS -L/usr/kerberos/lib" CFLAGS="$CFLAGS -I/usr/kerberos/include" CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi ################################################# # 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) ;; *) AC_MSG_RESULT(yes) LIBS="$LIBS -lkrb5" CFLAGS="$CFLAGS -I$withval/include" CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" ;; esac ], AC_MSG_RESULT(no) ) # 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) # now check for gssapi headers. This is also done here to allow for # different kerberos include paths AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h) ################################################################## # we might need the k5crypto and com_err libraries on some systems AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"]) AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"]) ######################################################## # now see if we can find the krb5 libs in standard paths # or as specified above AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5"; AC_DEFINE(HAVE_KRB5)]) ######################################################## # now see if we can find the gssapi libs in standard paths AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5"; AC_DEFINE(HAVE_GSSAPI)]) ################################################################## # we might need the lber lib on some systems. To avoid link errors # this test must be before the libldap test AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"]) ######################################################## # now see if we can find the ldap libs in standard paths if test x$have_ldap != xyes; then AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap"; AC_DEFINE(HAVE_LDAP)]) ######################################################## # If we have LDAP, does it's rebind procedure take 2 or 3 arguments? # Check found in pam_ldap 145. AC_CHECK_FUNCS(ldap_set_rebind_proc) AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [ AC_TRY_COMPILE([ #include #include ], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ]) AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc) fi ################################################# # 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) ;; *) 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) MPROGS="bin/smbmount bin/smbmnt bin/smbumount" ;; *) AC_MSG_ERROR(not on a linux system!) ;; esac ;; *) AC_MSG_RESULT(no) MPROGS= ;; esac ], AC_MSG_RESULT(no) MPROGS= ) ################################################# # 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) AC_DEFINE(WITH_PAM) LIBS="$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)]) ################################################# # check for pam_smbpass support AC_MSG_CHECKING(whether to use pam_smbpass) AC_ARG_WITH(pam_smbpass, [ --with-pam_smbpass Build a PAM module to allow other applications to use our smbpasswd file (default=no)], [ case "$withval" in yes) AC_MSG_RESULT(yes) # Conditions under which pam_smbpass should not be built. if test x$PICFLAG = x; then AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass]) PAM_MOD="" elif test x$ac_cv_lib_pam_pam_get_data = xno; then AC_MSG_RESULT([No libpam found -- disabling pam_smbpass]) PAM_MOD="" else PAM_MOD="bin/pam_smbpass.so" fi ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ############################################### # test for where we get crypt() from, but only # if not using PAM if test $with_pam_for_crypt = no; then AC_CHECK_FUNCS(crypt) if test x"$ac_cv_func_crypt" = x"no"; then AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt"; AC_DEFINE(HAVE_CRYPT)]) fi fi ## ## 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,[ 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)]) if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then AC_DEFINE(HAVE_TRUNCATED_SALT) fi fi ######################################################################################## ## ## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER ## ######################################################################################## ################################################# # check for a TDB password database AC_MSG_CHECKING(whether to use TDB SAM database) AC_ARG_WITH(tdbsam, [ --with-tdbsam Include experimental TDB SAM support (default=no)], [ case "$withval" in yes) AC_MSG_RESULT(yes) AC_DEFINE(WITH_TDB_SAM) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # check for a NISPLUS password database AC_MSG_CHECKING(whether to use NISPLUS SAM database) AC_ARG_WITH(nisplussam, [ --with-nisplussam Include NISPLUS SAM support (default=no)], [ case "$withval" in yes) AC_MSG_RESULT(yes) AC_DEFINE(WITH_NISPLUS_SAM) ;; *) 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) ;; *) 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) ;; *) 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) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # check for experimental disk-quotas support QUOTAOBJS=smbd/noquotas.o AC_MSG_CHECKING(whether to support disk-quotas) AC_ARG_WITH(quotas, [ --with-quotas Include experimental disk-quota support (default=no)], [ case "$withval" in yes) AC_MSG_RESULT(yes) case "$host_os" in *linux*) # Check for kernel 2.4.x quota braindamage... AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [ AC_TRY_COMPILE([#include #include #include #include #include #include ],[struct mem_dqblk D;], samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)]) if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then AC_DEFINE(LINUX_QUOTAS_2) else AC_DEFINE(LINUX_QUOTAS_1) fi ;; *) ;; esac QUOTAOBJS=smbd/quotas.o AC_DEFINE(WITH_QUOTAS) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) AC_SUBST(QUOTAOBJS) ################################################# # check for experimental utmp accounting AC_MSG_CHECKING(whether to support utmp accounting) AC_ARG_WITH(utmp, [ --with-utmp Include experimental utmp accounting (default=no)], [ case "$withval" in yes) AC_MSG_RESULT(yes) AC_DEFINE(WITH_UTMP) ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) ################################################# # 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/,/ /"` # replacing commas with spaces to produce a list AC_SUBST(manlangs)], [manlangs="en" AC_MSG_RESULT($manlangs) AC_SUBST(manlangs)] ) ################################################# # 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 #endif #include #include 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) 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 #include ], [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) 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 #include #include 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) 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 #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_VFS_H #include #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) 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 #include 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) 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 #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #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) 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 #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_FS_TYPES_H #include #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) 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 #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) 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) case "$host_cpu" in sparc) AC_DEFINE(SPARC_SPINLOCKS) ;; i386|i486|i586|i686) AC_DEFINE(INTEL_SPINLOCKS) ;; mips) AC_DEFINE(MIPS_SPINLOCKS) ;; powerpc) AC_DEFINE(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) ;; *solaris*) AC_MSG_RESULT(Using solaris ACLs) AC_DEFINE(HAVE_SOLARIS_ACLS) ;; *hpux*) AC_MSG_RESULT(Using HPUX ACLs) AC_DEFINE(HAVE_HPUX_ACLS) ;; *irix*) AC_MSG_RESULT(Using IRIX ACLs) AC_DEFINE(HAVE_IRIX_ACLS) ;; *aix*) AC_MSG_RESULT(Using AIX ACLs) AC_DEFINE(HAVE_AIX_ACLS) ;; *osf*) AC_MSG_RESULT(Using Tru64 ACLs) AC_DEFINE(HAVE_TRU64_ACLS) LIBS="$LIBS -lpacl" ;; *) AC_CHECK_LIB(acl,acl_get_file) AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[ AC_TRY_LINK([#include #include ], [ 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)]) if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then AC_MSG_RESULT(Using posix ACLs) AC_DEFINE(HAVE_POSIX_ACLS) AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[ AC_TRY_LINK([#include #include ], [ 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)]) if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then AC_DEFINE(HAVE_ACL_GET_PERM_NP) fi fi ;; esac ;; *) AC_MSG_RESULT(no) AC_DEFINE(HAVE_NO_ACLS) ;; esac ], AC_DEFINE(HAVE_NO_ACLS) AC_MSG_RESULT(no) ) ################################################# # Check whether winbind is supported on this platform. If so we need to # build and install client programs (WINBIND_TARGETS), sbin programs # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS). AC_MSG_CHECKING(whether to build winbind) # Initially, the value of $host_os decides whether winbind is supported case "$host_os" in *linux*|*irix*) HAVE_WINBIND=yes ;; *solaris*) HAVE_WINBIND=yes WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o" WINBIND_NSS_EXTRA_LIBS="-lsocket" ;; *hpux11*) HAVE_WINBIND=yes WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o" ;; *) HAVE_WINBIND=no winbind_no_reason=", unsupported on $host_os" ;; esac # 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 WINBIND_TARGETS="" WINBIND_STARGETS="" WINBIND_LTARGETS="" WINBIND_PAM_PROGS="" if test x"$HAVE_WINBIND" = x"yes"; then AC_MSG_RESULT(yes) WINBIND_TARGETS="bin/wbinfo" WINBIND_STARGETS="bin/winbindd" if test x"$BLDSHARED" = x"true"; then WINBIND_LTARGETS="nsswitch/libnss_winbind.so" if test x"$with_pam" = x"yes"; then WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so" fi fi else AC_MSG_RESULT(no$winbind_no_reason) fi # Check for FreeBSD problem with getgroups # It returns EGID too many times in the list of groups # and causes a security problem AC_CACHE_CHECK([whether or not getgroups returns EGID too many times], samba_cv_have_getgroups_too_many_egids,[AC_TRY_RUN([ #include #include int main(int argc, char *argv[]) { gid_t groups[10]; int n = 10; n = getgroups(n, &groups); /* Could actually pass back the number of EGIDs there ... */ exit((n > 1 && groups[0] == getegid() && groups[1] == getegid()) ? 1 : 0); }], samba_cv_have_getgroups_too_many_egids=no,samba_cv_have_getgroups_too_many_egids=yes, samba_cv_have_getgroups_too_many_egids=cross)]) if test x"$samba_cv_have_getgroups_too_many_egids" = x"yes"; then AC_DEFINE(HAVE_GETGROUPS_TOO_MANY_EGIDS) fi # Substitution time! AC_SUBST(WINBIND_TARGETS) AC_SUBST(WINBIND_STARGETS) AC_SUBST(WINBIND_LTARGETS) AC_SUBST(WINBIND_PAM_TARGETS) AC_SUBST(WINBIND_NSS_EXTRA_OBJS) AC_SUBST(WINBIND_NSS_EXTRA_LIBS) # Solaris has some extra fields in struct passwd that need to be # initialised otherwise nscd crashes. Unfortunately autoconf < 2.50 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking # this. #AC_CHECK_MEMBER(struct passwd.pw_comment, # AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]), # [#include ]) AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [ AC_TRY_COMPILE([#include ],[struct passwd p; p.pw_comment;], samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)]) if test x"$samba_cv_passwd_pw_comment" = x"yes"; then AC_DEFINE(HAVE_PASSWD_PW_COMMENT) fi #AC_CHECK_MEMBER(struct passwd.pw_age, # AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]), # [#include ]) AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [ AC_TRY_COMPILE([#include ],[struct passwd p; p.pw_age;], samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)]) if test x"$samba_cv_passwd_pw_age" = x"yes"; then AC_DEFINE(HAVE_PASSWD_PW_AGE) fi ################################################# # 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($srcdir/popt) BUILD_POPT='$(POPT_OBJS)' FLAGS1="-I$srcdir/popt" else AC_MSG_RESULT(no) LIBS="$LIBS -lpopt" fi AC_SUBST(BUILD_POPT) AC_SUBST(FLAGS1) ################################################# # do extra things if we are running insure if test "${ac_cv_prog_CC}" = "insure"; then CPPFLAGS="$CPPFLAGS -D__INSURE__" fi ################################################# # 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) AC_OUTPUT(include/stamp-h Makefile script/findsmb) ################################################# # 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