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