1dnl Process this file with autoconf to produce a configure script. 2 3dnl We must use autotools 2.53 or above 4AC_PREREQ(2.53) 5AC_INIT(include/includes.h) 6AC_CONFIG_HEADER(include/config.h) 7AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h]) 8 9SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2` 10echo "SAMBA VERSION: ${SMB_VERSION_STRING}" 11 12SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-` 13if test -n "${SAMBA_VERSION_SVN_REVISION}";then 14 echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}" 15fi 16 17AC_LIBREPLACE_LOCATION_CHECKS 18 19AC_DISABLE_STATIC 20AC_ENABLE_SHARED 21 22################################################# 23# Directory handling stuff to support both the 24# legacy SAMBA directories and FHS compliant 25# ones... 26AC_PREFIX_DEFAULT(/usr/local/samba) 27 28rootsbindir="\${SBINDIR}" 29lockdir="\${VARDIR}/locks" 30piddir="\${VARDIR}/locks" 31test "${mandir}" || mandir="\${prefix}/man" 32logfilebase="\${VARDIR}" 33privatedir="\${prefix}/private" 34test "${libdir}" || libdir="\${prefix}/lib" 35pammodulesdir="\${LIBDIR}/security" 36configdir="\${LIBDIR}" 37swatdir="\${prefix}/swat" 38 39AC_ARG_WITH(fhs, 40[ --with-fhs Use FHS-compliant paths (default=no)], 41[ case "$withval" in 42 yes) 43 lockdir="\${VARDIR}/lib/samba" 44 piddir="\${VARDIR}/run" 45 mandir="\${prefix}/share/man" 46 logfilebase="\${VARDIR}/log/samba" 47 privatedir="\${CONFIGDIR}/private" 48 libdir="\${prefix}/lib/samba" 49 configdir="\${sysconfdir}/samba" 50 swatdir="\${DATADIR}/samba/swat" 51 ;; 52 esac]) 53 54################################################# 55# set private directory location 56AC_ARG_WITH(privatedir, 57[ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)], 58[ case "$withval" in 59 yes|no) 60 # 61 # Just in case anybody calls it without argument 62 # 63 AC_MSG_WARN([--with-privatedir called without argument - will use default]) 64 ;; 65 * ) 66 privatedir="$withval" 67 ;; 68 esac]) 69 70################################################# 71# set root sbin directory location 72AC_ARG_WITH(rootsbindir, 73[ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)], 74[ case "$withval" in 75 yes|no) 76 # 77 # Just in case anybody calls it without argument 78 # 79 AC_MSG_WARN([--with-rootsbindir called without argument - will use default]) 80 ;; 81 * ) 82 rootsbindir="$withval" 83 ;; 84 esac]) 85 86################################################# 87# set lock directory location 88AC_ARG_WITH(lockdir, 89[ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)], 90[ case "$withval" in 91 yes|no) 92 # 93 # Just in case anybody calls it without argument 94 # 95 AC_MSG_WARN([--with-lockdir called without argument - will use default]) 96 ;; 97 * ) 98 lockdir="$withval" 99 ;; 100 esac]) 101 102################################################# 103# set pid directory location 104AC_ARG_WITH(piddir, 105[ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)], 106[ case "$withval" in 107 yes|no) 108 # 109 # Just in case anybody calls it without argument 110 # 111 AC_MSG_WARN([--with-piddir called without argument - will use default]) 112 ;; 113 * ) 114 piddir="$withval" 115 ;; 116 esac]) 117 118################################################# 119# set SWAT directory location 120AC_ARG_WITH(swatdir, 121[ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)], 122[ case "$withval" in 123 yes|no) 124 # 125 # Just in case anybody does it 126 # 127 AC_MSG_WARN([--with-swatdir called without argument - will use default]) 128 ;; 129 * ) 130 swatdir="$withval" 131 ;; 132 esac]) 133 134################################################# 135# set configuration directory location 136AC_ARG_WITH(configdir, 137[ --with-configdir=DIR Where to put configuration files ($libdir)], 138[ case "$withval" in 139 yes|no) 140 # 141 # Just in case anybody does it 142 # 143 AC_MSG_WARN([--with-configdir called without argument - will use default]) 144 ;; 145 * ) 146 configdir="$withval" 147 ;; 148 esac]) 149 150################################################# 151# set log directory location 152AC_ARG_WITH(logfilebase, 153[ --with-logfilebase=DIR Where to put log files ($VARDIR)], 154[ case "$withval" in 155 yes|no) 156 # 157 # Just in case anybody does it 158 # 159 AC_MSG_WARN([--with-logfilebase called without argument - will use default]) 160 ;; 161 * ) 162 logfilebase="$withval" 163 ;; 164 esac]) 165 166################################################# 167# set lib directory location 168AC_ARG_WITH(libdir, 169[ --with-libdir=DIR Where to put libdir ($libdir)], 170[ case "$withval" in 171 yes|no) 172 # 173 # Just in case anybody does it 174 # 175 AC_MSG_WARN([--with-libdir without argument - will use default]) 176 ;; 177 * ) 178 libdir="$withval" 179 ;; 180 esac]) 181 182################################################# 183# set PAM modules directory location 184AC_ARG_WITH(pammodulesdir, 185[ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)], 186[ case "$withval" in 187 yes|no) 188 # 189 # Just in case anybody calls it without argument 190 # 191 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default]) 192 ;; 193 * ) 194 pammodulesdir="$withval" 195 ;; 196 esac]) 197 198################################################# 199# set man directory location 200AC_ARG_WITH(mandir, 201[ --with-mandir=DIR Where to put man pages ($mandir)], 202[ case "$withval" in 203 yes|no) 204 # 205 # Just in case anybody does it 206 # 207 AC_MSG_WARN([--with-mandir without argument - will use default]) 208 ;; 209 * ) 210 mandir="$withval" 211 ;; 212 esac]) 213 214AC_ARG_WITH(cfenc, 215[ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API 216 for optimization (Mac OS X/Darwin only)], 217[ 218# May be in source $withval/CoreFoundation/StringEncodings.subproj. 219# Should have been in framework $withval/CoreFoundation.framework/Headers. 220for d in \ 221 $withval/CoreFoundation/StringEncodings.subproj \ 222 $withval/StringEncodings.subproj \ 223 $withval/CoreFoundation.framework/Headers \ 224 $withval/Headers \ 225 $withval 226do 227 if test -r $d/CFStringEncodingConverter.h; then 228 ln -sfh $d include/CoreFoundation 229 fi 230done 231]) 232 233SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}" 234SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace" 235SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc" 236SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include" 237SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns" 238SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc" 239 240SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt" 241 242## cleanup the $(srcdir) in the Makefile if we are outside of the tree 243if test "x${srcdir-.}" != "x."; then 244 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"` 245fi 246 247AC_SUBST(configdir) 248AC_SUBST(lockdir) 249AC_SUBST(piddir) 250AC_SUBST(logfilebase) 251AC_SUBST(privatedir) 252AC_SUBST(swatdir) 253AC_SUBST(bindir) 254AC_SUBST(sbindir) 255AC_SUBST(rootsbindir) 256AC_SUBST(pammodulesdir) 257 258dnl Unique-to-Samba variables we'll be playing with. 259AC_SUBST(SAMBA_CPPFLAGS) 260AC_SUBST(SHELL) 261AC_SUBST(LDSHFLAGS) 262AC_SUBST(SONAMEFLAG) 263AC_SUBST(SHLD) 264AC_SUBST(HOST_OS) 265AC_SUBST(PICFLAG) 266AC_SUBST(PIE_CFLAGS) 267AC_SUBST(PIE_LDFLAGS) 268AC_SUBST(SHLIBEXT) 269AC_SUBST(INSTALLLIBCMD_SH) 270AC_SUBST(INSTALLLIBCMD_A) 271AC_SUBST(UNINSTALLLIBCMD_SH) 272AC_SUBST(UNINSTALLLIBCMD_A) 273AC_SUBST(INSTALL_LIBMSRPC) 274AC_SUBST(UNINSTALL_LIBMSRPC) 275AC_SUBST(LIBMSRPC_SHARED) 276AC_SUBST(LIBMSRPC) 277AC_SUBST(INSTALL_LIBADDNS) 278AC_SUBST(UNINSTALL_LIBADDNS) 279AC_SUBST(LIBADDNS_SHARED) 280AC_SUBST(LIBADDNS) 281AC_SUBST(INSTALL_LIBSMBCLIENT) 282AC_SUBST(UNINSTALL_LIBSMBCLIENT) 283AC_SUBST(LIBSMBCLIENT_SHARED) 284AC_SUBST(LIBSMBCLIENT) 285AC_SUBST(INSTALL_LIBSMBSHAREMODES) 286AC_SUBST(UNINSTALL_LIBSMBSHAREMODES) 287AC_SUBST(LIBSMBSHAREMODES_SHARED) 288AC_SUBST(LIBSMBSHAREMODES) 289AC_SUBST(PRINT_LIBS) 290AC_SUBST(AUTH_LIBS) 291AC_SUBST(ACL_LIBS) 292AC_SUBST(PASSDB_LIBS) 293AC_SUBST(IDMAP_LIBS) 294AC_SUBST(KRB5_LIBS) 295AC_SUBST(UUID_LIBS) 296AC_SUBST(LDAP_LIBS) 297AC_SUBST(PAM_MODULES) 298AC_SUBST(INSTALL_PAM_MODULES) 299AC_SUBST(UNINSTALL_PAM_MODULES) 300AC_SUBST(NSS_MODULES) 301AC_SUBST(EXTRA_BIN_PROGS) 302AC_SUBST(SMBMOUNT_PROGS) 303AC_SUBST(CIFSMOUNT_PROGS) 304AC_SUBST(INSTALL_CIFSMOUNT) 305AC_SUBST(UNINSTALL_CIFSMOUNT) 306AC_SUBST(EXTRA_SBIN_PROGS) 307AC_SUBST(EXTRA_ALL_TARGETS) 308AC_SUBST(CONFIG_LIBS) 309AC_SUBST(NSCD_LIBS) 310 311## check for --enable-debug first before checking CFLAGS before 312## so that we don't mix -O and -g 313AC_ARG_ENABLE(debug, 314[ --enable-debug Turn on compiler debugging information (default=no)], 315 [if eval "test x$enable_debug = xyes"; then 316 CFLAGS="${CFLAGS} -g" 317 fi]) 318 319# compile with optimization and without debugging by default, but 320# allow people to set their own preference. 321# do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2" 322# if it has no value. This prevent *very* large debug binaries from occurring 323# by default. 324if test "x$CFLAGS" = x; then 325 CFLAGS="-O" 326fi 327 328CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3" 329 330AC_LIBREPLACE_CC_CHECKS 331 332m4_include(lib/socket_wrapper/config.m4) 333 334################################################# 335# set prefix for 'make test' 336selftest_prefix="./" 337AC_SUBST(selftest_prefix) 338AC_ARG_WITH(selftest-prefix, 339[ --with-selftest-prefix=DIR The prefix where make test will be runned ($selftest_prefix)], 340[ case "$withval" in 341 yes|no) 342 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default]) 343 ;; 344 * ) 345 selftest_prefix="$withval" 346 ;; 347 esac 348]) 349 350################################################# 351# set path of samba4's smbtorture 352smbtorture4_path="" 353AC_SUBST(smbtorture4_path) 354AC_ARG_WITH(smbtorture4_path, 355[ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)], 356[ case "$withval" in 357 yes|no) 358 AC_MSG_ERROR([--with-smbtorture4-path should take a path]) 359 ;; 360 * ) 361 smbtorture4_path="$withval" 362 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then 363 AC_MSG_ERROR(['$smbtorture_path' does not exist!]) 364 fi 365 ;; 366 esac 367]) 368 369AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)], 370 [if eval "test x$enable_developer = xyes"; then 371 developer=yes 372 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" 373 # Add -Wdeclaration-after-statement if compiler supports it 374 AC_CACHE_CHECK( 375 [that the C compiler understands -Wdeclaration-after-statement], 376 samba_cv_HAVE_Wdeclaration_after_statement, [ 377 AC_TRY_RUN_STRICT([ 378 int main(void) 379 { 380 return 0; 381 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS], 382 samba_cv_HAVE_Wdeclaration_after_statement=yes, 383 samba_cv_HAVE_Wdeclaration_after_statement=no, 384 samba_cv_HAVE_Wdeclaration_after_statement=cross) 385 ]) 386 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then 387 CFLAGS="${CFLAGS} -Wdeclaration-after-statement" 388 fi 389 fi]) 390 391AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)], 392 [if eval "test x$enable_krb5developer = xyes"; then 393 developer=yes 394 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" 395 fi]) 396 397AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]]) 398 399if test "x$enable_dmalloc" = xyes 400then 401 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging]) 402 AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 403 [Define to check invariants around some common functions]) 404 LIBS="$LIBS -ldmalloc" 405fi 406 407################################################# 408# check for a shared memory profiling support 409AC_MSG_CHECKING(whether to use profiling) 410AC_ARG_WITH(profiling-data, 411[ --with-profiling-data Include gathering source code profile information (default=no)], 412[ case "$withval" in 413 yes) 414 AC_MSG_RESULT(yes) 415 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling]) 416 samba_cv_WITH_PROFILE=yes 417 ;; 418 *) 419 AC_MSG_RESULT(no) 420 samba_cv_WITH_PROFILE=no 421 ;; 422 esac ], 423 AC_MSG_RESULT(no) 424) 425 426dnl Checks for programs. 427 428AC_PROG_INSTALL 429AC_PROG_AWK 430AC_PATH_PROG(PERL, perl) 431 432AC_CHECK_TOOL(AR, ar) 433 434dnl Check if we use GNU ld 435LD=ld 436AC_PROG_LD_GNU 437 438dnl Certain versions of GNU ld the default is not to have the 439dnl --allow-shlib-undefined flag defined. This causes a stackload of 440dnl warnings when building modules. 441if test "$ac_cv_prog_gnu_ld" = "yes"; then 442 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1` 443 AC_MSG_CHECKING(GNU ld release date) 444 changequote(,)dnl 445 ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` 446 changequote([,])dnl 447 AC_MSG_RESULT(${ac_cv_gnu_ld_date}) 448 if test -n "$ac_cv_gnu_ld_date"; then 449 if test "$ac_cv_gnu_ld_date" -lt 20030217; then 450 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes 451 fi 452 else 453 AC_MSG_CHECKING(GNU ld release version) 454 changequote(,)dnl 455 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'` 456 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1` 457 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2` 458 changequote([,])dnl 459 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr}) 460 AC_MSG_CHECKING(GNU ld release version major) 461 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major}) 462 AC_MSG_CHECKING(GNU ld release version minor) 463 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor}) 464 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then 465 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes 466 fi 467 fi 468fi 469 470dnl look for executable suffix 471AC_EXEEXT 472 473dnl Check if C compiler understands -c and -o at the same time 474AC_PROG_CC_C_O 475if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then 476 BROKEN_CC= 477else 478 BROKEN_CC=# 479fi 480AC_SUBST(BROKEN_CC) 481 482dnl Check if the C compiler understands -Werror 483AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [ 484 AC_TRY_RUN_STRICT([ 485 int main(void) 486 { 487 return 0; 488 }],[-Werror],[$CPPFLAGS],[$LDFLAGS], 489 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)]) 490if test x"$samba_cv_HAVE_Werror" = x"yes"; then 491 Werror_FLAGS="-Werror" 492else 493dnl Check if the C compiler understands -w2 494AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [ 495 AC_TRY_RUN_STRICT([ 496 int main(void) 497 { 498 return 0; 499 }],[-w2],[$CPPFLAGS],[$LDFLAGS], 500 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)]) 501if test x"$samba_cv_HAVE_w2" = x"yes"; then 502 Werror_FLAGS="-w2" 503fi 504fi 505 506dnl Check if the C compiler understands volatile (it should, being ANSI). 507AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [ 508 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0], 509 samba_cv_volatile=yes,samba_cv_volatile=no)]) 510if test x"$samba_cv_volatile" = x"yes"; then 511 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile]) 512fi 513 514############################################ 515# check if the compiler can handle negative enum values 516# and don't truncate the values to INT_MAX 517# a runtime test is needed here 518AC_SUBST(PIDL_ARGS) 519AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [ 520 AC_TRY_RUN( 521[ 522 #include <stdio.h> 523 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF }; 524 int main(void) { 525 enum negative_values v1 = NEGATIVE_VALUE; 526 unsigned v2 = NEGATIVE_VALUE; 527 528 if (v1 != 0xFFFFFFFF) { 529 printf("%u != 0xFFFFFFFF\n", v1); 530 return 1; 531 } 532 if (v2 != 0xFFFFFFFF) { 533 printf("%u != 0xFFFFFFFF\n", v2); 534 return 1; 535 } 536 537 return 0; 538 } 539], 540 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)]) 541if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then 542 AC_MSG_WARN([using --unit-enums for pidl]) 543 PIDL_ARGS="$PIDL_ARGS --uint-enums" 544fi 545 546dnl Figure out the flags to support named structure initializers 547 548LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])]) 549 550UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown" 551AC_MSG_CHECKING(uname -s) 552AC_MSG_RESULT(${UNAME_S}) 553 554UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown" 555AC_MSG_CHECKING(uname -r) 556AC_MSG_RESULT(${UNAME_R}) 557 558UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown" 559AC_MSG_CHECKING(uname -m) 560AC_MSG_RESULT(${UNAME_M}) 561 562UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown" 563AC_MSG_CHECKING(uname -p) 564AC_MSG_RESULT(${UNAME_P}) 565 566dnl Add #include for broken IRIX header files 567 case "$host_os" in 568 *irix6*) 569 #TODO add to libreplace 570 if test x"$ac_cv_prog_gcc" != x"yes" ; then 571 dnl Fix sensible defaults for MIPSPro compilers. The 572 dnl error numbers are valid for the 7.3 compilers, 573 dnl hopefully also valid for the 7.4 series. 574 dnl 575 dnl Bugzilla 3801. Force an error on warning 1035 576 dnl so we don't incorrectly detect stdint.h. This 577 dnl warning is emitted for #error directives. 578 CFLAGS="$CFLAGS -diag_error 1035" 579 dnl 1209: Controlling expression is constant 580 dnl 1174: Function foo declared but never referenced 581 dnl 3201: Parameter foo was never referenced 582 CFLAGS="$CFLAGS -woff 1209,1174,3201" 583 fi 584 ;; 585esac 586 587DYNEXP= 588AC_SUBST(DYNEXP) 589 590dnl Add modules that have to be built by default here 591dnl These have to be built static: 592default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_shutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_echo auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template" 593 594dnl These are preferably build shared, and static if dlopen() is not available 595default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead" 596 597if test "x$developer" = xyes; then 598 default_static_modules="$default_static_modules rpc_rpcecho" 599 default_shared_modules="$default_shared_modules charset_weird" 600fi 601 602# 603# Config CPPFLAG settings for strange OS's that must be set 604# before other tests. Do NOT invoke AC_CHECK_HEADERS within this 605# case statement; its first reference must be unconditional. 606# 607case "$host_os" in 608 *hpux*) 609# 610# Defines needed for HPUX support. 611# HPUX has bigcrypt but (sometimes?) doesn't use it for 612# password hashing - hence the USE_BOTH_CRYPT_CALLS define. 613# 614 case `uname -r` in 615 *9*|*10*) 616 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL" 617 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls]) 618 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions]) 619 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions]) 620 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment]) 621 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment]) 622 ;; 623 *11*) 624 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL" 625 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls]) 626 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions]) 627 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions]) 628 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support]) 629 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment]) 630 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment]) 631 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11]) 632 ;; 633 esac 634 ;; 635 636# 637# CRAY Unicos has broken const handling 638 *unicos*) 639 AC_MSG_RESULT([disabling const]) 640 CPPFLAGS="$CPPFLAGS -Dconst=" 641 ;; 642 643# 644# AIX4.x doesn't even admit to having large 645# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set. 646# 647 *aix4*) 648 AC_MSG_RESULT([enabling large file support]) 649 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES" 650 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support]) 651 ;; 652# 653# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit 654# to the existance of large files.. 655# Note that -D_LARGEFILE64_SOURCE is different from the Sun 656# recommendations on large file support, however it makes the 657# compile work using gcc 2.7 and 2.8, whereas using the Sun 658# recommendation makes the compile fail on gcc2.7. JRA. 659# 660# Solaris uses SYSV printing. Make sure to set that here. --jerry 661# 662 *solaris*) 663 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility]) 664 case `uname -r` in 665 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*) 666 AC_MSG_RESULT([no large file support]) 667 ;; 668 5.*) 669 AC_MSG_RESULT([enabling large file support]) 670 if test "$ac_cv_prog_gcc" = yes; then 671 ${CC-cc} -v >conftest.c 2>&1 672 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c` 673 rm -fr conftest.c 674 case "$ac_cv_gcc_compiler_version_number" in 675 *"gcc version 2.6"*|*"gcc version 2.7"*) 676 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT" 677 LDFLAGS="$LDFLAGS -lthread" 678 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 679 ;; 680 *) 681 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" 682 LDFLAGS="$LDFLAGS -lthread" 683 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 684 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits]) 685 ;; 686 esac 687 else 688 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64" 689 LDFLAGS="$LDFLAGS -lthread" 690 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 691 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits]) 692 fi 693 ;; 694 esac 695 ;; 696# 697# IRIX uses SYSV printing. Make sure to set that here 698# 699 *irix*) 700 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility]) 701 ;; 702 *freebsd*|*dragonfly*) 703 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD]) 704 ;; 705# 706# VOS may need to have POSIX support and System V compatibility enabled. 707# 708 *vos*) 709 case "$CPPFLAGS" in 710 *-D_POSIX_C_SOURCE*) 711 ;; 712 *) 713 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" 714 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support]) 715 ;; 716 esac 717 case "$CPPFLAGS" in 718 *-D_SYSV*|*-D_SVID_SOURCE*) 719 ;; 720 *) 721 CPPFLAGS="$CPPFLAGS -D_SYSV" 722 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility]) 723 esac 724 ;; 725# 726# Tests needed for SINIX large file support. 727# 728 *sysv4*) 729 if test $host = mips-sni-sysv4 ; then 730 AC_MSG_CHECKING([for LFS support]) 731 old_CPPFLAGS="$CPPFLAGS" 732 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" 733 AC_TRY_RUN([ 734#include <unistd.h> 735main () { 736#if _LFS64_LARGEFILE == 1 737exit(0); 738#else 739exit(1); 740#endif 741}], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross]) 742 CPPFLAGS="$old_CPPFLAGS" 743 if test x$SINIX_LFS_SUPPORT = xyes ; then 744 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" 745 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 746 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS" 747 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS" 748 LIBS="`getconf LFS64_LIBS` $LIBS" 749 fi 750 AC_MSG_RESULT([$SINIX_LFS_SUPPORT]) 751 fi 752 ;; 753 754# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support. 755# 756 *linux*) 757 AC_MSG_CHECKING([for LFS support]) 758 old_CPPFLAGS="$CPPFLAGS" 759 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" 760 AC_TRY_RUN([ 761#include <unistd.h> 762#include <sys/utsname.h> 763#include <string.h> 764#include <stdlib.h> 765main() { 766#if _LFS64_LARGEFILE == 1 767 struct utsname uts; 768 char *release; 769 int major, minor; 770 771 /* Ensure this is glibc 2.2 or higher */ 772#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) 773 int libc_major = __GLIBC__; 774 int libc_minor = __GLIBC_MINOR__; 775 776 if (libc_major < 2) 777 exit(1); 778 if (libc_minor < 2) 779 exit(1); 780#endif 781 782 /* Ensure this is kernel 2.4 or higher */ 783 784 uname(&uts); 785 release = strdup(uts.release); 786 major = atoi(strsep(&release, ".")); 787 minor = atoi(strsep(&release, ".")); 788 789 if (major > 2 || (major == 2 && minor > 3)) 790 exit(0); 791 exit(1); 792#else 793 exit(1); 794#endif 795} 796], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross]) 797 CPPFLAGS="$old_CPPFLAGS" 798 if test x$LINUX_LFS_SUPPORT = xyes ; then 799 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS" 800 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 801 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits]) 802 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions]) 803 fi 804 AC_MSG_RESULT([$LINUX_LFS_SUPPORT]) 805 ;; 806 807# 808# MacOS X is the *only* system that uses compose character in utf8. This 809# is so horribly broken.... 810# 811 *darwin*) 812 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters]) 813 814# Add a system specific charset module. 815 default_shared_modules="$default_shared_modules charset_macosxfs" 816 817 ;; 818 *hurd*) 819 AC_MSG_CHECKING([for LFS support]) 820 old_CPPFLAGS="$CPPFLAGS" 821 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" 822 AC_TRY_RUN([ 823#include <unistd.h> 824main () { 825#if _LFS64_LARGEFILE == 1 826exit(0); 827#else 828exit(1); 829#endif 830}], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross]) 831 CPPFLAGS="$old_CPPFLAGS" 832 if test x$GLIBC_LFS_SUPPORT = xyes ; then 833 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS" 834 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support]) 835 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions]) 836 fi 837 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT]) 838 ;; 839 840esac 841 842AC_LIBREPLACE_BROKEN_CHECKS 843 844LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"` 845 846LIBREPLACE_OBJS="" 847for obj in ${LIBREPLACEOBJ}; do 848 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}" 849done 850AC_SUBST(LIBREPLACE_OBJS) 851 852# add -ldl to the global LIBS 853LIBS="${LIBS} ${LIBDL}" 854 855AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h) 856AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h) 857AC_CHECK_HEADERS(limits.h float.h) 858AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h) 859AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h) 860AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h) 861AC_CHECK_HEADERS(sys/un.h) 862AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h) 863AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h) 864AC_CHECK_HEADERS(sys/sysmacros.h) 865AC_CHECK_HEADERS(sys/syslog.h syslog.h) 866AC_CHECK_HEADERS(langinfo.h locale.h) 867AC_CHECK_HEADERS(xfs/libxfs.h) 868 869AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[ 870#if HAVE_RPC_RPC_H 871#include <rpc/rpc.h> 872#endif 873]]) 874 875## These fail to compile on IRIX so just check for their presence 876AC_CHECK_HEADERS(sys/mode.h,,,) 877 878# Look for Darwin headers 879old_CPPFLAGS="$CPPFLAGS" 880CPPFLAGS="-Iinclude $CPPFLAGS" 881AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])]) 882CPPFLAGS="$old_CPPFLAGS" 883 884# In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a 885# subdirectory of headers. 886AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h) 887 888# check for linux on amd64 since valgrind is not quite there yet 889case "$host_os" in 890 *linux*) 891 case "$UNAME_P" in 892 *x86_64*) 893 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux]) 894 ;; 895 esac 896 ;; 897esac 898 899 900# 901# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT. 902# This causes configure to fail to detect it. Check for shadow separately on HPUX. 903# 904case "$host_os" in 905 *hpux*) 906 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme], 907 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no) 908 if test x"$ac_cv_header_shadow_h" = x"yes"; then 909 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h]) 910 fi 911 ;; 912esac 913AC_CHECK_HEADERS(shadow.h) 914AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h) 915AC_CHECK_HEADERS(syscall.h sys/syscall.h) 916 917AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h) 918AC_CHECK_HEADERS(sys/ea.h sys/proplist.h) 919 920AC_CHECK_HEADERS(sys/cdefs.h glob.h) 921 922# For experimental utmp support (lastlog on some BSD-like systems) 923AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h) 924 925AC_CHECK_SIZEOF(int,cross) 926AC_CHECK_SIZEOF(long,cross) 927AC_CHECK_SIZEOF(long long,cross) 928AC_CHECK_SIZEOF(short,cross) 929 930AC_C_CONST 931AC_C_INLINE 932AC_C_BIGENDIAN 933AC_C_CHAR_UNSIGNED 934 935AC_TYPE_SIGNAL 936AC_TYPE_UID_T 937AC_TYPE_MODE_T 938AC_TYPE_OFF_T 939AC_TYPE_SIZE_T 940AC_TYPE_PID_T 941AC_STRUCT_ST_RDEV 942AC_DIRENT_D_OFF 943AC_CHECK_TYPE(ino_t,unsigned) 944AC_CHECK_TYPE(loff_t,off_t) 945AC_CHECK_TYPE(offset_t,loff_t) 946AC_CHECK_TYPE(ssize_t, int) 947AC_CHECK_TYPE(wchar_t, unsigned short) 948AC_CHECK_TYPE(comparison_fn_t, 949[AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])]) 950 951############################################ 952# for cups support we need libcups, and a handful of header files 953 954AC_ARG_ENABLE(cups, 955[ --enable-cups Turn on CUPS support (default=auto)]) 956 957if test x$enable_cups != xno; then 958 AC_PATH_PROG(CUPS_CONFIG, cups-config) 959 960 if test "x$CUPS_CONFIG" != x; then 961 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS]) 962 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`" 963 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`" 964 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`" 965 elif test x"$enable_cups" = x"yes"; then 966 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.) 967 fi 968fi 969 970AC_ARG_ENABLE(iprint, 971[ --enable-iprint Turn on iPrint support (default=yes if cups is yes)]) 972 973if test x$enable_iprint != xno; then 974 if test "x$CUPS_CONFIG" != x; then 975 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint]) 976 elif test x"$enable_iprint" = x"yes"; then 977 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.) 978 fi 979fi 980 981############################################ 982# check if the compiler will optimize out function calls 983AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [ 984 AC_TRY_LINK([ 985#include <stdio.h>], 986[ 987 if (0) { 988 this_function_does_not_exist(); 989 } else { 990 return 1; 991 } 992 993], 994 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)]) 995if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then 996 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls]) 997fi 998 999############################################ 1000# check for unix domain sockets 1001AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [ 1002 AC_TRY_COMPILE([ 1003#include <sys/types.h> 1004#include <stdlib.h> 1005#include <stddef.h> 1006#include <sys/socket.h> 1007#include <sys/un.h>], 1008[ 1009 struct sockaddr_un sunaddr; 1010 sunaddr.sun_family = AF_UNIX; 1011], 1012 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)]) 1013if test x"$samba_cv_unixsocket" = x"yes"; then 1014 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support]) 1015fi 1016 1017 1018AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [ 1019 AC_TRY_COMPILE([ 1020#include <sys/types.h> 1021#if STDC_HEADERS 1022#include <stdlib.h> 1023#include <stddef.h> 1024#endif 1025#include <sys/socket.h>],[socklen_t i = 0], 1026 samba_cv_socklen_t=yes,samba_cv_socklen_t=no)]) 1027if test x"$samba_cv_socklen_t" = x"yes"; then 1028 AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t]) 1029fi 1030 1031AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [ 1032 AC_TRY_COMPILE([ 1033#include <sys/types.h> 1034#if STDC_HEADERS 1035#include <stdlib.h> 1036#include <stddef.h> 1037#endif 1038#include <signal.h>],[sig_atomic_t i = 0], 1039 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)]) 1040if test x"$samba_cv_sig_atomic_t" = x"yes"; then 1041 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type]) 1042fi 1043 1044AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [ 1045 AC_TRY_COMPILE([ 1046#include <sys/types.h> 1047#if STDC_HEADERS 1048#include <stdlib.h> 1049#include <stddef.h> 1050#endif 1051#if TIME_WITH_SYS_TIME 1052# include <sys/time.h> 1053# include <time.h> 1054#else 1055# if HAVE_SYS_TIME_H 1056# include <sys/time.h> 1057# else 1058# include <time.h> 1059# endif 1060#endif 1061],[struct timespec ts;], 1062 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)]) 1063if test x"$samba_cv_struct_timespec" = x"yes"; then 1064 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec]) 1065fi 1066 1067# stupid headers have the functions but no declaration. grrrr. 1068AC_HAVE_DECL(errno, [#include <errno.h>]) 1069AC_HAVE_DECL(setresuid, [#include <unistd.h>]) 1070AC_HAVE_DECL(setresgid, [#include <unistd.h>]) 1071AC_HAVE_DECL(asprintf, [#include <stdio.h>]) 1072AC_HAVE_DECL(vasprintf, [#include <stdio.h>]) 1073AC_HAVE_DECL(vsnprintf, [#include <stdio.h>]) 1074AC_HAVE_DECL(snprintf, [#include <stdio.h>]) 1075 1076# and glibc has setresuid under linux but the function does 1077# nothing until kernel 2.1.44! very dumb. 1078AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[ 1079 AC_TRY_RUN([#include <errno.h> 1080main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}], 1081 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)]) 1082if test x"$samba_cv_have_setresuid" = x"yes"; then 1083 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid]) 1084fi 1085 1086# Do the same check for setresguid... 1087# 1088AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[ 1089 AC_TRY_RUN([#include <unistd.h> 1090#include <errno.h> 1091main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}], 1092 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)]) 1093if test x"$samba_cv_have_setresgid" = x"yes"; then 1094 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid]) 1095fi 1096 1097AC_FUNC_MEMCMP 1098 1099############################################### 1100# Readline included by default unless explicitly asked not to 1101test "${with_readline+set}" != "set" && with_readline=yes 1102 1103# test for where we get readline() from 1104AC_MSG_CHECKING(whether to use readline) 1105AC_ARG_WITH(readline, 1106[ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ], 1107[ case "$with_readline" in 1108 yes) 1109 AC_MSG_RESULT(yes) 1110 1111 AC_CHECK_HEADERS(readline.h history.h readline/readline.h) 1112 AC_CHECK_HEADERS(readline/history.h) 1113 1114 AC_CHECK_HEADERS(readline.h readline/readline.h,[ 1115 for termlib in ncurses curses termcap terminfo termlib tinfo; do 1116 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break]) 1117 done 1118 AC_CHECK_LIB(readline, rl_callback_handler_install, 1119 [TERMLIBS="-lreadline $TERMLIBS" 1120 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline]) 1121 break], [TERMLIBS=], $TERMLIBS)]) 1122 ;; 1123 no) 1124 AC_MSG_RESULT(no) 1125 ;; 1126 *) 1127 AC_MSG_RESULT(yes) 1128 1129 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at 1130 # alternate readline path 1131 _ldflags=${LDFLAGS} 1132 _cppflags=${CPPFLAGS} 1133 1134 # Add additional search path 1135 LDFLAGS="-L$with_readline/lib $LDFLAGS" 1136 CPPFLAGS="-I$with_readline/include $CPPFLAGS" 1137 1138 AC_CHECK_HEADERS(readline.h history.h readline/readline.h) 1139 AC_CHECK_HEADERS(readline/history.h) 1140 1141 AC_CHECK_HEADERS(readline.h readline/readline.h,[ 1142 for termlib in ncurses curses termcap terminfo termlib; do 1143 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break]) 1144 done 1145 AC_CHECK_LIB(readline, rl_callback_handler_install, 1146 [TERMLDFLAGS="-L$with_readline/lib" 1147 TERMCPPFLAGS="-I$with_readline/include" 1148 CPPFLAGS="-I$with_readline/include $CPPFLAGS" 1149 TERMLIBS="-lreadline $TERMLIBS" 1150 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline]) 1151 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)]) 1152 1153 LDFLAGS=$_ldflags 1154 ;; 1155 esac], 1156 AC_MSG_RESULT(no) 1157) 1158AC_SUBST(TERMLIBS) 1159AC_SUBST(TERMLDFLAGS) 1160 1161# The readline API changed slightly from readline3 to readline4, so 1162# code will generate warnings on one of them unless we have a few 1163# special cases. 1164AC_CHECK_LIB(readline, rl_completion_matches, 1165 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 1166 [Do we have rl_completion_matches?])], 1167 [], 1168 [$TERMLIBS]) 1169 1170# not all readline libs have rl_event_hook or history_list 1171AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>]) 1172AC_CHECK_LIB(readline, history_list, 1173 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])], 1174 [], 1175 [$TERMLIBS]) 1176 1177# The following test taken from the cvs sources 1178# If we can't find connect, try looking in -lsocket, -lnsl, and -linet. 1179# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has 1180# libsocket.so which has a bad implementation of gethostbyname (it 1181# only looks in /etc/hosts), so we only look for -lsocket if we need 1182# it. 1183AC_CHECK_FUNCS(connect) 1184if test x"$ac_cv_func_connect" = x"no"; then 1185 case "$LIBS" in 1186 *-lnsl*) ;; 1187 *) AC_CHECK_LIB(nsl_s, connect) ;; 1188 esac 1189 case "$LIBS" in 1190 *-lnsl*) ;; 1191 *) AC_CHECK_LIB(nsl, connect) ;; 1192 esac 1193 case "$LIBS" in 1194 *-lsocket*) ;; 1195 *) AC_CHECK_LIB(socket, connect) ;; 1196 esac 1197 case "$LIBS" in 1198 *-linet*) ;; 1199 *) AC_CHECK_LIB(inet, connect) ;; 1200 esac 1201 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value 1202 dnl has been cached. 1203 if test x"$ac_cv_lib_socket_connect" = x"yes" || 1204 test x"$ac_cv_lib_inet_connect" = x"yes"; then 1205 # ac_cv_func_connect=yes 1206 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run 1207 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()]) 1208 fi 1209fi 1210 1211############################################### 1212# test for where we get yp_get_default_domain() from 1213AC_SEARCH_LIBS(yp_get_default_domain, [nsl]) 1214AC_CHECK_FUNCS(yp_get_default_domain) 1215 1216# Check if we have execl, if not we need to compile smbrun. 1217AC_CHECK_FUNCS(execl) 1218if test x"$ac_cv_func_execl" = x"no"; then 1219 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)" 1220fi 1221 1222AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64) 1223AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull) 1224AC_CHECK_FUNCS(fstat strchr utime utimes chflags) 1225AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid) 1226AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid) 1227AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent) 1228AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath) 1229AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64) 1230AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64) 1231AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf) 1232AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64) 1233AC_CHECK_FUNCS(getpwent_r) 1234AC_CHECK_FUNCS(getdents getdents64) 1235AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink) 1236AC_CHECK_FUNCS(syslog vsyslog timegm) 1237AC_CHECK_FUNCS(setlocale nl_langinfo) 1238AC_CHECK_FUNCS(nanosleep) 1239AC_CHECK_FUNCS(mlock munlock mlockall munlockall) 1240AC_CHECK_FUNCS(memalign posix_memalign) 1241AC_CHECK_HEADERS(sys/mman.h) 1242# setbuffer, shmget, shm_open are needed for smbtorture 1243AC_CHECK_FUNCS(setbuffer shmget shm_open) 1244 1245# Find a method of generating a stack trace 1246AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h) 1247AC_CHECK_FUNCS(backtrace_symbols) 1248AC_CHECK_LIB(exc, trace_back_stack) 1249 1250echo -n "checking for GPFS GPL libs... " 1251save_LIBS="$LIBS" 1252LIBS="$LIBS -lgpfs_gpl" 1253AC_TRY_LINK([#include <gpfs_gpl.h>], 1254 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)], 1255 samba_cv_HAVE_GPFS=yes, 1256 samba_cv_HAVE_GPFS=no) 1257echo $samba_cv_HAVE_GPFS 1258if test x"$samba_cv_HAVE_GPFS" = x"yes"; then 1259 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available]) 1260 default_shared_modules="$default_shared_modules vfs_gpfs" 1261fi 1262LIBS="$save_LIBS" 1263 1264# Note that all the libunwind symbols in the API are defined to internal 1265# platform-specific version, so we must include libunwind.h before checking 1266# any of them. 1267AC_MSG_CHECKING([for libunwind]) 1268save_LIBS=$LIBS 1269if test x"$UNAME_P" = xunknown ; then 1270 # This probably won't link without the platform-specific libunwind. 1271 LIBS="$LIBS -lunwind" 1272else 1273 # Add the platform-specific libunwind module. uname -p seems the most 1274 # plausible option and works for ia64, where libunwind is most useful. 1275 LIBS="$LIBS -lunwind -lunwind-$UNAME_P" 1276fi 1277 1278AC_TRY_LINK( 1279 [ 1280#ifdef HAVE_LIBUNWIND_H 1281#include <libunwind.h> 1282#endif 1283 ], 1284 [ 1285 unw_context_t ctx; unw_cursor_t cur; 1286 char buf[256]; unw_word_t off; 1287 unw_getcontext(&ctx); unw_init_local(&cur, &ctx); 1288 unw_get_proc_name(&cur, buf, sizeof(buf), &off); 1289 ], 1290 [ 1291 AC_MSG_RESULT(yes) 1292 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available]) 1293 1294 # If we have libunwind, test whether we also have libunwind-ptrace 1295 # which would let us unwind arbitrary processes. 1296 save_LIBS=$LIBS 1297 AC_CHECK_HEADERS(libunwind-ptrace.h) 1298 AC_CHECK_LIB(unwind-ptrace, _UPT_create, 1299 [ 1300 LIBUNWIND_PTRACE="-lunwind-ptrace"; 1301 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1, 1302 [Whether libunwind-ptrace.a is available.]) 1303 ], 1304 [ LIBUNWIND_PTRACE="" ]) 1305 1306 LIBS=$save_LIBS 1307 ], 1308 [ 1309 AC_MSG_RESULT(no) 1310 LIBS=$save_LIBS 1311 ]) 1312 1313# To use libunwind-ptrace, we also need to make some ptrace system calls. 1314if test x"$LIBUNWIND_PTRACE" != x"" ; then 1315 AC_CHECK_HEADERS(sys/ptrace.h) 1316 AC_MSG_CHECKING([for the Linux ptrace(2) interface]) 1317 AC_TRY_LINK( 1318 [ 1319#if HAVE_SYS_TYPES_H 1320#include <sys/types.h> 1321#endif 1322#if HAVE_SYS_PTRACE_H 1323#include <sys/ptrace.h> 1324#endif 1325 ], 1326 [ 1327 int main(int argc, const char ** argv) 1328 { 1329 pid_t me = (pid_t)-1; 1330 ptrace(PTRACE_ATTACH, me, 0, 0); 1331 ptrace(PTRACE_DETACH, me, 0, 0); 1332 return 0; 1333 } 1334 ], 1335 [ 1336 AC_MSG_RESULT(yes) 1337 AC_DEFINE(HAVE_LINUX_PTRACE, 1, 1338 [Whether the Linux ptrace(2) interface is available.]) 1339 ], 1340 [ 1341 AC_MSG_RESULT(no) 1342 LIBUNWIND_PTRACE="" 1343 ]) 1344fi 1345 1346AC_SUBST(LIBUNWIND_PTRACE) 1347 1348AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir) 1349AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir) 1350AC_CHECK_FUNCS(__getcwd _getcwd) 1351AC_CHECK_FUNCS(__xstat __fxstat __lxstat) 1352AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat) 1353AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir) 1354AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl) 1355AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read) 1356AC_CHECK_FUNCS(getdirentries _write __write _fork __fork) 1357AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64) 1358AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64) 1359AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64) 1360AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64) 1361AC_CHECK_FUNCS(open64 _open64 __open64 creat64) 1362AC_CHECK_FUNCS(prctl) 1363 1364AC_TRY_COMPILE([ 1365#ifdef HAVE_SYS_PRCTL_H 1366#include <sys/prctl.h> 1367#endif 1368], 1369[int i; i = prtcl(0); ], 1370AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[]) 1371 1372# 1373# 1374# 1375case "$host_os" in 1376 *linux*) 1377 # glibc <= 2.3.2 has a broken getgrouplist 1378 AC_TRY_RUN([ 1379#include <unistd.h> 1380#include <sys/utsname.h> 1381main() { 1382 /* glibc up to 2.3 has a broken getgrouplist */ 1383#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) 1384 int libc_major = __GLIBC__; 1385 int libc_minor = __GLIBC_MINOR__; 1386 1387 if (libc_major < 2) 1388 exit(1); 1389 if ((libc_major == 2) && (libc_minor <= 3)) 1390 exit(1); 1391#endif 1392 exit(0); 1393} 1394], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no]) 1395 if test x"$linux_getgrouplist_ok" = x"yes"; then 1396 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist]) 1397 fi 1398 ;; 1399 *) 1400 AC_CHECK_FUNCS(getgrouplist) 1401 ;; 1402esac 1403 1404# 1405# stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX 1406# 1407 1408if test x$ac_cv_func_stat64 = xno ; then 1409 AC_MSG_CHECKING([for stat64 in <sys/stat.h>]) 1410 AC_TRY_LINK([ 1411#if defined(HAVE_UNISTD_H) 1412#include <unistd.h> 1413#endif 1414#include <sys/stat.h> 1415], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes]) 1416 AC_MSG_RESULT([$ac_cv_func_stat64]) 1417 if test x$ac_cv_func_stat64 = xyes ; then 1418 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available]) 1419 fi 1420fi 1421 1422if test x$ac_cv_func_lstat64 = xno ; then 1423 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>]) 1424 AC_TRY_LINK([ 1425#if defined(HAVE_UNISTD_H) 1426#include <unistd.h> 1427#endif 1428#include <sys/stat.h> 1429], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes]) 1430 AC_MSG_RESULT([$ac_cv_func_lstat64]) 1431 if test x$ac_cv_func_lstat64 = xyes ; then 1432 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available]) 1433 fi 1434fi 1435 1436if test x$ac_cv_func_fstat64 = xno ; then 1437 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>]) 1438 AC_TRY_LINK([ 1439#if defined(HAVE_UNISTD_H) 1440#include <unistd.h> 1441#endif 1442#include <sys/stat.h> 1443], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes]) 1444 AC_MSG_RESULT([$ac_cv_func_fstat64]) 1445 if test x$ac_cv_func_fstat64 = xyes ; then 1446 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available]) 1447 fi 1448fi 1449 1450################################################# 1451# Check whether struct stat has timestamps with sub-second resolution. 1452# At least IRIX and Solaris have these. 1453# 1454# We check that 1455# all of st_mtim, st_atim and st_ctim exist 1456# all of the members are in fact of type struct timespec 1457# 1458# There is some conflicting standards weirdness about whether we should use 1459# "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we 1460# prefer struct timespec. 1461 1462AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires, 1463 [ 1464 AC_TRY_COMPILE( 1465 [ 1466#if TIME_WITH_SYS_TIME 1467# include <sys/time.h> 1468# include <time.h> 1469#else 1470# if HAVE_SYS_TIME_H 1471# include <sys/time.h> 1472# else 1473# include <time.h> 1474# endif 1475#endif 1476#ifdef HAVE_SYS_STAT_H 1477#include <sys/stat.h> 1478#endif 1479 ], 1480 [ 1481 struct timespec t; 1482 struct stat s = {0}; 1483 t.tv_sec = s.st_mtim.tv_sec; 1484 t.tv_nsec = s.st_mtim.tv_nsec; 1485 t.tv_sec = s.st_ctim.tv_sec; 1486 t.tv_nsec = s.st_ctim.tv_nsec; 1487 t.tv_sec = s.st_atim.tv_sec; 1488 t.tv_nsec = s.st_atim.tv_nsec; 1489 ], 1490 samba_stat_hires=yes, samba_stat_hires=no) 1491 ]) 1492 1493if test x"$samba_stat_hires" = x"yes" ; then 1494 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim]) 1495 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim]) 1496 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim]) 1497 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, 1498 [whether struct stat has sub-second timestamps]) 1499fi 1500 1501AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec, 1502 [ 1503 AC_TRY_COMPILE( 1504 [ 1505#if TIME_WITH_SYS_TIME 1506# include <sys/time.h> 1507# include <time.h> 1508#else 1509# if HAVE_SYS_TIME_H 1510# include <sys/time.h> 1511# else 1512# include <time.h> 1513# endif 1514#endif 1515#ifdef HAVE_SYS_STAT_H 1516#include <sys/stat.h> 1517#endif 1518 ], 1519 [ 1520 struct timespec t; 1521 struct stat s = {0}; 1522 t.tv_sec = s.st_mtime; 1523 t.tv_nsec = s.st_mtimensec; 1524 t.tv_sec = s.st_ctime; 1525 t.tv_nsec = s.st_ctimensec; 1526 t.tv_sec = s.st_atime; 1527 t.tv_nsec = s.st_atimensec; 1528 ], 1529 samba_stat_hires=yes, samba_stat_hires=no) 1530 ]) 1531 1532if test x"$samba_stat_hires_notimespec" = x"yes" ; then 1533 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec]) 1534 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec]) 1535 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec]) 1536 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, 1537 [whether struct stat has sub-second timestamps without struct timespec]) 1538fi 1539 1540##################################### 1541# needed for SRV lookups 1542AC_CHECK_LIB(resolv, dn_expand) 1543AC_CHECK_LIB(resolv, _dn_expand) 1544AC_CHECK_LIB(resolv, __dn_expand) 1545 1546# 1547# Check for the functions putprpwnam, set_auth_parameters, 1548# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity 1549# Needed for OSF1 and HPUX. 1550# 1551 1552AC_LIBTESTFUNC(security, putprpwnam) 1553AC_LIBTESTFUNC(sec, putprpwnam) 1554 1555AC_LIBTESTFUNC(security, set_auth_parameters) 1556AC_LIBTESTFUNC(sec, set_auth_parameters) 1557 1558# UnixWare 7.x has its getspnam in -lgen 1559AC_LIBTESTFUNC(gen, getspnam) 1560 1561AC_LIBTESTFUNC(security, getspnam) 1562AC_LIBTESTFUNC(sec, getspnam) 1563 1564AC_LIBTESTFUNC(security, bigcrypt) 1565AC_LIBTESTFUNC(sec, bigcrypt) 1566 1567AC_LIBTESTFUNC(security, getprpwnam) 1568AC_LIBTESTFUNC(sec, getprpwnam) 1569 1570AC_CHECK_FUNCS(strsignal) 1571 1572############################################ 1573# Check if we have libattr 1574case "$host_os" in 1575 *osf*) 1576 AC_SEARCH_LIBS(getproplist, [proplist]) 1577 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist) 1578 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry) 1579 AC_CHECK_FUNCS(sizeof_proplist_entry) 1580 ;; 1581 *) 1582 AC_SEARCH_LIBS(getxattr, [attr]) 1583 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr) 1584 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea) 1585 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea) 1586 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr) 1587 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr) 1588 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove) 1589 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef) 1590 ;; 1591esac 1592 1593######################################################## 1594# Do xattr functions take additional options like on Darwin? 1595if test x"$ac_cv_func_getxattr" = x"yes" ; then 1596 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [ 1597 old_LIBS=$LIBS 1598 LIBS="$LIBS $ACL_LIBS" 1599 AC_TRY_COMPILE([ 1600 #include <sys/types.h> 1601 #if HAVE_ATTR_XATTR_H 1602 #include <attr/xattr.h> 1603 #elif HAVE_SYS_XATTR_H 1604 #include <sys/xattr.h> 1605 #endif 1606 ],[ 1607 getxattr(0, 0, 0, 0, 0, 0); 1608 ], 1609 [smb_attr_cv_xattr_add_opt=yes], 1610 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS]) 1611 ]) 1612 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then 1613 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options]) 1614 fi 1615fi 1616 1617# Check if we have extattr 1618case "$host_os" in 1619 *freebsd4* | *dragonfly* ) 1620 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work]) 1621 ;; 1622 *) 1623 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link) 1624 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link) 1625 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link) 1626 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link) 1627 ;; 1628esac 1629 1630# Set defaults 1631PIE_CFLAGS="" 1632PIE_LDFLAGS="" 1633AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)]) 1634 1635if test "x$enable_pie" != xno 1636then 1637 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie, 1638 [ 1639 cat > conftest.c <<EOF 1640int foo; 1641main () { return 0;} 1642EOF 1643 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]) 1644 then 1645 samba_cv_fpie=yes 1646 else 1647 samba_cv_fpie=no 1648 fi 1649 rm -f conftest* 1650 ]) 1651 if test x"${samba_cv_fpie}" = x"yes" 1652 then 1653 PIE_CFLAGS="-fPIE" 1654 PIE_LDFLAGS="-pie" 1655 fi 1656fi 1657 1658# Assume non-shared by default and override below 1659BLDSHARED="false" 1660 1661# these are the defaults, good for lots of systems 1662HOST_OS="$host_os" 1663LDSHFLAGS="-shared" 1664SONAMEFLAG="#" 1665SHLD="\${CC} \${CFLAGS}" 1666PICFLAG="${PIE_CFLAGS}" 1667SHLIBEXT="so" 1668 1669# this bit needs to be modified for each OS that supports share libs 1670# You need to specify how to create a shared library and 1671 # how to compile C code to produce PIC object files 1672 1673 AC_MSG_CHECKING([ability to build shared libraries]) 1674 1675 # and these are for particular systems 1676 case "$host_os" in 1677 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) 1678 BLDSHARED="true" 1679 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then 1680 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 1681 else 1682 LDSHFLAGS="-shared -Wl,-Bsymbolic" 1683 fi 1684 DYNEXP="-Wl,--export-dynamic" 1685 PICFLAG="-fPIC" 1686 SONAMEFLAG="-Wl,-soname=" 1687 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1688 ;; 1689 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris]) 1690 BLDSHARED="true" 1691 LDSHFLAGS="-G" 1692 SONAMEFLAG="-h " 1693 if test "${GCC}" = "yes"; then 1694 PICFLAG="-fPIC" 1695 SONAMEFLAG="-Wl,-soname=" 1696 if test "${ac_cv_prog_gnu_ld}" = "yes"; then 1697 DYNEXP="-Wl,-E" 1698 fi 1699 else 1700 PICFLAG="-KPIC" 1701 ## ${CFLAGS} added for building 64-bit shared 1702 ## libs using Sun's Compiler 1703 LDSHFLAGS="-G \${CFLAGS}" 1704 fi 1705 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block]) 1706 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) 1707 ;; 1708 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4]) 1709 BLDSHARED="true" 1710 LDSHFLAGS="-G" 1711 SONAMEFLAG="-Wl,-h," 1712 PICFLAG="-KPIC" # Is this correct for SunOS 1713 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1714 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) 1715 ;; 1716 *netbsd* | *freebsd* | *dragonfly* ) 1717 BLDSHARED="true" 1718 LDSHFLAGS="-shared" 1719 DYNEXP="-Wl,--export-dynamic" 1720 SONAMEFLAG="-Wl,-soname," 1721 PICFLAG="-fPIC -DPIC" 1722 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block]) 1723 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) 1724 ;; 1725 *openbsd*) BLDSHARED="true" 1726 LDSHFLAGS="-shared" 1727 DYNEXP="-Wl,-Bdynamic" 1728 SONAMEFLAG="-Wl,-soname," 1729 PICFLAG="-fPIC" 1730 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block]) 1731 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) 1732 ;; 1733 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix]) 1734 case "$host_os" in 1735 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6]) 1736 ;; 1737 esac 1738 BLDSHARED="true" 1739 LDSHFLAGS="-set_version sgi1.0 -shared" 1740 SONAMEFLAG="-soname " 1741 SHLD="\${LD}" 1742 if test "${GCC}" = "yes"; then 1743 PICFLAG="-fPIC" 1744 else 1745 PICFLAG="-KPIC" 1746 fi 1747 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block]) 1748 ;; 1749 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix]) 1750 BLDSHARED="true" 1751 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc" 1752 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc" 1753 PICFLAG="-O2" 1754 # as AIX code is always position independent... 1755 # .po will just create compile warnings, use po.o: 1756 if test "${GCC}" != "yes"; then 1757 ## for funky AIX compiler using strncpy() 1758 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000" 1759 fi 1760 1761 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block]) 1762 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly]) 1763 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly]) 1764 ;; 1765 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX]) 1766 # Use special PIC flags for the native HP-UX compiler. 1767 BLDSHARED="true" 1768 SHLD="cc" 1769 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z" 1770 SONAMEFLAG="-Wl,+h " 1771 PICFLAG="+z" 1772 if test "${GCC}" = "yes"; then 1773 PICFLAG="-fPIC" 1774 else 1775 PICFLAG="+z" 1776 fi 1777 if test "$host_cpu" = "ia64"; then 1778 SHLIBEXT="so" 1779 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32" 1780 else 1781 SHLIBEXT="sl" 1782 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib" 1783 fi 1784 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block]) 1785 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element]) 1786 ;; 1787 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) 1788 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1789 ;; 1790 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1]) 1791 BLDSHARED="true" 1792 LDSHFLAGS="-shared" 1793 SONAMEFLAG="-Wl,-soname," 1794 PICFLAG="-fPIC" 1795 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1796 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) 1797 ;; 1798 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix]) 1799 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1800 ;; 1801 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware]) 1802 BLDSHARED="true" 1803 LDSHFLAGS="-shared" 1804 SONAMEFLAG="-Wl,-soname," 1805 PICFLAG="-KPIC" 1806 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1807 ;; 1808 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2]) 1809 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1810 ;; 1811 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]) 1812 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1813 ;; 1814 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system]) 1815 case "$host" in 1816 *-univel-*) if [ test "$GCC" != yes ]; then 1817 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available]) 1818 fi 1819 LDSHFLAGS="-G" 1820 DYNEXP="-Bexport" 1821 ;; 1822 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);; 1823 esac 1824 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1825 ;; 1826 1827 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system]) 1828 if [ test "$GCC" != yes ]; then 1829 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available]) 1830 fi 1831 LDSHFLAGS="-G" 1832 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1833 ;; 1834 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096) 1835 BLDSHARED="false" 1836 LDSHFLAGS="" 1837 ;; 1838 1839 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX]) 1840 BLDSHARED="true" 1841 LDSHFLAGS="-bundle -flat_namespace -undefined suppress" 1842 SHLIBEXT="dylib" 1843 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1844 ;; 1845 1846 *) 1847 AC_DEFINE(STAT_ST_BLOCKSIZE,512) 1848 ;; 1849 esac 1850 1851if test "$enable_shared" != "yes"; then 1852 BLDSHARED=false 1853fi 1854 1855 AC_MSG_RESULT($BLDSHARED) 1856 1857AC_MSG_CHECKING([LDFLAGS]) 1858AC_MSG_RESULT([$LDFLAGS]) 1859AC_MSG_CHECKING([DYNEXP]) 1860AC_MSG_RESULT([$DYNEXP]) 1861 1862####################################################### 1863# test whether building a shared library actually works 1864if test $BLDSHARED = true; then 1865 1866AC_MSG_CHECKING([SHLD]) 1867AC_MSG_RESULT([$SHLD]) 1868AC_MSG_CHECKING([LDSHFLAGS]) 1869AC_MSG_RESULT([$LDSHFLAGS]) 1870 1871AC_MSG_CHECKING([SHLIBEXT]) 1872AC_MSG_RESULT([$SHLIBEXT]) 1873AC_MSG_CHECKING([SONAMEFLAG]) 1874AC_MSG_RESULT([$SONAMEFLAG]) 1875 1876AC_MSG_CHECKING([PICFLAG]) 1877AC_MSG_RESULT([$PICFLAG]) 1878 1879AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX]) 1880AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX]) 1881 1882AC_CACHE_CHECK([whether building shared libraries actually works], 1883 [ac_cv_shlib_works],[ 1884 # try building a trivial shared library 1885 ac_cv_shlib_works=no 1886 # The $SHLD and $LDSHFLAGS variables may contain references to other 1887 # variables so they need to be eval'ed. 1888 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \ 1889 shlib.o ${srcdir-.}/tests/shlib.c && \ 1890 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \ 1891 shlib.o && ac_cv_shlib_works=yes 1892 rm -f "shlib.$SHLIBEXT" shlib.o 1893 1894]) 1895if test $ac_cv_shlib_works = no; then 1896 BLDSHARED=false 1897fi 1898fi 1899 1900if test x"$BLDSHARED" != x"true"; then 1901 LDSHFLAGS="shared-libraries-disabled" 1902 SONAMEFLAG="shared-libraries-disabled" 1903 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled" 1904 SHLD="shared-libraries-disabled" 1905 PICFLAG="${PIE_CFLAGS}" 1906 SHLIBEXT="shared_libraries_disabled" 1907fi 1908 1909AC_MSG_CHECKING([used PICFLAG]) 1910AC_MSG_RESULT([$PICFLAG]) 1911 1912AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension]) 1913 1914################ 1915 1916AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[ 1917AC_TRY_RUN([#include <stdio.h> 1918main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }], 1919samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)]) 1920if test x"$samba_cv_have_longlong" = x"yes"; then 1921 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's]) 1922 AC_CHECK_TYPE(intptr_t, unsigned long long) 1923else 1924 AC_CHECK_TYPE(intptr_t, unsigned long) 1925fi 1926 1927# 1928# Check if the compiler supports the LL prefix on long long integers. 1929# AIX needs this. 1930 1931AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [ 1932 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL], 1933 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)]) 1934if test x"$samba_cv_compiler_supports_ll" = x"yes"; then 1935 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers]) 1936fi 1937 1938 1939AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[ 1940AC_TRY_RUN([#include <time.h> 1941main() { exit((sizeof(time_t) == 8) ? 0 : 1); }], 1942samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)]) 1943if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then 1944 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type]) 1945fi 1946 1947AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[ 1948AC_TRY_RUN([#include <stdio.h> 1949#include <sys/stat.h> 1950main() { exit((sizeof(off_t) == 8) ? 0 : 1); }], 1951samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)]) 1952if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then 1953 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type]) 1954fi 1955 1956AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[ 1957AC_TRY_RUN([ 1958#if defined(HAVE_UNISTD_H) 1959#include <unistd.h> 1960#endif 1961#include <stdio.h> 1962#include <sys/stat.h> 1963main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], 1964samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)]) 1965if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then 1966 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available]) 1967fi 1968 1969AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[ 1970AC_TRY_RUN([ 1971#if defined(HAVE_UNISTD_H) 1972#include <unistd.h> 1973#endif 1974#include <stdio.h> 1975#include <sys/stat.h> 1976main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }], 1977samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)]) 1978if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then 1979 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type]) 1980fi 1981 1982AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[ 1983AC_TRY_RUN([ 1984#if defined(HAVE_UNISTD_H) 1985#include <unistd.h> 1986#endif 1987#include <stdio.h> 1988#include <sys/stat.h> 1989main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], 1990samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)]) 1991if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then 1992 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available]) 1993fi 1994 1995AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[ 1996AC_TRY_RUN([ 1997#if defined(HAVE_UNISTD_H) 1998#include <unistd.h> 1999#endif 2000#include <stdio.h> 2001#include <sys/stat.h> 2002main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }], 2003samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)]) 2004if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then 2005 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type]) 2006fi 2007 2008AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[ 2009AC_TRY_RUN([ 2010#if defined(HAVE_UNISTD_H) 2011#include <unistd.h> 2012#endif 2013#include <stdio.h> 2014#include <sys/stat.h> 2015main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], 2016samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)]) 2017if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then 2018 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available]) 2019fi 2020 2021AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[ 2022AC_TRY_COMPILE([ 2023#if defined(HAVE_UNISTD_H) 2024#include <unistd.h> 2025#endif 2026#include <sys/types.h> 2027#include <dirent.h>], 2028[DIR64 de;], 2029samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)]) 2030if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then 2031 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available]) 2032fi 2033 2034AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[ 2035AC_TRY_COMPILE([ 2036#if defined(HAVE_UNISTD_H) 2037#include <unistd.h> 2038#endif 2039#include <sys/types.h> 2040#include <dirent.h>], 2041[struct dirent64 de;], 2042samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)]) 2043if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then 2044 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available]) 2045fi 2046 2047AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[ 2048AC_TRY_RUN([ 2049#if defined(HAVE_UNISTD_H) 2050#include <unistd.h> 2051#endif 2052#include <sys/types.h> 2053main() { dev_t dev; int i = major(dev); return 0; }], 2054samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)]) 2055if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then 2056 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available]) 2057fi 2058 2059AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[ 2060AC_TRY_RUN([ 2061#if defined(HAVE_UNISTD_H) 2062#include <unistd.h> 2063#endif 2064#include <sys/types.h> 2065main() { dev_t dev; int i = minor(dev); return 0; }], 2066samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)]) 2067if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then 2068 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available]) 2069fi 2070 2071AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[ 2072AC_TRY_RUN([ 2073#if defined(HAVE_UNISTD_H) 2074#include <unistd.h> 2075#endif 2076#include <sys/types.h> 2077main() { dev_t dev = makedev(1,2); return 0; }], 2078samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)]) 2079if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then 2080 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available]) 2081fi 2082 2083AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[ 2084AC_TRY_RUN([#include <stdio.h> 2085main() { char c; c=250; exit((c > 0)?0:1); }], 2086samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)]) 2087if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then 2088 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available]) 2089fi 2090 2091AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[ 2092AC_TRY_COMPILE([#include <sys/types.h> 2093#include <sys/socket.h> 2094#include <netinet/in.h>], 2095[struct sockaddr_in sock; sock.sin_len = sizeof(sock);], 2096samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)]) 2097if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then 2098 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property]) 2099fi 2100 2101AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[ 2102AC_TRY_COMPILE([#include <sys/types.h> 2103#include <dirent.h> 2104void seekdir(DIR *d, long loc) { return; }],[return 0;], 2105samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)]) 2106if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then 2107 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void]) 2108fi 2109 2110AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[ 2111AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);], 2112samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)]) 2113if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then 2114 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro]) 2115fi 2116 2117AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[ 2118AC_TRY_LINK([ 2119#include <sys/time.h> 2120#include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);], 2121 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes, 2122 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)]) 2123if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then 2124 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument]) 2125fi 2126 2127if test x"$samba_cv_WITH_PROFILE" = x"yes"; then 2128 2129 # On some systems (eg. Linux) librt can pull in libpthread. We 2130 # don't want this to happen because libpthreads changes signal delivery 2131 # semantics in ways we are not prepared for. This breaks Linux oplocks 2132 # which rely on signals. 2133 2134 AC_LIBTESTFUNC(rt, clock_gettime, 2135 [ 2136 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, 2137 [Whether clock_gettime is available]) 2138 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC) 2139 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID) 2140 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME) 2141 ]) 2142 2143fi 2144 2145AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[ 2146AC_TRY_LINK([#include <stdarg.h> 2147va_list ap1,ap2;], [va_copy(ap1,ap2);], 2148samba_cv_HAVE_VA_COPY=yes, 2149samba_cv_HAVE_VA_COPY=no)]) 2150if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then 2151 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available]) 2152else 2153 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[ 2154 AC_TRY_LINK([#include <stdarg.h> 2155 va_list ap1,ap2;], [__va_copy(ap1,ap2);], 2156 samba_cv_HAVE___VA_COPY=yes, 2157 samba_cv_HAVE___VA_COPY=no)]) 2158 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then 2159 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available]) 2160 fi 2161fi 2162 2163AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[ 2164AC_TRY_RUN([ 2165#include <sys/types.h> 2166#include <stdarg.h> 2167void foo(const char *format, ...) { 2168 va_list ap; 2169 int len; 2170 char buf[5]; 2171 2172 va_start(ap, format); 2173 len = vsnprintf(buf, 0, format, ap); 2174 va_end(ap); 2175 if (len != 5) exit(1); 2176 2177 va_start(ap, format); 2178 len = vsnprintf(0, 0, format, ap); 2179 va_end(ap); 2180 if (len != 5) exit(1); 2181 2182 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1); 2183 2184 exit(0); 2185} 2186main() { foo("hello"); } 2187], 2188samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)]) 2189if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then 2190 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf]) 2191fi 2192 2193AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[ 2194AC_TRY_RUN([#include <sys/types.h> 2195#include <dirent.h> 2196main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d); 2197if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 && 2198di->d_name[0] == 0) exit(0); exit(1);} ], 2199samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)]) 2200if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then 2201 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset]) 2202fi 2203 2204AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[ 2205AC_TRY_COMPILE([#include <sys/types.h> 2206#include <utime.h>], 2207[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));], 2208samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)]) 2209if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then 2210 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available]) 2211fi 2212 2213############## 2214# Check utmp details, but only if our OS offers utmp.h 2215if test x"$ac_cv_header_utmp_h" = x"yes"; then 2216dnl utmp and utmpx come in many flavours 2217dnl We need to check for many of them 2218dnl But we don't need to do each and every one, because our code uses 2219dnl mostly just the utmp (not utmpx) fields. 2220 2221AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx) 2222 2223AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[ 2224AC_TRY_COMPILE([#include <sys/types.h> 2225#include <utmp.h>], 2226[struct utmp ut; ut.ut_name[0] = 'a';], 2227samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)]) 2228if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then 2229 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name]) 2230fi 2231 2232AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[ 2233AC_TRY_COMPILE([#include <sys/types.h> 2234#include <utmp.h>], 2235[struct utmp ut; ut.ut_user[0] = 'a';], 2236samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)]) 2237if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then 2238 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user]) 2239fi 2240 2241AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[ 2242AC_TRY_COMPILE([#include <sys/types.h> 2243#include <utmp.h>], 2244[struct utmp ut; ut.ut_id[0] = 'a';], 2245samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)]) 2246if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then 2247 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id]) 2248fi 2249 2250AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[ 2251AC_TRY_COMPILE([#include <sys/types.h> 2252#include <utmp.h>], 2253[struct utmp ut; ut.ut_host[0] = 'a';], 2254samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)]) 2255if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then 2256 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host]) 2257fi 2258 2259AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[ 2260AC_TRY_COMPILE([#include <sys/types.h> 2261#include <utmp.h>], 2262[struct utmp ut; time_t t; ut.ut_time = t;], 2263samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)]) 2264if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then 2265 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time]) 2266fi 2267 2268AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[ 2269AC_TRY_COMPILE([#include <sys/types.h> 2270#include <utmp.h>], 2271[struct utmp ut; struct timeval tv; ut.ut_tv = tv;], 2272samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)]) 2273if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then 2274 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv]) 2275fi 2276 2277AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[ 2278AC_TRY_COMPILE([#include <sys/types.h> 2279#include <utmp.h>], 2280[struct utmp ut; ut.ut_type = 0;], 2281samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)]) 2282if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then 2283 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type]) 2284fi 2285 2286AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[ 2287AC_TRY_COMPILE([#include <sys/types.h> 2288#include <utmp.h>], 2289[struct utmp ut; ut.ut_pid = 0;], 2290samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)]) 2291if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then 2292 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid]) 2293fi 2294 2295AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[ 2296AC_TRY_COMPILE([#include <sys/types.h> 2297#include <utmp.h>], 2298[struct utmp ut; ut.ut_exit.e_exit = 0;], 2299samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)]) 2300if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then 2301 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit]) 2302fi 2303 2304AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[ 2305AC_TRY_COMPILE([#include <sys/types.h> 2306#include <utmp.h>], 2307[struct utmp ut; ut.ut_addr = 0;], 2308samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)]) 2309if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then 2310 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr]) 2311fi 2312 2313if test x$ac_cv_func_pututline = xyes ; then 2314 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[ 2315 AC_TRY_COMPILE([#include <sys/types.h> 2316#include <utmp.h>], 2317 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);], 2318 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)]) 2319 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then 2320 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer]) 2321 fi 2322fi 2323 2324AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[ 2325AC_TRY_COMPILE([#include <sys/types.h> 2326#include <utmpx.h>], 2327[struct utmpx ux; ux.ut_syslen = 0;], 2328samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)]) 2329if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then 2330 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen]) 2331fi 2332 2333fi 2334# end utmp details 2335 2336 2337ICONV_LOCATION=standard 2338LOOK_DIRS="/usr /usr/local /sw /opt" 2339AC_ARG_WITH(libiconv, 2340[ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ], 2341[ 2342 if test "$withval" = "no" ; then 2343 AC_MSG_ERROR([argument to --with-libiconv must be a directory]) 2344 else 2345 if test "$withval" != "yes" ; then 2346 ICONV_PATH_SPEC=yes 2347 LOOK_DIRS="$withval" 2348 fi 2349 fi 2350]) 2351 2352for i in $LOOK_DIRS ; do 2353 save_LIBS=$LIBS 2354 save_LDFLAGS=$LDFLAGS 2355 save_CPPFLAGS=$CPPFLAGS 2356 ICONV_FOUND="no" 2357 unset libext 2358 CPPFLAGS="$CPPFLAGS -I$i/include" 2359dnl This is here to handle -withval stuff for --with-libiconv 2360dnl Perhaps we should always add a -L 2361 2362dnl Check lib and lib32 library variants to cater for IRIX ABI-specific 2363dnl installation paths. This gets a little tricky since we might have iconv 2364dnl in both libiconv and in libc. In this case the jm_ICONV test will always 2365dnl succeed when the header is found. To counter this, make sure the 2366dnl library directory is there and check the ABI directory first (which 2367dnl should be harmless on other systems. 2368dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib. 2369 for l in "lib32" "lib" "lib/hpux32"; do 2370 if test -d "$i/$l" ; then 2371 LDFLAGS="$save_LDFLAGS -L$i/$l" 2372 LIBS= 2373 export LDFLAGS LIBS CPPFLAGS 2374dnl Try to find iconv(3) 2375 jm_ICONV($i/$l) 2376 if test x"$ICONV_FOUND" = "xyes" ; then 2377 libext="$l" 2378 break; 2379 fi 2380 fi 2381 done 2382 2383 if test x"$ICONV_FOUND" = "xyes" ; then 2384 LDFLAGS=$save_LDFLAGS 2385 LIB_ADD_DIR(LDFLAGS, "$i/$libext") 2386 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include") 2387 LIBS="$save_LIBS" 2388 ICONV_LOCATION=$i 2389 export LDFLAGS LIBS CPPFLAGS 2390dnl Now, check for a working iconv ... we want to do it here because 2391dnl there might be a working iconv further down the list of LOOK_DIRS 2392 2393 ############ 2394 # check for iconv in libc 2395 ic_save_LIBS="$LIBS" 2396 if test x"$ICONV_PATH_SPEC" = "xyes" ; then 2397 LIBS="$LIBS -L$ICONV_LOCATION/$libext" 2398 fi 2399 if test x"$jm_cv_lib_iconv" != x; then 2400 LIBS="$LIBS -l$jm_cv_lib_iconv" 2401 fi 2402dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[ 2403 default_dos_charset=no 2404 default_display_charset=no 2405 default_unix_charset=no 2406 2407 # check for default dos charset name 2408 for j in CP850 IBM850 ; do 2409 rjs_CHARSET($j) 2410 if test x"$ICONV_CHARSET" = x"$j"; then 2411 default_dos_charset="\"$j\"" 2412 break 2413 fi 2414 done 2415 # check for default display charset name 2416 for j in ASCII 646 ; do 2417 rjs_CHARSET($j) 2418 if test x"$ICONV_CHARSET" = x"$j"; then 2419 default_display_charset="\"$j\"" 2420 break 2421 fi 2422 done 2423 # check for default unix charset name 2424 for j in UTF-8 UTF8 ; do 2425 rjs_CHARSET($j) 2426 if test x"$ICONV_CHARSET" = x"$j"; then 2427 default_unix_charset="\"$j\"" 2428 break 2429 fi 2430 done 2431 2432 if test "$default_dos_charset" != "no" -a \ 2433 "$default_dos_charset" != "cross" -a \ 2434 "$default_display_charset" != "no" -a \ 2435 "$default_display_charset" != "cross" -a \ 2436 "$default_unix_charset" != "no" -a \ 2437 "$default_unix_charset" != "cross" 2438 then 2439 samba_cv_HAVE_NATIVE_ICONV=yes 2440 else if test "$default_dos_charset" = "cross" -o \ 2441 "$default_display_charset" = "cross" -o \ 2442 "$default_unix_charset" = "cross" 2443 then 2444 samba_cv_HAVE_NATIVE_ICONV=cross 2445 else 2446 samba_cv_HAVE_NATIVE_ICONV=no 2447 fi 2448 fi 2449dnl ]) 2450 2451 LIBS="$ic_save_LIBS" 2452 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then 2453 CPPFLAGS=$save_CPPFLAGS 2454 LDFLAGS=$save_LDFLAGS 2455 LIBS=$save_LIBS 2456 if test x"$jm_cv_lib_iconv" != x; then 2457 LIBS="$LIBS -l$jm_cv_lib_iconv" 2458 fi 2459 dnl Add the flags we need to CPPFLAGS and LDFLAGS 2460 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include") 2461 LIB_ADD_DIR(LDFLAGS, "$i/$libext") 2462 export CPPFLAGS 2463 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv]) 2464 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name]) 2465 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name]) 2466 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name]) 2467 break 2468 fi 2469dnl We didn't find a working iconv, so keep going 2470 fi 2471dnl We only need to clean these up here for the next pass through the loop 2472 CPPFLAGS=$save_CPPFLAGS 2473 LDFLAGS=$save_LDFLAGS 2474 LIBS=$save_LIBS 2475 export LDFLAGS LIBS CPPFLAGS 2476done 2477unset libext 2478 2479 2480if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then 2481 AC_MSG_WARN([Sufficient support for iconv function was not found. 2482 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!]) 2483 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name]) 2484 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name]) 2485 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name]) 2486fi 2487 2488 2489AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[ 2490AC_TRY_RUN([ 2491#include <sys/types.h> 2492#include <fcntl.h> 2493#ifndef F_GETLEASE 2494#define F_GETLEASE 1025 2495#endif 2496main() { 2497 int fd = open("/dev/null", O_RDONLY); 2498 return fcntl(fd, F_GETLEASE, 0) == -1; 2499} 2500], 2501samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)]) 2502if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then 2503 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks]) 2504fi 2505 2506AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[ 2507AC_TRY_RUN([ 2508#include <sys/types.h> 2509#include <fcntl.h> 2510#include <signal.h> 2511#ifndef F_NOTIFY 2512#define F_NOTIFY 1026 2513#endif 2514main() { 2515 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0); 2516} 2517], 2518samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)]) 2519if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then 2520 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes]) 2521fi 2522 2523AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[ 2524AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h) 2525AC_CHECK_FUNC(inotify_init) 2526AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>]) 2527], 2528samba_cv_HAVE_INOTIFY=yes, 2529samba_cv_HAVE_INOTIFY=no, 2530samba_cv_HAVE_INOTIFY=cross) 2531 2532if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then 2533 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support]) 2534fi 2535 2536################################################# 2537# Check if FAM notifications are available. For FAM info, see 2538# http://oss.sgi.com/projects/fam/ 2539# http://savannah.nongnu.org/projects/fam/ 2540AC_ARG_ENABLE(fam, 2541[ --enable-fam Turn on FAM support (default=auto)]) 2542 2543if test x$enable_fam != xno; then 2544 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no]) 2545 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then 2546 # On IRIX, libfam requires libC, but other FAM implementations 2547 # might not need it. 2548 AC_CHECK_LIB(fam, FAMOpen2, 2549 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"], 2550 [samba_cv_HAVE_LIBFAM=no]) 2551 2552 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then 2553 samba_fam_xtra=-lC 2554 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2, 2555 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"], 2556 [samba_cv_HAVE_LIBFAM=no]) 2557 unset samba_fam_xtra 2558 fi 2559 fi 2560 2561 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then 2562 default_shared_modules="$default_shared_modules vfs_notify_fam" 2563 AC_TRY_COMPILE([#include <fam.h>], 2564 [FAMCodes code = FAMChanged;], 2565 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1, 2566 [Whether fam.h contains a typedef for enum FAMCodes]), 2567 []) 2568 fi 2569 2570 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then 2571 AC_MSG_ERROR(FAM support requested but FAM library not available ) 2572 fi 2573fi 2574 2575AC_SUBST(SMB_FAM_LIBS) 2576 2577################################################# 2578# Check for DMAPI interfaces in libdm/libjfsdm/libxsdm 2579 2580SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) ) 2581 2582AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[ 2583AC_TRY_RUN([ 2584#include <sys/types.h> 2585#include <fcntl.h> 2586#include <signal.h> 2587#include <sys/file.h> 2588#ifndef LOCK_MAND 2589#define LOCK_MAND 32 2590#define LOCK_READ 64 2591#endif 2592main() { 2593 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0); 2594} 2595], 2596samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)]) 2597if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then 2598 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes]) 2599fi 2600 2601 2602AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[ 2603AC_TRY_COMPILE([#include <sys/types.h> 2604#include <fcntl.h>], 2605[oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;], 2606samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)]) 2607if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then 2608 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available]) 2609fi 2610 2611################################################# 2612# Check for POSIX capability support 2613 2614AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes; 2615 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)], 2616 [], []) 2617 2618if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then 2619 2620 ac_save_LIBS=$LIBS 2621 AC_LIBTESTFUNC(cap, cap_get_proc) 2622 2623 AC_CACHE_CHECK([for POSIX capabilities], 2624 samba_cv_HAVE_POSIX_CAPABILITIES, 2625 [ 2626 AC_TRY_RUN([ 2627#include <sys/types.h> 2628#include <sys/capability.h> 2629main() { 2630 cap_t cap; 2631 cap_value_t vals[1]; 2632 if (!(cap = cap_get_proc())) 2633 exit(1); 2634 vals[0] = CAP_CHOWN; 2635 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR); 2636 cap_set_proc(cap); 2637 exit(0); 2638}], 2639 samba_cv_HAVE_POSIX_CAPABILITIES=yes, 2640 samba_cv_HAVE_POSIX_CAPABILITIES=no, 2641 samba_cv_HAVE_POSIX_CAPABILITIES=cross) 2642 ]) 2643 2644if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then 2645 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1, 2646 [Whether POSIX capabilities are available]) 2647else 2648 LIBS=$ac_save_LIBS 2649fi 2650 2651fi 2652 2653# 2654# Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h 2655# This is *really* broken but some systems (DEC OSF1) do this.... JRA. 2656# 2657 2658AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[ 2659AC_TRY_COMPILE([#include <sys/types.h> 2660#if defined(HAVE_RPC_RPC_H) 2661#include <rpc/rpc.h> 2662#endif], 2663[int16 testvar;], 2664samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)]) 2665if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then 2666 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h]) 2667fi 2668 2669AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[ 2670AC_TRY_COMPILE([#include <sys/types.h> 2671#if defined(HAVE_RPC_RPC_H) 2672#include <rpc/rpc.h> 2673#endif], 2674[uint16 testvar;], 2675samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)]) 2676if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then 2677 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h]) 2678fi 2679 2680AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[ 2681AC_TRY_COMPILE([#include <sys/types.h> 2682#if defined(HAVE_RPC_RPC_H) 2683#include <rpc/rpc.h> 2684#endif], 2685[int32 testvar;], 2686samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)]) 2687if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then 2688 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h]) 2689fi 2690 2691AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[ 2692AC_TRY_COMPILE([#include <sys/types.h> 2693#if defined(HAVE_RPC_RPC_H) 2694#include <rpc/rpc.h> 2695#endif], 2696[uint32 testvar;], 2697samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)]) 2698if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then 2699 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h]) 2700fi 2701 2702dnl 2703dnl Some systems (SCO) have a problem including 2704dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined 2705dnl as a #define in <prot.h> and as part of an enum 2706dnl in <rpc/rpc.h>. 2707dnl 2708 2709AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[ 2710AC_TRY_COMPILE([#include <sys/types.h> 2711#ifdef HAVE_SYS_SECURITY_H 2712#include <sys/security.h> 2713#include <prot.h> 2714#endif /* HAVE_SYS_SECURITY_H */ 2715#if defined(HAVE_RPC_RPC_H) 2716#include <rpc/rpc.h> 2717#endif], 2718[int testvar;], 2719samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)]) 2720if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then 2721 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h]) 2722fi 2723 2724AC_MSG_CHECKING([for test routines]) 2725AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"], 2726 AC_MSG_RESULT(yes), 2727 AC_MSG_ERROR([cant find test code. Aborting config]), 2728 AC_MSG_WARN([cannot run when cross-compiling])) 2729 2730AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[ 2731AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"], 2732 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)]) 2733if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then 2734 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend]) 2735fi 2736 2737AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [ 2738AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"], 2739 samba_cv_HAVE_WORKING_AF_LOCAL=yes, 2740 samba_cv_HAVE_WORKING_AF_LOCAL=no, 2741 samba_cv_HAVE_WORKING_AF_LOCAL=cross)]) 2742if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno 2743then 2744 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets]) 2745fi 2746 2747AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[ 2748AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"], 2749 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)]) 2750if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then 2751 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken]) 2752fi 2753 2754AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[ 2755AC_TRY_RUN([#include <stdlib.h> 2756#include <sys/types.h> 2757#include <sys/stat.h> 2758#include <unistd.h> 2759main() { 2760 struct stat st; 2761 char tpl[20]="/tmp/test.XXXXXX"; 2762 int fd = mkstemp(tpl); 2763 if (fd == -1) exit(1); 2764 unlink(tpl); 2765 if (fstat(fd, &st) != 0) exit(1); 2766 if ((st.st_mode & 0777) != 0600) exit(1); 2767 exit(0); 2768}], 2769samba_cv_HAVE_SECURE_MKSTEMP=yes, 2770samba_cv_HAVE_SECURE_MKSTEMP=no, 2771samba_cv_HAVE_SECURE_MKSTEMP=cross)]) 2772if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then 2773 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure]) 2774fi 2775 2776AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[ 2777 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"], 2778 [samba_cv_HAVE_BROKEN_READDIR=no], 2779 [samba_cv_HAVE_BROKEN_READDIR=yes], 2780 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])]) 2781 2782if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then 2783AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[ 2784 AC_TRY_RUN([ 2785#include "${srcdir-.}/lib/repdir.c" 2786#include "${srcdir-.}/tests/os2_delete.c"], 2787 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)]) 2788fi 2789 2790if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then 2791 AC_DEFINE(REPLACE_READDIR,1,[replace readdir]) 2792fi 2793 2794SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX) 2795SMB_CHECK_SYSCONF(_SC_NPROC_ONLN) 2796SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN) 2797SMB_CHECK_SYSCONF(_SC_PAGESIZE) 2798AC_CHECK_FUNCS(getpagesize) 2799 2800################## 2801# look for a method of finding the list of network interfaces 2802iface=no; 2803AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[ 2804SAVE_CPPFLAGS="$CPPFLAGS" 2805CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 2806AC_TRY_RUN([ 2807#define HAVE_IFACE_AIX 1 2808#define AUTOCONF_TEST 1 2809#undef _XOPEN_SOURCE_EXTENDED 2810#include "${srcdir-.}/lib/interfaces.c"], 2811 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)]) 2812CPPFLAGS="$SAVE_CPPFLAGS" 2813if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then 2814 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available]) 2815fi 2816 2817if test $iface = no; then 2818AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[ 2819SAVE_CPPFLAGS="$CPPFLAGS" 2820CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 2821AC_TRY_RUN([ 2822#define HAVE_IFACE_IFCONF 1 2823#define AUTOCONF_TEST 1 2824#include "${srcdir-.}/lib/interfaces.c"], 2825 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)]) 2826CPPFLAGS="$SAVE_CPPFLAGS" 2827if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then 2828 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available]) 2829fi 2830fi 2831 2832if test $iface = no; then 2833AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[ 2834SAVE_CPPFLAGS="$CPPFLAGS" 2835CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 2836AC_TRY_RUN([ 2837#define HAVE_IFACE_IFREQ 1 2838#define AUTOCONF_TEST 1 2839#include "${srcdir-.}/lib/interfaces.c"], 2840 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)]) 2841CPPFLAGS="$SAVE_CPPFLAGS" 2842if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then 2843 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available]) 2844fi 2845fi 2846 2847 2848################################################ 2849# look for a method of setting the effective uid 2850seteuid=no; 2851if test $seteuid = no; then 2852AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[ 2853AC_TRY_RUN([ 2854#define AUTOCONF_TEST 1 2855#define USE_SETRESUID 1 2856#include "confdefs.h" 2857#include "${srcdir-.}/lib/util_sec.c"], 2858 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)]) 2859if test x"$samba_cv_USE_SETRESUID" = x"yes"; then 2860 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available]) 2861fi 2862fi 2863 2864 2865if test $seteuid = no; then 2866AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[ 2867AC_TRY_RUN([ 2868#define AUTOCONF_TEST 1 2869#define USE_SETREUID 1 2870#include "confdefs.h" 2871#include "${srcdir-.}/lib/util_sec.c"], 2872 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)]) 2873if test x"$samba_cv_USE_SETREUID" = x"yes"; then 2874 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available]) 2875fi 2876fi 2877 2878if test $seteuid = no; then 2879AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[ 2880AC_TRY_RUN([ 2881#define AUTOCONF_TEST 1 2882#define USE_SETEUID 1 2883#include "confdefs.h" 2884#include "${srcdir-.}/lib/util_sec.c"], 2885 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)]) 2886if test x"$samba_cv_USE_SETEUID" = x"yes"; then 2887 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available]) 2888fi 2889fi 2890 2891if test $seteuid = no; then 2892AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[ 2893AC_TRY_RUN([ 2894#define AUTOCONF_TEST 1 2895#define USE_SETUIDX 1 2896#include "confdefs.h" 2897#include "${srcdir-.}/lib/util_sec.c"], 2898 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)]) 2899if test x"$samba_cv_USE_SETUIDX" = x"yes"; then 2900 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available]) 2901fi 2902fi 2903 2904 2905AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[ 2906AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"], 2907 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)]) 2908if test x"$samba_cv_HAVE_MMAP" = x"yes"; then 2909 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works]) 2910fi 2911 2912AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[ 2913AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"], 2914 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)]) 2915if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then 2916 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available]) 2917fi 2918 2919AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[ 2920AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"], 2921 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)]) 2922if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then 2923 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken]) 2924 2925else 2926 2927dnl 2928dnl Don't check for 64 bit fcntl locking if we know that the 2929dnl glibc2.1 broken check has succeeded. 2930dnl 2931 2932 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[ 2933 AC_TRY_RUN([ 2934#if defined(HAVE_UNISTD_H) 2935#include <unistd.h> 2936#endif 2937#include <stdio.h> 2938#include <stdlib.h> 2939 2940#ifdef HAVE_FCNTL_H 2941#include <fcntl.h> 2942#endif 2943 2944#ifdef HAVE_SYS_FCNTL_H 2945#include <sys/fcntl.h> 2946#endif 2947main() { struct flock64 fl64; 2948#if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64) 2949exit(0); 2950#else 2951exit(1); 2952#endif 2953}], 2954 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)]) 2955 2956 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then 2957 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available]) 2958 fi 2959fi 2960 2961AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[ 2962AC_TRY_COMPILE([#include <sys/types.h> 2963#include <sys/stat.h> 2964#include <unistd.h>], 2965[struct stat st; st.st_blocks = 0;], 2966samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)]) 2967if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then 2968 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property]) 2969fi 2970 2971AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[ 2972AC_TRY_COMPILE([#include <sys/types.h> 2973#include <sys/stat.h> 2974#include <unistd.h>], 2975[struct stat st; st.st_blksize = 0;], 2976samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)]) 2977if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then 2978 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property]) 2979fi 2980 2981AC_CACHE_CHECK([for st_flags in struct stat], 2982 samba_cv_HAVE_STAT_ST_FLAGS, 2983 [ 2984 AC_TRY_COMPILE([#include <sys/types.h> 2985#include <sys/stat.h> 2986#include <unistd.h>], 2987 [struct stat st; st.st_flags = 0;], 2988 samba_cv_HAVE_STAT_ST_FLAGS=yes, 2989 samba_cv_HAVE_STAT_ST_FLAGS=no, 2990 samba_cv_HAVE_STAT_ST_FLAGS=cross) 2991 ]) 2992 2993if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then 2994 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1, 2995 [Whether the stat struct has a st_flags member]) 2996fi 2997 2998case "$host_os" in 2999*linux*) 3000AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[ 3001AC_TRY_COMPILE([ 3002#ifdef HAVE_SYS_VFS_H 3003#include <sys/vfs.h> 3004#endif 3005#ifdef HAVE_SYS_CAPABILITY_H 3006#include <sys/capability.h> 3007#endif 3008],[int i;], 3009 samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)]) 3010if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then 3011 AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files]) 3012fi 3013;; 3014esac 3015 3016AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[ 3017AC_TRY_COMPILE([ 3018#include <sys/types.h> 3019#include <sys/acl.h> 3020#if defined(HAVE_RPCSVC_NIS_H) 3021#include <rpcsvc/nis.h> 3022#endif], 3023[int i;], 3024samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)]) 3025if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then 3026 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken]) 3027fi 3028 3029AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[ 3030AC_TRY_RUN([ 3031#include <stdio.h> 3032#include <limits.h> 3033main() { 3034 char *newpath = realpath("/tmp", NULL); 3035 exit ((newpath != NULL) ? 0 : 1); 3036} 3037], 3038samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)]) 3039if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then 3040 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL]) 3041fi 3042 3043################################################# 3044# check for AFS clear-text auth support 3045samba_cv_WITH_AFS=no 3046AC_MSG_CHECKING(whether to use AFS clear-text auth) 3047AC_ARG_WITH(afs, 3048[ --with-afs Include AFS clear-text auth support (default=no) ], 3049[ case "$withval" in 3050 yes|auto) 3051 AC_MSG_RESULT($withval) 3052 samba_cv_WITH_AFS=$withval 3053 ;; 3054 *) 3055 AC_MSG_RESULT(no) 3056 ;; 3057 esac ], 3058 AC_MSG_RESULT(no) 3059) 3060 3061#################################################### 3062# check for Linux-specific AFS fake-kaserver support 3063samba_cv_WITH_FAKE_KASERVER=no 3064AC_MSG_CHECKING(whether to use AFS fake-kaserver) 3065AC_ARG_WITH(fake-kaserver, 3066[ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ], 3067[ case "$withval" in 3068 yes|auto) 3069 AC_MSG_RESULT($withval) 3070 samba_cv_WITH_FAKE_KASERVER=$withval 3071 ;; 3072 *) 3073 AC_MSG_RESULT(no) 3074 ;; 3075 esac ], 3076 AC_MSG_RESULT(no) 3077) 3078 3079################################################# 3080# decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER 3081if test x"$samba_cv_WITH_AFS" != x"no" || 3082 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then 3083 3084 # see if this box has the afs-headers in /usr/include/afs 3085 AC_MSG_CHECKING(for /usr/include/afs) 3086 if test -d /usr/include/afs; then 3087 CFLAGS="$CFLAGS -I/usr/include/afs" 3088 CPPFLAGS="$CPPFLAGS -I/usr/include/afs" 3089 AC_MSG_RESULT(yes) 3090 else 3091 AC_MSG_RESULT(no) 3092 fi 3093 3094 # check for afs.h 3095 have_afs_headers=no 3096 AC_CHECK_HEADERS(afs.h afs/afs.h) 3097 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then 3098 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" || 3099 test x"$samba_cv_WITH_AFS" = x"auto"; then 3100 AC_MSG_WARN([AFS cannot be supported without afs.h]) 3101 else 3102 AC_MSG_ERROR([AFS cannot be supported without afs.h]) 3103 fi 3104 else 3105 have_afs_headers=yes 3106 fi 3107fi 3108 3109if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then 3110 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support]) 3111fi 3112 3113################################################# 3114# check whether to compile AFS/NT ACL mapping module 3115samba_cv_WITH_VFS_AFSACL=no 3116AC_MSG_CHECKING(whether to use AFS ACL mapping module) 3117AC_ARG_WITH(vfs-afsacl, 3118[ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ], 3119[ case "$withval" in 3120 yes|auto) 3121 AC_MSG_RESULT($withval) 3122 samba_cv_WITH_VFS_AFSACL=yes 3123 ;; 3124 *) 3125 AC_MSG_RESULT(no) 3126 ;; 3127 esac ], 3128 AC_MSG_RESULT(no) 3129) 3130 3131if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then 3132 default_shared_modules="$default_shared_modules vfs_afsacl" 3133fi 3134 3135if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then 3136 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support]) 3137fi 3138 3139################################################# 3140# check for the DFS clear-text auth system 3141AC_MSG_CHECKING(whether to use DFS clear-text auth) 3142AC_ARG_WITH(dfs, 3143[ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)], 3144[ case "$withval" in 3145 yes) 3146 AC_MSG_RESULT(yes) 3147 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support]) 3148 ;; 3149 *) 3150 AC_MSG_RESULT(no) 3151 ;; 3152 esac ], 3153 AC_MSG_RESULT(no) 3154) 3155 3156######################################################## 3157# Compile with LDAP support? 3158 3159with_ldap_support=auto 3160AC_MSG_CHECKING([for LDAP support]) 3161 3162AC_ARG_WITH(ldap, 3163[ --with-ldap LDAP support (default yes)], 3164[ case "$withval" in 3165 yes|no) 3166 with_ldap_support=$withval 3167 ;; 3168 esac ]) 3169 3170AC_MSG_RESULT($with_ldap_support) 3171 3172SMBLDAP="" 3173AC_SUBST(SMBLDAP) 3174SMBLDAPUTIL="" 3175AC_SUBST(SMBLDAPUTIL) 3176LDBLDAP="" 3177AC_SUBST(LDBLDAP) 3178 3179if test x"$with_ldap_support" != x"no"; then 3180 3181 ################################################################## 3182 # first test for ldap.h and lber.h 3183 # (ldap.h is required for this test) 3184 AC_CHECK_HEADERS(ldap.h lber.h) 3185 3186 if test x"$ac_cv_header_ldap_h" != x"yes"; then 3187 if test x"$with_ldap_support" = x"yes"; then 3188 AC_MSG_ERROR(ldap.h is needed for LDAP support) 3189 else 3190 AC_MSG_WARN(ldap.h is needed for LDAP support) 3191 fi 3192 3193 with_ldap_support=no 3194 fi 3195 3196 ################################################################## 3197 # HP/UX does not have ber_tag_t in lber.h - it must be configured as 3198 # unsigned int in include/includes.h 3199 case $host_os in 3200 *hpux*) 3201 AC_MSG_WARN(ber_tag_t is needed for LDAP support) 3202 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux) 3203 with_ldap_support=yes 3204 ;; 3205 *) 3206 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>]) 3207 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then 3208 if test x"$with_ldap_support" = x"yes"; then 3209 AC_MSG_ERROR(ber_tag_t is needed for LDAP support) 3210 else 3211 AC_MSG_WARN(ber_tag_t is needed for LDAP support) 3212 fi 3213 with_ldap_support=no 3214 fi 3215 ;; 3216 esac 3217fi 3218 3219if test x"$with_ldap_support" != x"no"; then 3220 ac_save_LIBS=$LIBS 3221 3222 ################################################################## 3223 # we might need the lber lib on some systems. To avoid link errors 3224 # this test must be before the libldap test 3225 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf) 3226 3227 ######################################################## 3228 # now see if we can find the ldap libs in standard paths 3229 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init) 3230 3231 ######################################################## 3232 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments? 3233 # Check found in pam_ldap 145. 3234 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS) 3235 3236 LIBS="$LIBS $LDAP_LIBS" 3237 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [ 3238 AC_TRY_COMPILE([ 3239 #include <lber.h> 3240 #include <ldap.h>], 3241 [ldap_set_rebind_proc(0, 0, 0);], 3242 [smb_ldap_cv_ldap_set_rebind_proc=3], 3243 [smb_ldap_cv_ldap_set_rebind_proc=2] 3244 ) 3245 ]) 3246 3247 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc]) 3248 3249 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 3250 3251 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then 3252 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available]) 3253 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED" 3254 default_static_modules="$default_static_modules pdb_ldap idmap_ldap"; 3255 default_shared_modules="$default_shared_modules"; 3256 SMBLDAP="lib/smbldap.o" 3257 SMBLDAPUTIL="lib/smbldap_util.o" 3258 with_ldap_support=yes 3259 AC_MSG_CHECKING(whether LDAP support is used) 3260 AC_MSG_RESULT(yes) 3261 else 3262 if test x"$with_ldap_support" = x"yes"; then 3263 AC_MSG_ERROR(libldap is needed for LDAP support) 3264 else 3265 AC_MSG_WARN(libldap is needed for LDAP support) 3266 fi 3267 3268 LDAP_LIBS="" 3269 with_ldap_support=no 3270 fi 3271 LIBS=$ac_save_LIBS 3272fi 3273 3274 3275################################################# 3276# active directory support 3277 3278with_ads_support=auto 3279AC_MSG_CHECKING([for Active Directory and krb5 support]) 3280 3281AC_ARG_WITH(ads, 3282[ --with-ads Active Directory support (default auto)], 3283[ case "$withval" in 3284 yes|no) 3285 with_ads_support="$withval" 3286 ;; 3287 esac ]) 3288 3289AC_MSG_RESULT($with_ads_support) 3290 3291FOUND_KRB5=no 3292KRB5_LIBS="" 3293 3294if test x"$with_ldap_support" != x"yes"; then 3295 3296 if test x"$with_ads_support" = x"yes"; then 3297 AC_MSG_ERROR(Active Directory Support requires LDAP support) 3298 elif test x"$with_ads_support" = x"auto"; then 3299 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support)) 3300 with_ads_support=no 3301 fi 3302 3303else 3304 3305 # Check to see whether there is enough LDAP functionality to be able 3306 # to build AD support. 3307 3308# HPUX only has ldap_init; ok, we take care of this in smbldap.c 3309case "$host_os" in 3310 *hpux*) 3311 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS) 3312 3313 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then 3314 if test x"$with_ads_support" = x"yes"; then 3315 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init) 3316 elif test x"$with_ads_support" = x"auto"; then 3317 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX)) 3318 with_ads_support=no 3319 fi 3320 fi 3321 ;; 3322 *) 3323 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 3324 3325 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then 3326 if test x"$with_ads_support" = x"yes"; then 3327 AC_MSG_ERROR(Active Directory support requires ldap_initialize) 3328 elif test x"$with_ads_support" = x"auto"; then 3329 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize)) 3330 with_ads_support=no 3331 fi 3332 fi 3333 ;; 3334esac 3335 3336 3337 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS) 3338 3339 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then 3340 if test x"$with_ads_support" = x"yes"; then 3341 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry) 3342 elif test x"$with_ads_support" = x"auto"; then 3343 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry)) 3344 with_ads_support=no 3345 fi 3346 fi 3347 3348fi 3349 3350if test x"$with_ads_support" != x"no"; then 3351 3352 # Do no harm to the values of CFLAGS and LIBS while testing for 3353 # Kerberos support. 3354 3355 if test x$FOUND_KRB5 = x"no"; then 3356 ################################################# 3357 # check for location of Kerberos 5 install 3358 AC_MSG_CHECKING(for kerberos 5 install path) 3359 AC_ARG_WITH(krb5, 3360 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)], 3361 [ case "$withval" in 3362 no) 3363 AC_MSG_RESULT(no krb5-path given) 3364 ;; 3365 yes) 3366 AC_MSG_RESULT(/usr) 3367 FOUND_KRB5=yes 3368 ;; 3369 *) 3370 AC_MSG_RESULT($withval) 3371 KRB5_CFLAGS="-I$withval/include" 3372 KRB5_CPPFLAGS="-I$withval/include" 3373 KRB5_LDFLAGS="-L$withval/lib" 3374 FOUND_KRB5=yes 3375 if test -x "$withval/bin/krb5-config"; then 3376 KRB5CONFIG=$withval/bin/krb5-config 3377 fi 3378 ;; 3379 esac ], 3380 AC_MSG_RESULT(no krb5-path given) 3381 ) 3382 fi 3383 3384 ################################################# 3385 # check for krb5-config from recent MIT and Heimdal kerberos 5 3386 AC_PATH_PROG(KRB5CONFIG, krb5-config) 3387 AC_MSG_CHECKING(for working krb5-config) 3388 if test -x "$KRB5CONFIG"; then 3389 ac_save_CFLAGS=$CFLAGS 3390 CFLAGS="";export CFLAGS 3391 ac_save_LDFLAGS=$LDFLAGS 3392 LDFLAGS="";export LDFLAGS 3393 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`" 3394 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`" 3395 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 3396 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 3397 CFLAGS=$ac_save_CFLAGS;export CFLAGS 3398 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS 3399 FOUND_KRB5=yes 3400 AC_MSG_RESULT(yes) 3401 else 3402 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) 3403 fi 3404 3405 if test x$FOUND_KRB5 = x"no"; then 3406 ################################################# 3407 # see if this box has the SuSE location for the heimdal krb implementation 3408 AC_MSG_CHECKING(for /usr/include/heimdal) 3409 if test -d /usr/include/heimdal; then 3410 if test -f /usr/lib/heimdal/lib/libkrb5.a; then 3411 KRB5_CFLAGS="-I/usr/include/heimdal" 3412 KRB5_CPPFLAGS="-I/usr/include/heimdal" 3413 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib" 3414 AC_MSG_RESULT(yes) 3415 else 3416 KRB5_CFLAGS="-I/usr/include/heimdal" 3417 KRB5_CPPFLAGS="-I/usr/include/heimdal" 3418 AC_MSG_RESULT(yes) 3419 fi 3420 else 3421 AC_MSG_RESULT(no) 3422 fi 3423 fi 3424 3425 if test x$FOUND_KRB5 = x"no"; then 3426 ################################################# 3427 # see if this box has the RedHat location for kerberos 3428 AC_MSG_CHECKING(for /usr/kerberos) 3429 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then 3430 KRB5_LDFLAGS="-L/usr/kerberos/lib" 3431 KRB5_CFLAGS="-I/usr/kerberos/include" 3432 KRB5_CPPFLAGS="-I/usr/kerberos/include" 3433 AC_MSG_RESULT(yes) 3434 else 3435 AC_MSG_RESULT(no) 3436 fi 3437 fi 3438 3439 ac_save_CFLAGS=$CFLAGS 3440 ac_save_CPPFLAGS=$CPPFLAGS 3441 ac_save_LDFLAGS=$LDFLAGS 3442 3443 CFLAGS="$KRB5_CFLAGS $CFLAGS" 3444 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" 3445 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" 3446 3447 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS" 3448 3449 # now check for krb5.h. Some systems have the libraries without the headers! 3450 # note that this check is done here to allow for different kerberos 3451 # include paths 3452 AC_CHECK_HEADERS(krb5.h) 3453 3454 if test x"$ac_cv_header_krb5_h" = x"no"; then 3455 3456 # Give a warning if AD support was not explicitly requested, 3457 # i.e with_ads_support = auto, otherwise die with an error. 3458 3459 if test x"$with_ads_support" = x"yes"; then 3460 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h]) 3461 else 3462 AC_MSG_WARN([Active Directory cannot be supported without krb5.h]) 3463 fi 3464 3465 # Turn off AD support and restore CFLAGS and LIBS variables 3466 3467 with_ads_support="no" 3468 3469 CFLAGS=$ac_save_CFLAGS 3470 CPPFLAGS=$ac_save_CPPFLAGS 3471 LDFLAGS=$ac_save_LDFLAGS 3472 fi 3473 AC_CHECK_HEADERS(krb5/locate_plugin.h) 3474fi 3475 3476# Now we have determined whether we really want ADS support 3477use_ads=no 3478if test x"$with_ads_support" != x"no"; then 3479 use_ads=yes 3480 have_gssapi=no 3481 ac_save_LIBS=$LIBS 3482 3483 # now check for gssapi headers. This is also done here to allow for 3484 # different kerberos include paths 3485 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h) 3486 3487 ################################################################## 3488 # we might need the k5crypto and com_err libraries on some systems 3489 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list) 3490 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data) 3491 3492 # Heimdal checks. 3493 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key) 3494 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator) 3495 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec) 3496 3497 # Heimdal checks. On static Heimdal gssapi must be linked before krb5. 3498 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes) 3499 3500 ######################################################## 3501 # now see if we can find the krb5 libs in standard paths 3502 # or as specified above 3503 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended) 3504 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare) 3505 3506 ######################################################## 3507 # now see if we can find the gssapi libs in standard paths 3508 if test x"$have_gssapi" != x"yes"; then 3509 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes) 3510 fi 3511 3512 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS) 3513 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS) 3514 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS) 3515 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS) 3516 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS) 3517 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS) 3518 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 3519 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS) 3520 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 3521 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS) 3522 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 3523 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS) 3524 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 3525 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 3526 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS) 3527 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS) 3528 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS) 3529 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS) 3530 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS) 3531 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS) 3532 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS) 3533 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS) 3534 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS) 3535 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS) 3536 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS) 3537 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS) 3538 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS) 3539 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS) 3540 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS) 3541 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS) 3542 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS) 3543 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS) 3544 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS) 3545 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS) 3546 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS) 3547 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS) 3548 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS) 3549 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS) 3550 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS) 3551 3552 LIBS="$KRB5_LIBS $LIBS" 3553 3554 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype, 3555 smb_krb5_ticket_has_keyinfo, 3556 [ 3557 AC_TRY_COMPILE( 3558 [ 3559 #include <krb5.h> 3560 ], 3561 [ 3562 krb5_ticket ticket; 3563 krb5_kvno kvno; 3564 krb5_enctype enctype; 3565 3566 enctype = ticket.enc_part.enctype; 3567 kvno = ticket.enc_part.kvno; 3568 ], 3569 [ smb_krb5_ticket_has_keyinfo=yes ], 3570 [ smb_krb5_ticket_has_keyinfo=no ]) 3571 ]) 3572 3573 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then 3574 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1, 3575 [Whether the krb5_ticket structure contains the kvno and enctype]) 3576 fi 3577 3578 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument, 3579 smb_krb5_creds_opt_free_context, 3580 [ 3581 AC_TRY_COMPILE([ 3582 #include <krb5.h>], 3583 [ 3584 krb5_context ctx; 3585 krb5_get_init_creds_opt *opt = NULL; 3586 krb5_get_init_creds_opt_free(ctx, opt); 3587 ], 3588 [smb_krb5_creds_opt_free_context=yes], 3589 [smb_krb5_creds_opt_free_context=no] 3590 ) 3591 ]) 3592 3593 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then 3594 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1, 3595 [Whether krb5_get_init_creds_opt_free takes a context argument]) 3596 fi 3597 3598 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [ 3599 AC_TRY_COMPILE([ 3600 #include <krb5.h>], 3601 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], 3602 [smb_krb5_verify_checksum=7], 3603 [smb_krb5_verify_checksum=6], 3604 ) 3605 ]) 3606 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum]) 3607 3608 AC_CACHE_CHECK([for checksum in krb5_checksum], 3609 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[ 3610 AC_TRY_COMPILE([#include <krb5.h>], 3611 [krb5_checksum cksum; cksum.checksum.length = 0;], 3612 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes, 3613 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)]) 3614 3615 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then 3616 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1, 3617 [Whether the krb5_checksum struct has a checksum property]) 3618 fi 3619 3620 AC_CACHE_CHECK([for etype in EncryptedData], 3621 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[ 3622 AC_TRY_COMPILE([#include <krb5.h>], 3623 [EncryptedData edata; edata.etype = 0;], 3624 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes, 3625 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)]) 3626 3627 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then 3628 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1, 3629 [Whether the EncryptedData struct has a etype property]) 3630 fi 3631 3632 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req], 3633 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[ 3634 AC_TRY_COMPILE([#include <krb5.h>], 3635 [krb5_ap_req *ap_req; ap_req->ticket = NULL;], 3636 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes, 3637 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)]) 3638 3639 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then 3640 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1, 3641 [Whether the krb5_ap_req struct has a ticket pointer]) 3642 fi 3643 3644 AC_CACHE_CHECK([for e_data pointer in krb5_error], 3645 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[ 3646 AC_TRY_COMPILE([#include <krb5.h>], 3647 [krb5_error err; err.e_data = NULL;], 3648 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes, 3649 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)]) 3650 3651 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then 3652 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1, 3653 [Whether the krb5_error struct has a e_data pointer]) 3654 fi 3655 3656 AC_CACHE_CHECK([for krb5_crypto type], 3657 samba_cv_HAVE_KRB5_CRYPTO,[ 3658 AC_TRY_COMPILE([#include <krb5.h>], 3659 [krb5_crypto crypto;], 3660 samba_cv_HAVE_KRB5_CRYPTO=yes, 3661 samba_cv_HAVE_KRB5_CRYPTO=no)]) 3662 3663 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then 3664 AC_DEFINE(HAVE_KRB5_CRYPTO,1, 3665 [Whether the type krb5_crypto exists]) 3666 fi 3667 3668 AC_CACHE_CHECK([for krb5_encrypt_block type], 3669 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[ 3670 AC_TRY_COMPILE([#include <krb5.h>], 3671 [krb5_encrypt_block block;], 3672 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes, 3673 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)]) 3674 3675 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then 3676 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1, 3677 [Whether the type krb5_encrypt_block exists]) 3678 fi 3679 3680 AC_CACHE_CHECK([for addrtype in krb5_address], 3681 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[ 3682 AC_TRY_COMPILE([#include <krb5.h>], 3683 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;], 3684 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes, 3685 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)]) 3686 3687 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then 3688 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1, 3689 [Whether the krb5_address struct has a addrtype property]) 3690 fi 3691 3692 AC_CACHE_CHECK([for addr_type in krb5_address], 3693 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[ 3694 AC_TRY_COMPILE([#include <krb5.h>], 3695 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;], 3696 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes, 3697 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)]) 3698 3699 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then 3700 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1, 3701 [Whether the krb5_address struct has a addr_type property]) 3702 fi 3703 3704 AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 3705 samba_cv_HAVE_KRB5_TKT_ENC_PART2, 3706 [AC_TRY_COMPILE([#include <krb5.h>], 3707 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;], 3708 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)]) 3709 3710 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then 3711 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1, 3712 [Whether the krb5_ticket struct has a enc_part2 property]) 3713 fi 3714 3715 AC_CACHE_CHECK([for keyblock in krb5_creds], 3716 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[ 3717 AC_TRY_COMPILE([#include <krb5.h>], 3718 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;], 3719 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes, 3720 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)]) 3721 3722 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then 3723 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1, 3724 [Whether the krb5_creds struct has a keyblock property]) 3725 fi 3726 3727 AC_CACHE_CHECK([for session in krb5_creds], 3728 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[ 3729 AC_TRY_COMPILE([#include <krb5.h>], 3730 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;], 3731 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes, 3732 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)]) 3733 3734 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then 3735 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1, 3736 [Whether the krb5_creds struct has a session property]) 3737 fi 3738 3739 AC_CACHE_CHECK([for keyvalue in krb5_keyblock], 3740 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[ 3741 AC_TRY_COMPILE([#include <krb5.h>], 3742 [krb5_keyblock key; key.keyvalue.data = NULL;], 3743 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes, 3744 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)]) 3745 3746 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then 3747 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1, 3748 [Whether the krb5_keyblock struct has a keyvalue property]) 3749 fi 3750 3751 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5], 3752 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[ 3753 AC_TRY_COMPILE([#include <krb5.h>], 3754 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;], 3755 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes, 3756 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)]) 3757 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56], 3758 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[ 3759 AC_TRY_COMPILE([#include <krb5.h>], 3760 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;], 3761 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes, 3762 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)]) 3763# Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken 3764# w.r.t. arcfour and windows, so we must not enable it here 3765 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\ 3766 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then 3767 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1, 3768 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available]) 3769 fi 3770 3771 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY], 3772 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[ 3773 AC_TRY_COMPILE([#include <krb5.h>], 3774 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;], 3775 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes, 3776 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)]) 3777 3778 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then 3779 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1, 3780 [Whether the AP_OPTS_USE_SUBKEY ap option is available]) 3781 fi 3782 3783 AC_CACHE_CHECK([for KV5M_KEYTAB], 3784 samba_cv_HAVE_KV5M_KEYTAB,[ 3785 AC_TRY_COMPILE([#include <krb5.h>], 3786 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;], 3787 samba_cv_HAVE_KV5M_KEYTAB=yes, 3788 samba_cv_HAVE_KV5M_KEYTAB=no)]) 3789 3790 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then 3791 AC_DEFINE(HAVE_KV5M_KEYTAB,1, 3792 [Whether the KV5M_KEYTAB option is available]) 3793 fi 3794 3795 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM], 3796 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[ 3797 AC_TRY_COMPILE([#include <krb5.h>], 3798 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;], 3799 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes, 3800 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)]) 3801 3802 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then 3803 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1, 3804 [Whether KRB5_KU_OTHER_CKSUM is available]) 3805 fi 3806 3807 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM], 3808 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[ 3809 AC_TRY_COMPILE([#include <krb5.h>], 3810 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;], 3811 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes, 3812 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)]) 3813 3814 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then 3815 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1, 3816 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available]) 3817 fi 3818 3819 AC_CACHE_CHECK([for the krb5_princ_component macro], 3820 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[ 3821 AC_TRY_LINK([#include <krb5.h>], 3822 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);], 3823 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes, 3824 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)]) 3825 3826 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then 3827 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1, 3828 [Whether krb5_princ_component is available]) 3829 fi 3830 3831 AC_CACHE_CHECK([for key in krb5_keytab_entry], 3832 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[ 3833 AC_TRY_COMPILE([#include <krb5.h>], 3834 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;], 3835 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes, 3836 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)]) 3837 3838 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then 3839 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1, 3840 [Whether krb5_keytab_entry has key member]) 3841 fi 3842 3843 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry], 3844 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[ 3845 AC_TRY_COMPILE([#include <krb5.h>], 3846 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;], 3847 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes, 3848 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)]) 3849 3850 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then 3851 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1, 3852 [Whether krb5_keytab_entry has keyblock member]) 3853 fi 3854 3855 AC_CACHE_CHECK([for magic in krb5_address], 3856 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[ 3857 AC_TRY_COMPILE([#include <krb5.h>], 3858 [krb5_address addr; addr.magic = 0;], 3859 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes, 3860 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)]) 3861 3862 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then 3863 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1, 3864 [Whether the krb5_address struct has a magic property]) 3865 fi 3866 3867 AC_CACHE_CHECK([for WRFILE: keytab support], 3868 samba_cv_HAVE_WRFILE_KEYTAB,[ 3869 AC_TRY_RUN([ 3870#include<krb5.h> 3871 main() 3872 { 3873 krb5_context context; 3874 krb5_keytab keytab; 3875 3876 krb5_init_context(&context); 3877 return krb5_kt_resolve(context, "WRFILE:api", &keytab); 3878 }], 3879 samba_cv_HAVE_WRFILE_KEYTAB=yes, 3880 samba_cv_HAVE_WRFILE_KEYTAB=no)]) 3881 3882 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then 3883 AC_DEFINE(HAVE_WRFILE_KEYTAB,1, 3884 [Whether the WRFILE:-keytab is supported]) 3885 fi 3886 3887 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data], 3888 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[ 3889 AC_TRY_COMPILE([#include <krb5.h>], 3890 [ 3891 krb5_context context; 3892 krb5_principal principal; 3893 krb5_realm realm; realm = *krb5_princ_realm(context, principal);], 3894 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes, 3895 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)]) 3896 3897 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then 3898 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1, 3899 [Whether krb5_princ_realm returns krb5_realm or krb5_data]) 3900 fi 3901 3902 AC_CACHE_CHECK([for krb5_addresses type], 3903 samba_cv_HAVE_KRB5_ADDRESSES,[ 3904 AC_TRY_COMPILE([#include <krb5.h>], 3905 [krb5_addresses addr;], 3906 samba_cv_HAVE_KRB5_ADDRESSES=yes, 3907 samba_cv_HAVE_KRB5_ADDRESSES=no)]) 3908 3909 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then 3910 AC_DEFINE(HAVE_KRB5_ADDRESSES,1, 3911 [Whether the type krb5_addresses type exists]) 3912 fi 3913 3914 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal], 3915 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [ 3916 AC_TRY_COMPILE([#include <krb5.h>], 3917 [ 3918 krb5_mk_error(0,0,0);], 3919 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes, 3920 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)]) 3921 3922 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then 3923 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1, 3924 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal]) 3925 fi 3926 3927 3928 # 3929 # 3930 # Now the decisions whether we can support krb5 3931 # 3932 # NOTE: all tests should be done before this block! 3933 # 3934 # 3935 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then 3936 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5) 3937 use_ads=no 3938 fi 3939 3940 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \ 3941 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes" 3942 then 3943 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected) 3944 use_ads=no 3945 fi 3946 3947 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \ 3948 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes" 3949 then 3950 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected) 3951 use_ads=no 3952 fi 3953 3954 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \ 3955 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes" 3956 then 3957 AC_MSG_WARN(no KT_FREE_FUNCTION detected) 3958 use_ads=no 3959 fi 3960 3961 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \ 3962 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes" 3963 then 3964 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected) 3965 use_ads=no 3966 fi 3967 3968 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then 3969 3970 # We only need the following functions if we can't get the enctype 3971 # and kvno out of the ticket directly (ie. on Heimdal). 3972 3973 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes" 3974 then 3975 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected) 3976 use_ads=no 3977 fi 3978 3979 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes" 3980 then 3981 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected) 3982 use_ads=no 3983 fi 3984 3985 fi 3986 3987 if test x"$use_ads" = x"yes"; then 3988 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support]) 3989 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support]) 3990 if test x"$have_gssapi" = x"yes"; then 3991 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]) 3992 fi 3993 else 3994 if test x"$with_ads_support" = x"yes"; then 3995 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support) 3996 else 3997 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support) 3998 fi 3999 AC_REMOVE_DEFINE(HAVE_KRB5_H) 4000 AC_REMOVE_DEFINE(HAVE_GSSAPI_H) 4001 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H) 4002 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H) 4003 KRB5_LIBS="" 4004 with_ads_support=no 4005 fi 4006 AC_MSG_CHECKING(whether Active Directory and krb5 support is used) 4007 AC_MSG_RESULT([$use_ads]) 4008 4009LIBS="$ac_save_LIBS" 4010fi 4011 4012AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache) 4013PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS" 4014 4015 4016######################################################## 4017# Compile with DNS Updates support? 4018 4019with_dnsupdate_support=no 4020AC_MSG_CHECKING([whether to enable DNS Updates support]) 4021 4022AC_ARG_WITH(dnsupdate, 4023[ --with-dnsupdate Enable DNS Updates support (default no)], 4024[ case "$withval" in 4025 yes|no) 4026 with_dnsupdate_support=$withval 4027 ;; 4028 esac ]) 4029 4030AC_MSG_RESULT($with_dnsupdate_support) 4031 4032if test x"$with_dnsupdate_support" != x"no"; then 4033 4034 ################################################################ 4035 # first test for Active Directory support being enabled 4036 #if test x"$with_ads_support" = x"no"; then 4037 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support) 4038 # with_dnsupdate_support=no 4039 #fi 4040 ################################################################## 4041 # then test for uuid.h (necessary to generate unique DNS keynames 4042 # (uuid.h is required for this test) 4043 AC_CHECK_HEADERS(uuid/uuid.h) 4044 4045 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then 4046 if test x"$with_dnsupdate_support" = x"yes"; then 4047 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support) 4048 else 4049 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support) 4050 fi 4051 with_dnsupdate_support=no 4052 fi 4053fi 4054 4055if test x"$with_dnsupdate_support" != x"no"; then 4056 4057 ######################################################## 4058 # Now see if we can find the uuid libs in standard paths 4059 # On some systems, the uuid API is in libc, so we have to 4060 # be careful not to insert a spurious -luuid. 4061 4062 UUID_LIBS="" 4063 AC_LIBTESTFUNC(uuid, uuid_generate, 4064 [ 4065 case " $LIBS " in 4066 *\ -luuid\ *) 4067 UUID_LIBS="-luuid" 4068 SMB_REMOVE_LIB(uuid) 4069 ;; 4070 esac 4071 4072 with_dnsupdate_support=yes 4073 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support]) 4074 ], 4075 [ 4076 if test x"$with_dnsupdate_support" = x"yes"; then 4077 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support) 4078 else 4079 AC_MSG_WARN(libuuid is needed to enable DNS Updates support) 4080 fi 4081 with_dnsupdate_support=no 4082 ]) 4083fi 4084 4085################################################# 4086# check for automount support 4087AC_MSG_CHECKING(whether to use automount) 4088AC_ARG_WITH(automount, 4089[ --with-automount Include automount support (default=no)], 4090[ case "$withval" in 4091 yes) 4092 AC_MSG_RESULT(yes) 4093 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support]) 4094 ;; 4095 *) 4096 AC_MSG_RESULT(no) 4097 ;; 4098 esac ], 4099 AC_MSG_RESULT(no) 4100) 4101 4102################################################# 4103# check for smbmount support 4104AC_MSG_CHECKING(whether to use smbmount) 4105AC_ARG_WITH(smbmount, 4106[ --with-smbmount Include smbmount (Linux only) support (default=no)], 4107[ case "$withval" in 4108 yes) 4109 case "$host_os" in 4110 *linux*) 4111 AC_MSG_RESULT(yes) 4112 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount]) 4113 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount" 4114 ;; 4115 *) 4116 AC_MSG_ERROR(not on a linux system!) 4117 ;; 4118 esac 4119 ;; 4120 *) 4121 AC_MSG_RESULT(no) 4122 ;; 4123 esac ], 4124 AC_MSG_RESULT(no) 4125) 4126 4127################################################# 4128# check for mount- and umount.cifs support 4129CIFSMOUNT_PROGS="" 4130INSTALL_CIFSMOUNT="" 4131UNINSTALL_CIFSMOUNT="" 4132AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs) 4133AC_ARG_WITH(cifsmount, 4134[ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)], 4135[ case "$withval" in 4136 no) 4137 AC_MSG_RESULT(no) 4138 ;; 4139 *) 4140 case "$host_os" in 4141 *linux*) 4142 AC_MSG_RESULT(yes) 4143 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs]) 4144 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs" 4145 INSTALL_CIFSMOUNT="installcifsmount" 4146 UNINSTALL_CIFSMOUNT="uninstallcifsmount" 4147 ;; 4148 *) 4149 AC_MSG_ERROR(not on a linux system!) 4150 ;; 4151 esac 4152 ;; 4153 esac ], 4154[ case "$host_os" in 4155 *linux*) 4156 AC_MSG_RESULT(yes) 4157 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs]) 4158 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs" 4159 INSTALL_CIFSMOUNT="installcifsmount" 4160 UNINSTALL_CIFSMOUNT="uninstallcifsmount" 4161 ;; 4162 *) 4163 AC_MSG_RESULT(no) 4164 ;; 4165 esac ] 4166) 4167 4168 4169################################################# 4170# check for a PAM clear-text auth, accounts, password and session support 4171with_pam_for_crypt=no 4172try_pam=no 4173AC_MSG_CHECKING(whether to try PAM support) 4174AC_ARG_WITH(pam, 4175[ --with-pam Include PAM support (default=no)], 4176[ case "$withval" in 4177 yes|no) 4178 try_pam=$withval 4179 ;; 4180 esac 4181]) 4182AC_MSG_RESULT([$try_pam]) 4183 4184use_pam=no 4185create_pam_modules=no 4186if test x"${try_pam}" != x"no";then 4187 use_pam=yes 4188 create_pam_modules=yes 4189 4190 AC_CHECK_HEADERS(security/pam_appl.h) 4191 if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then 4192 if test x"${try_pam}" = x"yes";then 4193 AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found]) 4194 fi 4195 use_pam=no 4196 create_pam_modules=no 4197 fi 4198 4199 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data) 4200 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then 4201 if test x"${try_pam}" = x"yes";then 4202 AC_MSG_ERROR([--with-pam=yes but libpam not found]) 4203 fi 4204 use_pam=no 4205 create_pam_modules=no 4206 fi 4207 4208 AC_CHECK_HEADERS(security/pam_modules.h,,,[[ 4209 #if HAVE_SECURITY_PAM_APPL_H 4210 #include <security/pam_appl.h> 4211 #endif 4212 ]]) 4213 if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then 4214 if test x"${try_pam}" = x"yes";then 4215 AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found]) 4216 fi 4217 create_pam_modules=no 4218 fi 4219 4220 if test x"$use_pam" = x"yes"; then 4221 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support]) 4222 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available]) 4223 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS" 4224 with_pam_for_crypt=yes 4225 4226 if test x"$create_pam_modules" = x"yes"; then 4227 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support]) 4228 # this checks are optional, 4229 # we don't care about the results here 4230 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h) 4231 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS) 4232 else 4233 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing]) 4234 fi 4235 fi 4236 AC_MSG_CHECKING(whether to use PAM support) 4237 AC_MSG_RESULT([$use_pam]) 4238 4239 AC_MSG_CHECKING(whether to have PAM MODULES support) 4240 AC_MSG_RESULT([$create_pam_modules]) 4241fi # try_pam != no 4242 4243################################################# 4244# check for pam_smbpass support 4245PAM_MODULES="" 4246INSTALL_PAM_MODULES="" 4247UNINSTALL_PAM_MODULES="" 4248AC_MSG_CHECKING(whether to use pam_smbpass) 4249AC_ARG_WITH(pam_smbpass, 4250[ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)], 4251[ case "$withval" in 4252 yes) 4253 AC_MSG_RESULT(yes) 4254 4255 # Conditions under which pam_smbpass should not be built. 4256 4257 if test x"$BLDSHARED" != x"true"; then 4258 AC_MSG_ERROR([No support for shared modules]) 4259 elif test x"$create_pam_modules" != x"yes"; then 4260 AC_MSG_ERROR([No support for PAM MODULES]) 4261 else 4262 PAM_MODULES="pam_smbpass" 4263 INSTALL_PAM_MODULES="installpammodules" 4264 UNINSTALL_PAM_MODULES="uninstallpammodules" 4265 fi 4266 ;; 4267 *) 4268 AC_MSG_RESULT(no) 4269 ;; 4270 esac ], 4271 AC_MSG_RESULT(no) 4272) 4273 4274 4275############################################### 4276# test for where we get crypt() from 4277AC_SEARCH_LIBS(crypt, [crypt], 4278 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS" 4279 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])]) 4280 4281## 4282## moved after the check for -lcrypt in order to 4283## ensure that the necessary libraries are included 4284## check checking for truncated salt. Wrapped by the 4285## $with_pam_for_crypt variable as above --jerry 4286## 4287if test $with_pam_for_crypt = no; then 4288AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[ 4289crypt_LIBS="$LIBS" 4290LIBS="$AUTH_LIBS $LIBS" 4291AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"], 4292 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross) 4293LIBS="$crypt_LIBS"]) 4294if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then 4295 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt]) 4296fi 4297fi 4298 4299################################################# 4300# check for a NISPLUS_HOME support 4301AC_MSG_CHECKING(whether to use NISPLUS_HOME) 4302AC_ARG_WITH(nisplus-home, 4303[ --with-nisplus-home Include NISPLUS_HOME support (default=no)], 4304[ case "$withval" in 4305 yes) 4306 AC_MSG_RESULT(yes) 4307 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support]) 4308 ;; 4309 *) 4310 AC_MSG_RESULT(no) 4311 ;; 4312 esac ], 4313 AC_MSG_RESULT(no) 4314) 4315 4316################################################# 4317# check for syslog logging 4318AC_MSG_CHECKING(whether to use syslog logging) 4319AC_ARG_WITH(syslog, 4320[ --with-syslog Include experimental SYSLOG support (default=no)], 4321[ case "$withval" in 4322 yes) 4323 AC_MSG_RESULT(yes) 4324 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support]) 4325 ;; 4326 *) 4327 AC_MSG_RESULT(no) 4328 ;; 4329 esac ], 4330 AC_MSG_RESULT(no) 4331) 4332 4333################################################# 4334# check for experimental disk-quotas support 4335 4336samba_cv_WITH_QUOTAS=auto 4337samba_cv_TRY_QUOTAS=no 4338samba_cv_RUN_QUOTA_TESTS=auto 4339samba_cv_WITH_SYS_QUOTAS=auto 4340samba_cv_TRY_SYS_QUOTAS=auto 4341samba_cv_SYSQUOTA_FOUND=no 4342 4343AC_MSG_CHECKING(whether to try disk-quotas support) 4344AC_ARG_WITH(quotas, 4345[ --with-quotas Include disk-quota support (default=no)], 4346[ case "$withval" in 4347 yes) 4348 AC_MSG_RESULT(yes) 4349 samba_cv_WITH_QUOTAS=yes 4350 samba_cv_TRY_QUOTAS=yes 4351 samba_cv_RUN_QUOTA_TESTS=yes 4352 #set sys quotas to auto in this case 4353 samba_cv_TRY_SYS_QUOTAS=auto 4354 ;; 4355 auto) 4356 AC_MSG_RESULT(auto) 4357 samba_cv_WITH_QUOTAS=auto 4358 samba_cv_TRY_QUOTAS=auto 4359 samba_cv_RUN_QUOTA_TESTS=auto 4360 #set sys quotas to auto in this case 4361 samba_cv_TRY_SYS_QUOTAS=auto 4362 ;; 4363 no) 4364 AC_MSG_RESULT(no) 4365 samba_cv_WITH_QUOTAS=no 4366 samba_cv_TRY_QUOTAS=no 4367 samba_cv_RUN_QUOTA_TESTS=no 4368 ;; 4369 *) 4370 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS}) 4371 ;; 4372 esac ], 4373 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS}) 4374) 4375 4376AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface) 4377AC_ARG_WITH(sys-quotas, 4378[ --with-sys-quotas Include lib/sysquotas.c support (default=auto)], 4379[ case "$withval" in 4380 yes) 4381 AC_MSG_RESULT(yes) 4382 samba_cv_WITH_SYS_QUOTAS=yes 4383 samba_cv_TRY_SYS_QUOTAS=yes 4384 samba_cv_RUN_QUOTA_TESTS=yes 4385 ;; 4386 auto) 4387 AC_MSG_RESULT(auto) 4388 samba_cv_WITH_SYS_QUOTAS=auto 4389 samba_cv_TRY_SYS_QUOTAS=auto 4390 samba_cv_RUN_QUOTA_TESTS=auto 4391 ;; 4392 no) 4393 AC_MSG_RESULT(no) 4394 samba_cv_WITH_SYS_QUOTAS=no 4395 samba_cv_TRY_SYS_QUOTAS=no 4396 ;; 4397 *) 4398 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS}) 4399 ;; 4400 esac ], 4401 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS}) 4402) 4403 4404if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then 4405AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os}) 4406 case "$host_os" in 4407 *linux*) 4408 AC_MSG_RESULT(yes) 4409 samba_cv_TRY_SYS_QUOTAS=yes 4410 samba_cv_RUN_QUOTA_TESTS=yes 4411 ;; 4412 *) 4413 AC_MSG_RESULT(no) 4414 samba_cv_TRY_SYS_QUOTAS=no 4415 ;; 4416 esac 4417fi 4418 4419############################################# 4420# only check for quota stuff if --with-quotas 4421if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then 4422 4423case "$host_os" in 4424 # on linux we didn't need to test we have builtin support 4425 *linux*) 4426 samba_cv_SYSQUOTA_FOUND=yes 4427 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available]) 4428 samba_cv_sysquotas_file="lib/sysquotas_linux.c" 4429 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support) 4430 AC_MSG_RESULT(yes) 4431 4432 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available]) 4433 samba_cv_found_xfs_header=yes 4434 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support) 4435 AC_MSG_RESULT(yes) 4436 ;; 4437 *solaris*) 4438 # need to set this define when using static linking (BUG 1473) 4439 CPPFLAGS="$CPPFLAGS -DSUNOS5" 4440 ;; 4441 *) 4442 ;; 4443esac 4444 4445# some broken header files need this 4446AC_CHECK_HEADER(asm/types.h,[ 4447 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>]) 4448 AC_ADD_INCLUDE(<asm/types.h>) 4449 ]) 4450 4451# For quotas on Veritas VxFS filesystems 4452AC_CHECK_HEADERS(sys/fs/vx_quota.h) 4453 4454# For sys/quota.h and linux/quota.h 4455AC_CHECK_HEADERS(sys/quota.h) 4456 4457if test x"$samba_cv_found_xfs_header" != x"yes"; then 4458# if we have xfs quota support <sys/quota.h> (IRIX) we should use it 4459AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [ 4460AC_TRY_COMPILE([ 4461#include "confdefs.h" 4462#ifdef HAVE_SYS_TYPES_H 4463#include <sys/types.h> 4464#endif 4465#ifdef HAVE_ASM_TYPES_H 4466#include <asm/types.h> 4467#endif 4468#include <sys/quota.h> 4469],[int i = Q_XGETQUOTA;], 4470samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)]) 4471if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then 4472 samba_cv_found_xfs_header=yes 4473fi 4474fi 4475 4476# if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 4477AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [ 4478AC_TRY_COMPILE([ 4479#include "confdefs.h" 4480#ifdef HAVE_SYS_QUOTA_H 4481#include <sys/quota.h> 4482#endif 4483],[ 4484struct dqblk D; 4485D.dqb_fsoftlimit = 0;], 4486samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)]) 4487if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then 4488 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit]) 4489fi 4490 4491################## 4492# look for a working quota system 4493 4494if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then 4495AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[ 4496AC_TRY_RUN_STRICT([ 4497#define HAVE_QUOTACTL_4A 1 4498#define AUTOCONF_TEST 1 4499#include "confdefs.h" 4500#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], 4501 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)]) 4502if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then 4503 samba_cv_SYSQUOTA_FOUND=yes; 4504 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available]) 4505 samba_cv_sysquotas_file="lib/sysquotas_4A.c" 4506fi 4507fi 4508 4509if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then 4510AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[ 4511AC_TRY_RUN_STRICT([ 4512#define HAVE_QUOTACTL_4B 1 4513#define AUTOCONF_TEST 1 4514#include "confdefs.h" 4515#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], 4516 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)]) 4517if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then 4518 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api" 4519 samba_cv_SYSQUOTA_FOUND=yes; 4520 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available]) 4521 samba_cv_sysquotas_file="lib/sysquotas_4B.c" 4522fi 4523fi 4524 4525if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then 4526AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[ 4527AC_TRY_RUN_STRICT([ 4528#define HAVE_QUOTACTL_3 1 4529#define AUTOCONF_TEST 1 4530#include "confdefs.h" 4531#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS], 4532 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)]) 4533if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then 4534 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api" 4535 samba_cv_SYSQUOTA_FOUND=yes; 4536 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available]) 4537 samba_cv_sysquotas_file="lib/sysquotas_3.c" 4538fi 4539fi 4540 4541################################################# 4542# check for mntent.h and struct mntent 4543AC_CHECK_HEADERS(mntent.h) 4544################################################# 4545# check for setmntent,getmntent,endmntent 4546AC_CHECK_FUNCS(setmntent getmntent endmntent) 4547 4548################################################# 4549# check for devnm.h and struct mntent 4550AC_CHECK_HEADERS(devnm.h) 4551################################################# 4552# check for devnm 4553AC_CHECK_FUNCS(devnm) 4554 4555if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then 4556 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then 4557 # if --with-sys-quotas=yes then build it 4558 # you have can use the get/set quota command smb.conf 4559 # options then 4560 samba_cv_SYSQUOTA_FOUND=auto 4561 fi 4562 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then 4563 # if --with-sys-quotas=yes then build it 4564 # you have can use the get/set quota command smb.conf 4565 # options then 4566 samba_cv_TRY_SYS_QUOTAS=auto 4567 fi 4568fi 4569 4570if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then 4571AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[ 4572SAVE_CPPFLAGS="$CPPFLAGS" 4573CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 4574AC_TRY_COMPILE([ 4575#include "confdefs.h" 4576#define NO_PROTO_H 1 4577#define NO_CONFIG_H 1 4578#define HAVE_SYS_QUOTAS 1 4579#include "${srcdir-.}/${samba_cv_sysquotas_file}" 4580#include "${srcdir-.}/lib/sysquotas.c" 4581],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no) 4582CPPFLAGS="$SAVE_CPPFLAGS" 4583]) 4584if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then 4585AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface) 4586 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 4587 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support]) 4588 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used]) 4589 samba_cv_WE_USE_SYS_QUOTAS=yes 4590 AC_MSG_RESULT(yes) 4591 else 4592 AC_MSG_RESULT(no) 4593 fi 4594fi 4595fi 4596 4597if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then 4598AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[ 4599SAVE_CPPFLAGS="$CPPFLAGS" 4600CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 4601AC_TRY_COMPILE([ 4602#include "confdefs.h" 4603#define NO_PROTO_H 1 4604#define NO_CONFIG_H 1 4605#define HAVE_SYS_QUOTAS 1 4606#define HAVE_XFS_QUOTAS 1 4607#include "${srcdir-.}/lib/sysquotas_xfs.c" 4608],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no) 4609CPPFLAGS="$SAVE_CPPFLAGS" 4610]) 4611if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then 4612 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then 4613 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available]) 4614 fi 4615fi 4616fi 4617 4618AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[ 4619SAVE_CPPFLAGS="$CPPFLAGS" 4620CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}" 4621AC_TRY_COMPILE([ 4622#include "confdefs.h" 4623#define NO_PROTO_H 1 4624#define NO_CONFIG_H 1 4625#include "${srcdir-.}/smbd/quotas.c" 4626],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no) 4627CPPFLAGS="$SAVE_CPPFLAGS" 4628]) 4629if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then 4630AC_MSG_CHECKING(whether to use the old quota support) 4631 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then 4632 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then 4633 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support]) 4634 AC_MSG_RESULT(yes) 4635 else 4636 AC_MSG_RESULT(no) 4637 fi 4638 else 4639 AC_MSG_RESULT(no) 4640 fi 4641fi 4642 4643#################### 4644# End of quota check samba_cv_RUN_QUOTA_TESTS 4645fi 4646 4647################################################# 4648# check for experimental utmp accounting 4649 4650AC_MSG_CHECKING(whether to support utmp accounting) 4651WITH_UTMP=yes 4652AC_ARG_WITH(utmp, 4653[ --with-utmp Include utmp accounting (default, if supported by OS)], 4654[ case "$withval" in 4655 no) 4656 WITH_UTMP=no 4657 ;; 4658 *) 4659 WITH_UTMP=yes 4660 ;; 4661 esac ], 4662) 4663 4664# utmp requires utmp.h 4665# Note similar check earlier, when checking utmp details. 4666 4667if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then 4668 utmp_no_reason=", no utmp.h on $host_os" 4669 WITH_UTMP=no 4670fi 4671 4672# Display test results 4673 4674if test x"$WITH_UTMP" = x"yes"; then 4675 AC_MSG_RESULT(yes) 4676 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting]) 4677else 4678 AC_MSG_RESULT(no$utmp_no_reason) 4679fi 4680 4681INSTALLLIBCMD_SH=: 4682INSTALLLIBCMD_A=: 4683UNINSTALLLIBCMD_SH=: 4684UNINSTALLLIBCMD_A=: 4685 4686if test $BLDSHARED = true; then 4687 INSTALLLIBCMD_SH="\$(INSTALLCMD)" 4688 UNINSTALLLIBCMD_SH="rm -f" 4689fi 4690if test $enable_static = yes; then 4691 INSTALLLIBCMD_A="\$(INSTALLCMD)" 4692 UNINSTALLLIBCMD_A="rm -f" 4693fi 4694 4695################################################# 4696# should we build libmsrpc? 4697INSTALL_LIBMSRPC= 4698UNINSTALL_LIBMSRPC= 4699LIBMSRPC_SHARED= 4700LIBMSRPC= 4701AC_MSG_CHECKING(whether to build the libmsrpc shared library) 4702AC_ARG_WITH(libmsrpc, 4703[ --with-libmsrpc Build the libmsrpc shared library (default=yes if shared libs supported)], 4704[ case "$withval" in 4705 no) 4706 AC_MSG_RESULT(no) 4707 ;; 4708 *) 4709 if test $BLDSHARED = true; then 4710 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT 4711 LIBMSRPC=libmsrpc 4712 AC_MSG_RESULT(yes) 4713 else 4714 enable_static=yes 4715 AC_MSG_RESULT(no shared library support -- will supply static library) 4716 fi 4717 if test $enable_static = yes; then 4718 LIBMSRPC=libmsrpc 4719 fi 4720 INSTALL_LIBMSRPC=installlibmsrpc 4721 UNINSTALL_LIBMSRPC=uninstalllibmsrpc 4722 ;; 4723 esac ], 4724[ 4725# if unspecified, default is to built it if possible. 4726 if test $BLDSHARED = true; then 4727 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT 4728 LIBMSRPC=libmsrpc 4729 AC_MSG_RESULT(yes) 4730 else 4731 enable_static=yes 4732 AC_MSG_RESULT(no shared library support -- will supply static library) 4733 fi 4734 if test $enable_static = yes; then 4735 LIBMSRPC=libmsrpc 4736 fi] 4737 INSTALL_LIBMSRPC=installlibmsrpc 4738 UNINSTALL_LIBMSRPC=uninstalllibmsrpc 4739) 4740 4741 4742################################################# 4743# should we build libaddns? 4744INSTALL_LIBADDNS= 4745UNINSTALL_LIBADDNS= 4746LIBADDNS_SHARED= 4747LIBADDNS= 4748AC_MSG_CHECKING(whether to build the libaddns shared library) 4749AC_ARG_WITH(libaddns, 4750[ --with-libaddns Build the libaddns shared library (default=yes if shared libs supported)], 4751[ case "$withval" in 4752 no) 4753 AC_MSG_RESULT(no) 4754 ;; 4755 *) 4756 if test $BLDSHARED = true; then 4757 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT 4758 LIBADDNS=libaddns 4759 AC_MSG_RESULT(yes) 4760 else 4761 enable_static=yes 4762 AC_MSG_RESULT(no shared library support -- will supply static library) 4763 fi 4764 if test $enable_static = yes; then 4765 LIBADDNS=libaddns 4766 fi 4767 INSTALL_LIBADDNS=installlibaddns 4768 UNINSTALL_LIBADDNS=uninstalllibaddns 4769 ;; 4770 esac ], 4771[ 4772# if unspecified, default is to built it if possible. 4773 if test $BLDSHARED = true; then 4774 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT 4775 LIBADDNS=libaddns 4776 AC_MSG_RESULT(yes) 4777 else 4778 enable_static=yes 4779 AC_MSG_RESULT(no shared library support -- will supply static library) 4780 fi 4781 if test $enable_static = yes; then 4782 LIBADDNS=libaddns 4783 fi] 4784 INSTALL_LIBADDNS=installlibaddns 4785 UNINSTALL_LIBADDNS=uninstalllibaddns 4786) 4787 4788################################################# 4789# should we build libsmbclient? 4790INSTALL_LIBSMBCLIENT= 4791UNINSTALL_LIBSMBCLIENT= 4792LIBSMBCLIENT_SHARED= 4793LIBSMBCLIENT= 4794AC_MSG_CHECKING(whether to build the libsmbclient shared library) 4795AC_ARG_WITH(libsmbclient, 4796[ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)], 4797[ case "$withval" in 4798 no) 4799 AC_MSG_RESULT(no) 4800 ;; 4801 *) 4802 if test $BLDSHARED = true; then 4803 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT 4804 LIBSMBCLIENT=libsmbclient 4805 AC_MSG_RESULT(yes) 4806 else 4807 enable_static=yes 4808 AC_MSG_RESULT(no shared library support -- will supply static library) 4809 fi 4810 if test $enable_static = yes; then 4811 LIBSMBCLIENT=libsmbclient 4812 fi 4813 INSTALL_LIBSMBCLIENT=installclientlib 4814 UNINSTALL_LIBSMBCLIENT=uninstallclientlib 4815 ;; 4816 esac ], 4817[ 4818# if unspecified, default is to built it if possible. 4819 if test $BLDSHARED = true; then 4820 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT 4821 LIBSMBCLIENT=libsmbclient 4822 AC_MSG_RESULT(yes) 4823 else 4824 enable_static=yes 4825 AC_MSG_RESULT(no shared library support -- will supply static library) 4826 fi 4827 if test $enable_static = yes; then 4828 LIBSMBCLIENT=libsmbclient 4829 fi] 4830 INSTALL_LIBSMBCLIENT=installclientlib 4831 UNINSTALL_LIBSMBCLIENT=uninstallclientlib 4832) 4833 4834INSTALL_LIBSMBSHAREMODES= 4835LIBSMBSHAREMODES_SHARED= 4836LIBSMBSHAREMODES= 4837AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library) 4838AC_ARG_WITH(libsmbsharemodes, 4839[ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)], 4840[ case "$withval" in 4841 no) 4842 AC_MSG_RESULT(no) 4843 ;; 4844 *) 4845 if test $BLDSHARED = true; then 4846 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT 4847 LIBSMBSHAREMODES=libsmbsharemodes 4848 AC_MSG_RESULT(yes) 4849 else 4850 enable_static=yes 4851 AC_MSG_RESULT(no shared library support -- will supply static library) 4852 fi 4853 if test $enable_static = yes; then 4854 LIBSMBSHAREMODES=libsmbsharemodes 4855 fi 4856 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes 4857 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes 4858 ;; 4859 esac ], 4860[ 4861# if unspecified, default is to built it if possible. 4862 if test $BLDSHARED = true; then 4863 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT 4864 LIBSMBSHAREMODES=libsmbsharemodes 4865 AC_MSG_RESULT(yes) 4866 else 4867 enable_static=yes 4868 AC_MSG_RESULT(no shared library support -- will supply static library) 4869 fi 4870 if test $enable_static = yes; then 4871 LIBSMBSHAREMODES=libsmbsharemodes 4872 fi] 4873 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes 4874) 4875 4876################################################# 4877# these tests are taken from the GNU fileutils package 4878AC_CHECKING(how to get filesystem space usage) 4879space=no 4880 4881# Test for statvfs64. 4882if test $space = no; then 4883 # SVR4 4884 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64, 4885 [AC_TRY_RUN([ 4886#if defined(HAVE_UNISTD_H) 4887#include <unistd.h> 4888#endif 4889#include <sys/types.h> 4890#include <sys/statvfs.h> 4891 main () 4892 { 4893 struct statvfs64 fsd; 4894 exit (statvfs64 (".", &fsd)); 4895 }], 4896 fu_cv_sys_stat_statvfs64=yes, 4897 fu_cv_sys_stat_statvfs64=no, 4898 fu_cv_sys_stat_statvfs64=cross)]) 4899 if test $fu_cv_sys_stat_statvfs64 = yes; then 4900 space=yes 4901 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available]) 4902 fi 4903fi 4904 4905# Perform only the link test since it seems there are no variants of the 4906# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) 4907# because that got a false positive on SCO OSR5. Adding the declaration 4908# of a `struct statvfs' causes this test to fail (as it should) on such 4909# systems. That system is reported to work fine with STAT_STATFS4 which 4910# is what it gets when this test fails. 4911if test $space = no; then 4912 # SVR4 4913 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, 4914 [AC_TRY_LINK([#include <sys/types.h> 4915#include <sys/statvfs.h>], 4916 [struct statvfs fsd; statvfs (0, &fsd);], 4917 fu_cv_sys_stat_statvfs=yes, 4918 fu_cv_sys_stat_statvfs=no)]) 4919 if test $fu_cv_sys_stat_statvfs = yes; then 4920 space=yes 4921 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available]) 4922 fi 4923fi 4924 4925# smbd/statvfs.c assumes that statvfs.f_fsid is an integer. 4926# This is not the case on ancient Linux systems. 4927 4928AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [ 4929 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0], 4930 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)]) 4931if test x"$samba_cv_fsid_int" = x"yes"; then 4932 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer]) 4933fi 4934 4935if test $space = no; then 4936 # DEC Alpha running OSF/1 4937 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) 4938 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, 4939 [AC_TRY_RUN([ 4940#include <sys/param.h> 4941#include <sys/types.h> 4942#include <sys/mount.h> 4943 main () 4944 { 4945 struct statfs fsd; 4946 fsd.f_fsize = 0; 4947 exit (statfs (".", &fsd, sizeof (struct statfs))); 4948 }], 4949 fu_cv_sys_stat_statfs3_osf1=yes, 4950 fu_cv_sys_stat_statfs3_osf1=no, 4951 fu_cv_sys_stat_statfs3_osf1=no)]) 4952 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) 4953 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then 4954 space=yes 4955 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments]) 4956 fi 4957fi 4958 4959if test $space = no; then 4960# AIX 4961 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl 4962member (AIX, 4.3BSD)]) 4963 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, 4964 [AC_TRY_RUN([ 4965#ifdef HAVE_SYS_PARAM_H 4966#include <sys/param.h> 4967#endif 4968#ifdef HAVE_SYS_MOUNT_H 4969#include <sys/mount.h> 4970#endif 4971#ifdef HAVE_SYS_VFS_H 4972#include <sys/vfs.h> 4973#endif 4974 main () 4975 { 4976 struct statfs fsd; 4977 fsd.f_bsize = 0; 4978 exit (statfs (".", &fsd)); 4979 }], 4980 fu_cv_sys_stat_statfs2_bsize=yes, 4981 fu_cv_sys_stat_statfs2_bsize=no, 4982 fu_cv_sys_stat_statfs2_bsize=no)]) 4983 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) 4984 if test $fu_cv_sys_stat_statfs2_bsize = yes; then 4985 space=yes 4986 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property]) 4987 fi 4988fi 4989 4990if test $space = no; then 4991# SVR3 4992 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) 4993 AC_CACHE_VAL(fu_cv_sys_stat_statfs4, 4994 [AC_TRY_RUN([#include <sys/types.h> 4995#include <sys/statfs.h> 4996 main () 4997 { 4998 struct statfs fsd; 4999 exit (statfs (".", &fsd, sizeof fsd, 0)); 5000 }], 5001 fu_cv_sys_stat_statfs4=yes, 5002 fu_cv_sys_stat_statfs4=no, 5003 fu_cv_sys_stat_statfs4=no)]) 5004 AC_MSG_RESULT($fu_cv_sys_stat_statfs4) 5005 if test $fu_cv_sys_stat_statfs4 = yes; then 5006 space=yes 5007 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments]) 5008 fi 5009fi 5010 5011if test $space = no; then 5012# 4.4BSD and NetBSD 5013 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl 5014member (4.4BSD and NetBSD)]) 5015 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, 5016 [AC_TRY_RUN([#include <sys/types.h> 5017#ifdef HAVE_SYS_PARAM_H 5018#include <sys/param.h> 5019#endif 5020#ifdef HAVE_SYS_MOUNT_H 5021#include <sys/mount.h> 5022#endif 5023 main () 5024 { 5025 struct statfs fsd; 5026 fsd.f_fsize = 0; 5027 exit (statfs (".", &fsd)); 5028 }], 5029 fu_cv_sys_stat_statfs2_fsize=yes, 5030 fu_cv_sys_stat_statfs2_fsize=no, 5031 fu_cv_sys_stat_statfs2_fsize=no)]) 5032 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) 5033 if test $fu_cv_sys_stat_statfs2_fsize = yes; then 5034 space=yes 5035 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize]) 5036 fi 5037fi 5038 5039if test $space = no; then 5040 # Ultrix 5041 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) 5042 AC_CACHE_VAL(fu_cv_sys_stat_fs_data, 5043 [AC_TRY_RUN([#include <sys/types.h> 5044#ifdef HAVE_SYS_PARAM_H 5045#include <sys/param.h> 5046#endif 5047#ifdef HAVE_SYS_MOUNT_H 5048#include <sys/mount.h> 5049#endif 5050#ifdef HAVE_SYS_FS_TYPES_H 5051#include <sys/fs_types.h> 5052#endif 5053 main () 5054 { 5055 struct fs_data fsd; 5056 /* Ultrix's statfs returns 1 for success, 5057 0 for not mounted, -1 for failure. */ 5058 exit (statfs (".", &fsd) != 1); 5059 }], 5060 fu_cv_sys_stat_fs_data=yes, 5061 fu_cv_sys_stat_fs_data=no, 5062 fu_cv_sys_stat_fs_data=no)]) 5063 AC_MSG_RESULT($fu_cv_sys_stat_fs_data) 5064 if test $fu_cv_sys_stat_fs_data = yes; then 5065 space=yes 5066 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available]) 5067 fi 5068fi 5069 5070# 5071# As a gating factor for large file support, in order to 5072# use <4GB files we must have the following minimal support 5073# available. 5074# long long, and a 64 bit off_t or off64_t. 5075# If we don't have all of these then disable large 5076# file support. 5077# 5078AC_MSG_CHECKING([if large file support can be enabled]) 5079AC_TRY_COMPILE([ 5080#if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))) 5081#include <sys/types.h> 5082#else 5083__COMPILE_ERROR_ 5084#endif 5085], 5086[int i], 5087samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no) 5088if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then 5089 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled]) 5090fi 5091AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT]) 5092 5093################################################# 5094# check for cluster extensions 5095 5096AC_MSG_CHECKING(whether to include cluster support) 5097AC_ARG_WITH(cluster-support, 5098[ --with-cluster-support Enable cluster extensions (default=no)]) 5099if test "x$with_cluster_support" = "xyes"; then 5100 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions]) 5101 AC_MSG_RESULT(yes) 5102else 5103 AC_MSG_RESULT(no) 5104fi 5105 5106 5107################################################# 5108# check for ACL support 5109 5110AC_MSG_CHECKING(whether to support ACLs) 5111AC_ARG_WITH(acl-support, 5112[ --with-acl-support Include ACL support (default=no)], 5113[ case "$withval" in 5114 yes) 5115 5116 case "$host_os" in 5117 *sysv5*) 5118 AC_MSG_RESULT(Using UnixWare ACLs) 5119 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available]) 5120 default_static_modules="$default_static_modules vfs_solarisacl" 5121 ;; 5122 *solaris*) 5123 AC_MSG_RESULT(Using solaris ACLs) 5124 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available]) 5125 ACL_LIBS="$ACL_LIBS -lsec" 5126 default_static_modules="$default_static_modules vfs_solarisacl" 5127 ;; 5128 *hpux*) 5129 AC_MSG_RESULT(Using HPUX ACLs) 5130 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available]) 5131 default_static_modules="$default_static_modules vfs_hpuxacl" 5132 ;; 5133 *irix*) 5134 AC_MSG_RESULT(Using IRIX ACLs) 5135 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available]) 5136 default_static_modules="$default_static_modules vfs_irixacl" 5137 ;; 5138 *aix*) 5139 AC_MSG_RESULT(Using AIX ACLs) 5140 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available]) 5141 default_static_modules="$default_static_modules vfs_aixacl" 5142 ;; 5143 *osf*) 5144 AC_MSG_RESULT(Using Tru64 ACLs) 5145 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available]) 5146 ACL_LIBS="$ACL_LIBS -lpacl" 5147 default_static_modules="$default_static_modules vfs_tru64acl" 5148 ;; 5149 *freebsd[[5-9]]*) 5150 AC_MSG_RESULT(Using FreeBSD posix ACLs) 5151 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available]) 5152 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) 5153 default_static_modules="$default_static_modules vfs_posixacl" 5154 ;; 5155 *linux*) 5156 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"]) 5157 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"]) 5158 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[ 5159 acl_LIBS=$LIBS 5160 LIBS="$LIBS -lacl" 5161 AC_TRY_LINK([ 5162 #include <sys/types.h> 5163 #include <sys/acl.h> 5164 ],[ 5165 acl_t acl; 5166 int entry_id; 5167 acl_entry_t *entry_p; 5168 return acl_get_entry(acl, entry_id, entry_p); 5169 ], 5170 [samba_cv_HAVE_POSIX_ACLS=yes], 5171 [samba_cv_HAVE_POSIX_ACLS=no]) 5172 LIBS=$acl_LIBS 5173 ]) 5174 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then 5175 AC_MSG_RESULT(Using posix ACLs) 5176 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available]) 5177 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[ 5178 acl_LIBS=$LIBS 5179 LIBS="$LIBS -lacl" 5180 AC_TRY_LINK([ 5181 #include <sys/types.h> 5182 #include <sys/acl.h> 5183 ],[ 5184 acl_permset_t permset_d; 5185 acl_perm_t perm; 5186 return acl_get_perm_np(permset_d, perm); 5187 ], 5188 [samba_cv_HAVE_ACL_GET_PERM_NP=yes], 5189 [samba_cv_HAVE_ACL_GET_PERM_NP=no]) 5190 LIBS=$acl_LIBS 5191 ]) 5192 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then 5193 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) 5194 fi 5195 fi 5196 ;; 5197 *) 5198 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"]) 5199 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[ 5200 acl_LIBS=$LIBS 5201 LIBS="$LIBS -lacl" 5202 AC_TRY_LINK([ 5203 #include <sys/types.h> 5204 #include <sys/acl.h> 5205 ],[ 5206 acl_t acl; 5207 int entry_id; 5208 acl_entry_t *entry_p; 5209 return acl_get_entry( acl, entry_id, entry_p); 5210 ], 5211 [samba_cv_HAVE_POSIX_ACLS=yes], 5212 [samba_cv_HAVE_POSIX_ACLS=no]) 5213 LIBS=$acl_LIBS 5214 ]) 5215 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then 5216 AC_MSG_RESULT(Using posix ACLs) 5217 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available]) 5218 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[ 5219 acl_LIBS=$LIBS 5220 LIBS="$LIBS -lacl" 5221 AC_TRY_LINK([ 5222 #include <sys/types.h> 5223 #include <sys/acl.h> 5224 ],[ 5225 acl_permset_t permset_d; 5226 acl_perm_t perm; 5227 return acl_get_perm_np( permset_d, perm); 5228 ], 5229 [samba_cv_HAVE_ACL_GET_PERM_NP=yes], 5230 [samba_cv_HAVE_ACL_GET_PERM_NP=no]) 5231 LIBS=$acl_LIBS 5232 ]) 5233 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then 5234 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) 5235 fi 5236 fi 5237 ;; 5238 esac 5239 ;; 5240 *) 5241 AC_MSG_RESULT(no) 5242 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available]) 5243 ;; 5244 esac ], 5245 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in]) 5246 AC_MSG_RESULT(no) 5247) 5248 5249if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then 5250 default_static_modules="$default_static_modules vfs_posixacl" 5251fi 5252 5253################################################# 5254# check for AIO support 5255 5256AC_MSG_CHECKING(whether to support asynchronous io) 5257AC_ARG_WITH(aio-support, 5258[ --with-aio-support Include asynchronous io support (default=no)], 5259[ case "$withval" in 5260 yes) 5261 5262 AC_MSG_RESULT(yes) 5263 case "$host_os" in 5264 *) 5265 AIO_LIBS=$LIBS 5266 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"]) 5267 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"]) 5268 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[ 5269 aio_LIBS=$LIBS 5270 LIBS=$AIO_LIBS 5271 AC_TRY_LINK([#include <sys/types.h> 5272#include <aio.h>], 5273[ struct aiocb a; return aio_read(&a);], 5274samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no) 5275 LIBS=$aio_LIBS]) 5276 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[ 5277 aio_LIBS=$LIBS 5278 LIBS=$AIO_LIBS 5279 AC_TRY_LINK([#include <sys/types.h> 5280#include <aio.h>], 5281[ struct aiocb64 a; return aio_read64(&a);], 5282samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no) 5283 LIBS=$aio_LIBS]) 5284 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then 5285 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available]) 5286 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io]) 5287 LIBS=$AIO_LIBS 5288 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then 5289 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io]) 5290 LIBS=$AIO_LIBS 5291 fi 5292 5293 if test x"$samba_cv_HAVE_AIO" = x"yes"; then 5294 AC_MSG_CHECKING(for aio_read) 5295 AC_LINK_IFELSE([#include <aio.h> 5296int main() { struct aiocb a; return aio_read(&a); }], 5297[AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)], 5298[AC_MSG_RESULT(no)]) 5299 5300 AC_MSG_CHECKING(for aio_write) 5301 AC_LINK_IFELSE([#include <aio.h> 5302int main() { struct aiocb a; return aio_write(&a); }], 5303[AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)], 5304[AC_MSG_RESULT(no)]) 5305 5306 AC_MSG_CHECKING(for aio_fsync) 5307 AC_LINK_IFELSE([#include <aio.h> 5308int main() { struct aiocb a; return aio_fsync(1, &a); }], 5309[AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)], 5310[AC_MSG_RESULT(no)]) 5311 5312 AC_MSG_CHECKING(for aio_return) 5313 AC_LINK_IFELSE([#include <aio.h> 5314int main() { struct aiocb a; return aio_return(&a); }], 5315[AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)], 5316[AC_MSG_RESULT(no)]) 5317 5318 AC_MSG_CHECKING(for aio_error) 5319 AC_LINK_IFELSE([#include <aio.h> 5320int main() { struct aiocb a; return aio_error(&a); }], 5321[AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)], 5322[AC_MSG_RESULT(no)]) 5323 5324 AC_MSG_CHECKING(for aio_cancel) 5325 AC_LINK_IFELSE([#include <aio.h> 5326int main() { struct aiocb a; return aio_cancel(1, &a); }], 5327[AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)], 5328[AC_MSG_RESULT(no)]) 5329 5330 AC_MSG_CHECKING(for aio_suspend) 5331 AC_LINK_IFELSE([#include <aio.h> 5332int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }], 5333[AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)], 5334[AC_MSG_RESULT(no)]) 5335 fi 5336 5337 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then 5338 AC_MSG_CHECKING(for aio_read64) 5339 AC_LINK_IFELSE([#include <aio.h> 5340int main() { struct aiocb a; return aio_read64(&a); }], 5341[AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)], 5342[AC_MSG_RESULT(no)]) 5343 5344 AC_MSG_CHECKING(for aio_write64) 5345 AC_LINK_IFELSE([#include <aio.h> 5346int main() { struct aiocb a; return aio_write64(&a); }], 5347[AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)], 5348[AC_MSG_RESULT(no)]) 5349 5350 AC_MSG_CHECKING(for aio_fsync64) 5351 AC_LINK_IFELSE([#include <aio.h> 5352int main() { struct aiocb a; return aio_fsync64(1, &a); }], 5353[AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)], 5354[AC_MSG_RESULT(no)]) 5355 5356 AC_MSG_CHECKING(for aio_return64) 5357 AC_LINK_IFELSE([#include <aio.h> 5358int main() { struct aiocb a; return aio_return64(&a); }], 5359[AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)], 5360[AC_MSG_RESULT(no)]) 5361 5362 AC_MSG_CHECKING(for aio_error64) 5363 AC_LINK_IFELSE([#include <aio.h> 5364int main() { struct aiocb a; return aio_error64(&a); }], 5365[AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)], 5366[AC_MSG_RESULT(no)]) 5367 5368 AC_MSG_CHECKING(for aio_cancel64) 5369 AC_LINK_IFELSE([#include <aio.h> 5370int main() { struct aiocb a; return aio_cancel64(1, &a); }], 5371[AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)], 5372[AC_MSG_RESULT(no)]) 5373 5374 AC_MSG_CHECKING(for aio_suspend64) 5375 AC_LINK_IFELSE([#include <aio.h> 5376int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }], 5377[AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)], 5378[AC_MSG_RESULT(no)]) 5379 fi 5380 ;; 5381 esac 5382 ;; 5383 *) 5384 AC_MSG_RESULT(no) 5385 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available]) 5386 ;; 5387 esac ], 5388 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in]) 5389 AC_MSG_RESULT(no) 5390) 5391 5392################################################# 5393# check for sendfile support 5394 5395with_sendfile_support=yes 5396AC_MSG_CHECKING(whether to check to support sendfile) 5397AC_ARG_WITH(sendfile-support, 5398[ --with-sendfile-support Check for sendfile support (default=yes)], 5399[ case "$withval" in 5400 yes) 5401 5402 AC_MSG_RESULT(yes); 5403 5404 case "$host_os" in 5405 *linux*) 5406 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[ 5407 AC_TRY_LINK([#include <sys/sendfile.h>], 5408[\ 5409int tofd, fromfd; 5410off64_t offset; 5411size_t total; 5412ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total); 5413], 5414samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)]) 5415 5416 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[ 5417 AC_TRY_LINK([#include <sys/sendfile.h>], 5418[\ 5419int tofd, fromfd; 5420off_t offset; 5421size_t total; 5422ssize_t nwritten = sendfile(tofd, fromfd, &offset, total); 5423], 5424samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) 5425 5426# Try and cope with broken Linux sendfile.... 5427 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[ 5428 AC_TRY_LINK([\ 5429#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64) 5430#undef _FILE_OFFSET_BITS 5431#endif 5432#include <sys/sendfile.h>], 5433[\ 5434int tofd, fromfd; 5435off_t offset; 5436size_t total; 5437ssize_t nwritten = sendfile(tofd, fromfd, &offset, total); 5438], 5439samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)]) 5440 5441 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then 5442 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available]) 5443 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available]) 5444 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) 5445 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then 5446 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) 5447 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available]) 5448 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used]) 5449 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then 5450 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken]) 5451 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used]) 5452 else 5453 AC_MSG_RESULT(no); 5454 fi 5455 5456 ;; 5457 *freebsd* | *dragonfly* ) 5458 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[ 5459 AC_TRY_LINK([\ 5460#include <sys/types.h> 5461#include <unistd.h> 5462#include <sys/socket.h> 5463#include <sys/uio.h>], 5464[\ 5465 int fromfd, tofd, ret, total=0; 5466 off_t offset, nwritten; 5467 struct sf_hdtr hdr; 5468 struct iovec hdtrl; 5469 hdr.headers = &hdtrl; 5470 hdr.hdr_cnt = 1; 5471 hdr.trailers = NULL; 5472 hdr.trl_cnt = 0; 5473 hdtrl.iov_base = NULL; 5474 hdtrl.iov_len = 0; 5475 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0); 5476], 5477samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) 5478 5479 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then 5480 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available]) 5481 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available]) 5482 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) 5483 else 5484 AC_MSG_RESULT(no); 5485 fi 5486 ;; 5487 5488 *hpux*) 5489 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[ 5490 AC_TRY_LINK([\ 5491#include <sys/socket.h> 5492#include <sys/uio.h>], 5493[\ 5494 int fromfd, tofd; 5495 size_t total=0; 5496 struct iovec hdtrl[2]; 5497 ssize_t nwritten; 5498 off64_t offset; 5499 5500 hdtrl[0].iov_base = 0; 5501 hdtrl[0].iov_len = 0; 5502 5503 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0); 5504], 5505samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)]) 5506 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then 5507 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available]) 5508 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available]) 5509 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) 5510 else 5511 AC_MSG_RESULT(no); 5512 fi 5513 5514 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[ 5515 AC_TRY_LINK([\ 5516#include <sys/socket.h> 5517#include <sys/uio.h>], 5518[\ 5519 int fromfd, tofd; 5520 size_t total=0; 5521 struct iovec hdtrl[2]; 5522 ssize_t nwritten; 5523 off_t offset; 5524 5525 hdtrl[0].iov_base = 0; 5526 hdtrl[0].iov_len = 0; 5527 5528 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0); 5529], 5530samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) 5531 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then 5532 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) 5533 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available]) 5534 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) 5535 else 5536 AC_MSG_RESULT(no); 5537 fi 5538 ;; 5539 5540 *solaris*) 5541 AC_CHECK_LIB(sendfile,sendfilev) 5542 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[ 5543 AC_TRY_LINK([\ 5544#include <sys/sendfile.h>], 5545[\ 5546 int sfvcnt; 5547 size_t xferred; 5548 struct sendfilevec vec[2]; 5549 ssize_t nwritten; 5550 int tofd; 5551 5552 sfvcnt = 2; 5553 5554 vec[0].sfv_fd = SFV_FD_SELF; 5555 vec[0].sfv_flag = 0; 5556 vec[0].sfv_off = 0; 5557 vec[0].sfv_len = 0; 5558 5559 vec[1].sfv_fd = 0; 5560 vec[1].sfv_flag = 0; 5561 vec[1].sfv_off = 0; 5562 vec[1].sfv_len = 0; 5563 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred); 5564], 5565samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)]) 5566 5567 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then 5568 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available]) 5569 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available]) 5570 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included]) 5571 else 5572 AC_MSG_RESULT(no); 5573 fi 5574 5575 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[ 5576 AC_TRY_LINK([\ 5577#include <sys/sendfile.h>], 5578[\ 5579 int sfvcnt; 5580 size_t xferred; 5581 struct sendfilevec vec[2]; 5582 ssize_t nwritten; 5583 int tofd; 5584 5585 sfvcnt = 2; 5586 5587 vec[0].sfv_fd = SFV_FD_SELF; 5588 vec[0].sfv_flag = 0; 5589 vec[0].sfv_off = 0; 5590 vec[0].sfv_len = 0; 5591 5592 vec[1].sfv_fd = 0; 5593 vec[1].sfv_flag = 0; 5594 vec[1].sfv_off = 0; 5595 vec[1].sfv_len = 0; 5596 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred); 5597], 5598samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)]) 5599 5600 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then 5601 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available]) 5602 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available]) 5603 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support]) 5604 else 5605 AC_MSG_RESULT(no); 5606 fi 5607 ;; 5608 *aix*) 5609 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[ 5610 AC_TRY_LINK([\ 5611#include <sys/socket.h>], 5612[\ 5613 int fromfd, tofd; 5614 size_t total=0; 5615 struct sf_parms hdtrl; 5616 ssize_t nwritten; 5617 off64_t offset; 5618 5619 hdtrl.header_data = 0; 5620 hdtrl.header_length = 0; 5621 hdtrl.file_descriptor = fromfd; 5622 hdtrl.file_offset = 0; 5623 hdtrl.file_bytes = 0; 5624 hdtrl.trailer_data = 0; 5625 hdtrl.trailer_length = 0; 5626 5627 nwritten = send_file(&tofd, &hdtrl, 0); 5628], 5629samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) 5630 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then 5631 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available]) 5632 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available]) 5633 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support]) 5634 else 5635 AC_MSG_RESULT(no); 5636 fi 5637 ;; 5638 *) 5639 ;; 5640 esac 5641 ;; 5642 *) 5643 AC_MSG_RESULT(no) 5644 ;; 5645 esac ], 5646 AC_MSG_RESULT(yes) 5647) 5648 5649############################################ 5650# See if we have the Linux readahead syscall. 5651 5652AC_CACHE_CHECK([for Linux readahead], 5653 samba_cv_HAVE_LINUX_READAHEAD,[ 5654 AC_TRY_LINK([ 5655#if defined(HAVE_UNISTD_H) 5656#include <unistd.h> 5657#endif 5658#include <fcntl.h>], 5659 [ssize_t err = readahead(0,0,0x80000);], 5660 samba_cv_HAVE_LINUX_READAHEAD=yes, 5661 samba_cv_HAVE_LINUX_READAHEAD=no)]) 5662 5663if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then 5664 AC_DEFINE(HAVE_LINUX_READAHEAD,1, 5665 [Whether Linux readahead is available]) 5666fi 5667 5668############################################ 5669# See if we have the posix_fadvise syscall. 5670 5671AC_CACHE_CHECK([for posix_fadvise], 5672 samba_cv_HAVE_POSIX_FADVISE,[ 5673 AC_TRY_LINK([ 5674#if defined(HAVE_UNISTD_H) 5675#include <unistd.h> 5676#endif 5677#include <fcntl.h>], 5678 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);], 5679 samba_cv_HAVE_POSIX_FADVISE=yes, 5680 samba_cv_HAVE_POSIX_FADVISE=no)]) 5681 5682if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then 5683 AC_DEFINE(HAVE_POSIX_FADVISE,1, 5684 [Whether posix_fadvise is available]) 5685fi 5686 5687 5688 5689################################################# 5690# Check whether winbind is supported on this platform. If so we need to 5691# build and install client programs, sbin programs and shared libraries 5692 5693AC_MSG_CHECKING(whether to build winbind) 5694 5695# Initially, the value of $host_os decides whether winbind is supported 5696 5697HAVE_WINBIND=yes 5698 5699# Define the winbind shared library name and any specific linker flags 5700# it needs to be built with. 5701 5702WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT" 5703WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT" 5704WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS 5705NSSSONAMEVERSIONSUFFIX="" 5706 5707SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT" 5708 5709case "$host_os" in 5710 *linux*) 5711 NSSSONAMEVERSIONSUFFIX=".2" 5712 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o" 5713 ;; 5714 *freebsd[[5-9]]*) 5715 # FreeBSD winbind client is implemented as a wrapper around 5716 # the Linux version. 5717 NSSSONAMEVERSIONSUFFIX=".1" 5718 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \ 5719 nsswitch/winbind_nss_linux.o" 5720 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT" 5721 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT" 5722 ;; 5723 5724 *netbsd*[[3-9]]*) 5725 # NetBSD winbind client is implemented as a wrapper 5726 # around the Linux version. It needs getpwent_r() to 5727 # indicate libc's use of the correct nsdispatch API. 5728 # 5729 if test x"$ac_cv_func_getpwent_r" = x"yes"; then 5730 WINBIND_NSS_EXTRA_OBJS="\ 5731 nsswitch/winbind_nss_netbsd.o \ 5732 nsswitch/winbind_nss_linux.o" 5733 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT" 5734 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT" 5735 else 5736 HAVE_WINBIND=no 5737 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported" 5738 fi 5739 ;; 5740 *irix*) 5741 # IRIX has differently named shared libraries 5742 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o" 5743 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT" 5744 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT" 5745 ;; 5746 *solaris*) 5747 # Solaris winbind client is implemented as a wrapper around 5748 # the Linux version. 5749 NSSSONAMEVERSIONSUFFIX=".1" 5750 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \ 5751 nsswitch/winbind_nss_linux.o" 5752 WINBIND_NSS_EXTRA_LIBS="-lsocket" 5753 ;; 5754 *hpux11*) 5755 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o" 5756 ;; 5757 *aix*) 5758 # AIX has even differently named shared libraries. No 5759 # WINS support has been implemented yet. 5760 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o" 5761 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init" 5762 WINBIND_NSS="nsswitch/WINBIND" 5763 WINBIND_WINS_NSS="" 5764 ;; 5765 *) 5766 HAVE_WINBIND=no 5767 winbind_no_reason=", unsupported on $host_os" 5768 ;; 5769esac 5770 5771AC_SUBST(WINBIND_NSS) 5772AC_SUBST(WINBIND_WINS_NSS) 5773AC_SUBST(WINBIND_NSS_LDSHFLAGS) 5774AC_SUBST(WINBIND_NSS_EXTRA_OBJS) 5775AC_SUBST(WINBIND_NSS_EXTRA_LIBS) 5776AC_SUBST(NSSSONAMEVERSIONSUFFIX) 5777 5778AC_SUBST(SMB_KRB5_LOCATOR) 5779 5780# Check the setting of --with-winbind 5781 5782AC_ARG_WITH(winbind, 5783[ --with-winbind Build winbind (default, if supported by OS)], 5784[ 5785 case "$withval" in 5786 yes) 5787 HAVE_WINBIND=yes 5788 ;; 5789 no) 5790 HAVE_WINBIND=no 5791 winbind_reason="" 5792 ;; 5793 esac ], 5794) 5795 5796# We need unix domain sockets for winbind 5797 5798if test x"$HAVE_WINBIND" = x"yes"; then 5799 if test x"$samba_cv_unixsocket" = x"no"; then 5800 winbind_no_reason=", no unix domain socket support on $host_os" 5801 HAVE_WINBIND=no 5802 fi 5803fi 5804 5805# Display test results 5806 5807if test x"$HAVE_WINBIND" = x"no"; then 5808 WINBIND_NSS="" 5809 WINBIND_WINS_NSS="" 5810fi 5811 5812if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then 5813 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}" 5814fi 5815 5816if test x"$HAVE_WINBIND" = x"yes"; then 5817 AC_MSG_RESULT(yes) 5818 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind]) 5819 5820 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)" 5821 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)" 5822 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then 5823 PAM_MODULES="$PAM_MODULES pam_winbind" 5824 INSTALL_PAM_MODULES="installpammodules" 5825 UNINSTALL_PAM_MODULES="uninstallpammodules" 5826 fi 5827else 5828 AC_MSG_RESULT(no$winbind_no_reason) 5829fi 5830 5831# Solaris 10 does have new member in nss_XbyY_key 5832AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family, 5833 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),, 5834 [#include <nss_dbdefs.h>]) 5835 5836# Solaris has some extra fields in struct passwd that need to be 5837# initialised otherwise nscd crashes. 5838 5839AC_CHECK_MEMBER(struct passwd.pw_comment, 5840 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),, 5841 [#include <pwd.h>]) 5842 5843AC_CHECK_MEMBER(struct passwd.pw_age, 5844 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),, 5845 [#include <pwd.h>]) 5846 5847# AIX 4.3.x and 5.1 do not have as many members in 5848# struct secmethod_table as AIX 5.2 5849AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , , 5850 [#include <usersec.h>]) 5851AC_CHECK_MEMBERS([struct secmethod_table.method_version], , , 5852 [#include <usersec.h>]) 5853 5854AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[ 5855AC_TRY_COMPILE([#include <sys/types.h> 5856#include <sys/socket.h>], 5857[struct ucred cred; 5858 socklen_t cred_len; 5859 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len); 5860], 5861samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)]) 5862if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then 5863 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials]) 5864fi 5865 5866 5867################################################# 5868# Check to see if we should use the included popt 5869 5870AC_ARG_WITH(included-popt, 5871[ --with-included-popt use bundled popt library, not from system], 5872[ 5873 case "$withval" in 5874 yes) 5875 INCLUDED_POPT=yes 5876 ;; 5877 no) 5878 INCLUDED_POPT=no 5879 ;; 5880 esac ], 5881) 5882if test x"$INCLUDED_POPT" != x"yes"; then 5883 AC_CHECK_LIB(popt, poptGetContext, 5884 INCLUDED_POPT=no, INCLUDED_POPT=yes) 5885fi 5886 5887AC_MSG_CHECKING(whether to use included popt) 5888if test x"$INCLUDED_POPT" = x"yes"; then 5889 AC_MSG_RESULT(yes) 5890 BUILD_POPT='$(POPT_OBJ)' 5891 POPTLIBS='$(POPT_OBJ)' 5892 FLAGS1="-I\$(srcdir)/popt" 5893else 5894 AC_MSG_RESULT(no) 5895 BUILD_POPT="" 5896 POPTLIBS="-lpopt" 5897fi 5898AC_SUBST(BUILD_POPT) 5899AC_SUBST(POPTLIBS) 5900AC_SUBST(FLAGS1) 5901 5902################################################# 5903# Check to see if we should use the included iniparser 5904 5905AC_ARG_WITH(included-iniparser, 5906[ --with-included-iniparser use bundled iniparser library, not from system], 5907[ 5908 case "$withval" in 5909 yes) 5910 INCLUDED_INIPARSER=yes 5911 ;; 5912 no) 5913 INCLUDED_INIPARSER=no 5914 ;; 5915 esac ], 5916) 5917if test x"$INCLUDED_INIPARSER" != x"yes"; then 5918 AC_CHECK_LIB(iniparser, iniparser_load, 5919 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes) 5920fi 5921 5922AC_MSG_CHECKING(whether to use included iniparser) 5923if test x"$INCLUDED_INIPARSER" = x"yes"; then 5924 AC_MSG_RESULT(yes) 5925 BUILD_INIPARSER='$(INIPARSER_OBJ)' 5926 INIPARSERLIBS="" 5927 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src" 5928else 5929 AC_MSG_RESULT(no) 5930 BUILD_INIPARSER="" 5931 INIPARSERLIBS="-liniparser" 5932fi 5933AC_SUBST(BUILD_INIPARSER) 5934AC_SUBST(INIPARSERLIBS) 5935AC_SUBST(FLAGS1) 5936 5937 5938 5939################################################# 5940# Check if the user wants Python 5941 5942# At the moment, you can use this to set which Python binary to link 5943# against. (Libraries built for Python2.2 can't be used by 2.1, 5944# though they can coexist in different directories.) In the future 5945# this might make the Python stuff be built by default. 5946 5947# Defaulting python breaks the clean target if python isn't installed 5948 5949PYTHON= 5950 5951AC_ARG_WITH(python, 5952[ --with-python=PYTHONNAME build Python libraries], 5953[ case "${withval-python}" in 5954 yes) 5955 PYTHON=python 5956 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext" 5957 ;; 5958 no) 5959 PYTHON= 5960 ;; 5961 *) 5962 PYTHON=${withval-python} 5963 ;; 5964 esac ]) 5965AC_SUBST(PYTHON) 5966 5967for i in `echo $default_static_modules | sed -e 's/,/ /g'` 5968do 5969 eval MODULE_DEFAULT_$i=STATIC 5970done 5971 5972for i in `echo $default_shared_modules | sed -e 's/,/ /g'` 5973do 5974 dnl Fall back to static if we cannot build shared libraries 5975 eval MODULE_DEFAULT_$i=STATIC 5976 5977 if test $BLDSHARED = true; then 5978 eval MODULE_DEFAULT_$i=SHARED 5979 fi 5980done 5981 5982dnl Always built these modules static 5983MODULE_rpc_spoolss=STATIC 5984MODULE_rpc_srv=STATIC 5985MODULE_idmap_tdb=STATIC 5986MODULE_idmap_passdb=STATIC 5987MODULE_idmap_nss=STATIC 5988 5989MODULE_nss_info_template=STATIC 5990 5991AC_ARG_WITH(static-modules, 5992[ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in], 5993[ if test $withval; then 5994 for i in `echo $withval | sed -e 's/,/ /g'` 5995 do 5996 eval MODULE_$i=STATIC 5997 done 5998fi ]) 5999 6000AC_ARG_WITH(shared-modules, 6001[ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared], 6002[ if test $withval; then 6003 for i in `echo $withval | sed -e 's/,/ /g'` 6004 do 6005 eval MODULE_$i=SHARED 6006 done 6007fi ]) 6008 6009SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 6010 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] ) 6011SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB) 6012SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB) 6013SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o) 6014 6015 6016SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC) 6017SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC) 6018SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC) 6019SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC) 6020SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC) 6021SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC) 6022SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC) 6023SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC) 6024SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC) 6025SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC) 6026SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC) 6027SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC) 6028SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC) 6029SMB_SUBSYSTEM(RPC,smbd/server.o) 6030 6031SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP) 6032SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP) 6033SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP) 6034SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP) 6035SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP) 6036SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP) 6037SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o) 6038 6039SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO) 6040SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o) 6041 6042SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET) 6043SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET) 6044SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET) 6045SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET) 6046SMB_SUBSYSTEM(CHARSET,lib/iconv.o) 6047 6048SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH) 6049SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH) 6050SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH) 6051SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH) 6052SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH) 6053SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH) 6054SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH) 6055SMB_SUBSYSTEM(AUTH,auth/auth.o) 6056 6057SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS) 6058SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS) 6059SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS) 6060SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS) 6061SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS) 6062SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS) 6063SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS) 6064SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS) 6065SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS) 6066SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS) 6067SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS) 6068SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS) 6069SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS) 6070SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS) 6071SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS) 6072SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS) 6073SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS) 6074SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS) 6075SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS) 6076SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS) 6077SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS) 6078SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS) 6079SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS) 6080SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS) 6081SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS) 6082SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS) 6083 6084SMB_SUBSYSTEM(VFS,smbd/vfs.o) 6085 6086AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules]) 6087 6088################################################# 6089# do extra things if we are running insure 6090 6091if test "${ac_cv_prog_CC}" = "insure"; then 6092 CPPFLAGS="$CPPFLAGS -D__INSURE__" 6093fi 6094 6095################################################# 6096# If run from the build farm, enable NASTY hacks 6097################################################# 6098AC_MSG_CHECKING(whether to enable build farm hacks) 6099if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then 6100 AC_MSG_RESULT(yes) 6101 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm]) 6102else 6103 AC_MSG_RESULT(no) 6104fi 6105 6106################################################# 6107# check for bad librt/libpthread interactions 6108 6109if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \ 6110 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \ 6111 x"$samba_cv_HAVE_AIO64" = x"yes" -o \ 6112 x"$samba_cv_HAVE_AIO" = x"yes" ; then 6113 6114SMB_IF_RTSIGNAL_BUG( 6115 [ 6116 # Have RT_SIGNAL bug, need to check whether the problem will 6117 # affect anything we have configured. 6118 6119 rt_do_error=no 6120 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then 6121 if test x"$rt_signal_lease_ok" = x"no" ; then 6122 rt_do_error=yes 6123 fi 6124 fi 6125 6126 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then 6127 if test x"$rt_signal_notify_ok" = x"no" ; then 6128 rt_do_error=yes 6129 fi 6130 fi 6131 6132 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \ 6133 x"$samba_cv_HAVE_AIO" = x"yes" ; then 6134 if test x"$rt_signal_aio_ok" = x"no" ; then 6135 rt_do_error=yes 6136 fi 6137 fi 6138 6139 if test x"$rt_do_error" = x"yes" ; then 6140 SMB_IS_LIBPTHREAD_LINKED( 6141 [ 6142 cat<<MSG 6143 6144*** On this platforms, linking Samba against pthreads causes problems 6145*** with the oplock and change notification mechanisms. You may be 6146*** using pthreads as a side-effect of using the --with-aio-support 6147*** or --with-profiling-data options. Please remove these and try again. 6148 6149MSG 6150 ], 6151 [ 6152 cat<<MSG 6153 6154*** On this platform, the oplock and change notification mechanisms do not 6155*** appear to work. Please report this problem to samba-technical@samba.org 6156*** and attach the config.log file from this directory. 6157 6158MSG 6159 ]) 6160 AC_MSG_ERROR(unable to use realtime signals on this platform) 6161 fi 6162 ], 6163 [ 6164 # no RT_SIGNAL bug, we are golden 6165 SMB_IS_LIBPTHREAD_LINKED( 6166 [ 6167 AC_MSG_WARN(using libpthreads - this may degrade performance) 6168 ]) 6169 6170 ], 6171 [ 6172 # cross compiling, I hope you know what you are doing 6173 true 6174 ]) 6175 6176fi 6177 6178dnl Remove -L/usr/lib/? from LDFLAGS and LIBS 6179LIB_REMOVE_USR_LIB(LDFLAGS) 6180LIB_REMOVE_USR_LIB(LIBS) 6181LIB_REMOVE_USR_LIB(KRB5_LIBS) 6182 6183dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS 6184CFLAGS_REMOVE_USR_INCLUDE(CFLAGS) 6185CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS) 6186 6187################################################# 6188# Display summary of libraries detected 6189 6190AC_MSG_RESULT([Using libraries:]) 6191AC_MSG_RESULT([ LIBS = $LIBS]) 6192if test x"$with_ads_support" != x"no"; then 6193 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS]) 6194fi 6195if test x"$with_ldap_support" != x"no"; then 6196 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS]) 6197fi 6198if test x"$with_dnsupdate_support" != x"no"; then 6199 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS]) 6200fi 6201AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS]) 6202 6203################################################# 6204# final configure stuff 6205 6206AC_MSG_CHECKING([configure summary]) 6207AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"], 6208 AC_MSG_RESULT(yes), 6209 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;, 6210 AC_MSG_WARN([cannot run when cross-compiling])) 6211 6212builddir=`pwd` 6213AC_SUBST(builddir) 6214 6215# Stuff the smbd-only libraries at the end of the smbd link 6216# path (if we have them). 6217SMBD_LIBS="$samba_dmapi_libs" 6218AC_SUBST(SMBD_LIBS) 6219 6220AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh) 6221 6222################################################# 6223# Print very concise instructions on building/use 6224if test "x$enable_dmalloc" = xyes 6225then 6226 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use]) 6227 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.]) 6228fi 6229