~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source3/configure.in

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

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