]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Use closefrom if available instead of trying to close fds ourself.
[bacula/bacula] / bacula / autoconf / configure.in
1 dnl
2 dnl
3 dnl Process this file with autoconf to produce a configure script.
4 dnl
5 dnl require a recent autoconf
6 AC_PREREQ(2.61)
7 AC_INIT([bacula], m4_esyscmd([sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ../src/version.h src/version.h 2> /dev/null | tr -d '\n']))
8 AC_CONFIG_SRCDIR(src/version.h)
9
10 BUILD_DIR=`pwd`
11 cd ..
12 TOP_DIR=`pwd`
13 cd ${BUILD_DIR}
14 AC_SUBST(BUILD_DIR)
15 AC_SUBST(TOP_DIR)
16 AC_CONFIG_AUX_DIR(${BUILD_DIR}/autoconf)
17 AC_CONFIG_HEADERS(src/config.h:autoconf/config.h.in)
18
19 dnl minimal Win32 stuff for "make clean"
20 WIN32BUILDDIR=${BUILD_DIR}/src/win32
21 WIN32MAINDIR=${BUILD_DIR}
22 WIN32TOPDIR=${TOP_DIR}    
23 AC_SUBST(WIN32BUILDDIR)
24 AC_SUBST(WIN32MAINDIR)
25 AC_SUBST(WIN32TOPDIR)
26
27 dnl search for true and false programs.
28 AC_PATH_PROGS(TRUEPRG, true, :)
29 AC_PATH_PROGS(FALSEPRG, false, :)
30
31
32 dnl bacula version
33 post_host=
34 if test "x$BACULA" != x; then
35    post_host=`echo -${BACULA} | tr 'A-Z ' 'a-z-'`
36 fi
37 BACULA=${BACULA:-Bacula}
38 VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
39 DATE=`sed -n -e 's/^.*[ \t]*BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
40 LSMDATE=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
41 BDB_VERSION=`sed -n -e 's/^.*BDB_VERSION \(.*\)$/\1/p' ${srcdir}/src/cats/cats.h`
42 AC_SUBST(VERSION)dnl 
43 AC_SUBST(DATE)dnl 
44 AC_SUBST(LSMDATE)dnl 
45 AC_SUBST(BACULA)dnl
46 AC_SUBST(post_host)dnl
47 AC_SUBST(BDB_VERSION)dnl
48
49 dnl src/lib
50 dnl can be overwritten by specific values from version.h
51 LIBBAC_LT_RELEASE=`sed -n -e 's/^#.*LIBBAC_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
52 LIBBACCFG_LT_RELEASE=`sed -n -e 's/^#.*LIBBACCFG_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
53 LIBBACPY_LT_RELEASE=`sed -n -e 's/^#.*LIBBACPY_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
54
55 LIBBAC_LT_RELEASE=${LIBBAC_LT_RELEASE:-$VERSION}
56 LIBBACCFG_LT_RELEASE=${LIBBACCFG_LT_RELEASE:-$VERSION}
57 LIBBACPY_LT_RELEASE=${LIBBACPY_LT_RELEASE:-$VERSION}
58
59 AC_SUBST(LIBBAC_LT_RELEASE)dnl
60 AC_SUBST(LIBBACCFG_LT_RELEASE)dnl
61 AC_SUBST(LIBBACPY_LT_RELEASE)dnl
62
63 dnl src/cats
64 dnl can be overwritten by specific values from version.h
65 LIBBACSQL_LT_RELEASE=`sed -n -e 's/^#.*LIBBACSQL_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
66 LIBBACCATS_LT_RELEASE=`sed -n -e 's/^#.*LIBBACCATS_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
67
68 LIBBACSQL_LT_RELEASE=${LIBBACSQL_LT_RELEASE:-$VERSION}
69 LIBBACCATS_LT_RELEASE=${LIBBACCATS_LT_RELEASE:-$VERSION}
70
71 AC_SUBST(LIBBACSQL_LT_RELEASE)dnl
72 AC_SUBST(LIBBACCATS_LT_RELEASE)dnl
73
74 dnl src/findlib
75 dnl can be overwritten by specific values from version.h
76 LIBBACFIND_LT_RELEASE=`sed -n -e 's/^#.*LIBBACFIND_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
77
78 LIBBACFIND_LT_RELEASE=${LIBBACFIND_LT_RELEASE:-$VERSION}
79
80 AC_SUBST(LIBBACFIND_LT_RELEASE)dnl
81
82 echo "configuring for ${BACULA} $VERSION ($DATE)"
83
84
85 dnl -------------------------------------------------------
86 dnl Check for compiler.
87 dnl ------------------------------------------------------
88
89 AC_PROG_CC
90 AC_PROG_CXX
91 AC_PROG_CC_C_O         dnl Determine if C compiler support -c -o.
92 AC_PROG_GCC_TRADITIONAL    dnl Determine if ioctl() need -traditional.
93
94 BASECC=`basename $CC`
95 have_gcc=no
96 if test "x$BASECC" = xgcc; then
97    AC_DEFINE(HAVE_GCC)
98    have_gcc=yes
99 fi
100 AC_PATH_PROG(CXX, $CXX, $CXX)
101 if test ! -e $CXX; then
102    AC_MSG_ERROR(Unable to find C++ compiler)
103 fi
104
105 dnl -------------------------------------------------------
106 dnl Check for programs.
107 dnl ------------------------------------------------------
108 AC_PROG_INSTALL
109 AC_PATH_PROG(MV, mv, mv)
110 dnl Alert !!!
111 dnl If we name the variable RM it will shadow the RM variable in the configure script and we overwrite the
112 dnl value with the name of the rm command and not rm -f which is its normal content. This gives all kind
113 dnl of strange output of the configure script (like things don't exist etc.).
114 dnl So we name it REMOVE (more software has run into this problem)
115 AC_PATH_PROG(REMOVE, rm, rm)
116 AC_PATH_PROG(CP, cp, cp)
117 AC_PATH_PROG(SED, sed, sed)
118 AC_PATH_PROG(ECHO, echo, echo)
119 AC_PATH_PROG(CMP, cmp, cmp)
120 AC_PATH_PROG(TBL, tbl, tbl)
121 AC_PATH_PROG(AR, ar, ar)
122 AC_PATH_PROG(OPENSSL, openssl, none)
123 AC_PATH_PROG(MTX, mtx, mtx)
124 AC_PATH_PROG(DD, dd, dd)
125 AC_PATH_PROG(MKISOFS, mkisofs, mkisofs)
126 AC_PATH_PROG(PYTHON, python, python)
127 AC_PATH_PROG(GROWISOFS, growisofs, growisofs)
128 AC_PATH_PROG(DVDRWMEDIAINFO, dvd+rw-mediainfo, dvd+rw-mediainfo)
129 AC_PATH_PROG(DVDRWFORMAT, dvd+rw-format, dvd+rw-format)
130 AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config)
131 AC_PATH_PROG(QMAKE, qmake, none)
132 AC_PATH_PROG(GMAKE, gmake, none)
133 AC_ARG_VAR(WXCONFIG, [wx-config command. On some systems, you must set it to wx-config-2.6 to use wxWidgets 2.6.])
134 if test "x$WXCONFIG" = x; then
135    WXCONFIG=wx-config
136 fi
137 AC_PATH_PROG(WXCONFIG, ${WXCONFIG}, ${WXCONFIG})
138 AC_ARG_VAR(WXFLAGS, [Parameters to pass to wx-config (e.g. --unicode=no).])
139 AC_PATH_PROG(CDRECORD, cdrecord, cdrecord)
140 AC_PATH_PROG(PIDOF, pidof, pidof)
141 AC_PROG_AWK
142 # Some AWK programs fail, so test it and warn the user
143 if echo xfoo | $AWK 'BEGIN { prog=ARGV[1]; ARGC=1 } 
144       { if ((prog == $2) || (("(" prog ")") == $2) ||
145       (("[" prog "]") == $2) ||
146       ((prog ":") == $2)) { print $1 ; exit 0 } }' xfoo>/dev/null; then :;
147 else
148   AC_MSG_ERROR([!!!!!!!!! WARNING !!!!!!!!!!!!!!
149    The regex engine of $AWK is too broken to be used you 
150    might want to install GNU AWK.
151    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
152 fi
153 THE_AWK=$AWK
154 AC_PATH_PROG(AWK, $THE_AWK, $THE_AWK)
155
156
157 test -n "$ARFLAG" || ARFLAGS="cr"
158 AC_SUBST(ARFLAGS)
159
160 MAKE_SHELL=/bin/sh
161 AC_SUBST(MAKE_SHELL)
162
163 AC_SUBST(LOCAL_LIBS)
164 AC_SUBST(LOCAL_CFLAGS)
165 AC_SUBST(LOCAL_LDFLAGS)
166 AC_SUBST(LOCAL_DEFS)
167
168 dnl --------------------------------------------------
169 dnl Libtool config
170 dnl --------------------------------------------------
171 use_libtool=yes
172 AC_ARG_ENABLE(libtool,
173    AC_HELP_STRING([--enable-libtool], [enable building using GNU libtool @<:@default=yes@:>@]),
174    [
175        if test x$enableval = xno; then
176           use_libtool=no
177        fi
178    ]
179 )
180 LT_INIT([shared disable-static])
181 LT_LANG([C++])
182
183 if test x$use_libtool != xno; then
184    DEFAULT_OBJECT_TYPE=".lo"
185    DEFAULT_ARCHIVE_TYPE=".la"
186    DEFAULT_SHARED_OBJECT_TYPE=".la"
187    LIBTOOL="\$(LIBTOOL)"
188    LIBTOOL_INSTALL_TARGET="libtool-install"
189    LIBTOOL_UNINSTALL_TARGET="libtool-uninstall"
190    LIBTOOL_CLEAN_TARGET="libtool-clean"
191    QMAKE_LIBTOOL="${BUILD_DIR}/libtool"
192    FD_PLUGIN_DIR="src/plugins/fd"
193    have_plugins=yes
194 else
195    DEFAULT_OBJECT_TYPE=".o"
196    DEFAULT_ARCHIVE_TYPE=".a"
197    DEFAULT_SHARED_OBJECT_TYPE=".so"
198    LIBTOOL="# \$(LIBTOOL)"
199    LIBTOOL_INSTALL_TARGET=""
200    LIBTOOL_UNINSTALL_TARGET=""
201    LIBTOOL_CLEAN_TARGET=""
202    QMAKE_LIBTOOL="# ${BUILD_DIR}/libtool"
203    FD_PLUGIN_DIR=""
204    have_plugins=no
205 fi
206
207 AC_SUBST(DEFAULT_OBJECT_TYPE)
208 AC_SUBST(DEFAULT_ARCHIVE_TYPE)
209 AC_SUBST(DEFAULT_SHARED_OBJECT_TYPE)
210 AC_SUBST(LIBTOOL)
211 AC_SUBST(LIBTOOL_INSTALL_TARGET)
212 AC_SUBST(LIBTOOL_UNINSTALL_TARGET)
213 AC_SUBST(LIBTOOL_CLEAN_TARGET)
214 AC_SUBST(QMAKE_LIBTOOL)
215 AC_SUBST(FD_PLUGIN_DIR)
216
217 dnl --------------------------------------------------
218 dnl Include file handling
219 dnl --------------------------------------------------
220 AC_ARG_ENABLE(includes,
221    AC_HELP_STRING([--enable-includes], [enable installing of include files @<:@default=no@:>@]),
222    [
223        if test x$enableval = xyes; then
224           install_includes=yes
225        fi
226    ]
227 )
228
229 dnl It only makes sense to install include files when you install libraries which only happens when
230 dnl libtool is enabled
231
232 if test x$use_libtool != xno -a x$install_includes = xyes; then
233    INCLUDE_INSTALL_TARGET="install-includes"
234    INCLUDE_UNINSTALL_TARGET="uninstall-includes"
235 else
236    INCLUDE_INSTALL_TARGET=""
237    INCLUDE_UNINSTALL_TARGET=""
238 fi
239 AC_SUBST(INCLUDE_INSTALL_TARGET)
240 AC_SUBST(INCLUDE_UNINSTALL_TARGET)
241
242 dnl --------------------------------------------------
243 dnl Bacula OP Sys determination (see aclocal.m4)
244 dnl --------------------------------------------------
245 BA_CHECK_OPSYS
246
247 dnl -----------------------------------------------------------
248 dnl Bacula OPSys Distribution determination (see aclocal.m4)
249 dnl ----------------------------------------------------------
250 BA_CHECK_OPSYS_DISTNAME
251
252 dnl --------------------------------------------------
253 dnl Suppport for gettext (translations)
254 dnl By default, $datarootdir is ${prefix}/share
255 dnl --------------------------------------------------
256 AM_GNU_GETTEXT([external])
257
258 dnl ------------------------------------------------------------------
259 dnl If the user has not set --prefix, we set our default to nothing.
260 dnl In this case, if the user has not set --sysconfdir, we set it
261 dnl to the package default of /etc/bacula.  If either --prefix or
262 dnl --sysconfdir is set, we leave sysconfdir alone except to eval it.
263 dnl If the user has not set --libdir, we set it to the package
264 dnl default of /usr/lib. If either --prefix or --libdir is set,
265 dnl we leave libdir alone except to eval it. If the user has not set
266 dnl --includedir, we set it to the package default of /usr/include.
267 dnl If either --prefix or --includedir is set, we leave includedir
268 dnl alone except to eval it
269 dnl ------------------------------------------------------------------
270 os_name=`uname -s 2>/dev/null`
271 if test x${prefix} = xNONE ; then
272    if test `eval echo ${sysconfdir}` = NONE/etc ; then
273       sysconfdir=/etc/bacula
274    fi
275
276    if test `eval echo ${libdir}` = NONE/lib ; then
277       case ${os_name} in
278       Linux)
279          os_processor=`uname -p 2>/dev/null`
280          case ${os_processor} in
281          x86_64)
282             libdir=/usr/lib64
283             ;;
284          *)
285             libdir=/usr/lib
286             ;;
287          esac
288          ;;
289       *)
290          libdir=/usr/lib
291          ;;
292       esac
293    fi
294
295    if test `eval echo ${includedir}` = NONE/include ; then
296       includedir=/usr/include
297    fi
298
299    if test `eval echo ${datarootdir}` = NONE/share ; then
300       datarootdir=/usr/share
301    fi
302    prefix=
303 fi
304
305 dnl -------------------------------------------------------------------------
306 dnl  If the user has not set --exec-prefix, we default to ${prefix}
307 dnl -------------------------------------------------------------------------
308 if test x${exec_prefix} = xNONE ; then
309    exec_prefix=${prefix}
310 fi
311
312 sysconfdir=`eval echo ${sysconfdir}`
313 datarootdir=`eval echo ${datarootdir}`
314 docdir=`eval echo ${docdir}`
315 htmldir=`eval echo ${htmldir}`
316 libdir=`eval echo ${libdir}`
317 includedir=`eval echo ${includedir}`
318 localedir=`eval echo ${datarootdir}/locale`
319 AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir")
320 AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir") 
321
322 dnl ------------------------------------------------------------------
323 dnl If the user has not set --sbindir, we set our default as /sbin
324 dnl ------------------------------------------------------------------
325 if test x$sbindir = x'${exec_prefix}/sbin' ; then
326    sbindir=${exec_prefix}/sbin
327 fi
328 sbindir=`eval echo ${sbindir}`
329
330 dnl -------------------------------------------------------------------------
331 dnl  If the user has not set --mandir, we default to /usr/share/man
332 dnl -------------------------------------------------------------------------
333 if test x$mandir = x'${prefix}/man' ; then
334    mandir=/usr/share/man
335 fi
336
337 dnl -------------------------------------------------------------------------
338 dnl  If the user has not set --htmldir, we default to /usr/share/doc/bacula/html
339 dnl -------------------------------------------------------------------------
340 if test x$htmldir = x'/usr/share/doc/bacula/' ; then
341    htmldir=`eval echo ${docdir}html`
342 fi
343
344 dnl -------------------------------------------------------------------------
345 dnl  If the user has not set --docdir, we default to /usr/share/doc/bacula
346 dnl -------------------------------------------------------------------------
347 if test x$docdir = x'/usr/share/doc/' ; then
348    docdir=`eval echo ${docdir}bacula`
349 fi
350
351             
352 AC_PATH_PROGS(MSGFMT, msgfmt, no)
353 if test "$MSGFMT" = "no"
354 then
355    echo 'msgfmt program not found, disabling NLS !'
356    USE_NLS=no
357    USE_INCLUDED_LIBINTL=no
358 #else
359    AM_GNU_GETTEXT
360 fi
361
362 support_smartalloc=yes
363 support_readline=yes
364 support_conio=yes
365 support_gnome=no
366 support_bat=no
367 support_wx_console=no
368 support_tray_monitor=no
369 support_tls=no
370 support_crypto=no
371 gnome_version=
372 wx_version=
373 support_static_tools=no
374 support_static_fd=no
375 support_static_sd=no
376 support_static_dir=no
377 support_static_cons=no
378 support_python=no
379 build_client_only=no
380 build_dird=yes
381 build_stored=yes
382 db_backends=""
383 batch_insert_db_backends=""
384 support_lockmgr=no
385
386 dnl --------------------------------------------------------------------------
387 dnl CHECKING COMMAND LINE OPTIONS
388 dnl --------------------------------------------------------------------------
389
390 dnl -------------------------------------------
391 dnl gnome -- no longer supported
392 dnl -------------------------------------------
393 AC_ARG_ENABLE(gnome,
394    AC_HELP_STRING([--enable-gnome], [enable build of bgnome-console GUI @<:@default=no@:>@]),
395    [
396        if test x$enableval = xyes; then
397           support_gnome=yes
398        fi
399    ]
400 )
401
402 GNOME_DIR=
403 if test x$support_gnome = xyes; then
404    AC_MSG_ERROR(bgnome-console no longer supported)
405    AC_MSG_ERROR(--enable-gnome option no longer supported)
406 fi
407 # AC_SUBST(GNOME_DIR)
408
409 dnl -------------------------------------------
410 dnl bat (default off)
411 dnl -------------------------------------------
412 AC_ARG_ENABLE(bat,
413    AC_HELP_STRING([--enable-bat], [enable build of bat Qt4 GUI @<:@default=no@:>@]),
414    [
415        if test x$enableval = xyes; then
416           AC_DEFINE(HAVE_BAT, 1, [Set if Bacula bat Qt4 GUI support enabled]) 
417           support_bat=yes
418        fi
419    ]
420 )
421
422 BAT_DIR=
423 if test x$support_bat = xyes; then
424    abc=`$PKGCONFIG --atleast-version=4.2 QtGui`
425    pkg=$?
426    if test $pkg = 0; then
427       BAT_DIR=src/qt-console
428    else
429       AC_MSG_ERROR(Unable to find Qt4 installation needed by bat)
430    fi
431 fi
432
433 dnl 
434 dnl  The qwt library was used with bat, but that is no longer the case
435 dnl 
436 got_qwt=no
437 QWT_INC=
438 QWT_LDFLAGS=
439 QWT_LIB=
440 QWT=
441 no_qwt=no
442 dnl if test x$support_bat = xyes; then
443 dnl    AC_MSG_CHECKING(for qwt support)
444 dnl    AC_ARG_WITH(qwt,
445 dnl       AC_HELP_STRING([--with-qwt@<:@=DIR@:>@], [specify qwt library directory]),
446 dnl       [
447 dnl           case "$with_qwt" in
448 dnl           no)
449 dnl              no_qwt=yes
450 dnl              ;;
451 dnl           yes|*)
452 dnl              if test -f ${with_qwt}/include/qwt.h; then
453 dnl                 QWT_INC="${with_qwt}/include"
454 dnl                 QWT_LDFLAGS="-L${with_qwt}/lib"
455 dnl                 QWT_LIB="-lqwt"
456 dnl                 QWT="qwt"
457 dnl              fi
458 dnl              ;;
459 dnl           esac
460 dnl       ]    
461 dnl    )
462
463 dnl    dnl
464 dnl    dnl Search in standard places, or --with-qwt not specified
465 dnl    dnl
466 dnl    if test $no_qwt = no; then 
467 dnl       if test x$QWT_INC = x; then
468 dnl          for root in /usr /usr/local; do
469 dnl             for ver in qwt qwt5 qwt-qt4; do
470 dnl                if test -f ${root}/include/${ver}/qwt.h; then
471 dnl                   QWT_INC="${root}/include/${ver}"
472 dnl                   if test -d ${root}/lib64/; then
473 dnl                      QWT_LDFLAGS="-L${root}/lib64"
474 dnl                   elif test -d ${root}/lib/64/; then
475 dnl                      QWT_LDFLAGS="-L${root}/64"
476 dnl                   else
477 dnl                      QWT_LDFLAGS="-L${root}/lib"
478 dnl                   fi
479 dnl                   QWT_LIB="-lqwt"
480 dnl                   QWT="qwt"
481 dnl                   got_qwt=yes
482 dnl                   break;
483 dnl                fi
484 dnl             done
485 dnl          done
486 dnl       fi
487 dnl    fi
488 dnl    if test x$QWT_INC = x; then
489 dnl       AC_MSG_RESULT(no)
490 dnl    else
491 dnl       AC_DEFINE(HAVE_QWT, 1, [Set if bat QWT library found])
492 dnl       AC_MSG_RESULT(yes)
493 dnl    fi
494 dnl fi
495
496 AC_SUBST(BAT_DIR)
497 AC_SUBST(QWT_INC)
498 AC_SUBST(QWT_LDFLAGS)
499 AC_SUBST(QWT_LIB)
500 AC_SUBST(QWT)
501
502 dnl -------------------------------------------
503 dnl bwx-console (default off)
504 dnl -------------------------------------------
505 AC_ARG_ENABLE(bwx-console,
506    AC_HELP_STRING([--enable-bwx-console], [enable build of wxWidgets console @<:@default=no@:>@]),
507    [
508        if test x$enableval = xyes; then
509           support_wx_console=yes
510        fi
511    ]
512 )
513
514 WX_DIR=
515 if test x$support_wx_console = xyes; then
516    abc=`$WXCONFIG $WXFLAGS --cppflags`
517    pkg=$?
518    if test $pkg = 0; then
519       wx_version="wxWidgets `$WXCONFIG $WXFLAGS --release`"
520       WXCONS_CPPFLAGS=`$WXCONFIG $WXFLAGS --cppflags`
521       WXCONS_LDFLAGS=`$WXCONFIG $WXFLAGS --libs`
522
523       AC_SUBST(WXCONS_CPPFLAGS)
524       AC_SUBST(WXCONS_LDFLAGS)
525       WX_DIR="src/wx-console"
526    else
527       echo " "
528       echo "wx-config program not found. bwx-console disabled."
529       echo " "
530       support_wx_console=no
531    fi
532 fi
533 AC_SUBST(WX_DIR)
534
535 dnl -------------------------------------------
536 dnl tray-monitor (default off)
537 dnl -------------------------------------------
538 AC_ARG_ENABLE(tray-monitor,
539    AC_HELP_STRING([--enable-tray-monitor], [enable build of Gnome tray monitor (compatible with KDE @<:@default=no@:>@]),
540    [
541        if test x$enableval = xyes; then
542           support_tray_monitor=yes
543        fi
544    ]
545 )
546
547 TRAY_MONITOR_DIR=
548 if test x$support_tray_monitor = xyes; then
549    abc=`$PKGCONFIG --exists gtk+-2.0`
550    pkg=$?
551    if test $pkg = 0; then
552       TRAY_MONITOR_CPPFLAGS=`$PKGCONFIG --cflags gtk+-2.0`
553       TRAY_MONITOR_LDFLAGS=`$PKGCONFIG --libs gtk+-2.0`
554       AC_SUBST(TRAY_MONITOR_CPPFLAGS)
555       AC_SUBST(TRAY_MONITOR_LDFLAGS)
556       TRAY_MONITOR_DIR=src/tray-monitor
557       abc=`$PKGCONFIG --atleast-version=2.4 gtk+-2.0`
558       pkg=$?
559       if test $pkg = 0; then
560          AC_DEFINE(HAVE_GTK_2_4, 1, [Set if you have GTK 4.2 or greater loaded])
561       fi
562    fi
563 fi
564 AC_SUBST(TRAY_MONITOR_DIR)
565
566 dnl -------------------------------------------
567 dnl smartalloc (default off)
568 dnl -------------------------------------------
569 AC_ARG_ENABLE(smartalloc,
570    AC_HELP_STRING([--enable-smartalloc], [enable smartalloc debugging support @<:@default=no@:>@]),
571    [
572        if test x$enableval = xno; then
573           support_smartalloc=no
574        fi
575    ]
576 )
577
578 if test x$support_smartalloc = xyes; then
579    AC_DEFINE(SMARTALLOC, 1, [Set if you want Smartalloc enabled])
580 fi
581
582 dnl -------------------------------------------
583 dnl Lock Manager (default off)
584 dnl -------------------------------------------
585 AC_ARG_ENABLE(lockmgr,
586    AC_HELP_STRING([--enable-lockmgr], [enable lock manager support @<:@default=no@:>@]),
587    [
588        if test x$enableval = xyes; then
589           support_lockmgr=yes
590        fi
591    ]
592 )
593
594 if test x$support_lockmgr = xyes; then
595    AC_DEFINE(_USE_LOCKMGR, 1, [Set if you want Lock Manager enabled])
596 fi
597
598
599 dnl -------------------------------------------
600 dnl static-tools (default off)
601 dnl -------------------------------------------
602 AC_ARG_ENABLE(static-tools,
603    AC_HELP_STRING([--enable-static-tools], [enable static tape tools @<:@default=no@:>@]),
604    [
605        if test x$enableval = xyes; then
606           if test x$use_libtool = xyes; then
607              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
608   please rerun configure with --disable-libtool])
609           fi
610           support_static_tools=yes
611        fi
612    ]
613 )
614
615 TTOOL_LDFLAGS=
616 if test x$support_static_tools = xyes; then
617    TTOOL_LDFLAGS="-static"
618 fi
619 AC_SUBST(TTOOL_LDFLAGS)
620
621 dnl -------------------------------------------
622 dnl static-fd    (default off)
623 dnl -------------------------------------------
624 AC_ARG_ENABLE(static-fd,
625    AC_HELP_STRING([--enable-static-fd], [enable static File daemon @<:@default=no@:>@]),
626    [
627        if test x$enableval = xyes; then
628           if test x$use_libtool = xyes; then
629              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
630   please rerun configure with --disable-libtool])
631           fi
632           support_static_fd=yes
633        fi
634    ]
635 )
636
637 STATIC_FD=
638 if test x$support_static_fd = xyes; then
639    STATIC_FD="static-bacula-fd"
640 fi
641 AC_SUBST(STATIC_FD)
642
643 dnl -------------------------------------------
644 dnl static-sd    (default off)
645 dnl -------------------------------------------
646 AC_ARG_ENABLE(static-sd,
647    AC_HELP_STRING([--enable-static-sd], [enable static Storage daemon @<:@default=no@:>@]),
648    [
649        if test x$enableval = xyes; then
650           if test x$use_libtool = xyes; then
651              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
652   please rerun configure with --disable-libtool])
653           fi
654           support_static_sd=yes
655        fi
656    ]
657 )
658
659 STATIC_SD=
660 if test x$support_static_sd = xyes; then
661    STATIC_SD="static-bacula-sd"
662 fi
663 AC_SUBST(STATIC_SD)
664
665 dnl -------------------------------------------
666 dnl static-dir   (default off)
667 dnl -------------------------------------------
668 AC_ARG_ENABLE(static-dir,
669    AC_HELP_STRING([--enable-static-dir], [enable static Director @<:@default=no@:>@]),
670    [
671        if test x$enableval = xyes; then
672           if test x$use_libtool = xyes; then
673              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
674   please rerun configure with --disable-libtool])
675           fi
676           support_static_dir=yes
677        fi
678    ]
679 )
680
681 STATIC_DIR=
682 if test x$support_static_dir = xyes; then
683    STATIC_DIR="static-bacula-dir"
684 fi
685 AC_SUBST(STATIC_DIR)
686
687 dnl -------------------------------------------
688 dnl static-cons  (default off)
689 dnl -------------------------------------------
690 AC_ARG_ENABLE(static-cons,
691    AC_HELP_STRING([--enable-static-cons], [enable static Console @<:@default=no@:>@]),
692    [
693        if test x$enableval = xyes; then
694           if test x$use_libtool = xyes; then
695              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
696   please rerun configure with --disable-libtool])
697           fi
698           support_static_cons=yes
699        fi
700    ]
701 )
702
703 STATIC_CONS=
704 STATIC_GNOME_CONS=
705 STATIC_WX_CONS=
706 if test x$support_static_cons = xyes; then
707    STATIC_CONS="static-bconsole"
708    STATIC_GNOME_CONS="static-bgnome-console"
709    STATIC_WX_CONS="static-bwx-console"
710 fi
711 AC_SUBST(STATIC_CONS)
712 AC_SUBST(STATIC_GNOME_CONS)
713 AC_SUBST(STATIC_WX_CONS)
714
715 dnl -------------------------------------------
716 dnl client_only  (default off)
717 dnl -------------------------------------------
718 AC_ARG_ENABLE(client-only,
719    AC_HELP_STRING([--enable-client-only], [build client (File daemon) only @<:@default=no@:>@]),
720    [
721        if test x$enableval = xyes; then
722           build_client_only=yes
723           db_backends="None"
724           DB_BACKENDS="none"
725        fi
726    ]
727 )
728 if test x$build_client_only = xno; then
729    ALL_DIRS="subdirs"
730 else
731    ALL_DIRS=""
732 fi
733 AC_SUBST(ALL_DIRS)
734
735 dnl -------------------------------------------
736 dnl director  (default on)
737 dnl -------------------------------------------
738 AC_ARG_ENABLE(build-dird,
739    AC_HELP_STRING([--enable-build-dird], [enable building of dird (Director) @<:@default=yes@:>@]),
740    [
741        if test x$enableval = xno; then
742           build_dird=no
743        fi
744    ]
745 )
746 if test x$build_dird = xyes; then
747    DIRD_DIR="src/dird"
748    DIR_TOOLS="DIRTOOLS"
749 else
750    DIRD_DIR=""
751    DIR_TOOLS="NODIRTOOLS"
752 fi
753 AC_SUBST(DIRD_DIR)
754 AC_SUBST(DIR_TOOLS)
755
756 dnl -------------------------------------------
757 dnl stored  (default on)
758 dnl -------------------------------------------
759 AC_ARG_ENABLE(build-stored,
760    AC_HELP_STRING([--enable-build-stored], [enable building of stored (Storage daemon) @<:@default=yes@:>@]),
761    [
762       if test x$enableval = xno; then
763          build_stored=no
764       fi
765    ]
766 )
767 if test x$build_stored = xyes; then
768    STORED_DIR="src/stored"
769 else
770    STORED_DIR=""
771 fi
772 AC_SUBST(STORED_DIR)
773
774 dnl ---------------------------------------------------
775 dnl Check for conio (Bacula readline substitute)(
776 dnl ---------------------------------------------------
777 dnl this allows you to turn it completely off
778 AC_ARG_ENABLE(conio,
779    AC_HELP_STRING([--disable-conio], [disable conio support @<:@default=no@:>@]),
780    [
781        if test x$enableval = xno; then
782           support_conio=no
783        fi
784    ]
785 )
786   
787
788 dnl ---------------------------------------------------
789 dnl Check for IPv6 support
790 dnl ---------------------------------------------------
791 dnl this allows you to turn it completely off
792 support_ipv6=yes
793 AC_ARG_ENABLE(ipv6,   
794    AC_HELP_STRING([--enable-ipv6], [enable ipv6 support @<:@default=yes@:>@]),
795    [
796        if test x$enableval = xno; then
797           support_ipv6=no  
798        fi
799    ]
800 )
801
802 if test x$support_ipv6 = xyes; then
803     AC_TRY_LINK([ #include <sys/types.h>
804 #include <sys/socket.h>
805 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;],
806       [support_ipv6=yes], [support_ipv6=no])
807 fi
808
809 if test x$support_ipv6 = xyes; then
810    AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
811 fi
812
813 TERM_LIB=""
814 AC_CHECK_HEADER(curses.h, [ 
815     AC_CHECK_LIB(tinfo, tgetent, [ TERM_LIB="-ltinfo" ], [
816       AC_CHECK_LIB(ncurses, tgetent, [ TERM_LIB="-lncurses" ], [
817         AC_CHECK_LIB(termcap, tgetent, [ TERM_LIB="-ltermcap" ])
818     ])
819   ])
820   ],
821   [  AC_CHECK_HEADERS(curses.h)
822      AC_CHECK_HEADER(term.h,
823        [ AC_CHECK_LIB(curses, tgetent, 
824          [ TERM_LIB="-lcurses" ] )
825        ])
826   ])
827
828
829 got_conio="no"
830 if test x$support_conio = xyes; then
831    if test x$TERM_LIB != x; then
832       CONS_LIBS=$TERM_LIB
833       CONS_OBJ="conio.o"
834       CONS_SRC="conio.c"
835       got_conio="yes"
836       support_readline=no
837       AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled]) 
838    else
839       echo " "; echo "Required libraries not found. CONIO turned off ..."; echo " "
840    fi
841 fi
842
843
844 dnl ---------------------------------------------------
845 dnl Check for readline support/directory (default off)
846 dnl ---------------------------------------------------
847 dnl this allows you to turn it completely off
848 AC_ARG_ENABLE(readline,
849    AC_HELP_STRING([--disable-readline], [disable readline support @<:@default=yes@:>@]),
850    [
851        if test x$enableval = xno; then
852           support_readline=no
853        fi
854    ]
855 )
856 if test x$TERM_LIB = x ; then
857    support_readline=no
858 fi
859
860 got_readline="no"
861 READLINE_SRC=
862 if test x$support_readline = xyes; then
863    AC_ARG_WITH(readline,
864       AC_HELP_STRING([--with-readline@<:@=DIR@:>@], [specify readline library directory]),
865       [
866           case "$with_readline" in
867           no)
868              :
869              ;;
870           yes|*)
871              if test -f ${with_readline}/readline.h; then
872                 CONS_INC="-I${with_readline}"
873                 CONS_LDFLAGS="-L$with_readline"
874              elif test -f ${with_readline}/include/readline/readline.h; then
875                 CONS_INC="-I${with_readline}/include/readline"
876                 CONS_LDFLAGS="-L${with_readline}/lib"
877                 with_readline="${with_readline}/include/readline"
878              else
879                 with_readline="/usr/include/readline" 
880              fi
881
882              AC_CHECK_HEADER(${with_readline}/readline.h, 
883                 [
884                     AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
885                     CONS_LIBS="-lreadline -lhistory $TERM_LIB"
886                     got_readline="yes"   
887                 ], [
888                     echo " "
889                     echo "readline.h not found. readline turned off ..."
890                     echo " "
891                 ]
892              )
893              ;;
894           esac
895       ],[
896          dnl check for standard readline library
897          AC_CHECK_HEADER(/usr/include/readline/readline.h, 
898             [
899                 AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
900                 got_readline="yes"
901                 CONS_INC="-I/usr/include/readline"
902                 CONS_LIBS="-lreadline $TERM_LIB"
903             ], [
904                 dnl Did not find standard library, so try Bacula's default
905                 AC_CHECK_HEADER(${TOP_DIR}/depkgs/readline/readline.h, 
906                     [
907                         AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
908                         got_readline="yes"   
909                         CONS_INC="-I${TOP_DIR}/depkgs/readline"
910                         CONS_LIBS="-lreadline -lhistory $TERM_LIB"
911                         CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline"
912                         PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline"
913                     ], [
914                         echo " "
915                         echo "readline.h not found. readline turned off ..."
916                         echo " "
917                     ]
918                 )
919             ]
920          )
921       ]    
922    )
923 fi
924
925 AC_SUBST(CONS_INC)
926 AC_SUBST(CONS_OBJ)
927 AC_SUBST(CONS_SRC)
928 AC_SUBST(CONS_LIBS)
929 AC_SUBST(CONS_LDFLAGS)
930 AC_SUBST(READLINE_SRC)
931
932 dnl Minimal stuff for readline Makefile configuration
933 MAKE_SHELL=/bin/sh
934 AC_SUBST(MAKE_SHELL)
935 AC_HEADER_STAT
936 AC_HEADER_DIRENT
937 AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr lstat lchown)
938 AC_CHECK_FUNCS(nanosleep nl_langinfo)
939 AC_CHECK_HEADERS(varargs.h)
940
941 dnl End of readline/conio stuff
942 dnl -----------------------------------------------------------------------
943
944 dnl -----------------------------------------------------------------------
945 dnl  Check for Python support
946 dnl
947 AC_MSG_CHECKING(for Python support)
948 AC_ARG_WITH(python,
949    AC_HELP_STRING([--with-python@<:@=DIR@:>@], [Include Python support. DIR is the Python base install directory, default is to search through a number of common places for the Python files.]),
950    [
951        PYTHON_INCDIR= 
952        PYTHON_LIBS=
953        if test "$withval" != "no"; then
954           if test "$withval" = "yes"; then
955              if test -e /usr/bin/python-config ; then
956                 PYTHON_INCDIR=`/usr/bin/python-config --includes`
957                 PYTHON_LIBS=`/usr/bin/python-config --libs`
958              else
959                 for python_root in /usr /usr/local /usr/sfw; do
960                    for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
961                       if test -f $python_root/include/${ver}/Python.h; then
962                          PYTHON_INCDIR=-I$python_root/include/${ver}
963                          if test -d $python_root/lib64/${ver}/config; then
964                             PYTHON_LIBS="-L$python_root/lib64/${ver}/config -l${ver}"
965                          else
966                             PYTHON_LIBS="-L$python_root/lib/${ver}/config -l${ver}"
967                          fi
968                          break 
969                       fi
970                    done
971                 done
972
973                 if test x$PYTHON_INCDIR = x; then
974                    if test -f $prefix/include/Python.h; then
975                       PYTHON_INCDIR=-I$prefix/include
976                       if test -d $prefix/lib64/config; then
977                          PYTHON_LIBS="-L$prefix/lib64/config -lpython"
978                       else
979                          PYTHON_LIBS="-L$prefix/lib/config -lpython"
980                       fi
981                    else
982                       AC_MSG_RESULT(no)
983                       AC_MSG_ERROR(Unable to find Python.h in standard locations)
984                    fi
985                 fi
986              fi
987           else
988              if test -e $withval/bin/python-config ; then
989                 PYTHON_INCDIR=`$withval/bin/python-config --includes`
990                 PYTHON_LIBS=`$withval/bin/python-config --libs`
991              elif test -f $withval/Python.h; then
992                 PYTHON_INCDIR=-I$withval
993                 PYTHON_LIBS="-L$withval/config -lpython"
994              elif test -f $withval/include/Python.h; then
995                 PYTHON_INCDIR=-I$withval/include
996                 if test -d $withval/lib64/config; then
997                    PYTHON_LIBS="-L$withval/lib64/config -lpython"
998                 else
999                    PYTHON_LIBS="-L$withval/lib/config -lpython"
1000                 fi
1001              elif test -f $withval/include/python/Python.h; then
1002                 PYTHON_INCDIR=-I$withval/include/python
1003                 if test -d $withval/lib64/python/config; then
1004                    PYTHON_LIBS="-L$withval/lib64/python/config -lpython"
1005                 else
1006                    PYTHON_LIBS="-L$withval/lib/python/config -lpython"
1007                 fi
1008              else
1009                 AC_MSG_RESULT(no)
1010                 AC_MSG_ERROR(Invalid Python directory $withval - unable to find Python.h under $withval)
1011              fi
1012           fi
1013
1014           AC_DEFINE([HAVE_PYTHON], 1)
1015           AC_MSG_RESULT(yes)
1016           support_python=yes
1017           AC_MSG_NOTICE(checking for more Python libs)
1018           saved_LIBS="$LIBS"; LIBS=
1019           AC_SEARCH_LIBS(shm_open, [rt])
1020           AC_CHECK_LIB(util, openpty)
1021           PYTHON_LIBS="$PYTHON_LIBS $LIBS"
1022           LIBS="$saved_LIBS"
1023        else
1024           AC_MSG_RESULT(no)
1025        fi
1026    ],[
1027        AC_MSG_RESULT(no)
1028    ]
1029 )
1030 AC_SUBST(PYTHON_LIBS)
1031 AC_SUBST(PYTHON_INCDIR)
1032
1033 dnl
1034 dnl Find where sockets are (especially for Solaris)
1035 dnl Do this before the TCP Wrappers test since tcp wrappers
1036 dnl uses the socket library and some linkers are stupid.
1037 dnl
1038 AC_CHECK_FUNC(socket,
1039     AC_MSG_RESULT(using libc's socket),
1040     AC_CHECK_LIB(xnet,socket)
1041     AC_CHECK_LIB(socket,socket)
1042     AC_CHECK_LIB(inet,socket))
1043
1044 dnl -----------------------------------------------------------
1045 dnl Check whether user wants TCP wrappers support (default off)
1046 dnl -----------------------------------------------------------
1047 TCPW_MSG="no" 
1048 WRAPLIBS=""
1049 AC_ARG_WITH(tcp-wrappers,
1050    AC_HELP_STRING([--with-tcp-wrappers@<:@=DIR@:>@], [enable tcpwrappers support]),
1051    [
1052        if test "x$withval" != "xno" ; then
1053           saved_LIBS="$LIBS"
1054           LIBS="$saved_LIBS -lwrap"
1055           AC_SEARCH_LIBS(nanosleep, [rt])
1056           AC_MSG_CHECKING(for libwrap)
1057           AC_TRY_LINK(
1058              [ 
1059                #include <sys/types.h>
1060                #include <tcpd.h>
1061                int deny_severity = 0;
1062                int allow_severity = 0;
1063                struct request_info *req;
1064              ], [
1065                 hosts_access(req);
1066              ], [
1067                  AC_MSG_RESULT(yes)
1068                  AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1069                  TCPW_MSG="yes" 
1070                  LIBS="$saved_LIBS"
1071                  WRAPLIBS="-lwrap"
1072              ], [
1073                  LIBS="$saved_LIBS -lwrap -lnsl"
1074                  WRAPLIBS="$saved_LIBS -lwrap -lnsl"
1075                  AC_TRY_LINK(
1076                    [
1077                        #include <sys/types.h>
1078                        #include <tcpd.h>
1079                        int deny_severity = 0;
1080                        int allow_severity = 0;
1081                        struct request_info *req;
1082                    ], [
1083                        hosts_access(req);
1084                    ], [
1085                       AC_MSG_RESULT(yes)
1086                       AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1087                       TCPW_MSG="yes" 
1088                       LIBS="$saved_LIBS"
1089                       WRAPLIBS="-lwrap"
1090                    ], [
1091                       AC_MSG_ERROR([*** libwrap missing])
1092                    ]
1093                 )
1094              ]
1095           )
1096        fi
1097    ]
1098 )
1099
1100 dnl -----------------------------------------------------------
1101 dnl Check whether OpenSSL is available
1102 dnl -----------------------------------------------------------
1103 AC_MSG_CHECKING([for OpenSSL])
1104 dnl The following uses quadrigraphs:
1105 dnl '@<:@' = '['
1106 dnl '@:>@' = ']'
1107 AC_ARG_WITH(openssl,
1108     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@], [Include OpenSSL support. DIR is the OpenSSL base]),
1109     [
1110         with_openssl_directory=${withval}
1111     ]
1112 )
1113
1114 if test "x$with_openssl_directory" != "xno"; then
1115    OPENSSL_LIBS="-lssl -lcrypto"
1116    OPENSSL_INC=""
1117
1118    if test "x$with_openssl_directory" != "xyes" && test x"${with_openssl_directory}" != "x"; then
1119       #
1120       # Make sure the $with_openssl_directory also makes sense
1121       #
1122       if test -d "$with_openssl_directory/lib" -a -d "$with_openssl_directory/include"; then
1123          OPENSSL_LIBS="-L$with_openssl_directory/lib $OPENSSL_LIBS"
1124          OPENSSL_INC="-I$with_openssl_directory/include $OPENSSL_INC"
1125       fi
1126    fi
1127
1128    saved_LIBS="${LIBS}"
1129    saved_CFLAGS="${CFLAGS}"
1130    LIBS="${saved_LIBS} ${OPENSSL_LIBS}"
1131    CFLAGS="${saved_CFLAGS} ${OPENSSL_INC}"
1132
1133    AC_TRY_LINK(
1134       [
1135           #include <openssl/ssl.h>
1136       ], [
1137            CRYPTO_set_id_callback(NULL);
1138       ], [
1139           support_tls="yes"
1140           support_crypto="yes"
1141       ], [
1142           support_tls="no"
1143           support_crypto="no"
1144       ]
1145    )
1146
1147    AC_TRY_LINK(
1148       [
1149           #include <openssl/evp.h>
1150       ], [
1151           EVP_sha512();
1152       ], [
1153           ac_cv_openssl_sha2="yes"
1154       ], [
1155           ac_cv_openssl_sha2="no"
1156       ]
1157    )
1158
1159    dnl Solaris disables greater than 128+ bit encryption in their OpenSSL
1160    dnl implementation, presumably for export reasons. If 192bit AES
1161    dnl is available, we assume that we're running with a 'non-export'
1162    dnl openssl library.
1163    AC_TRY_LINK(
1164       [
1165           #include <openssl/evp.h>
1166       ], [
1167           EVP_aes_192_cbc();
1168       ], [
1169           ac_cv_openssl_export="no"
1170       ], [
1171           ac_cv_openssl_export="yes"
1172       ]
1173    )
1174
1175    AC_MSG_RESULT([$support_tls])
1176    if test "$support_tls" = "yes"; then
1177       AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL library is available])
1178       AC_DEFINE(HAVE_TLS, 1, [Define if TLS support should be enabled])
1179       AC_DEFINE(HAVE_CRYPTO, 1, [Define if encryption support should be enabled])
1180    fi
1181
1182    if test "$ac_cv_openssl_sha2" = "yes"; then
1183       AC_DEFINE(HAVE_SHA2, 1, [Define if the SHA-2 family of digest algorithms is available])
1184    fi
1185
1186    if test "$ac_cv_openssl_export" = "yes"; then
1187       AC_DEFINE(HAVE_OPENSSL_EXPORT_LIBRARY, 1, [Define if the OpenSSL library is export-contrained to 128bit ciphers])
1188    fi
1189
1190    if test "$support_crypto" = "yes"; then
1191       AC_CHECK_LIB(crypto, EVP_PKEY_encrypt_old, AC_DEFINE(HAVE_OPENSSLv1, 1, [Set if have OpenSSL version 1.x]))
1192    fi
1193
1194    LIBS="${saved_LIBS}"
1195    CFLAGS="${saved_CFLAGS}"
1196 else
1197    support_tls="no"
1198    support_crypto="no"
1199    AC_MSG_RESULT([$support_tls])
1200 fi
1201
1202 if test "$support_tls" = "no" -o "$support_crypto" = "no"; then
1203    OPENSSL_LIBS=""
1204    OPENSSL_INC=""
1205 fi
1206
1207 AC_SUBST(OPENSSL_LIBS)
1208 AC_SUBST(OPENSSL_INC)
1209
1210 dnl -----------------------------------------------------------
1211 dnl dlopen is needed for plugins
1212 dnl -----------------------------------------------------------
1213 AC_SEARCH_LIBS(dlopen, [dl])
1214
1215 dnl ------------------------------------------
1216 dnl Where to place working dir
1217 dnl ------------------------------------------
1218 working_dir=`eval echo ${prefix}/var/bacula/working`
1219 AC_ARG_WITH(working-dir,
1220    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
1221    [
1222        if test "x$withval" != "xno" ; then     
1223          working_dir=$withval
1224        fi
1225    ]
1226 )
1227
1228 AC_SUBST(working_dir)
1229
1230 dnl ------------------------------------------------------------------
1231 dnl If the user has not set archivedir, we set our default as /tmp
1232 dnl ------------------------------------------------------------------
1233 archivedir=/tmp
1234 AC_ARG_WITH(archivedir,
1235    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
1236    [
1237        if test "x$withval" != "xno" ; then     
1238           archivedir=$withval
1239        fi
1240    ]
1241 )
1242
1243 AC_SUBST(archivedir)
1244
1245 dnl ------------------------------------------------------------------
1246 dnl Allow the user to specify the daemon resource name default hostname
1247 dnl ------------------------------------------------------------------
1248 basename=`hostname`
1249 AC_ARG_WITH(basename,
1250    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
1251    [
1252        if test "x$withval" != "xno" ; then     
1253           basename=$withval
1254        fi
1255    ]
1256 )
1257
1258 AC_SUBST(basename)
1259
1260 dnl ------------------------------------------------------------------
1261 dnl Allow the user to override the hostname (default = machine hostname)
1262 dnl ------------------------------------------------------------------
1263 hostname=`uname -n | cut -d '.' -f 1`
1264 if test x${hostname} = x ; then
1265   hostname="localhost"
1266 fi
1267 dnl Make sure hostname is resolved
1268 ping -c 1 $hostname 2>/dev/null 1>/dev/null
1269 if test ! $? = 0; then
1270   hostname="localhost"
1271 fi
1272 AC_ARG_WITH(hostname,
1273    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
1274    [
1275        if test "x$withval" != "xno" ; then
1276          hostname=$withval
1277        fi
1278    ]
1279 )
1280
1281 AC_SUBST(hostname)
1282
1283
1284 dnl ------------------------------------------
1285 dnl Where to place scriptdir (script files)
1286 dnl ------------------------------------------
1287 scriptdir=`eval echo ${sysconfdir}`
1288 AC_ARG_WITH(scriptdir,
1289    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
1290    [
1291        if test "x$withval" != "xno" ; then     
1292           scriptdir=$withval
1293        fi
1294    ]
1295 )
1296
1297 AC_SUBST(scriptdir)
1298
1299
1300 dnl ------------------------------------------
1301 dnl Where to place bsrdir (bsr files)
1302 dnl ------------------------------------------
1303 bsrdir=/tmp
1304 AC_ARG_WITH(bsrdir,
1305    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
1306    [
1307        if test "x$withval" != "xno" ; then     
1308           bsrdir=$withval
1309        fi
1310    ]
1311 )
1312
1313 AC_SUBST(bsrdir)
1314
1315 dnl ------------------------------------------
1316 dnl Where to place logdir (bsr files)
1317 dnl ------------------------------------------
1318 logdir=/tmp
1319 AC_ARG_WITH(logdir,
1320    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
1321    [
1322        if test "x$withval" != "xno" ; then     
1323           logdir=$withval
1324        fi
1325    ]
1326 )
1327
1328 AC_SUBST(logdir)
1329
1330
1331 # ------------------------------------------
1332 # Where to place plugindir (plugin files)
1333 # ------------------------------------------
1334 plugindir=`eval echo ${libdir}`
1335 AC_ARG_WITH(plugindir,
1336    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
1337    [
1338        if test "x$withval" != "xno" ; then     
1339           plugindir=$withval
1340        fi
1341    ]
1342 )
1343
1344 AC_SUBST(plugindir)
1345
1346 dnl ------------------------------------------
1347 dnl Where to send dump email
1348 dnl ------------------------------------------
1349 dump_email=root@localhost
1350 AC_ARG_WITH(dump-email,
1351    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
1352    [
1353        if test "x$withval" != "xno" ; then     
1354           dump_email=$withval
1355        fi
1356    ]
1357 )
1358
1359 AC_SUBST(dump_email)
1360
1361 dnl ------------------------------------------
1362 dnl Where to send job email
1363 dnl ------------------------------------------
1364 job_email=root@localhost
1365 AC_ARG_WITH(job-email,
1366    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
1367    [
1368        if test "x$withval" != "xno" ; then     
1369           job_email=$withval
1370        fi
1371    ]
1372 )
1373
1374 AC_SUBST(job_email)
1375
1376 dnl ------------------------------------------
1377 dnl Where to find smtp host
1378 dnl ------------------------------------------
1379 smtp_host=localhost
1380 AC_ARG_WITH(smtp_host,
1381    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
1382    [
1383        if test "x$withval" != "xno" ; then     
1384           smtp_host=$withval
1385        fi
1386    ]
1387 )
1388
1389 AC_SUBST(smtp_host)
1390
1391 dnl ------------------------------------
1392 dnl Where to place pid files
1393 dnl ------------------------------------
1394 piddir=/var/run
1395 AC_ARG_WITH(pid-dir,
1396    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
1397    [
1398        if test "x$withval" != "xno" ; then   
1399           piddir=$withval
1400        fi
1401    ]
1402 )
1403
1404 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
1405 AC_SUBST(piddir)
1406
1407 dnl ------------------------------------
1408 dnl Where to place subsys "lock file"
1409 dnl ------------------------------------
1410 subsysdir=/var/run/subsys
1411 if test -d /var/run/subsys; then
1412    subsysdir=/var/run/subsys
1413 elif test -d /var/lock/subsys; then
1414    subsysdir=/var/lock/subsys
1415 else
1416    subsysdir=/var/run/subsys
1417 fi
1418 AC_ARG_WITH(subsys-dir,
1419    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
1420    [
1421        if test "x$withval" != "xno" ; then   
1422           subsysdir=$withval
1423        fi
1424    ]
1425 )
1426
1427 AC_SUBST(subsysdir)
1428
1429 dnl ------------------------------------
1430 dnl Where to start assigning ports
1431 dnl ------------------------------------
1432 baseport=9101
1433 AC_ARG_WITH(baseport,
1434    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
1435    [
1436        if test "x$withval" != "xno" ; then   
1437           baseport=$withval
1438        fi
1439    ]
1440 )
1441
1442 AC_SUBST(baseport)
1443 dir_port=`expr $baseport`
1444 fd_port=`expr $baseport + 1`
1445 sd_port=`expr $fd_port + 1`
1446
1447 AC_SUBST(dir_port)
1448 AC_SUBST(fd_port)
1449 AC_SUBST(sd_port)
1450
1451 dnl ------------------------------------------
1452 dnl Generate passwords
1453 dnl ------------------------------------------
1454 dir_password=
1455 AC_ARG_WITH(dir-password,
1456    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
1457    [
1458        if test "x$withval" != "xno" ; then     
1459           dir_password=$withval
1460        fi
1461    ]
1462 )
1463
1464 if test "x$dir_password" = "x" ; then
1465    if test "x$OPENSSL" = "xnone" ; then
1466       key=`autoconf/randpass 33`
1467    else
1468       key=`openssl rand -base64 33`
1469    fi
1470    dir_password=$key
1471 fi
1472
1473 fd_password=
1474 AC_ARG_WITH(fd-password,
1475    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
1476    [
1477        if test "x$withval" != "xno" ; then     
1478           fd_password=$withval
1479        fi
1480    ]
1481 )
1482
1483 if test "x$fd_password" = "x" ; then
1484    if test "x$OPENSSL" = "xnone" ; then
1485       key=`autoconf/randpass 37`
1486    else
1487       key=`openssl rand -base64 33`
1488    fi
1489    fd_password=$key
1490 fi
1491
1492 sd_password=
1493 AC_ARG_WITH(sd-password,
1494    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
1495    [
1496        if test "x$withval" != "xno" ; then     
1497           sd_password=$withval
1498        fi
1499    ]
1500 )
1501
1502 if test "x$sd_password" = "x" ; then
1503    if test "x$OPENSSL" = "xnone" ; then
1504       key=`autoconf/randpass 41`
1505    else
1506       key=`openssl rand -base64 33`
1507    fi
1508    sd_password=$key
1509 fi
1510
1511 mon_dir_password=
1512 AC_ARG_WITH(mon-dir-password,
1513    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
1514    [
1515        if test "x$withval" != "xno" ; then     
1516           mon_dir_password=$withval
1517        fi
1518    ]
1519 )
1520
1521 if test "x$mon_dir_password" = "x" ; then
1522    if test "x$OPENSSL" = "xnone" ; then
1523       key=`autoconf/randpass 33`
1524    else
1525       key=`openssl rand -base64 33`
1526    fi
1527    mon_dir_password=$key
1528 fi
1529
1530 mon_fd_password=
1531 AC_ARG_WITH(mon-fd-password,
1532    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
1533    [
1534        if test "x$withval" != "xno" ; then     
1535           mon_fd_password=$withval
1536        fi
1537    ]
1538 )
1539
1540 if test "x$mon_fd_password" = "x" ; then
1541    if test "x$OPENSSL" = "xnone" ; then
1542       key=`autoconf/randpass 37`
1543    else
1544       key=`openssl rand -base64 33`
1545    fi
1546    mon_fd_password=$key
1547 fi
1548
1549 mon_sd_password=
1550 AC_ARG_WITH(mon-sd-password,
1551    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
1552    [
1553        if test "x$withval" != "xno" ; then     
1554           mon_sd_password=$withval
1555        fi
1556    ]
1557 )
1558
1559 if test "x$mon_sd_password" = "x" ; then
1560    if test "x$OPENSSL" = "xnone" ; then
1561       key=`autoconf/randpass 41`
1562    else
1563       key=`openssl rand -base64 33`
1564    fi
1565    mon_sd_password=$key
1566 fi
1567
1568 AC_SUBST(dir_password)
1569 AC_SUBST(fd_password)
1570 AC_SUBST(sd_password)
1571 AC_SUBST(mon_dir_password)
1572 AC_SUBST(mon_fd_password)
1573 AC_SUBST(mon_sd_password)
1574
1575 dnl
1576 dnl Pickup any database name
1577 dnl
1578 db_name=bacula
1579 AC_ARG_WITH(db_name,
1580    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
1581    [
1582        if test "x$withval" != "x" ; then   
1583           db_name=$withval
1584        fi
1585    ]
1586 )
1587 AC_SUBST(db_name)
1588
1589 db_user=bacula
1590 AC_ARG_WITH(db_user,
1591    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
1592    [
1593        if test "x$withval" != "x" ; then   
1594           db_user=$withval
1595        fi
1596    ]
1597 )
1598 AC_SUBST(db_user)
1599
1600 db_password=
1601 AC_ARG_WITH(db_password,
1602    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
1603    [
1604        if test "x$withval" != "x" ; then   
1605           db_password=$withval
1606        fi
1607    ]
1608 )
1609 AC_SUBST(db_password)
1610
1611 dnl
1612 dnl Pickup a database port
1613 dnl
1614 db_port=" "
1615 AC_ARG_WITH(db_port,
1616    AC_HELP_STRING([--with-db-port=DBPORT], [specify a database port @<:@default=null@:>@]),
1617    [
1618        if test "x$withval" != "x" ; then
1619           db_port=$withval
1620        fi
1621    ]
1622 )
1623 AC_SUBST(db_port)
1624
1625 #
1626 # Handle users and groups for each daemon
1627 #
1628 dir_user=
1629 AC_ARG_WITH(dir_user,
1630    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
1631    [
1632        if test "x$withval" != "x" ; then   
1633            dir_user=$withval
1634        fi
1635    ]
1636 )
1637
1638 dir_group=
1639 AC_ARG_WITH(dir_group,
1640    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
1641    [
1642        if test "x$withval" != "x" ; then   
1643           dir_group=$withval
1644        fi
1645    ]
1646 )
1647
1648 sd_user=
1649 AC_ARG_WITH(sd_user,
1650    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
1651    [
1652        if test "x$withval" != "x" ; then   
1653           sd_user=$withval
1654        fi
1655    ]
1656 )
1657
1658 sd_group=
1659 AC_ARG_WITH(sd_group,
1660    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
1661    [
1662        if test "x$withval" != "x" ; then   
1663           sd_group=$withval
1664        fi
1665    ]
1666 )
1667
1668 fd_user=
1669 AC_ARG_WITH(fd_user,
1670    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
1671    [
1672        if test "x$withval" != "x" ; then   
1673           fd_user=$withval
1674        fi
1675    ]
1676 )
1677
1678 fd_group=
1679 AC_ARG_WITH(fd_group,
1680    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
1681    [
1682        if test "x$withval" != "x" ; then   
1683           fd_group=$withval
1684        fi
1685    ]
1686 )
1687
1688 AC_SUBST(dir_user)
1689 AC_SUBST(dir_group)
1690 AC_SUBST(sd_user)
1691 AC_SUBST(sd_group)
1692 AC_SUBST(fd_user)
1693 AC_SUBST(fd_group)
1694
1695 dnl
1696 dnl allow setting default executable permissions
1697 dnl
1698 SBINPERM=0750
1699 AC_ARG_WITH(sbin-perm,
1700    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0750@:>@]),
1701    [
1702        if test "x$withval" != "x" ; then   
1703           SBINPERM=$withval
1704        fi
1705    ]
1706 )
1707
1708 AC_SUBST(SBINPERM)
1709
1710 dnl -------------------------------------------
1711 dnl enable batch attribute DB insert (default on)
1712 dnl -------------------------------------------
1713 support_batch_insert=yes
1714 AC_ARG_ENABLE(batch-insert,
1715    AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=yes@:>@]),
1716    [
1717        if test x$enableval = xno; then
1718           support_batch_insert=no
1719        fi
1720    ]
1721 )
1722
1723 if test x$support_batch_insert = xyes; then
1724    AC_DEFINE(USE_BATCH_FILE_INSERT, 1, [Set if DB batch insert code enabled])
1725 fi
1726
1727 dnl ------------------------------------------------
1728 dnl Bacula check for various SQL database engines
1729 dnl ------------------------------------------------
1730
1731 dnl
1732 dnl Set uncomment_dbi by default to '#' if DBI is enabled this will get reset
1733 dnl
1734 uncomment_dbi="#"
1735
1736 BA_CHECK_POSTGRESQL_DB
1737
1738 BA_CHECK_MYSQL_DB
1739
1740 BA_CHECK_SQLITE3_DB
1741
1742 #BA_CHECK_INGRES_DB
1743
1744 #BA_CHECK_DBI_DB
1745
1746 #BA_CHECK_DBI_DRIVER
1747
1748 dnl -------------------------------------------
1749 dnl If no batch insert backend are enable set
1750 dnl variable to None
1751 dnl -------------------------------------------
1752 if test -z "${batch_insert_db_backends}"; then
1753    batch_insert_db_backends="None"
1754 fi
1755
1756 dnl -------------------------------------------
1757 dnl Make sure at least one database backend is found
1758 dnl -------------------------------------------
1759 if test "x${db_backends}" = "x" ; then
1760    echo " "
1761    echo " "
1762    echo "You have not specified either --enable-client-only or one of the"
1763    echo "supported databases: MySQL, PostgreSQL, or SQLite3."
1764    echo "This is not permitted. Please reconfigure."
1765    echo " "
1766    echo "Aborting the configuration ..."
1767    echo " "
1768    echo " "
1769    exit 1
1770 fi
1771
1772 dnl -------------------------------------------
1773 dnl See how many catalog backends are configured.
1774 dnl -------------------------------------------
1775 case `echo $DB_BACKENDS | wc -w | sed -e 's/^ *//'` in
1776    1)
1777       DEFAULT_DB_TYPE="${DB_BACKENDS}"
1778       if test x$use_libtool = xno; then
1779          SHARED_CATALOG_TARGETS=""
1780       else
1781          SHARED_CATALOG_TARGETS="libbaccats-${DEFAULT_DB_TYPE}.la"
1782       fi
1783       ;;
1784    *)
1785       dnl ------------------------------------------------
1786       dnl Set the default backend to the first backend found
1787       dnl ------------------------------------------------
1788       DEFAULT_DB_TYPE=`echo ${DB_BACKENDS} | cut -d' ' -f1`
1789
1790       dnl ------------------------------------------------
1791       dnl For multiple backend we need libtool support.
1792       dnl ------------------------------------------------
1793       if test x$use_libtool = xno; then
1794          echo " "
1795          echo " "
1796          echo "You have specified two or more of the"
1797          echo "supported databases: MySQL, PostgreSQL, or SQLite3."
1798          echo "This is not permitted when not using libtool Please reconfigure."
1799          echo " "
1800          echo "Aborting the configuration ..."
1801          echo " "
1802          echo " "
1803          exit 1
1804       fi
1805
1806       SHARED_CATALOG_TARGETS=""
1807       for db_type in ${DB_BACKENDS}
1808       do
1809          if test -z "${SHARED_CATALOG_TARGETS}"; then
1810             SHARED_CATALOG_TARGETS="libbaccats-${db_type}.la"
1811          else
1812             SHARED_CATALOG_TARGETS="${SHARED_CATALOG_TARGETS} libbaccats-${db_type}.la"
1813          fi
1814       done
1815       ;;
1816 esac
1817
1818 dnl -------------------------------------------
1819 dnl Unset DB_LIBS when using libtool as we link the
1820 dnl shared library using the right database lib no need to
1821 dnl set DB_LIBS which is only used for non shared versions
1822 dnl of the backends.
1823 dnl -------------------------------------------
1824 if test x$use_libtool = xyes; then
1825    DB_LIBS=""
1826 fi
1827
1828 AC_SUBST(uncomment_dbi)
1829 AC_SUBST(DB_BACKENDS)
1830 AC_SUBST(DB_LIBS)
1831 AC_SUBST(DEFAULT_DB_TYPE)
1832 AC_SUBST(SHARED_CATALOG_TARGETS)
1833
1834 AC_DEFINE(PROTOTYPES)
1835
1836 dnl --------------------------------------------------------------------------
1837 dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
1838 dnl
1839 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
1840    if test -z "$CCOPTS"; then
1841       CCOPTS='-g -O2 -Wall'
1842    fi
1843    CFLAGS="$CCOPTS"
1844 fi
1845
1846 dnl A few others 
1847 AC_EXEEXT
1848
1849 dnl See if we can use 64 bit file addresses
1850 largefile_support="no"
1851 AC_BAC_LARGEFILE
1852
1853 AC_PATH_XTRA
1854
1855 dnl --------------------------------------------------------------------------
1856 dnl CHECKING FOR HEADER FILES
1857 dnl --------------------------------------------------------------------------
1858 AC_CHECK_HEADERS( \
1859    assert.h \
1860    fcntl.h \
1861    grp.h \
1862    pwd.h \
1863    libc.h \
1864    limits.h \
1865    stdarg.h \
1866    stdlib.h \
1867    stdint.h \
1868    string.h \
1869    strings.h \
1870    termios.h \
1871    termcap.h \
1872    term.h \
1873    unistd.h \
1874    sys/bitypes.h \
1875    sys/byteorder.h \
1876    sys/ioctl.h \
1877    sys/select.h \
1878    sys/socket.h \
1879    sys/sockio.h \
1880    sys/stat.h \
1881    sys/time.h \
1882    sys/types.h \
1883    arpa/nameser.h \
1884    mtio.h \
1885    sys/mtio.h \
1886    sys/tape.h \
1887    regex.h \
1888 )
1889 AC_HEADER_STDC
1890 AC_HEADER_MAJOR
1891 AC_HEADER_DIRENT
1892 AC_HEADER_STAT
1893 AC_HEADER_SYS_WAIT
1894 AC_HEADER_TIME
1895 AC_STRUCT_ST_BLKSIZE
1896 AC_STRUCT_ST_BLOCKS
1897 AC_STRUCT_TIMEZONE
1898
1899 dnl --------------------------------------------------------------------------
1900 dnl Check for utime.h structure 
1901 dnl --------------------------------------------------------------------------
1902 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
1903    [
1904        AC_TRY_COMPILE(
1905           [
1906               #include <sys/types.h>
1907               #include <utime.h>
1908           ], [
1909               struct utimbuf foo
1910           ], [
1911               ba_cv_header_utime_h=yes
1912           ], [
1913               ba_cv_header_utime_h=no
1914           ]
1915        )
1916    ]
1917 )
1918 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H, 1, [Set if utime.h exists])
1919
1920 dnl --------------------------------------------------------------------------
1921 dnl Check for socklen_t
1922 dnl --------------------------------------------------------------------------
1923 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1924    [
1925        AC_TRY_COMPILE(
1926           [
1927               #include <sys/types.h>
1928               #include <sys/socket.h>
1929           ], [
1930               socklen_t x
1931           ], [
1932              ba_cv_header_socklen_t=yes
1933           ], [
1934              ba_cv_header_socklen_t=no
1935           ]
1936        )
1937    ]
1938 )
1939 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T, 1, [Set if socklen_t exists])
1940
1941 dnl --------------------------------------------------------------------------
1942 dnl Check for ioctl request type
1943 dnl --------------------------------------------------------------------------
1944 AC_LANG(C++)
1945 AC_CACHE_CHECK(for ioctl_req_t, ba_cv_header_ioctl_req_t,
1946    [
1947        AC_TRY_COMPILE(
1948           [
1949               #include <unistd.h>
1950               #include <sys/types.h>
1951               #include <sys/ioctl.h>
1952           ], [
1953               int (*d_ioctl)(int fd, unsigned long int request, ...);
1954               d_ioctl = ::ioctl;
1955           ], [
1956              ba_cv_header_ioctl_req_t=yes
1957           ], [
1958              ba_cv_header_ioctl_req_t=no
1959           ]
1960        )
1961    ]
1962 )
1963 test $ba_cv_header_ioctl_req_t = yes && AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [Set if ioctl request is unsigned long int])
1964
1965 dnl Note: it is more correct to use AC_LANG(C++) but some of the older
1966 dnl   *BSD systems still use old style C prototypes, which are wrong with
1967 dnl   compiled with a C++ compiler. 
1968 AC_LANG(C)
1969
1970 dnl --------------------------------------------------------------------------
1971 dnl Check for typeof()
1972 dnl --------------------------------------------------------------------------
1973 AC_LANG_PUSH(C++)
1974 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
1975    [
1976        AC_TRY_RUN(
1977           [
1978               main(){char *a = 0; a = (typeof a)a;}
1979           ], [
1980               ba_cv_have_typeof=yes
1981           ], [
1982               ba_cv_have_typeof=no
1983           ], [
1984               ba_cv_have_typeof=no
1985           ]
1986        )
1987    ]
1988 )
1989 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
1990 AC_LANG_POP(C++)
1991
1992 AC_C_CONST
1993
1994 AC_C_BIGENDIAN([AC_DEFINE([HAVE_BIG_ENDIAN], [1], [Big Endian])], [AC_DEFINE([HAVE_LITTLE_ENDIAN], [1], [Little Endian])])
1995
1996 dnl --------------------------------------------------------------------------
1997 dnl CHECKING FOR FILESYSTEM TYPE
1998 dnl --------------------------------------------------------------------------
1999 AC_MSG_CHECKING(how to get filesystem type)
2000 fstype=no
2001 # The order of these tests is important.
2002 AC_TRY_CPP(
2003    [
2004        #include <sys/statvfs.h>
2005        #include <sys/fstyp.h>
2006    ],
2007    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
2008 )
2009 if test $fstype = no; then
2010    AC_TRY_CPP(
2011       [
2012           #include <sys/statfs.h>
2013           #include <sys/fstyp.h>
2014       ],
2015       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
2016    )
2017 fi
2018 if test $fstype = no; then
2019    AC_TRY_CPP(
2020       [
2021           #include <sys/statfs.h>
2022           #include <sys/vmount.h>
2023       ],
2024       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
2025    )
2026 fi
2027 if test $fstype = no; then  
2028    AC_TRY_CPP(
2029       [
2030           #include <mntent.h>
2031       ],
2032       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
2033    )
2034 fi
2035 if test $fstype = no; then  
2036    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
2037 fi
2038 if test $fstype = no; then  
2039    AC_TRY_CPP(
2040       [
2041           #include <sys/mount.h>
2042           #include <sys/fs_types.h>
2043       ],
2044       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
2045    )
2046 fi
2047 AC_MSG_RESULT($fstype)
2048
2049 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
2050
2051 AC_LANG_PUSH(C++)
2052 AC_CHECK_FUNCS(backtrace)
2053 AC_LANG_POP(C++)
2054
2055 dnl --------------------------------------------------------------------------
2056 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
2057 dnl --------------------------------------------------------------------------
2058 AC_TYPE_SIGNAL
2059 SIGNAL_CHECK
2060 AC_TYPE_MODE_T
2061 AC_TYPE_UID_T
2062 AC_TYPE_SIZE_T
2063 AC_TYPE_PID_T
2064 AC_TYPE_OFF_T
2065 AC_TYPE_INTPTR_T
2066 AC_TYPE_UINTPTR_T
2067 AC_CHECK_TYPE(ino_t, unsigned long)
2068 AC_CHECK_TYPE(dev_t, unsigned long)
2069 AC_CHECK_TYPE(daddr_t, long)
2070 AC_CHECK_TYPE(major_t, int)
2071 AC_CHECK_TYPE(minor_t, int)
2072 AC_CHECK_TYPE(ssize_t, int)
2073 AC_STRUCT_ST_BLOCKS
2074 AC_STRUCT_ST_RDEV
2075 AC_STRUCT_TM
2076 AC_C_CONST
2077
2078 AC_CHECK_SIZEOF(char, 1)
2079 AC_CHECK_SIZEOF(short int, 2)
2080 AC_CHECK_SIZEOF(int, 4)
2081 AC_CHECK_SIZEOF(long int, 4)
2082 AC_CHECK_SIZEOF(long long int, 8)
2083 AC_CHECK_SIZEOF(int *, 4)
2084
2085 dnl Check for sys/types.h types
2086 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
2087    [
2088        AC_TRY_COMPILE(
2089           [
2090               #include <sys/types.h>
2091           ], [
2092               u_int a; a = 1;
2093           ], [
2094               ac_cv_have_u_int="yes"
2095           ], [
2096               ac_cv_have_u_int="no"
2097           ]
2098        )
2099    ]
2100 )
2101 if test "x$ac_cv_have_u_int" = "xyes" ; then
2102    AC_DEFINE(HAVE_U_INT)
2103    have_u_int=1
2104 fi
2105
2106 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2107    [
2108        AC_TRY_COMPILE(
2109           [
2110               #include <sys/types.h>
2111           ], [
2112               intmax_t a; a = 1;
2113           ], [
2114               ac_cv_have_intmax_t="yes"
2115           ], [ 
2116               AC_TRY_COMPILE(
2117                  [
2118                      #include <stdint.h>
2119                  ], [
2120                      intmax_t a; a = 1;
2121                  ], [
2122                      ac_cv_have_intmax_t="yes"
2123                  ], [
2124                      ac_cv_have_intmax_t="no"
2125                  ]
2126               )
2127           ]
2128        )       
2129    ]
2130 )
2131 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2132    AC_DEFINE(HAVE_INTMAX_T)
2133    have_intmax_t=1
2134 fi
2135
2136 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2137    [
2138        AC_TRY_COMPILE(
2139           [
2140               #include <sys/types.h>
2141           ], [
2142               u_intmax_t a; a = 1;
2143           ], [
2144               ac_cv_have_u_intmax_t="yes"
2145           ], [ 
2146               AC_TRY_COMPILE(
2147                  [
2148                      #include <stdint.h>
2149                  ], [
2150                     u_intmax_t a; a = 1;
2151                  ], [
2152                     ac_cv_have_u_intmax_t="yes"
2153                  ], [
2154                     ac_cv_have_u_intmax_t="no"
2155                  ]
2156               )
2157           ]
2158        )
2159    ]
2160 )
2161 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2162    AC_DEFINE(HAVE_U_INTMAX_T)
2163    have_u_intmax_t=1
2164 fi
2165
2166 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2167    [
2168        AC_TRY_COMPILE(
2169           [
2170               #include <sys/types.h>
2171           ], [
2172               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2173           ], [
2174               ac_cv_have_intxx_t="yes"
2175           ], [
2176               ac_cv_have_intxx_t="no"
2177           ]
2178        )
2179    ]
2180 )
2181 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2182    AC_DEFINE(HAVE_INTXX_T)
2183    have_intxx_t=1
2184 fi
2185    
2186 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2187    [
2188        AC_TRY_COMPILE(
2189           [
2190               #include <sys/types.h>
2191           ], [
2192               int64_t a; a = 1;
2193           ], [
2194               ac_cv_have_int64_t="yes"
2195           ], [
2196               ac_cv_have_int64_t="no"
2197           ]
2198        )
2199    ]
2200 )
2201 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2202    AC_DEFINE(HAVE_INT64_T)
2203    have_int64_t=1
2204 fi
2205    
2206 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2207    [
2208        AC_TRY_COMPILE(
2209           [
2210               #include <sys/types.h>
2211           ], [
2212               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2213           ], [
2214              ac_cv_have_u_intxx_t="yes"
2215           ], [
2216              ac_cv_have_u_intxx_t="no"
2217           ]
2218        )
2219    ]
2220 )
2221 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2222    AC_DEFINE(HAVE_U_INTXX_T)
2223    have_u_intxx_t=1
2224 fi
2225
2226 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2227    [
2228        AC_TRY_COMPILE(
2229           [
2230               #include <sys/types.h>
2231           ], [
2232               u_int64_t a; a = 1;
2233           ], [
2234              ac_cv_have_u_int64_t="yes"
2235           ], [
2236              ac_cv_have_u_int64_t="no"
2237           ]
2238        )
2239    ]
2240 )
2241 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2242    AC_DEFINE(HAVE_U_INT64_T)
2243    have_u_int64_t=1
2244 fi
2245
2246 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2247     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2248 then
2249    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2250    AC_TRY_COMPILE(
2251       [
2252           #include <sys/bitypes.h>
2253       ], [
2254           int8_t a; int16_t b; int32_t c;
2255           u_int8_t e; u_int16_t f; u_int32_t g;
2256           a = b = c = e = f = g = 1;
2257       ], [
2258           AC_DEFINE(HAVE_U_INTXX_T)
2259           AC_DEFINE(HAVE_INTXX_T)
2260           AC_DEFINE(HAVE_SYS_BITYPES_H)
2261           AC_MSG_RESULT(yes)
2262       ], [
2263           AC_MSG_RESULT(no)
2264       ]
2265    ) 
2266 fi
2267
2268 if test -z "$have_u_intxx_t" ; then
2269    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2270       [
2271           AC_TRY_COMPILE(
2272              [
2273                  #include <sys/types.h>
2274              ], [
2275                  uint8_t a; uint16_t b; 
2276                  uint32_t c; a = b = c = 1;
2277              ], [
2278                 ac_cv_have_uintxx_t="yes"
2279              ], [
2280                 ac_cv_have_uintxx_t="no"
2281              ]
2282           )
2283       ]
2284    )
2285    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2286       AC_DEFINE(HAVE_UINTXX_T)
2287    fi
2288 fi
2289
2290 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2291     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2292 then
2293    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2294    AC_TRY_COMPILE(
2295       [
2296           #include <sys/bitypes.h>
2297       ], [
2298           int64_t a; u_int64_t b; 
2299           a = b = 1;
2300       ], [
2301           AC_DEFINE(HAVE_U_INT64_T)
2302           AC_DEFINE(HAVE_INT64_T)
2303           AC_MSG_RESULT(yes)
2304       ], [
2305           AC_MSG_RESULT(no)
2306       ]
2307    ) 
2308 fi
2309
2310 if (test -z "$have_uintxx_t" && \
2311     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2312 then
2313    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2314    AC_TRY_COMPILE(
2315       [
2316           #include <sys/bitypes.h>
2317       ], [
2318           uint8_t a; uint16_t b; 
2319           uint32_t c; a = b = c = 1;
2320       ], [
2321           AC_DEFINE(HAVE_UINTXX_T)
2322           AC_MSG_RESULT(yes)
2323       ], [
2324           AC_MSG_RESULT(no)
2325       ]
2326    ) 
2327 fi
2328
2329 dnl --------------------------------------------------------------------------
2330 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2331 dnl --------------------------------------------------------------------------
2332 AC_CHECK_FUNCS( \
2333    fork \
2334    getcwd \
2335    gethostname \
2336    getpid \
2337    gettimeofday \
2338    setpgid \
2339    setpgrp \
2340    setsid \
2341    signal \
2342    strerror \
2343    strncmp \
2344    strncpy \
2345    vfprintf \
2346    ,,
2347    [echo 'configure: cannot find needed function.'; exit 1]
2348 )
2349
2350 AC_CHECK_FUNC(closefrom, [AC_DEFINE(HAVE_CLOSEFROM, 1, [Define to 1 if you have the 'closefrom' function.])])
2351 AC_CHECK_FUNCS(getpagesize, [AC_DEFINE(HAVE_GETPAGESIZE, 1, [Set if have getpagesize])])
2352 AC_CHECK_FUNCS(malloc_trim, [AC_DEFINE(HAVE_MALLOC_TRIM, 1, [Set if have malloc_trim])])
2353
2354 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2355 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2356 AC_CHECK_FUNCS(posix_fadvise)
2357 AC_CHECK_FUNCS(fdatasync)
2358
2359 AC_CHECK_FUNCS(chflags) 
2360
2361 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2362
2363 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2364    [
2365        AC_TRY_LINK(
2366           [
2367               #include <stdarg.h>
2368               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2369               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2370           ], [
2371               call_use_va_copy(1,2,3)
2372           ], [
2373               ba_cv_va_copy=yes,
2374           ], [
2375               ba_cv_va_copy=no
2376           ]
2377        )
2378    ]
2379 )
2380 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2381
2382 dnl --------------------------------------------------------------------------
2383 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2384 dnl --------------------------------------------------------------------------
2385 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2386
2387 # If resolver functions are not in libc check for -lnsl or -lresolv.
2388 AC_CHECK_FUNC(gethostbyname_r,
2389     AC_MSG_RESULT(using libc's resolver),
2390     AC_CHECK_LIB(nsl,gethostbyname_r)
2391     AC_CHECK_LIB(resolv,gethostbyname_r))
2392
2393 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2394 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2395 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2396
2397 dnl ----------------------------
2398 dnl check sa_len of sockaddr
2399 dnl ----------------------------
2400 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2401    [
2402        AC_TRY_COMPILE(
2403           [
2404               #include <sys/socket.h>
2405           ], [
2406               struct sockaddr s; s.sa_len;
2407           ], [
2408              ac_cv_struct_sockaddr_sa_len=yes
2409           ], [ac_cv_struct_sockaddr_sa_len=no
2410           ]
2411        )
2412    ]
2413 )
2414
2415 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2416   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2417 fi
2418
2419 dnl
2420 dnl check for working getaddrinfo()
2421 dnl
2422 dnl Note that if the system doesn't have gai_strerror(), we
2423 dnl can't use getaddrinfo() because we can't get strings
2424 dnl describing the error codes.
2425 dnl
2426 AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,
2427    [
2428        AC_TRY_RUN(
2429           [
2430               #include <netdb.h>
2431               #include <string.h>
2432               #include <sys/types.h>
2433               #include <sys/socket.h>
2434
2435               void main(void) {
2436                   struct addrinfo hints, *ai;
2437                   int error;
2438
2439                   memset(&hints, 0, sizeof(hints));
2440                   hints.ai_family = AF_UNSPEC;
2441                   hints.ai_socktype = SOCK_STREAM;
2442                   error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
2443                   if (error) {
2444                       exit(1);
2445                   }
2446                   if (ai->ai_addr->sa_family != AF_INET) {
2447                       exit(1);
2448                   }
2449                   exit(0);
2450               }
2451           ],[
2452               ac_cv_working_getaddrinfo="yes"
2453           ],[
2454               ac_cv_working_getaddrinfo="no"
2455           ],[
2456               ac_cv_working_getaddrinfo="yes"
2457           ]
2458        )
2459    ]
2460 )
2461 AC_CHECK_FUNC(gai_strerror, [AC_DEFINE(HAVE_GAI_STRERROR, 1, [Define to 1 if you have the 'gai_strerror' function.])])
2462
2463 if test "$ac_cv_working_getaddrinfo" = "yes"; then
2464   if test "$ac_cv_func_gai_strerror" != "yes"; then
2465     ac_cv_working_getaddrinfo="no"
2466   else
2467     AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if getaddrinfo exists and works])
2468   fi
2469 fi
2470
2471 AC_FUNC_STRFTIME
2472 AC_FUNC_VPRINTF
2473 AC_FUNC_ALLOCA
2474 AC_FUNC_GETMNTENT
2475 AC_CHECK_FUNCS(getmntinfo, [AC_DEFINE(HAVE_GETMNTINFO)])
2476 AC_FUNC_CLOSEDIR_VOID
2477 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2478 # AC_FUNC_FNMATCH    dnl use local version
2479
2480 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2481
2482 AC_CHECK_LIB(sun, getpwnam)
2483
2484 AC_CHECK_HEADERS(zlib.h)
2485 AC_CHECK_LIB(z, deflate, [ZLIBS="-lz"])
2486 have_zlib=no
2487 if test x$ZLIBS = x-lz; then
2488    AC_DEFINE(HAVE_LIBZ)
2489    have_zlib=yes
2490 fi
2491 AC_SUBST(ZLIBS)
2492
2493 dnl
2494 dnl Check for lzo
2495 dnl
2496 have_lzo=no
2497 AC_CHECK_HEADER(lzo/lzoconf.h, 
2498 [
2499    AC_CHECK_HEADER(lzo/lzo1x.h,
2500    [
2501       AC_CHECK_LIB(lzo2, lzo1x_1_compress,
2502       [
2503          LZOLIBS="-llzo2"
2504          AC_DEFINE(HAVE_LZO,1,[Define to 1 if you have LZO compression])
2505          have_lzo=yes
2506       ])
2507    ])
2508 ])
2509 AC_SUBST(LZOLIBS)
2510
2511 dnl
2512 dnl Check for ACL support and libraries
2513 dnl
2514 support_acl=auto
2515 AC_ARG_ENABLE(acl,
2516    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2517    [
2518        if test x$enableval = xyes; then
2519           support_acl=yes
2520        elif test x$enableval = xno; then
2521           support_acl=no
2522        fi
2523    ]
2524 )
2525
2526 have_acl=no
2527 have_extended_acl=no
2528 if test x$support_acl = xyes -o x$support_acl = xauto; then
2529    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2530
2531    dnl
2532    dnl First check for acl_get_file in libc
2533    dnl
2534    AC_CHECK_FUNC(acl_get_file,
2535       [
2536           have_acl=yes
2537       ]
2538    )
2539
2540    dnl
2541    dnl Check for acl_get_file in libacl (Linux)
2542    dnl
2543    if test $have_acl = no; then
2544       AC_CHECK_LIB(acl, acl_get_file,
2545          [
2546              have_acl=yes
2547              FDLIBS="-lacl $FDLIBS"
2548          ]
2549       )
2550    fi
2551
2552    dnl
2553    dnl Check for acl_get_file in libpacl (OSF1)
2554    dnl and if ACL_TYPE_DEFAULT_DIR is defined.
2555    dnl
2556    if test $have_acl = no -a \
2557            x${HAVE_OSF1_OS_TRUE} = x; then
2558       AC_CHECK_LIB(pacl, acl_get_file,
2559          [
2560              have_acl=yes
2561              FDLIBS="-lpacl $FDLIBS"
2562          ]
2563       )
2564
2565       AC_MSG_CHECKING(for ACL_TYPE_DEFAULT_DIR in acl.h include file)
2566       grep ACL_TYPE_DEFAULT_DIR /usr/include/sys/acl.h > /dev/null 2>&1
2567       if test $? = 0; then
2568          AC_DEFINE(HAVE_ACL_TYPE_DEFAULT_DIR,1,[Defines if your system have the ACL_TYPE_DEFAULT_DIR acl type])
2569          AC_MSG_RESULT(yes)
2570       else
2571          AC_MSG_RESULT(no)
2572       fi
2573    fi
2574
2575    dnl
2576    dnl On OSX check for availability of ACL_TYPE_EXTENDED
2577    dnl
2578    if test $have_acl = yes -a \
2579            x${HAVE_DARWIN_OS_TRUE} = x; then
2580       AC_MSG_CHECKING(for ACL_TYPE_EXTENDED in acl.h include file)
2581       grep ACL_TYPE_EXTENDED /usr/include/sys/acl.h > /dev/null 2>&1
2582       if test $? = 0; then
2583          AC_DEFINE(HAVE_ACL_TYPE_EXTENDED,1,[Defines if your system have the ACL_TYPE_EXTENDED acl type])
2584          AC_MSG_RESULT(yes)
2585       else
2586          AC_MSG_RESULT(no)
2587       fi
2588    fi
2589
2590    dnl
2591    dnl On FreeBSD check for availability of ACL_TYPE_NFS4
2592    dnl
2593    if test $have_acl = yes -a \
2594            x${HAVE_FREEBSD_OS_TRUE} = x; then
2595       AC_MSG_CHECKING(for ACL_TYPE_NFS4 in acl.h include file)
2596       grep ACL_TYPE_NFS4 /usr/include/sys/acl.h > /dev/null 2>&1
2597       if test $? = 0; then
2598          AC_DEFINE(HAVE_ACL_TYPE_NFS4,1,[Defines if your system have the ACL_TYPE_NFS4 acl type])
2599          AC_MSG_RESULT(yes)
2600       else
2601          AC_MSG_RESULT(no)
2602       fi
2603    fi
2604
2605    dnl
2606    dnl Check for acltotext and acl_totext (Solaris)
2607    dnl
2608    if test $have_acl = no -a \
2609            x${HAVE_SUN_OS_TRUE} = x; then
2610       AC_CHECK_LIB(sec, acltotext,
2611          [
2612              have_acl=yes
2613              FDLIBS="-lsec $FDLIBS"
2614
2615              AC_CHECK_LIB(sec, acl_totext,
2616                 [
2617                     have_extended_acl=yes
2618                 ]
2619              )
2620          ]
2621       )
2622    fi
2623
2624    dnl
2625    dnl Check for acl_get and aclx_get (AIX)
2626    dnl
2627    if test $have_acl = no -a \
2628            x${HAVE_AIX_OS_TRUE} = x; then
2629       AC_CHECK_FUNC(acl_get,
2630          [
2631              have_acl=yes
2632
2633              AC_CHECK_FUNC(aclx_get,
2634                 [
2635                     have_extended_acl=yes
2636                 ]
2637              )
2638          ]
2639       )
2640    fi
2641
2642    if test x$support_acl = xyes -a $have_acl != yes; then
2643       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2644   please either load the acl libraries or rerun configure without --enable-acl])
2645    else
2646       if test $have_acl = yes; then
2647          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2648       fi
2649
2650       if test $have_extended_acl = yes; then
2651          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2652       fi
2653    fi
2654 fi
2655
2656 dnl
2657 dnl Check for XATTR support
2658 dnl
2659 support_xattr=auto
2660 AC_ARG_ENABLE(xattr,
2661    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2662    [
2663        if test x$enableval = xyes; then
2664           support_xattr=yes
2665        elif test x$enableval = xno; then
2666           support_xattr=no
2667        fi
2668    ]
2669 )
2670
2671 have_xattr=no
2672 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2673    dnl
2674    dnl First check for *BSD support
2675    dnl When running on a BSD variant
2676    dnl
2677    if test x${HAVE_FREEBSD_OS_TRUE} = x -o \
2678            x${HAVE_NETBSD_OS_TRUE} = x -o \
2679            x${HAVE_OPENBSD_OS_TRUE} = x; then
2680       AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2681       AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2682       AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2683          [
2684              have_xattr=yes
2685              AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2686              AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2687              AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2688          ]
2689       )
2690    
2691       if test $have_xattr = no; then
2692          AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2693             [
2694                 have_xattr=yes
2695                 AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2696                 AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2697                 AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2698             ]
2699          )
2700       fi
2701    
2702       if test $have_xattr = yes; then
2703          have_extattr_string_in_libc=no
2704          AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2705             [
2706                 have_extattr_string_in_libc=yes
2707                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2708                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2709             ]
2710          )
2711
2712          dnl
2713          dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2714          dnl
2715          if test $have_extattr_string_in_libc = no; then
2716             AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2717                [
2718                    AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2719                    AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2720                    FDLIBS="-lutil $FDLIBS"
2721                ]
2722             )
2723          fi
2724       fi
2725    fi
2726
2727    dnl
2728    dnl If we failed to find *BSD support try the AIX implementation of extented attributes (EA)
2729    dnl When running on AIX
2730    dnl
2731    if test $have_xattr = no -a \
2732            x${HAVE_AIX_OS_TRUE} = x; then
2733       AC_CHECK_HEADER(sys/ea.h, [ AC_DEFINE(HAVE_SYS_EA_H,1,[Defines if your system have the sys/ea.h header file])] , )
2734       AC_CHECK_FUNCS(llistea lgetea lsetea,
2735          [
2736              have_xattr=yes
2737              AC_DEFINE([HAVE_LLISTEA],1,[Define to 1 if you have the 'llistea' function.])
2738              AC_DEFINE([HAVE_LGETEA],1,[Define to 1 if you have the 'lgetea' function.])
2739              AC_DEFINE([HAVE_LSETEA],1,[Define to 1 if you have the 'lsetea' function.])
2740          ]
2741       )
2742
2743       if test $have_xattr = no; then
2744          AC_CHECK_FUNCS(listea getea setea,
2745             [
2746                 have_xattr=yes
2747                 AC_DEFINE([HAVE_LISTEA],1,[Define to 1 if you have the 'listea' function.])
2748                 AC_DEFINE([HAVE_GETEA],1,[Define to 1 if you have the 'getea' function.])
2749                 AC_DEFINE([HAVE_SETEA],1,[Define to 1 if you have the 'setea' function.])
2750             ]
2751          )
2752       fi
2753    fi
2754
2755    dnl
2756    dnl If we failed to find AIX support try the TRU64 implementation of extented attributes
2757    dnl when running on a TRU64 OS.
2758    dnl
2759    if test $have_xattr = no -a \
2760            x${HAVE_OSF1_OS_TRUE} = x; then
2761       AC_CHECK_HEADER(sys/proplist.h, [ AC_DEFINE(HAVE_SYS_PROPLIST_H,1,[Defines if your system have the sys/proplist.h header file])] , )
2762       AC_CHECK_FUNCS(getproplist get_proplist_entry sizeof_proplist_entry add_proplist_entry setproplist,
2763          [
2764              have_xattr=yes
2765              AC_DEFINE([HAVE_GETPROPLIST],1,[Define to 1 if you have the 'getproplist' function.])
2766              AC_DEFINE([HAVE_GET_PROPLIST_ENTRY],1,[Define to 1 if you have the 'get_proplist_entry' function.])
2767              AC_DEFINE([HAVE_SIZEOF_PROPLIST_ENTRY],1,[Define to 1 if you have the 'sizeof_proplist_entry' function.])
2768              AC_DEFINE([HAVE_ADD_PROPLIST_ENTRY],1,[Define to 1 if you have the 'add_proplist_entry' function.])
2769              AC_DEFINE([HAVE_SETPROPLIST],1,[Define to 1 if you have the 'setproplist' function.])
2770          ]
2771       )
2772    fi
2773
2774    dnl
2775    dnl If we failed to find TRU64 support try the SOLARIS implementation of extented and extensible attributes
2776    dnl when running on a Solaris.
2777    dnl
2778    if test $have_xattr = no -a \
2779            x${HAVE_SUN_OS_TRUE} = x; then
2780       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2781       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2782       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2783
2784       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2785          [
2786              have_xattr=yes
2787              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2788              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2789              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2790              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2791              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2792          ]
2793       )
2794
2795       if test $have_xattr = yes; then
2796          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2797             [
2798                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2799                 FDLIBS="-lnvpair $FDLIBS"
2800             ]
2801          )
2802       fi
2803    fi
2804
2805    dnl
2806    dnl If we failed to find Solaris support try the generic xattr support code
2807    dnl
2808    if test $have_xattr = no; then
2809       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2810       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2811          [
2812              have_xattr=yes
2813              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2814              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2815              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2816          ]
2817       )
2818
2819       if test $have_xattr = no; then
2820          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2821             [
2822                 have_xattr=yes
2823                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2824                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2825                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2826             ]
2827          )
2828       fi
2829    fi
2830
2831    if test x$support_xattr = xyes -a $have_xattr != yes; then
2832       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2833   please either load the xattr libraries or rerun configure without --enable-xattr])
2834    else
2835       if test $have_xattr = yes; then
2836          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2837       fi
2838    fi
2839 fi
2840
2841 dnl
2842 dnl Check for pthread libraries
2843 dnl
2844 PTHREAD_LIB=""
2845 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2846    [
2847        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2848           [
2849               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2850                  [
2851                      AC_CHECK_FUNC(pthread_create)
2852                  ]
2853               )
2854           ]
2855        )
2856    ]
2857 )
2858
2859 dnl
2860 dnl Check for headers, functions and libraries required to support
2861 dnl keeping readall capabilities
2862 dnl
2863 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2864 AC_CHECK_FUNCS(prctl setreuid)
2865 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2866 if test x$CAP_LIBS = x-lcap; then
2867    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2868 fi
2869 AC_SUBST(CAP_LIBS)
2870
2871 AC_SUBST(FDLIBS)
2872 AC_DEFINE(FDLIBS)
2873
2874 CFLAGS=${CFLAGS--O}
2875
2876 if test x$have_gcc = xyes ; then
2877    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2878    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2879 fi
2880 LDFLAGS=${LDFLAGS--O}
2881 CPPFLAGS="$CPPFLAGS"
2882 CFLAGS="$CFLAGS"
2883 AC_SUBST(DEBUG)
2884 AC_SUBST(DINCLUDE)
2885 AC_SUBST(CFLAGS)
2886 AC_SUBST(CPPFLAGS)
2887 AC_SUBST(LDFLAGS)
2888 AC_SUBST(X_CFLAGS)
2889 AC_SUBST(DEFS)
2890 AC_SUBST(LIBS)
2891 AC_SUBST(DLIB)
2892 AC_SUBST(X_LIBS)
2893 AC_SUBST(X_EXTRA_LIBS)
2894 AC_SUBST(WCFLAGS)
2895 AC_SUBST(WLDFLAGS)
2896 AC_SUBST(WRAPLIBS)
2897
2898 dnl extra configurable objects
2899 OBJLIST=
2900 AC_SUBST(OBJLIST)
2901
2902 lld="lld"
2903 llu="llu"
2904
2905 WCFLAGS=
2906 WLDFLAGS=
2907
2908 dnl
2909 dnl Finally we set appropriate distribution specific
2910 dnl  variables and defaults
2911 dnl
2912 dnl PFILES are platform specific files
2913 PFILES="platforms/Makefile"
2914 PSCMD="ps -e"
2915 WIN32=
2916 MACOSX=
2917 COMPRESS_MANPAGES=yes
2918
2919 case "$DISTNAME" in
2920 aix)
2921    DISTVER=`uname -r`
2922    PSCMD="ps -e -o pid,comm"
2923    PFILES="${PFILES} \
2924       platforms/aix/Makefile"
2925    TAPEDRIVE="/dev/rmt0.1" 
2926   ;;     
2927 alpha)
2928    DISTVER=`uname -r`
2929    PTHREAD_LIB="-lpthread -lexc"
2930    if test "${CC}" = "gcc" ; then
2931       lld="lld"
2932       llu="llu"
2933    else
2934       lld="ld"
2935       llu="lu"
2936    fi
2937    TAPEDRIVE="/dev/nrmt0"
2938   ;;
2939 bsdi)
2940    DISTVER=`uname -a |awk '{print $3}'`
2941    TAPEDRIVE="/dev/nrmt0"
2942    PTHREAD_LIB="-pthread"
2943    CFLAGS="${CFLAGS} -pthread"
2944    PSCMD="ps -ax -o pid,command"
2945    lld="qd"
2946    llu="qu"
2947    PFILES="${PFILES} \
2948        platforms/bsdi/Makefile \
2949        platforms/bsdi/bacula-fd \
2950        platforms/bsdi/bacula-sd \
2951        platforms/bsdi/bacula-dir"
2952    largefile_support="yes"
2953   ;;
2954 cygwin)
2955    DISTVER=`uname -a |awk '{print $3}'`
2956    TAPEDRIVE="/dev/nrst0"
2957    WIN32=win32
2958    WCFLAGS="-mwindows"
2959    WLDFLAGS="-mwindows"
2960   ;;
2961 darwin)
2962    DISTVER=`uname -r`
2963    TAPEDRIVE="/dev/nst0"
2964    PSCMD="ps -e -o pid,command"
2965    MACOSX=macosx
2966    PFILES="${PFILES} \
2967       platforms/darwin/Makefile"
2968   ;;
2969 osx)
2970    DISTVER=`uname -r`
2971    TAPEDRIVE="/dev/nst0"
2972    PSCMD="ps -e -o pid,command"
2973    MACOSX=macosx
2974    PFILES="${PFILES} \
2975       platforms/osx/Makefile"
2976   ;;
2977 debian)
2978    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2979       DISTNAME="ubuntu"
2980    fi
2981    DISTVER=`cat /etc/debian_version`
2982    if test -f /etc/lsb-release ; then
2983       . /etc/lsb-release
2984       if test "x$DISTRIB_ID" != "x" ; then
2985          DISTNAME=$DISTRIB_ID
2986       fi
2987       if test "x$DISTRIB_RELEASE" != "x" ; then
2988          DISTVER=$DISTRIB_RELEASE
2989       fi
2990    fi
2991    if test "$DISTNAME" = "Ubuntu" ; then
2992       DISTNAME="ubuntu"
2993    fi
2994    TAPEDRIVE="/dev/nst0"
2995    PSCMD="ps -e -o pid,command"
2996    if test "$DISTNAME" = "ubuntu" ; then
2997       PFILES="${PFILES} \
2998          platforms/ubuntu/Makefile \
2999          platforms/ubuntu/bacula-fd \
3000          platforms/ubuntu/bacula-sd \
3001          platforms/ubuntu/bacula-dir"
3002    else 
3003       PFILES="${PFILES} \
3004          platforms/debian/Makefile \
3005          platforms/debian/bacula-fd \
3006          platforms/debian/bacula-sd \
3007          platforms/debian/bacula-dir"
3008    fi
3009   ;;
3010 freebsd)
3011    DISTVER=`uname -a |awk '{print $3}'`
3012    VER=`echo $DISTVER | cut -c 1`
3013    if test x$VER = x4 ; then
3014       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
3015       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
3016    fi
3017    lld="qd"
3018    llu="qu"
3019    TAPEDRIVE="/dev/nrsa0"
3020    PSCMD="ps -ax -o pid,command"
3021    PFILES="${PFILES} \
3022        platforms/freebsd/Makefile \
3023        platforms/freebsd/bacula-fd \
3024        platforms/freebsd/bacula-sd \
3025        platforms/freebsd/bacula-dir"
3026    largefile_support="yes"
3027   ;;
3028 hpux)
3029    PSCMD="UNIX95=1; ps -e -o pid,comm"
3030    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
3031    DISTVER=`uname -r`
3032    TAPEDRIVE="/dev/rmt/0hnb"
3033    PTHREAD_LIB="-lpthread"
3034    AC_DEFINE([_INCLUDE_LONGLONG])
3035   ;;
3036 irix)
3037    DISTVER=`uname -r`
3038    TAPEDRIVE="/dev/rmt/0cbn"
3039    PSCMD="ps -e -o pid,comm"
3040    PFILES="${PFILES} \
3041        platforms/irix/Makefile \
3042        platforms/irix/bacula-fd \
3043        platforms/irix/bacula-sd \
3044        platforms/irix/bacula-dir"
3045   ;;
3046 netbsd)
3047    DISTVER=`uname -a |awk '{print $3}'`
3048    lld="qd"
3049    llu="qu"
3050    TAPEDRIVE="/dev/nrst0"
3051    PSCMD="ps -ax -o pid,command"
3052    PTHREAD_LIB="-pthread"
3053    CFLAGS="${CFLAGS} -pthread"
3054   ;;
3055 openbsd)
3056    DISTVER=`uname -a |awk '{print $3}'`
3057    lld="qd"
3058    llu="qu"
3059    TAPEDRIVE="/dev/nrst0"
3060    PSCMD="ps -ax -o pid,command"
3061    PTHREAD_LIB="-pthread"
3062    CFLAGS="${CFLAGS} -pthread"
3063    PFILES="${PFILES} \
3064        platforms/openbsd/Makefile \
3065        platforms/openbsd/bacula-fd \
3066        platforms/openbsd/bacula-sd \
3067        platforms/openbsd/bacula-dir"
3068   ;;
3069 redhat)
3070    if test -f /etc/whitebox-release ; then
3071       f=/etc/whitebox-release
3072    else
3073       f=/etc/redhat-release
3074    fi
3075    if test `cat $f | grep release |\
3076          cut -f 3 -d ' '`x = "Enterprise"x ; then
3077       DISTVER="Enterprise "`cat $f | grep release |\
3078           cut -f 6 -d ' '`
3079    else
3080        DISTVER=`cat /etc/redhat-release | grep release |\
3081            cut -f 5 -d ' '`
3082    fi
3083    TAPEDRIVE="/dev/nst0"
3084    PSCMD="ps -e -o pid,command"
3085    PFILES="${PFILES} \
3086        platforms/redhat/Makefile \
3087        platforms/redhat/bacula-fd \
3088        platforms/redhat/bacula-sd \
3089        platforms/redhat/bacula-dir
3090        "
3091   ;;
3092 mandrake)
3093    DISTVER=`cat /etc/mandrake-release | grep release |\
3094       cut -f 5 -d ' '`
3095    TAPEDRIVE="/dev/nst0"
3096    PSCMD="ps -e -o pid,command"
3097    PFILES="${PFILES} \
3098        platforms/mandrake/Makefile \
3099        platforms/mandrake/bacula-fd \
3100        platforms/mandrake/bacula-sd \
3101        platforms/mandrake/bacula-dir \
3102        "
3103   ;;
3104 gentoo)
3105    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
3106    TAPEDRIVE="/dev/nst0"
3107    PSCMD="ps -e -o pid,command"
3108    PFILES="${PFILES} \
3109        platforms/gentoo/Makefile \
3110     platforms/gentoo/bacula-init \
3111        platforms/gentoo/bacula-fd \
3112        platforms/gentoo/bacula-sd \
3113        platforms/gentoo/bacula-dir"
3114   ;;
3115 slackware)
3116    DISTVER=`cat /etc/slackware-version`
3117    TAPEDRIVE="/dev/nst0"
3118    PSCMD="ps -e -o pid,command"
3119    PFILES="${PFILES} \
3120        platforms/slackware/Makefile \
3121        platforms/slackware/rc.bacula-fd \
3122        platforms/slackware/rc.bacula-sd \
3123        platforms/slackware/rc.bacula-dir\
3124        platforms/slackware/functions.bacula"
3125   ;;
3126 solaris)
3127    DISTVER=`uname -r`
3128    TAPEDRIVE="/dev/rmt/0cbn"
3129    PSCMD="ps -e -o pid,comm"
3130    PFILES="${PFILES} \
3131        platforms/solaris/Makefile \
3132        platforms/solaris/bacula-fd \
3133        platforms/solaris/bacula-sd \
3134        platforms/solaris/bacula-dir"
3135    COMPRESS_MANPAGES=
3136    case ${DISTVER} in
3137    5.5|5.6)
3138       AC_DEFINE(HAVE_OLD_SOCKOPT)
3139       AC_DEFINE(USE_THR_SETCONCURRENCY)
3140       ;;
3141    5.7|5.8)
3142       AC_DEFINE(USE_THR_SETCONCURRENCY)
3143       ;;
3144    *)
3145       ;;
3146    esac
3147    LIBS="$LIBS -lresolv -lrt"
3148   ;;
3149 suse)
3150    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3151        cut -f 3 -d ' '`
3152    TAPEDRIVE="/dev/nst0"
3153    PSCMD="ps -e -o pid,command"
3154    PFILES="${PFILES} \
3155        platforms/suse/Makefile \
3156        platforms/suse/bacula-fd \
3157        platforms/suse/bacula-sd \
3158        platforms/suse/bacula-dir \
3159        platforms/suse/bacula"
3160   ;;
3161 suse5)
3162    DISTNAME=suse
3163    DISTVER=5.x
3164    TAPEDRIVE="/dev/nst0"
3165    PSCMD="ps -e -o pid,command"
3166    PFILES="${PFILES} \
3167        platforms/suse/Makefile \
3168        platforms/suse/bacula-fd \
3169        platforms/suse/bacula-sd \
3170        platforms/suse/bacula-dir"
3171   ;;
3172 unknown)
3173    DISTVER=unknown
3174    TAPEDRIVE="/dev/nst0"
3175   ;;
3176 *)
3177   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3178   ;;
3179 esac  
3180
3181 dnl -------------------------------------------
3182 dnl systemd (default off)
3183 dnl -------------------------------------------
3184 AC_MSG_CHECKING(for systemd support)
3185 AC_ARG_WITH(systemd,
3186    AC_HELP_STRING([--with-systemd@<:@=UNITDIR@:>@], [Include systemd support. UNITDIR is where systemd system .service files are located, default is to ask systemctl.]),
3187    [
3188        if test "$withval" != "no"; then
3189            if test "$withval" = "yes"; then
3190                SYSTEMD_UNITDIR="`systemctl show | grep UnitPath | cut -d " " -f2`"
3191            else
3192                SYSTEMD_UNITDIR="${withval}"
3193            fi
3194
3195            PFILES="${PFILES} \
3196                    platforms/systemd/Makefile \
3197                    platforms/systemd/bacula-dir.service \
3198                    platforms/systemd/bacula-fd.service \
3199                    platforms/systemd/bacula-sd.service"
3200            AC_DEFINE(HAVE_SYSTEMD, 1, [Define to 1 if systemd support should be enabled])
3201            AC_MSG_RESULT(yes)
3202            support_systemd="yes"
3203        else
3204            AC_MSG_RESULT(no)
3205            support_systemd="no"
3206        fi
3207    ],[
3208        support_systemd="no"
3209        AC_MSG_RESULT(no)
3210    ]
3211 )
3212 AC_SUBST(SYSTEMD_UNITDIR)
3213
3214 AC_SUBST(hostname)
3215
3216 LIBS="$PTHREAD_LIB $LIBS"
3217
3218 AC_DEFINE_UNQUOTED(lld, "$lld")
3219 AC_DEFINE_UNQUOTED(llu, "$llu")
3220 AC_SUBST(TAPEDRIVE)
3221 AC_SUBST(PSCMD)
3222 AC_SUBST(WIN32)
3223 AC_SUBST(MACOSX)
3224 AC_SUBST(DISTNAME)
3225 AC_SUBST(DISTVER)
3226 AC_SUBST(COMPRESS_MANPAGES)
3227
3228 dnl common parts of the Makefile
3229 MCOMMON=./autoconf/Make.common
3230 AC_SUBST_FILE(MCOMMON)
3231
3232 dnl Insanity check
3233 if test "x${subsysdir}" = "x${sbindir}" ; then
3234    echo " "
3235    echo " "
3236    echo "You have set both --sbindir and --with-subsys-dir"
3237    echo "  equal to: ${subsysdir} "
3238    echo "This is not permitted. Please reconfigure."
3239    echo " "
3240    echo "Aborting configuration ..."
3241    echo " "
3242    echo " "
3243    exit 1
3244 fi 
3245
3246 AC_OUTPUT([autoconf/Make.common \
3247            Makefile \
3248            manpages/Makefile \
3249            scripts/btraceback \
3250            scripts/bconsole \
3251            scripts/bacula \
3252            scripts/bacula-ctl-dir \
3253            scripts/bacula-ctl-fd \
3254            scripts/bacula-ctl-sd \
3255            scripts/devel_bacula \
3256            scripts/Makefile \
3257            scripts/logrotate \
3258            scripts/bacula.desktop.gnome1 \
3259            scripts/bacula.desktop.gnome2 \
3260            scripts/bacula.desktop.gnome1.consolehelper \
3261            scripts/bacula.desktop.gnome2.consolehelper \
3262            scripts/bacula.desktop.gnome1.xsu \
3263            scripts/bacula.desktop.gnome2.xsu \
3264            scripts/mtx-changer \
3265            scripts/disk-changer \
3266            scripts/dvd-handler \
3267            scripts/dvd-simulator \
3268            scripts/bacula-tray-monitor.desktop \
3269            scripts/logwatch/Makefile \
3270            scripts/logwatch/logfile.bacula.conf \
3271            scripts/wxconsole.console_apps \
3272            scripts/wxconsole.desktop.consolehelper \
3273            scripts/wxconsole.desktop.xsu \
3274            scripts/bat.desktop \
3275            scripts/bat.desktop.xsu \
3276            scripts/bat.desktop.consolehelper \
3277            scripts/bat.console_apps \
3278            src/Makefile \
3279            src/host.h \
3280            src/console/Makefile \
3281            src/console/bconsole.conf \
3282            src/qt-console/tray-monitor/tray-monitor.pro \
3283            src/qt-console/tray-monitor/tray-monitor.conf \
3284            src/qt-console/bat.conf \
3285            src/qt-console/bat.pro \
3286            src/qt-console/bat.pro.mingw32 \
3287            src/qt-console/install_conf_file \
3288            src/wx-console/Makefile \
3289            src/wx-console/bwx-console.conf \
3290            src/tray-monitor/Makefile \
3291            src/tray-monitor/tray-monitor.conf \
3292            src/dird/Makefile \
3293            src/dird/bacula-dir.conf \
3294            src/lib/Makefile \
3295            src/stored/Makefile \
3296            src/stored/bacula-sd.conf \
3297            src/filed/Makefile \
3298            src/filed/bacula-fd.conf \
3299            src/cats/Makefile \
3300            src/cats/make_catalog_backup.pl \
3301            src/cats/make_catalog_backup \
3302            src/cats/delete_catalog_backup \
3303            src/cats/create_postgresql_database \
3304            src/cats/update_postgresql_tables \
3305            src/cats/make_postgresql_tables \
3306            src/cats/grant_postgresql_privileges \
3307            src/cats/drop_postgresql_tables \
3308            src/cats/drop_postgresql_database \
3309            src/cats/create_mysql_database \
3310            src/cats/update_mysql_tables \
3311            src/cats/make_mysql_tables \
3312            src/cats/grant_mysql_privileges \
3313            src/cats/drop_mysql_tables \
3314            src/cats/drop_mysql_database \
3315            src/cats/create_sqlite3_database \
3316            src/cats/update_sqlite3_tables \
3317            src/cats/make_sqlite3_tables \
3318            src/cats/grant_sqlite3_privileges \
3319            src/cats/drop_sqlite3_tables \
3320            src/cats/drop_sqlite3_database \
3321            src/cats/sqlite \
3322            src/cats/mysql \
3323            src/cats/create_bacula_database \
3324            src/cats/update_bacula_tables \
3325            src/cats/grant_bacula_privileges \
3326            src/cats/make_bacula_tables \
3327            src/cats/drop_bacula_tables \
3328            src/cats/drop_bacula_database \
3329            src/cats/install-default-backend \
3330            src/findlib/Makefile \
3331            src/tools/Makefile \
3332            src/plugins/fd/Makefile \
3333            src/plugins/sd/Makefile \
3334            src/plugins/dir/Makefile \
3335            src/win32/Makefile.inc \
3336            po/Makefile.in \
3337            updatedb/update_mysql_tables_9_to_10 \
3338            updatedb/update_sqlite3_tables_9_to_10 \
3339            updatedb/update_postgresql_tables_9_to_10 \
3340            updatedb/update_mysql_tables_10_to_11 \
3341            updatedb/update_sqlite3_tables_10_to_11 \
3342            updatedb/update_postgresql_tables_10_to_11 \
3343            updatedb/update_mysql_tables_11_to_12 \
3344            updatedb/update_sqlite3_tables_11_to_12 \
3345            updatedb/update_postgresql_tables_11_to_12 \
3346            updatedb/update_mysql_tables_12_to_14 \
3347            updatedb/update_sqlite3_tables_12_to_14 \
3348            updatedb/update_postgresql_tables_12_to_14 \
3349            examples/nagios/check_bacula/Makefile \
3350            platforms/rpms/redhat/bacula.spec \
3351            platforms/rpms/redhat/bacula-bat.spec \
3352            platforms/rpms/redhat/bacula-docs.spec \
3353            platforms/rpms/redhat/bacula-mtx.spec \
3354            $PFILES ],  
3355      [ ]
3356 )
3357
3358 if test "${support_bat}" = "yes" ; then
3359    if test "x$QMAKE" = "xnone"; then
3360       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3361    fi
3362
3363    cd src/qt-console
3364    echo "Creating bat Makefile"
3365    touch bat
3366    chmod 755 bat
3367    rm -f Makefile
3368    $QMAKE
3369    ${MAKE:-make} clean
3370    cd ${BUILD_DIR}
3371 fi
3372
3373 dnl
3374 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3375 dnl requires gcc).  If it's not, don't rebuild dependencies
3376 dnl
3377 if test X"$GCC" = "Xyes" ; then
3378   echo "Doing make of dependencies"
3379   ${MAKE:-make} depend
3380 fi
3381
3382 cd src/qt-console
3383 chmod 755 install_conf_file build-depkgs-qt-console
3384 cd ${BUILD_DIR}
3385
3386 cd scripts
3387 chmod 755 bacula btraceback mtx-changer
3388 chmod 755 dvd-handler dvd-simulator
3389 chmod 755 bconsole mtx-changer devel_bacula logrotate
3390 cd ..
3391
3392 c=updatedb
3393 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3394 chmod 755 $c/update_postgresql_tables_10_to_11
3395 chmod 755 $c/update_mysql_tables_11_to_12   $c/update_sqlite3_tables_11_to_12
3396 chmod 755 $c/update_postgresql_tables_11_to_12
3397
3398
3399 c=src/cats
3400
3401 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3402 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3403
3404 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3405 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3406
3407 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3408 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3409
3410 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3411 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3412
3413 #chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3414 #chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3415
3416
3417 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3418 chmod 755 $c/sqlite
3419 chmod 755 $c/mysql
3420
3421 chmod 755 $c/install-default-backend
3422
3423 chmod 755 src/win32/build-depkgs-mingw32
3424
3425 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3426    largefile_support="yes"
3427 fi
3428
3429 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3430 if test X"$GCC" = "Xyes" ; then
3431    dnl
3432    dnl A whole lot of hand springs to get the compiler version.
3433    dnl  This is because gcc changed the output in version 3.0
3434    dnl
3435    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3436    if test "x${CCVERSION}" = "x" ; then
3437       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3438    fi
3439    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3440    if test x"${CXXVERSION}" = x ; then
3441       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3442    fi
3443 fi
3444
3445 # clean up any old junk
3446 echo " "
3447 echo "Cleaning up"
3448 echo " "
3449 ${MAKE:-make} clean
3450
3451 echo "
3452 Configuration on `date`:
3453
3454    Host:                     ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3455    Bacula version:           ${BACULA} ${VERSION} (${DATE})
3456    Source code location:     ${srcdir}
3457    Install binaries:         ${sbindir}
3458    Install libraries:        ${libdir}
3459    Install config files:     ${sysconfdir}
3460    Scripts directory:        ${scriptdir}
3461    Archive directory:        ${archivedir}
3462    Working directory:        ${working_dir}
3463    PID directory:            ${piddir}
3464    Subsys directory:         ${subsysdir}
3465    Man directory:            ${mandir}
3466    Data directory:           ${datarootdir}
3467    Plugin directory:         ${plugindir}
3468    C Compiler:               ${CC} ${CCVERSION}
3469    C++ Compiler:             ${CXX} ${CXXVERSION}
3470    Compiler flags:           ${WCFLAGS} ${CFLAGS} 
3471    Linker flags:             ${WLDFLAGS} ${LDFLAGS}
3472    Libraries:                ${LIBS}
3473    Statically Linked Tools:  ${support_static_tools}
3474    Statically Linked FD:     ${support_static_fd}
3475    Statically Linked SD:     ${support_static_sd}
3476    Statically Linked DIR:    ${support_static_dir}
3477    Statically Linked CONS:   ${support_static_cons}
3478    Database backends:        ${db_backends}
3479    Database port:            ${db_port}
3480    Database name:            ${db_name}
3481    Database user:            ${db_user}
3482  
3483    Job Output Email:         ${job_email}
3484    Traceback Email:          ${dump_email}
3485    SMTP Host Address:        ${smtp_host}
3486  
3487    Director Port:            ${dir_port}
3488    File daemon Port:         ${fd_port}
3489    Storage daemon Port:      ${sd_port}
3490  
3491    Director User:            ${dir_user}
3492    Director Group:           ${dir_group}
3493    Storage Daemon User:      ${sd_user}
3494    Storage DaemonGroup:      ${sd_group}
3495    File Daemon User:         ${fd_user}
3496    File Daemon Group:        ${fd_group}
3497  
3498    Large file support:       $largefile_support
3499    Bacula conio support:     ${got_conio} ${CONS_LIBS}
3500    readline support:         ${got_readline} ${PRTREADLINE_SRC}
3501    TCP Wrappers support:     ${TCPW_MSG} ${WRAPLIBS}
3502    TLS support:              ${support_tls}
3503    Encryption support:       ${support_crypto} 
3504    ZLIB support:             ${have_zlib}
3505    LZO support:              ${have_lzo}
3506    enable-smartalloc:        ${support_smartalloc} 
3507    enable-lockmgr:           ${support_lockmgr}
3508    bat support:              ${support_bat}
3509    enable-gnome:             ${support_gnome} ${gnome_version}
3510    enable-bwx-console:       ${support_wx_console} ${wx_version}
3511    enable-tray-monitor:      ${support_tray_monitor}
3512    client-only:              ${build_client_only}
3513    build-dird:               ${build_dird}
3514    build-stored:             ${build_stored}
3515    Plugin support:           ${have_plugins}
3516    ACL support:              ${have_acl}
3517    XATTR support:            ${have_xattr}
3518    Python support:           ${support_python} ${PYTHON_LIBS}
3519    systemd support:          ${support_systemd} ${SYSTEMD_UNITDIR}
3520    Batch insert enabled:     ${batch_insert_db_backends}
3521
3522   " > config.out
3523
3524 # create a small shell script useful for support with
3525 # configure options and config.out info
3526 cat > scripts/bacula_config << EOF
3527 #!/bin/sh
3528 cat << __EOC__
3529 $ $0 $ac_configure_args
3530 EOF
3531 cat config.out >> scripts/bacula_config
3532 echo __EOC__ >> scripts/bacula_config
3533 chmod 755 scripts/bacula_config
3534
3535 cat config.out