diff options
Diffstat (limited to 'source/configure.in')
-rw-r--r-- | source/configure.in | 228 |
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) |