summaryrefslogtreecommitdiffstats
path: root/source/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'source/configure.in')
-rw-r--r--source/configure.in228
1 files changed, 176 insertions, 52 deletions
diff --git a/source/configure.in b/source/configure.in
index d0bb8d463d7..e8de80c1f6d 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -13,13 +13,15 @@ AC_ARG_WITH(fhs,
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)"
- lockdir="\$(VARDIR)/locks"
logfilebase="\$(VARDIR)"
+ lockdir="\${VARDIR}/locks"
+ piddir="\$(VARDIR)/locks"
privatedir="\${prefix}/private"
swatdir="\${prefix}/swat")
@@ -56,6 +58,22 @@ AC_ARG_WITH(lockdir,
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)],
@@ -122,6 +140,7 @@ AC_ARG_WITH(logfilebase,
AC_SUBST(codepagedir)
AC_SUBST(configdir)
AC_SUBST(lockdir)
+AC_SUBST(piddir)
AC_SUBST(logfilebase)
AC_SUBST(privatedir)
AC_SUBST(swatdir)
@@ -140,6 +159,7 @@ AC_SUBST(PAM_MOD)
AC_SUBST(PDBEDIT)
AC_SUBST(WRAP)
AC_SUBST(WRAP32)
+AC_SUBST(WRAPPROG)
AC_SUBST(PICFLAG)
AC_SUBST(PICSUFFIX)
AC_SUBST(SHLIBEXT)
@@ -192,6 +212,8 @@ esac
AC_VALIDATE_CACHE_SYSTEM_TYPE
+DYNEXP=
+
#
# Config CPPFLAG settings for strange OS's that must be set
# before other tests.
@@ -214,12 +236,22 @@ case "$host_os" 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(_HPUX_SOURCE)
+ AC_DEFINE(_POSIX_SOURCE)
+ AC_DEFINE(_LARGEFILE64_SOURCE)
+ AC_DEFINE(_ALIGNMENT_REQUIRED,1)
+ AC_DEFINE(_MAX_ALIGNMENT,4)
AC_DEFINE(USE_BOTH_CRYPT_CALLS)
;;
esac
+ DYNEXP="-Wl,-E"
;;
@@ -237,6 +269,7 @@ case "$host_os" in
*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
@@ -260,13 +293,19 @@ case "$host_os" in
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
+ DYNEXP="-dc -dp"
CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ AC_DEFINE(_LARGEFILE64_SOURCE)
+ AC_DEFINE(_FILE_OFFSET_BITS,64)
fi
;;
esac
@@ -291,6 +330,7 @@ exit(1);
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"
@@ -343,6 +383,9 @@ main() {
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])
;;
@@ -363,6 +406,8 @@ exit(1);
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])
;;
@@ -379,9 +424,9 @@ 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(syslog.h sys/syslog.h 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 synch.h pthread.h nsswitch.h)
+AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h synch.h pthread.h nsswitch.h)
#
# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
@@ -451,9 +496,13 @@ if test x"$ac_cv_lib_cups_httpConnect" = x"yes"; then
fi
############################################
-# we need libdl for PAM and the new VFS code
-AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
- AC_DEFINE(HAVE_LIBDL)])
+# 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
@@ -461,11 +510,17 @@ AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
AC_TRY_COMPILE([
#include <stdio.h>],
[
- #define X_FOOBAR(x) ((FOOBAR) { x })
- typedef struct {unsigned x;} FOOBAR;
- FOOBAR f = X_FOOBAR(1);
+ 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)])
+ 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
@@ -658,8 +713,8 @@ else
RUNPROG=""
fi
-AC_CHECK_FUNCS(waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot link)
-AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset setpgid mknod mknod64)
+AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot link)
+AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid mknod mknod64)
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)
@@ -789,6 +844,7 @@ case "$host_os" in
*linux*) AC_DEFINE(LINUX)
BLDSHARED="true"
LDSHFLAGS="-shared"
+ DYNEXP="-Wl,--export-dynamic"
PICFLAG="-fPIC"
SONAMEFLAG="-Wl,-soname="
AC_DEFINE(STAT_ST_BLOCKSIZE,512)
@@ -822,7 +878,7 @@ case "$host_os" in
esac
ATTEMPT_WRAP32_BUILD=yes
BLDSHARED="true"
- LDSHFLAGS="-soname \$@ -shared"
+ LDSHFLAGS="-set_version sgi1.0 -soname \$@ -shared"
SHLD="\${LD}"
if test "${ac_cv_prog_CC}" = "gcc"; then
PICFLAG="-fPIC"
@@ -846,6 +902,7 @@ case "$host_os" in
LDSHFLAGS="-B symbolic -b -z +h \$@"
PICFLAG="+z"
fi
+ DYNEXP="-Wl,-E"
AC_DEFINE(STAT_ST_BLOCKSIZE,8192)
;;
*qnx*) AC_DEFINE(QNX);;
@@ -868,6 +925,7 @@ case "$host_os" in
AC_DEFINE(HAVE_MEMSET)
fi
LDSHFLAGS="-G"
+ DYNEXP="-Bexport"
;;
*mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
esac
@@ -879,6 +937,7 @@ case "$host_os" in
LDSHFLAGS="-G"
;;
esac
+AC_SUBST(DYNEXP)
AC_MSG_RESULT($BLDSHARED)
AC_MSG_CHECKING([linker flags for shared libraries])
AC_MSG_RESULT([$LDSHFLAGS])
@@ -886,9 +945,11 @@ AC_MSG_CHECKING([compiler flags for position-independent code])
AC_MSG_RESULT([$PICFLAGS])
# try to work out how to produce pic code with this compiler
-AC_PROG_CC_FLAG(fpic)
-if test $ac_cv_prog_cc_fpic = yes; then
- PICFLAG="-fpic";
+if test x$PICFLAG = x; then
+ AC_PROG_CC_FLAG(fpic)
+ if test $ac_cv_prog_cc_fpic = yes; then
+ PICFLAG="-fpic";
+ fi
fi
if test x$PICFLAG = x; then
AC_PROG_CC_FLAG(KPIC)
@@ -1086,25 +1147,30 @@ 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];
+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);
+ 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);
+ if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
- exit(0);
+ 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)
+ AC_DEFINE(HAVE_C99_VSNPRINTF)
fi
AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
@@ -1700,7 +1766,8 @@ AC_ARG_WITH(smbwrapper,
yes)
AC_MSG_RESULT(yes)
AC_DEFINE(WITH_SMBWRAPPER)
- WRAP="bin/smbsh bin/smbwrapper.$SHLIBEXT"
+ WRAPPROG="bin/smbsh"
+ WRAP="bin/smbwrapper.$SHLIBEXT"
if test x$ATTEMPT_WRAP32_BUILD = x; then
WRAP32=""
@@ -1712,10 +1779,12 @@ AC_ARG_WITH(smbwrapper,
if test x$PICFLAG = x; then
echo No support for PIC code - disabling smbwrapper and smbsh
+ WRAPPROG=""
WRAP=""
WRAP32=""
elif test x$ac_cv_func_syscall = xno; then
AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
+ WRAPPROG=""
WRAP=""
WRAP32=""
fi
@@ -2211,25 +2280,6 @@ AC_ARG_WITH(msdfs,
)
#################################################
-# check for Samba VFS support
-
-AC_MSG_CHECKING(whether to support the experimental Samba vfs)
-AC_ARG_WITH(vfs,
-[ --with-vfs Include Samba vfs support (default=no)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_VFS)
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-
-#################################################
# should we build libsmbclient?
LIBSMBCLIENT_SHARED=
@@ -2571,9 +2621,18 @@ AC_MSG_CHECKING(whether to build winbind)
# Initially, the value of $host_os decides whether winbind is supported
case "$host_os" in
- *linux*|*solaris*|*irix*|*hpux11*)
+ *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"
@@ -2613,7 +2672,15 @@ if test x"$HAVE_WINBIND" = x"yes"; then
WINBIND_TARGETS="bin/wbinfo"
WINBIND_STARGETS="bin/winbindd"
- WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
+ case "$host_os" in
+ *irix*)
+ WINBIND_LTARGETS="libns_winbind.so"
+ ;;
+ *)
+ WINBIND_LTARGETS="libnss_winbind.so"
+ ;;
+ esac
+
case "$with_pam" in
yes)
@@ -2629,19 +2696,76 @@ else
WINBIND_PAM_TARGETS=""
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 <sys/types.h>
+#include <stdio.h>
+
+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)
+
+#################################################
+# 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)
#################################################
# final configure stuff
-echo "checking configure summary"
+AC_MSG_CHECKING([configure summary])
AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
- echo "configure OK";,
- AC_MSG_ERROR([summary failure. Aborting config]),:)
+ 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)