]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Use a helper script to link the correct database backend.
[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${docdir} ; then
341    htmldir=`eval echo ${docdir}bacula/html`
342 fi
343
344 dnl -------------------------------------------------------------------------
345 dnl  If the user has not set --docdir, we default to /usr/share/doc/
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 (default off)
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    if test "$support_tls" = "yes"; then
1175       AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL library is available])
1176       AC_DEFINE(HAVE_TLS, 1, [Define if TLS support should be enabled])
1177       AC_DEFINE(HAVE_CRYPTO, 1, [Define if encryption support should be enabled])
1178    fi
1179
1180    if test "$ac_cv_openssl_sha2" = "yes"; then
1181       AC_DEFINE(HAVE_SHA2, 1, [Define if the SHA-2 family of digest algorithms is available])
1182    fi
1183
1184    if test "$ac_cv_openssl_export" = "yes"; then
1185       AC_DEFINE(HAVE_OPENSSL_EXPORT_LIBRARY, 1, [Define if the OpenSSL library is export-contrained to 128bit ciphers])
1186    fi
1187
1188    if test "$support_crypto" = "yes"; then
1189       AC_CHECK_LIB(crypto, EVP_PKEY_encrypt_old, AC_DEFINE(HAVE_OPENSSLv1, 1, [Set if have OpenSSL version 1.x]))
1190    fi
1191
1192    LIBS="${saved_LIBS}"
1193    CFLAGS="${saved_CFLAGS}"
1194 else
1195    support_tls="no"
1196    support_crypto="no"
1197    OPENSSL_LIBS=""
1198    OPENSSL_INC=""
1199 fi
1200 AC_MSG_RESULT([$support_tls])
1201
1202 if test "$support_tls" = "no"; then
1203    OPENSSL_LIBS=""
1204    OPENSSL_INC=""
1205 fi  
1206 if test "$support_crypto" = "no"; then
1207    OPENSSL_LIBS=""
1208    OPENSSL_INC=""
1209 fi  
1210
1211 AC_SUBST(OPENSSL_LIBS)
1212 AC_SUBST(OPENSSL_INC)
1213
1214 dnl -----------------------------------------------------------
1215 dnl dlopen is needed for plugins
1216 dnl -----------------------------------------------------------
1217 AC_SEARCH_LIBS(dlopen, [dl])
1218
1219 dnl ------------------------------------------
1220 dnl Where to place working dir
1221 dnl ------------------------------------------
1222 working_dir=`eval echo ${prefix}/var/bacula/working`
1223 AC_ARG_WITH(working-dir,
1224    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
1225    [
1226        if test "x$withval" != "xno" ; then     
1227          working_dir=$withval
1228        fi
1229    ]
1230 )
1231
1232 AC_SUBST(working_dir)
1233
1234 dnl ------------------------------------------------------------------
1235 dnl If the user has not set archivedir, we set our default as /tmp
1236 dnl ------------------------------------------------------------------
1237 archivedir=/tmp
1238 AC_ARG_WITH(archivedir,
1239    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
1240    [
1241        if test "x$withval" != "xno" ; then     
1242           archivedir=$withval
1243        fi
1244    ]
1245 )
1246
1247 AC_SUBST(archivedir)
1248
1249 dnl ------------------------------------------------------------------
1250 dnl Allow the user to specify the daemon resource name default hostname
1251 dnl ------------------------------------------------------------------
1252 basename=`hostname`
1253 AC_ARG_WITH(basename,
1254    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
1255    [
1256        if test "x$withval" != "xno" ; then     
1257           basename=$withval
1258        fi
1259    ]
1260 )
1261
1262 AC_SUBST(basename)
1263
1264 dnl ------------------------------------------------------------------
1265 dnl Allow the user to override the hostname (default = machine hostname)
1266 dnl ------------------------------------------------------------------
1267 hostname=`uname -n | cut -d '.' -f 1`
1268 if test x${hostname} = x ; then
1269   hostname="localhost"
1270 fi
1271 AC_ARG_WITH(hostname,
1272    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
1273    [
1274        if test "x$withval" != "xno" ; then
1275          hostname=$withval
1276        fi
1277    ]
1278 )
1279
1280 AC_SUBST(hostname)
1281
1282
1283 dnl ------------------------------------------
1284 dnl Where to place scriptdir (script files)
1285 dnl ------------------------------------------
1286 scriptdir=`eval echo ${sysconfdir}`
1287 AC_ARG_WITH(scriptdir,
1288    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
1289    [
1290        if test "x$withval" != "xno" ; then     
1291           scriptdir=$withval
1292        fi
1293    ]
1294 )
1295
1296 AC_SUBST(scriptdir)
1297
1298
1299 dnl ------------------------------------------
1300 dnl Where to place bsrdir (bsr files)
1301 dnl ------------------------------------------
1302 bsrdir=/tmp
1303 AC_ARG_WITH(bsrdir,
1304    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
1305    [
1306        if test "x$withval" != "xno" ; then     
1307           bsrdir=$withval
1308        fi
1309    ]
1310 )
1311
1312 AC_SUBST(bsrdir)
1313
1314 dnl ------------------------------------------
1315 dnl Where to place logdir (bsr files)
1316 dnl ------------------------------------------
1317 logdir=/tmp
1318 AC_ARG_WITH(logdir,
1319    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
1320    [
1321        if test "x$withval" != "xno" ; then     
1322           logdir=$withval
1323        fi
1324    ]
1325 )
1326
1327 AC_SUBST(logdir)
1328
1329
1330 # ------------------------------------------
1331 # Where to place plugindir (plugin files)
1332 # ------------------------------------------
1333 plugindir=`eval echo ${libdir}`
1334 AC_ARG_WITH(plugindir,
1335    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
1336    [
1337        if test "x$withval" != "xno" ; then     
1338           plugindir=$withval
1339        fi
1340    ]
1341 )
1342
1343 AC_SUBST(plugindir)
1344
1345 dnl ------------------------------------------
1346 dnl Where to send dump email
1347 dnl ------------------------------------------
1348 dump_email=root@localhost
1349 AC_ARG_WITH(dump-email,
1350    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
1351    [
1352        if test "x$withval" != "xno" ; then     
1353           dump_email=$withval
1354        fi
1355    ]
1356 )
1357
1358 AC_SUBST(dump_email)
1359
1360 dnl ------------------------------------------
1361 dnl Where to send job email
1362 dnl ------------------------------------------
1363 job_email=root@localhost
1364 AC_ARG_WITH(job-email,
1365    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
1366    [
1367        if test "x$withval" != "xno" ; then     
1368           job_email=$withval
1369        fi
1370    ]
1371 )
1372
1373 AC_SUBST(job_email)
1374
1375 dnl ------------------------------------------
1376 dnl Where to find smtp host
1377 dnl ------------------------------------------
1378 smtp_host=localhost
1379 AC_ARG_WITH(smtp_host,
1380    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
1381    [
1382        if test "x$withval" != "xno" ; then     
1383           smtp_host=$withval
1384        fi
1385    ]
1386 )
1387
1388 AC_SUBST(smtp_host)
1389
1390 dnl ------------------------------------
1391 dnl Where to place pid files
1392 dnl ------------------------------------
1393 piddir=/var/run
1394 AC_ARG_WITH(pid-dir,
1395    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
1396    [
1397        if test "x$withval" != "xno" ; then   
1398           piddir=$withval
1399        fi
1400    ]
1401 )
1402
1403 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
1404 AC_SUBST(piddir)
1405
1406 dnl ------------------------------------
1407 dnl Where to place subsys "lock file"
1408 dnl ------------------------------------
1409 subsysdir=/var/run/subsys
1410 if test -d /var/run/subsys; then
1411    subsysdir=/var/run/subsys
1412 elif test -d /var/lock/subsys; then
1413    subsysdir=/var/lock/subsys
1414 else
1415    subsysdir=/var/run/subsys
1416 fi
1417 AC_ARG_WITH(subsys-dir,
1418    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
1419    [
1420        if test "x$withval" != "xno" ; then   
1421           subsysdir=$withval
1422        fi
1423    ]
1424 )
1425
1426 AC_SUBST(subsysdir)
1427
1428 dnl ------------------------------------
1429 dnl Where to start assigning ports
1430 dnl ------------------------------------
1431 baseport=9101
1432 AC_ARG_WITH(baseport,
1433    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
1434    [
1435        if test "x$withval" != "xno" ; then   
1436           baseport=$withval
1437        fi
1438    ]
1439 )
1440
1441 AC_SUBST(baseport)
1442 dir_port=`expr $baseport`
1443 fd_port=`expr $baseport + 1`
1444 sd_port=`expr $fd_port + 1`
1445
1446 AC_SUBST(dir_port)
1447 AC_SUBST(fd_port)
1448 AC_SUBST(sd_port)
1449
1450 dnl ------------------------------------------
1451 dnl Generate passwords
1452 dnl ------------------------------------------
1453 dir_password=
1454 AC_ARG_WITH(dir-password,
1455    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
1456    [
1457        if test "x$withval" != "xno" ; then     
1458           dir_password=$withval
1459        fi
1460    ]
1461 )
1462
1463 if test "x$dir_password" = "x" ; then
1464    if test "x$OPENSSL" = "xnone" ; then
1465       key=`autoconf/randpass 33`
1466    else
1467       key=`openssl rand -base64 33`
1468    fi
1469    dir_password=$key
1470 fi
1471
1472 fd_password=
1473 AC_ARG_WITH(fd-password,
1474    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
1475    [
1476        if test "x$withval" != "xno" ; then     
1477           fd_password=$withval
1478        fi
1479    ]
1480 )
1481
1482 if test "x$fd_password" = "x" ; then
1483    if test "x$OPENSSL" = "xnone" ; then
1484       key=`autoconf/randpass 37`
1485    else
1486       key=`openssl rand -base64 33`
1487    fi
1488    fd_password=$key
1489 fi
1490
1491 sd_password=
1492 AC_ARG_WITH(sd-password,
1493    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
1494    [
1495        if test "x$withval" != "xno" ; then     
1496           sd_password=$withval
1497        fi
1498    ]
1499 )
1500
1501 if test "x$sd_password" = "x" ; then
1502    if test "x$OPENSSL" = "xnone" ; then
1503       key=`autoconf/randpass 41`
1504    else
1505       key=`openssl rand -base64 33`
1506    fi
1507    sd_password=$key
1508 fi
1509
1510 mon_dir_password=
1511 AC_ARG_WITH(mon-dir-password,
1512    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
1513    [
1514        if test "x$withval" != "xno" ; then     
1515           mon_dir_password=$withval
1516        fi
1517    ]
1518 )
1519
1520 if test "x$mon_dir_password" = "x" ; then
1521    if test "x$OPENSSL" = "xnone" ; then
1522       key=`autoconf/randpass 33`
1523    else
1524       key=`openssl rand -base64 33`
1525    fi
1526    mon_dir_password=$key
1527 fi
1528
1529 mon_fd_password=
1530 AC_ARG_WITH(mon-fd-password,
1531    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
1532    [
1533        if test "x$withval" != "xno" ; then     
1534           mon_fd_password=$withval
1535        fi
1536    ]
1537 )
1538
1539 if test "x$mon_fd_password" = "x" ; then
1540    if test "x$OPENSSL" = "xnone" ; then
1541       key=`autoconf/randpass 37`
1542    else
1543       key=`openssl rand -base64 33`
1544    fi
1545    mon_fd_password=$key
1546 fi
1547
1548 mon_sd_password=
1549 AC_ARG_WITH(mon-sd-password,
1550    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
1551    [
1552        if test "x$withval" != "xno" ; then     
1553           mon_sd_password=$withval
1554        fi
1555    ]
1556 )
1557
1558 if test "x$mon_sd_password" = "x" ; then
1559    if test "x$OPENSSL" = "xnone" ; then
1560       key=`autoconf/randpass 41`
1561    else
1562       key=`openssl rand -base64 33`
1563    fi
1564    mon_sd_password=$key
1565 fi
1566
1567 AC_SUBST(dir_password)
1568 AC_SUBST(fd_password)
1569 AC_SUBST(sd_password)
1570 AC_SUBST(mon_dir_password)
1571 AC_SUBST(mon_fd_password)
1572 AC_SUBST(mon_sd_password)
1573
1574 dnl
1575 dnl Pickup any database name
1576 dnl
1577 db_name=bacula
1578 AC_ARG_WITH(db_name,
1579    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
1580    [
1581        if test "x$withval" != "x" ; then   
1582           db_name=$withval
1583        fi
1584    ]
1585 )
1586 AC_SUBST(db_name)
1587
1588 db_user=bacula
1589 AC_ARG_WITH(db_user,
1590    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
1591    [
1592        if test "x$withval" != "x" ; then   
1593           db_user=$withval
1594        fi
1595    ]
1596 )
1597 AC_SUBST(db_user)
1598
1599 db_password=
1600 AC_ARG_WITH(db_password,
1601    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
1602    [
1603        if test "x$withval" != "x" ; then   
1604           db_password=$withval
1605        fi
1606    ]
1607 )
1608 AC_SUBST(db_password)
1609
1610 dnl
1611 dnl Pickup a database port
1612 dnl
1613 db_port=" "
1614 AC_ARG_WITH(db_port,
1615    AC_HELP_STRING([--with-db-port=DBPORT], [specify a database port @<:@default=null@:>@]),
1616    [
1617        if test "x$withval" != "x" ; then
1618           db_port=$withval
1619        fi
1620    ]
1621 )
1622 AC_SUBST(db_port)
1623
1624 #
1625 # Handle users and groups for each daemon
1626 #
1627 dir_user=
1628 AC_ARG_WITH(dir_user,
1629    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
1630    [
1631        if test "x$withval" != "x" ; then   
1632            dir_user=$withval
1633        fi
1634    ]
1635 )
1636
1637 dir_group=
1638 AC_ARG_WITH(dir_group,
1639    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
1640    [
1641        if test "x$withval" != "x" ; then   
1642           dir_group=$withval
1643        fi
1644    ]
1645 )
1646
1647 sd_user=
1648 AC_ARG_WITH(sd_user,
1649    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
1650    [
1651        if test "x$withval" != "x" ; then   
1652           sd_user=$withval
1653        fi
1654    ]
1655 )
1656
1657 sd_group=
1658 AC_ARG_WITH(sd_group,
1659    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
1660    [
1661        if test "x$withval" != "x" ; then   
1662           sd_group=$withval
1663        fi
1664    ]
1665 )
1666
1667 fd_user=
1668 AC_ARG_WITH(fd_user,
1669    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
1670    [
1671        if test "x$withval" != "x" ; then   
1672           fd_user=$withval
1673        fi
1674    ]
1675 )
1676
1677 fd_group=
1678 AC_ARG_WITH(fd_group,
1679    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
1680    [
1681        if test "x$withval" != "x" ; then   
1682           fd_group=$withval
1683        fi
1684    ]
1685 )
1686
1687 AC_SUBST(dir_user)
1688 AC_SUBST(dir_group)
1689 AC_SUBST(sd_user)
1690 AC_SUBST(sd_group)
1691 AC_SUBST(fd_user)
1692 AC_SUBST(fd_group)
1693
1694 dnl
1695 dnl allow setting default executable permissions
1696 dnl
1697 SBINPERM=0750
1698 AC_ARG_WITH(sbin-perm,
1699    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0750@:>@]),
1700    [
1701        if test "x$withval" != "x" ; then   
1702           SBINPERM=$withval
1703        fi
1704    ]
1705 )
1706
1707 AC_SUBST(SBINPERM)
1708
1709 dnl ------------------------------------------------
1710 dnl Bacula check for various SQL database engines
1711 dnl ------------------------------------------------
1712 BA_CHECK_POSTGRESQL_DB
1713
1714 BA_CHECK_MYSQL_DB
1715
1716 BA_CHECK_SQLITE3_DB
1717
1718 #BA_CHECK_INGRES_DB
1719
1720 #BA_CHECK_DBI_DB
1721
1722 #BA_CHECK_DBI_DRIVER
1723
1724 dnl -------------------------------------------
1725 dnl Make sure at least one database backend is found
1726 dnl -------------------------------------------
1727 if test "x${db_backends}" = "x" ; then
1728    echo " "
1729    echo " "
1730    echo "You have not specified either --enable-client-only or one of the"
1731    echo "supported databases: MySQL, PostgreSQL, or SQLite3."
1732    echo "This is not permitted. Please reconfigure."
1733    echo " "
1734    echo "Aborting the configuration ..."
1735    echo " "
1736    echo " "
1737    exit 1
1738 fi
1739
1740 dnl -------------------------------------------
1741 dnl See how many catalog backends are configured.
1742 dnl -------------------------------------------
1743 case `echo $DB_BACKENDS | wc -w | sed -e 's/^ *//'` in
1744    1)
1745       DEFAULT_DB_TYPE="${DB_BACKENDS}"
1746       if test x$use_libtool = xno; then
1747          SHARED_CATALOG_TARGETS=""
1748       else
1749          SHARED_CATALOG_TARGETS="libbaccats-${DEFAULT_DB_TYPE}.la"
1750       fi
1751       ;;
1752    *)
1753       dnl ------------------------------------------------
1754       dnl Set the default backend to the first backend found
1755       dnl ------------------------------------------------
1756       DEFAULT_DB_TYPE=`echo ${DB_BACKENDS} | cut -d' ' -f1`
1757
1758       dnl ------------------------------------------------
1759       dnl For multiple backend we need libtool support.
1760       dnl ------------------------------------------------
1761       if test x$use_libtool = xno; then
1762          echo " "
1763          echo " "
1764          echo "You have specified two or more of the"
1765          echo "supported databases: MySQL, PostgreSQL, or SQLite3."
1766          echo "This is not permitted when not using libtool Please reconfigure."
1767          echo " "
1768          echo "Aborting the configuration ..."
1769          echo " "
1770          echo " "
1771          exit 1
1772       fi
1773
1774       SHARED_CATALOG_TARGETS=""
1775       for db_type in ${DB_BACKENDS}
1776       do
1777          if test -z "${SHARED_CATALOG_TARGETS}"; then
1778             SHARED_CATALOG_TARGETS="libbaccats-${db_type}.la"
1779          else
1780             SHARED_CATALOG_TARGETS="${SHARED_CATALOG_TARGETS} libbaccats-${db_type}.la"
1781          fi
1782       done
1783       ;;
1784 esac
1785
1786 dnl -------------------------------------------
1787 dnl Unset DB_LIBS when using libtool as we link the
1788 dnl shared library using the right database lib no need to
1789 dnl set DB_LIBS which is only used for non shared versions
1790 dnl of the backends.
1791 dnl -------------------------------------------
1792 if test x$use_libtool = xyes; then
1793    DB_LIBS=""
1794 fi
1795
1796 AC_SUBST(DB_BACKENDS)
1797 AC_SUBST(DB_LIBS)
1798 AC_SUBST(DEFAULT_DB_TYPE)
1799 AC_SUBST(SHARED_CATALOG_TARGETS)
1800
1801 dnl -------------------------------------------
1802 dnl enable batch attribute DB insert (default on)
1803 dnl -------------------------------------------
1804 support_batch_insert=yes
1805 AC_ARG_ENABLE(batch-insert,
1806    AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=yes@:>@]),
1807    [
1808        if test x$enableval = xno; then
1809           support_batch_insert=no
1810        fi
1811    ]
1812 )
1813
1814 if test x$support_batch_insert = xyes; then
1815    AC_DEFINE(USE_BATCH_FILE_INSERT, 1, [Set if DB batch insert code enabled])
1816 fi
1817
1818 dnl -------------------------------------------
1819 dnl Check if mysql supports batch mode   
1820 dnl -------------------------------------------
1821 if test ! -z "$MYSQL_LIB"; then
1822    AC_CHECK_LIB(mysql_r, mysql_thread_safe, AC_DEFINE(HAVE_MYSQL_THREAD_SAFE, 1, [Set if have mysql_thread_safe]))
1823 fi
1824
1825 dnl -------------------------------------------
1826 dnl Check if sqlite supports batch mode   
1827 dnl -------------------------------------------
1828 if test ! -z "SQLITE_LIB"; then
1829    AC_CHECK_LIB(sqlite3, sqlite3_threadsafe, AC_DEFINE(HAVE_SQLITE3_THREADSAFE, 1, [Set if have sqlite3_threadsafe]))
1830 fi
1831
1832 dnl -------------------------------------------
1833 dnl Check if postgresql supports batch mode   
1834 dnl -------------------------------------------
1835 if test ! -z "$POSTGRESQL_LIB"; then
1836    dnl For postgresql checking
1837    saved_LIBS="${LIBS}"
1838    LIBS="${saved_LIBS} ${POSTGRESQL_LIB}"
1839    
1840    AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE, 1, [Set if have PQisthreadsafe]))
1841    AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY, 1, [Set if have PQputCopyData]))
1842    if test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"; then
1843       if test $support_batch_insert = yes ; then
1844          AC_DEFINE(HAVE_POSTGRESQL_BATCH_FILE_INSERT, 1, [Set if PostgreSQL DB batch insert code enabled])
1845       fi
1846    fi
1847
1848    if test x$ac_cv_lib_pq_PQisthreadsafe != xyes -a x$support_batch_insert = xyes
1849    then
1850       echo "WARNING: Your PostgreSQL client library is too old to detect "
1851       echo "if it was compiled with --enable-thread-safety, consider to "
1852       echo "upgrade it in order to avoid problems with Batch insert mode"
1853       echo
1854    fi
1855
1856    dnl Revert after postgresql checks
1857    LIBS="${saved_LIBS}"
1858 fi
1859
1860 dnl -------------------------------------------
1861 dnl Check if dbi supports batch mode   
1862 dnl -------------------------------------------
1863 if test ! -z "$DBI_LIBS"; then
1864    dnl -------------------------------------------
1865    dnl Push the DB_PROG onto the stack of supported database backends for DBI
1866    dnl -------------------------------------------
1867    DB_BACKENDS="${DB_BACKENDS} ${DB_PROG}"
1868
1869    dnl -------------------------------------------
1870    dnl Check for batch insert
1871    dnl -------------------------------------------
1872    if test $DB_PROG = postgresql; then
1873       AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE))
1874       AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY))
1875       test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"
1876       pkg=$?
1877       if test $pkg = 0; then
1878          if test $support_batch_insert = yes ; then
1879             AC_DEFINE(HAVE_DBI_BATCH_FILE_INSERT, 1, [Set if DBI DB batch insert code enabled])
1880          fi
1881       fi
1882    fi
1883 else 
1884    dnl -------------------------------------------
1885    dnl If dbi was not chosen, let the comment in file
1886    dnl -------------------------------------------
1887    uncomment_dbi="#"  
1888 fi
1889
1890 AC_SUBST(uncomment_dbi)
1891
1892 AC_DEFINE(PROTOTYPES)
1893
1894 dnl --------------------------------------------------------------------------
1895 dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
1896 dnl
1897 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
1898    if test -z "$CCOPTS"; then
1899       CCOPTS='-g -O2 -Wall'
1900    fi
1901    CFLAGS="$CCOPTS"
1902 fi
1903
1904 dnl A few others 
1905 AC_EXEEXT
1906
1907 dnl See if we can use 64 bit file addresses
1908 largefile_support="no"
1909 AC_BAC_LARGEFILE
1910
1911 AC_PATH_XTRA
1912
1913 dnl --------------------------------------------------------------------------
1914 dnl CHECKING FOR HEADER FILES
1915 dnl --------------------------------------------------------------------------
1916 AC_CHECK_HEADERS( \
1917    assert.h \
1918    fcntl.h \
1919    grp.h \
1920    pwd.h \
1921    libc.h \
1922    limits.h \
1923    stdarg.h \
1924    stdlib.h \
1925    stdint.h \
1926    string.h \
1927    strings.h \
1928    termios.h \
1929    termcap.h \
1930    term.h \
1931    unistd.h \
1932    sys/bitypes.h \
1933    sys/byteorder.h \
1934    sys/ioctl.h \
1935    sys/select.h \
1936    sys/socket.h \
1937    sys/sockio.h \
1938    sys/stat.h \
1939    sys/time.h \
1940    sys/types.h \
1941    arpa/nameser.h \
1942    mtio.h \
1943    sys/mtio.h \
1944    sys/tape.h \
1945    regex.h \
1946 )
1947 AC_HEADER_STDC
1948 AC_HEADER_MAJOR
1949 AC_HEADER_DIRENT
1950 AC_HEADER_STAT
1951 AC_HEADER_SYS_WAIT
1952 AC_HEADER_TIME
1953 AC_STRUCT_ST_BLKSIZE
1954 AC_STRUCT_ST_BLOCKS
1955 AC_STRUCT_TIMEZONE
1956
1957 dnl --------------------------------------------------------------------------
1958 dnl Check for utime.h structure 
1959 dnl --------------------------------------------------------------------------
1960 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
1961    [
1962        AC_TRY_COMPILE(
1963           [
1964               #include <sys/types.h>
1965               #include <utime.h>
1966           ], [
1967               struct utimbuf foo
1968           ], [
1969               ba_cv_header_utime_h=yes
1970           ], [
1971               ba_cv_header_utime_h=no
1972           ]
1973        )
1974    ]
1975 )
1976 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H, 1, [Set if utime.h exists])
1977
1978 dnl --------------------------------------------------------------------------
1979 dnl Check for socklen_t
1980 dnl --------------------------------------------------------------------------
1981 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1982    [
1983        AC_TRY_COMPILE(
1984           [
1985               #include <sys/types.h>
1986               #include <sys/socket.h>
1987           ], [
1988               socklen_t x
1989           ], [
1990              ba_cv_header_socklen_t=yes
1991           ], [
1992              ba_cv_header_socklen_t=no
1993           ]
1994        )
1995    ]
1996 )
1997 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T, 1, [Set if socklen_t exists])
1998
1999 dnl --------------------------------------------------------------------------
2000 dnl Check for ioctl request type
2001 dnl --------------------------------------------------------------------------
2002 AC_LANG(C++)
2003 AC_CACHE_CHECK(for ioctl_req_t, ba_cv_header_ioctl_req_t,
2004    [
2005        AC_TRY_COMPILE(
2006           [
2007               #include <unistd.h>
2008               #include <sys/types.h>
2009               #include <sys/ioctl.h>
2010           ], [
2011               int (*d_ioctl)(int fd, unsigned long int request, ...);
2012               d_ioctl = ::ioctl;
2013           ], [
2014              ba_cv_header_ioctl_req_t=yes
2015           ], [
2016              ba_cv_header_ioctl_req_t=no
2017           ]
2018        )
2019    ]
2020 )
2021 test $ba_cv_header_ioctl_req_t = yes && AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [Set if ioctl request is unsigned long int])
2022
2023 dnl Note: it is more correct to use AC_LANG(C++) but some of the older
2024 dnl   *BSD systems still use old style C prototypes, which are wrong with
2025 dnl   compiled with a C++ compiler. 
2026 AC_LANG(C)
2027
2028 dnl --------------------------------------------------------------------------
2029 dnl Check for typeof()
2030 dnl --------------------------------------------------------------------------
2031 AC_LANG_PUSH(C++)
2032 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
2033    [
2034        AC_TRY_RUN(
2035           [
2036               main(){char *a = 0; a = (typeof a)a;}
2037           ], [
2038               ba_cv_have_typeof=yes
2039           ], [
2040               ba_cv_have_typeof=no
2041           ], [
2042               ba_cv_have_typeof=no
2043           ]
2044        )
2045    ]
2046 )
2047 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
2048 AC_LANG_POP(C++)
2049
2050 AC_C_CONST
2051
2052 AC_C_BIGENDIAN([AC_DEFINE([HAVE_BIG_ENDIAN], [1], [Big Endian])], [AC_DEFINE([HAVE_LITTLE_ENDIAN], [1], [Little Endian])])
2053
2054 dnl --------------------------------------------------------------------------
2055 dnl CHECKING FOR FILESYSTEM TYPE
2056 dnl --------------------------------------------------------------------------
2057 AC_MSG_CHECKING(how to get filesystem type)
2058 fstype=no
2059 # The order of these tests is important.
2060 AC_TRY_CPP(
2061    [
2062        #include <sys/statvfs.h>
2063        #include <sys/fstyp.h>
2064    ],
2065    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
2066 )
2067 if test $fstype = no; then
2068    AC_TRY_CPP(
2069       [
2070           #include <sys/statfs.h>
2071           #include <sys/fstyp.h>
2072       ],
2073       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
2074    )
2075 fi
2076 if test $fstype = no; then
2077    AC_TRY_CPP(
2078       [
2079           #include <sys/statfs.h>
2080           #include <sys/vmount.h>
2081       ],
2082       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
2083    )
2084 fi
2085 if test $fstype = no; then  
2086    AC_TRY_CPP(
2087       [
2088           #include <mntent.h>
2089       ],
2090       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
2091    )
2092 fi
2093 if test $fstype = no; then  
2094    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
2095 fi
2096 if test $fstype = no; then  
2097    AC_TRY_CPP(
2098       [
2099           #include <sys/mount.h>
2100           #include <sys/fs_types.h>
2101       ],
2102       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
2103    )
2104 fi
2105 AC_MSG_RESULT($fstype)
2106
2107 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
2108
2109 AC_LANG_PUSH(C++)
2110 AC_CHECK_HEADERS([cxxabi.h execinfo.h], [ AC_DEFINE(HAVE_BACKTRACE,1,[Defines if your system have the cxxabi.h and execinfo.h header files for backtrace()])] , )
2111 AC_LANG_POP(C++)
2112
2113 dnl --------------------------------------------------------------------------
2114 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
2115 dnl --------------------------------------------------------------------------
2116 AC_TYPE_SIGNAL
2117 SIGNAL_CHECK
2118 AC_TYPE_MODE_T
2119 AC_TYPE_UID_T
2120 AC_TYPE_SIZE_T
2121 AC_TYPE_PID_T
2122 AC_TYPE_OFF_T
2123 AC_TYPE_INTPTR_T
2124 AC_TYPE_UINTPTR_T
2125 AC_CHECK_TYPE(ino_t, unsigned long)
2126 AC_CHECK_TYPE(dev_t, unsigned long)
2127 AC_CHECK_TYPE(daddr_t, long)
2128 AC_CHECK_TYPE(major_t, int)
2129 AC_CHECK_TYPE(minor_t, int)
2130 AC_CHECK_TYPE(ssize_t, int)
2131 AC_STRUCT_ST_BLOCKS
2132 AC_STRUCT_ST_RDEV
2133 AC_STRUCT_TM
2134 AC_C_CONST
2135
2136 AC_CHECK_SIZEOF(char, 1)
2137 AC_CHECK_SIZEOF(short int, 2)
2138 AC_CHECK_SIZEOF(int, 4)
2139 AC_CHECK_SIZEOF(long int, 4)
2140 AC_CHECK_SIZEOF(long long int, 8)
2141 AC_CHECK_SIZEOF(int *, 4)
2142
2143 dnl Check for sys/types.h types
2144 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
2145    [
2146        AC_TRY_COMPILE(
2147           [
2148               #include <sys/types.h>
2149           ], [
2150               u_int a; a = 1;
2151           ], [
2152               ac_cv_have_u_int="yes"
2153           ], [
2154               ac_cv_have_u_int="no"
2155           ]
2156        )
2157    ]
2158 )
2159 if test "x$ac_cv_have_u_int" = "xyes" ; then
2160    AC_DEFINE(HAVE_U_INT)
2161    have_u_int=1
2162 fi
2163
2164 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2165    [
2166        AC_TRY_COMPILE(
2167           [
2168               #include <sys/types.h>
2169           ], [
2170               intmax_t a; a = 1;
2171           ], [
2172               ac_cv_have_intmax_t="yes"
2173           ], [ 
2174               AC_TRY_COMPILE(
2175                  [
2176                      #include <stdint.h>
2177                  ], [
2178                      intmax_t a; a = 1;
2179                  ], [
2180                      ac_cv_have_intmax_t="yes"
2181                  ], [
2182                      ac_cv_have_intmax_t="no"
2183                  ]
2184               )
2185           ]
2186        )       
2187    ]
2188 )
2189 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2190    AC_DEFINE(HAVE_INTMAX_T)
2191    have_intmax_t=1
2192 fi
2193
2194 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2195    [
2196        AC_TRY_COMPILE(
2197           [
2198               #include <sys/types.h>
2199           ], [
2200               u_intmax_t a; a = 1;
2201           ], [
2202               ac_cv_have_u_intmax_t="yes"
2203           ], [ 
2204               AC_TRY_COMPILE(
2205                  [
2206                      #include <stdint.h>
2207                  ], [
2208                     u_intmax_t a; a = 1;
2209                  ], [
2210                     ac_cv_have_u_intmax_t="yes"
2211                  ], [
2212                     ac_cv_have_u_intmax_t="no"
2213                  ]
2214               )
2215           ]
2216        )
2217    ]
2218 )
2219 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2220    AC_DEFINE(HAVE_U_INTMAX_T)
2221    have_u_intmax_t=1
2222 fi
2223
2224 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2225    [
2226        AC_TRY_COMPILE(
2227           [
2228               #include <sys/types.h>
2229           ], [
2230               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2231           ], [
2232               ac_cv_have_intxx_t="yes"
2233           ], [
2234               ac_cv_have_intxx_t="no"
2235           ]
2236        )
2237    ]
2238 )
2239 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2240    AC_DEFINE(HAVE_INTXX_T)
2241    have_intxx_t=1
2242 fi
2243    
2244 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2245    [
2246        AC_TRY_COMPILE(
2247           [
2248               #include <sys/types.h>
2249           ], [
2250               int64_t a; a = 1;
2251           ], [
2252               ac_cv_have_int64_t="yes"
2253           ], [
2254               ac_cv_have_int64_t="no"
2255           ]
2256        )
2257    ]
2258 )
2259 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2260    AC_DEFINE(HAVE_INT64_T)
2261    have_int64_t=1
2262 fi
2263    
2264 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2265    [
2266        AC_TRY_COMPILE(
2267           [
2268               #include <sys/types.h>
2269           ], [
2270               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2271           ], [
2272              ac_cv_have_u_intxx_t="yes"
2273           ], [
2274              ac_cv_have_u_intxx_t="no"
2275           ]
2276        )
2277    ]
2278 )
2279 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2280    AC_DEFINE(HAVE_U_INTXX_T)
2281    have_u_intxx_t=1
2282 fi
2283
2284 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2285    [
2286        AC_TRY_COMPILE(
2287           [
2288               #include <sys/types.h>
2289           ], [
2290               u_int64_t a; a = 1;
2291           ], [
2292              ac_cv_have_u_int64_t="yes"
2293           ], [
2294              ac_cv_have_u_int64_t="no"
2295           ]
2296        )
2297    ]
2298 )
2299 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2300    AC_DEFINE(HAVE_U_INT64_T)
2301    have_u_int64_t=1
2302 fi
2303
2304 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2305     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2306 then
2307    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2308    AC_TRY_COMPILE(
2309       [
2310           #include <sys/bitypes.h>
2311       ], [
2312           int8_t a; int16_t b; int32_t c;
2313           u_int8_t e; u_int16_t f; u_int32_t g;
2314           a = b = c = e = f = g = 1;
2315       ], [
2316           AC_DEFINE(HAVE_U_INTXX_T)
2317           AC_DEFINE(HAVE_INTXX_T)
2318           AC_DEFINE(HAVE_SYS_BITYPES_H)
2319           AC_MSG_RESULT(yes)
2320       ], [
2321           AC_MSG_RESULT(no)
2322       ]
2323    ) 
2324 fi
2325
2326 if test -z "$have_u_intxx_t" ; then
2327    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2328       [
2329           AC_TRY_COMPILE(
2330              [
2331                  #include <sys/types.h>
2332              ], [
2333                  uint8_t a; uint16_t b; 
2334                  uint32_t c; a = b = c = 1;
2335              ], [
2336                 ac_cv_have_uintxx_t="yes"
2337              ], [
2338                 ac_cv_have_uintxx_t="no"
2339              ]
2340           )
2341       ]
2342    )
2343    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2344       AC_DEFINE(HAVE_UINTXX_T)
2345    fi
2346 fi
2347
2348 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2349     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2350 then
2351    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2352    AC_TRY_COMPILE(
2353       [
2354           #include <sys/bitypes.h>
2355       ], [
2356           int64_t a; u_int64_t b; 
2357           a = b = 1;
2358       ], [
2359           AC_DEFINE(HAVE_U_INT64_T)
2360           AC_DEFINE(HAVE_INT64_T)
2361           AC_MSG_RESULT(yes)
2362       ], [
2363           AC_MSG_RESULT(no)
2364       ]
2365    ) 
2366 fi
2367
2368 if (test -z "$have_uintxx_t" && \
2369     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2370 then
2371    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2372    AC_TRY_COMPILE(
2373       [
2374           #include <sys/bitypes.h>
2375       ], [
2376           uint8_t a; uint16_t b; 
2377           uint32_t c; a = b = c = 1;
2378       ], [
2379           AC_DEFINE(HAVE_UINTXX_T)
2380           AC_MSG_RESULT(yes)
2381       ], [
2382           AC_MSG_RESULT(no)
2383       ]
2384    ) 
2385 fi
2386
2387 dnl --------------------------------------------------------------------------
2388 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2389 dnl --------------------------------------------------------------------------
2390 AC_CHECK_FUNCS( \
2391    fork \
2392    getcwd \
2393    gethostname \
2394    getpid \
2395    gettimeofday \
2396    setpgid \
2397    setpgrp \
2398    setsid \
2399    signal \
2400    strerror \
2401    strncmp \
2402    strncpy \
2403    vfprintf \
2404    ,,
2405    [echo 'configure: cannot find needed function.'; exit 1]
2406 )
2407
2408 AC_CHECK_FUNCS(getpagesize, [AC_DEFINE(HAVE_GETPAGESIZE, 1, [Set if have getpagesize])])
2409 AC_CHECK_FUNCS(malloc_trim, [AC_DEFINE(HAVE_MALLOC_TRIM, 1, [Set if have malloc_trim])])
2410
2411 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2412 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2413 AC_CHECK_FUNCS(posix_fadvise)
2414 AC_CHECK_FUNCS(fdatasync)
2415
2416 AC_CHECK_FUNCS(chflags) 
2417
2418 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2419
2420 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2421    [
2422        AC_TRY_LINK(
2423           [
2424               #include <stdarg.h>
2425               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2426               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2427           ], [
2428               call_use_va_copy(1,2,3)
2429           ], [
2430               ba_cv_va_copy=yes,
2431           ], [
2432               ba_cv_va_copy=no
2433           ]
2434        )
2435    ]
2436 )
2437 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2438
2439 dnl --------------------------------------------------------------------------
2440 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2441 dnl --------------------------------------------------------------------------
2442 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2443
2444 # If resolver functions are not in libc check for -lnsl or -lresolv.
2445 AC_CHECK_FUNC(gethostbyname_r,
2446     AC_MSG_RESULT(using libc's resolver),
2447     AC_CHECK_LIB(nsl,gethostbyname_r)
2448     AC_CHECK_LIB(resolv,gethostbyname_r))
2449
2450 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2451 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2452 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2453
2454 dnl ----------------------------
2455 dnl check sa_len of sockaddr
2456 dnl ----------------------------
2457 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2458    [
2459        AC_TRY_COMPILE(
2460           [
2461               #include <sys/socket.h>
2462           ], [
2463               struct sockaddr s; s.sa_len;
2464           ], [
2465              ac_cv_struct_sockaddr_sa_len=yes
2466           ], [ac_cv_struct_sockaddr_sa_len=no
2467           ]
2468        )
2469    ]
2470 )
2471
2472 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2473   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2474 fi
2475
2476 AC_FUNC_STRFTIME
2477 AC_FUNC_VPRINTF
2478 AC_FUNC_ALLOCA
2479 AC_FUNC_GETMNTENT
2480 AC_CHECK_FUNCS(getmntinfo, [AC_DEFINE(HAVE_GETMNTINFO)])
2481 AC_FUNC_CLOSEDIR_VOID
2482 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2483 # AC_FUNC_FNMATCH    dnl use local version
2484
2485 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2486
2487 AC_CHECK_LIB(sun, getpwnam)
2488
2489 AC_CHECK_HEADERS(zlib.h)
2490 AC_CHECK_LIB(z, deflate, [ZLIBS="-lz"])
2491 have_zlib=no
2492 if test x$ZLIBS = x-lz; then
2493    AC_DEFINE(HAVE_LIBZ)
2494    have_zlib=yes
2495 fi
2496 AC_SUBST(ZLIBS)
2497
2498 dnl
2499 dnl Check for lzo
2500 dnl
2501 AC_CHECK_HEADERS(lzo/lzoconf.h)
2502 AC_CHECK_HEADERS(lzo/lzo1x.h)
2503 AC_CHECK_LIB(lzo2, lzo1x_1_compress, [LZOLIBS="-llzo2"])
2504 have_lzo=no
2505 if test x$LZOLIBS = x-llzo2; then
2506    AC_DEFINE(HAVE_LZO)
2507    have_lzo=yes
2508 fi
2509 AC_SUBST(LZOLIBS)
2510
2511 dnl
2512 dnl Check for ACL support and libraries
2513 dnl
2514 support_acl=auto
2515 AC_ARG_ENABLE(acl,
2516    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2517    [
2518        if test x$enableval = xyes; then
2519           support_acl=yes
2520        elif test x$enableval = xno; then
2521           support_acl=no
2522        fi
2523    ]
2524 )
2525
2526 have_acl=no
2527 have_extended_acl=no
2528 if test x$support_acl = xyes -o x$support_acl = xauto; then
2529    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2530
2531    dnl
2532    dnl First check for acl_get_file in libc
2533    dnl
2534    AC_CHECK_FUNC(acl_get_file,
2535       [
2536           have_acl=yes
2537       ]
2538    )
2539
2540    dnl
2541    dnl Check for acl_get_file in libacl (Linux)
2542    dnl
2543    if test $have_acl = no; then
2544       AC_CHECK_LIB(acl, acl_get_file,
2545          [
2546              have_acl=yes
2547              FDLIBS="-lacl $FDLIBS"
2548          ]
2549       )
2550    fi
2551
2552    dnl
2553    dnl Check for acl_get_file in libpacl (OSF1)
2554    dnl and if ACL_TYPE_DEFAULT_DIR is defined.
2555    dnl
2556    if test $have_acl = no -a \
2557            x${HAVE_OSF1_OS_TRUE} = x; then
2558       AC_CHECK_LIB(pacl, acl_get_file,
2559          [
2560              have_acl=yes
2561              FDLIBS="-lpacl $FDLIBS"
2562          ]
2563       )
2564
2565       AC_MSG_CHECKING(for ACL_TYPE_DEFAULT_DIR in acl.h include file)
2566       grep ACL_TYPE_DEFAULT_DIR /usr/include/sys/acl.h > /dev/null 2>&1
2567       if test $? = 0; then
2568          AC_DEFINE(HAVE_ACL_TYPE_DEFAULT_DIR,1,[Defines if your system have the ACL_TYPE_DEFAULT_DIR acl type])
2569          AC_MSG_RESULT(yes)
2570       else
2571          AC_MSG_RESULT(no)
2572       fi
2573    fi
2574
2575    dnl
2576    dnl On OSX check for availability of ACL_TYPE_EXTENDED
2577    dnl
2578    if test $have_acl = yes -a \
2579            x${HAVE_DARWIN_OS_TRUE} = x; then
2580       AC_MSG_CHECKING(for ACL_TYPE_EXTENDED in acl.h include file)
2581       grep ACL_TYPE_EXTENDED /usr/include/sys/acl.h > /dev/null 2>&1
2582       if test $? = 0; then
2583          AC_DEFINE(HAVE_ACL_TYPE_EXTENDED,1,[Defines if your system have the ACL_TYPE_EXTENDED acl type])
2584          AC_MSG_RESULT(yes)
2585       else
2586          AC_MSG_RESULT(no)
2587       fi
2588    fi
2589
2590    dnl
2591    dnl On FreeBSD check for availability of ACL_TYPE_NFS4
2592    dnl
2593    if test $have_acl = yes -a \
2594            x${HAVE_FREEBSD_OS_TRUE} = x; then
2595       AC_MSG_CHECKING(for ACL_TYPE_NFS4 in acl.h include file)
2596       grep ACL_TYPE_NFS4 /usr/include/sys/acl.h > /dev/null 2>&1
2597       if test $? = 0; then
2598          AC_DEFINE(HAVE_ACL_TYPE_NFS4,1,[Defines if your system have the ACL_TYPE_NFS4 acl type])
2599          AC_MSG_RESULT(yes)
2600       else
2601          AC_MSG_RESULT(no)
2602       fi
2603    fi
2604
2605    dnl
2606    dnl Check for acltotext and acl_totext (Solaris)
2607    dnl
2608    if test $have_acl = no -a \
2609            x${HAVE_SUN_OS_TRUE} = x; then
2610       AC_CHECK_LIB(sec, acltotext,
2611          [
2612              have_acl=yes
2613              FDLIBS="-lsec $FDLIBS"
2614
2615              AC_CHECK_LIB(sec, acl_totext,
2616                 [
2617                     have_extended_acl=yes
2618                 ]
2619              )
2620          ]
2621       )
2622    fi
2623
2624    dnl
2625    dnl Check for acl_get and aclx_get (AIX)
2626    dnl
2627    if test $have_acl = no -a \
2628            x${HAVE_AIX_OS_TRUE} = x; then
2629       AC_CHECK_FUNC(acl_get,
2630          [
2631              have_acl=yes
2632
2633              AC_CHECK_FUNC(aclx_get,
2634                 [
2635                     have_extended_acl=yes
2636                 ]
2637              )
2638          ]
2639       )
2640    fi
2641
2642    if test x$support_acl = xyes -a $have_acl != yes; then
2643       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2644   please either load the acl libraries or rerun configure without --enable-acl])
2645    else
2646       if test $have_acl = yes; then
2647          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2648       fi
2649
2650       if test $have_extended_acl = yes; then
2651          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2652       fi
2653    fi
2654 fi
2655
2656 dnl
2657 dnl Check for XATTR support
2658 dnl
2659 support_xattr=auto
2660 AC_ARG_ENABLE(xattr,
2661    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2662    [
2663        if test x$enableval = xyes; then
2664           support_xattr=yes
2665        elif test x$enableval = xno; then
2666           support_xattr=no
2667        fi
2668    ]
2669 )
2670
2671 have_xattr=no
2672 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2673    dnl
2674    dnl First check for *BSD support
2675    dnl When running on a BSD variant
2676    dnl
2677    if test x${HAVE_FREEBSD_OS_TRUE} = x -o \
2678            x${HAVE_NETBSD_OS_TRUE} = x -o \
2679            x${HAVE_OPENBSD_OS_TRUE} = x; then
2680       AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2681       AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2682       AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2683          [
2684              have_xattr=yes
2685              AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2686              AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2687              AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2688          ]
2689       )
2690    
2691       if test $have_xattr = no; then
2692          AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2693             [
2694                 have_xattr=yes
2695                 AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2696                 AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2697                 AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2698             ]
2699          )
2700       fi
2701    
2702       if test $have_xattr = yes; then
2703          have_extattr_string_in_libc=no
2704          AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2705             [
2706                 have_extattr_string_in_libc=yes
2707                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2708                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2709             ]
2710          )
2711
2712          dnl
2713          dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2714          dnl
2715          if test $have_extattr_string_in_libc = no; then
2716             AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2717                [
2718                    AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2719                    AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2720                    FDLIBS="-lutil $FDLIBS"
2721                ]
2722             )
2723          fi
2724       fi
2725    fi
2726
2727    dnl
2728    dnl If we failed to find *BSD support try the AIX implementation of extented attributes (EA)
2729    dnl When running on AIX
2730    dnl
2731    if test $have_xattr = no -a \
2732            x${HAVE_AIX_OS_TRUE} = x; then
2733       AC_CHECK_HEADER(sys/ea.h, [ AC_DEFINE(HAVE_SYS_EA_H,1,[Defines if your system have the sys/ea.h header file])] , )
2734       AC_CHECK_FUNCS(llistea lgetea lsetea,
2735          [
2736              have_xattr=yes
2737              AC_DEFINE([HAVE_LLISTEA],1,[Define to 1 if you have the 'llistea' function.])
2738              AC_DEFINE([HAVE_LGETEA],1,[Define to 1 if you have the 'lgetea' function.])
2739              AC_DEFINE([HAVE_LSETEA],1,[Define to 1 if you have the 'lsetea' function.])
2740          ]
2741       )
2742
2743       if test $have_xattr = no; then
2744          AC_CHECK_FUNCS(listea getea setea,
2745             [
2746                 have_xattr=yes
2747                 AC_DEFINE([HAVE_LISTEA],1,[Define to 1 if you have the 'listea' function.])
2748                 AC_DEFINE([HAVE_GETEA],1,[Define to 1 if you have the 'getea' function.])
2749                 AC_DEFINE([HAVE_SETEA],1,[Define to 1 if you have the 'setea' function.])
2750             ]
2751          )
2752       fi
2753    fi
2754
2755    dnl
2756    dnl If we failed to find AIX support try the TRU64 implementation of extented attributes
2757    dnl when running on a TRU64 OS.
2758    dnl
2759    if test $have_xattr = no -a \
2760            x${HAVE_OSF1_OS_TRUE} = x; then
2761       AC_CHECK_HEADER(sys/proplist.h, [ AC_DEFINE(HAVE_SYS_PROPLIST_H,1,[Defines if your system have the sys/proplist.h header file])] , )
2762       AC_CHECK_FUNCS(getproplist get_proplist_entry sizeof_proplist_entry add_proplist_entry setproplist,
2763          [
2764              have_xattr=yes
2765              AC_DEFINE([HAVE_GETPROPLIST],1,[Define to 1 if you have the 'getproplist' function.])
2766              AC_DEFINE([HAVE_GET_PROPLIST_ENTRY],1,[Define to 1 if you have the 'get_proplist_entry' function.])
2767              AC_DEFINE([HAVE_SIZEOF_PROPLIST_ENTRY],1,[Define to 1 if you have the 'sizeof_proplist_entry' function.])
2768              AC_DEFINE([HAVE_ADD_PROPLIST_ENTRY],1,[Define to 1 if you have the 'add_proplist_entry' function.])
2769              AC_DEFINE([HAVE_SETPROPLIST],1,[Define to 1 if you have the 'setproplist' function.])
2770          ]
2771       )
2772    fi
2773
2774    dnl
2775    dnl If we failed to find TRU64 support try the SOLARIS implementation of extented and extensible attributes
2776    dnl when running on a Solaris.
2777    dnl
2778    if test $have_xattr = no -a \
2779            x${HAVE_SUN_OS_TRUE} = x; then
2780       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2781       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2782       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2783
2784       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2785          [
2786              have_xattr=yes
2787              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2788              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2789              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2790              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2791              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2792          ]
2793       )
2794
2795       if test $have_xattr = yes; then
2796          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2797             [
2798                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2799                 FDLIBS="-lnvpair $FDLIBS"
2800             ]
2801          )
2802       fi
2803    fi
2804
2805    dnl
2806    dnl If we failed to find Solaris support try the generic xattr support code
2807    dnl
2808    if test $have_xattr = no; then
2809       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2810       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2811          [
2812              have_xattr=yes
2813              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2814              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2815              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2816          ]
2817       )
2818
2819       if test $have_xattr = no; then
2820          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2821             [
2822                 have_xattr=yes
2823                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2824                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2825                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2826             ]
2827          )
2828       fi
2829    fi
2830
2831    if test x$support_xattr = xyes -a $have_xattr != yes; then
2832       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2833   please either load the xattr libraries or rerun configure without --enable-xattr])
2834    else
2835       if test $have_xattr = yes; then
2836          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2837       fi
2838    fi
2839 fi
2840
2841 dnl
2842 dnl Check for pthread libraries
2843 dnl
2844 PTHREAD_LIB=""
2845 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2846    [
2847        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2848           [
2849               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2850                  [
2851                      AC_CHECK_FUNC(pthread_create)
2852                  ]
2853               )
2854           ]
2855        )
2856    ]
2857 )
2858
2859 dnl
2860 dnl Check for headers, functions and libraries required to support
2861 dnl keeping readall capabilities
2862 dnl
2863 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2864 AC_CHECK_FUNCS(prctl setreuid)
2865 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2866 if test x$CAP_LIBS = x-lcap; then
2867    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2868 fi
2869 AC_SUBST(CAP_LIBS)
2870
2871 AC_SUBST(FDLIBS)
2872 AC_DEFINE(FDLIBS)
2873
2874 CFLAGS=${CFLAGS--O}
2875
2876 if test x$have_gcc = xyes ; then
2877    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2878    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2879 fi
2880 LDFLAGS=${LDFLAGS--O}
2881 CPPFLAGS="$CPPFLAGS"
2882 CFLAGS="$CFLAGS"
2883 AC_SUBST(DEBUG)
2884 AC_SUBST(DINCLUDE)
2885 AC_SUBST(CFLAGS)
2886 AC_SUBST(CPPFLAGS)
2887 AC_SUBST(LDFLAGS)
2888 AC_SUBST(X_CFLAGS)
2889 AC_SUBST(DEFS)
2890 AC_SUBST(LIBS)
2891 AC_SUBST(DLIB)
2892 AC_SUBST(X_LIBS)
2893 AC_SUBST(X_EXTRA_LIBS)
2894 AC_SUBST(WCFLAGS)
2895 AC_SUBST(WLDFLAGS)
2896 AC_SUBST(WRAPLIBS)
2897
2898 dnl extra configurable objects
2899 OBJLIST=
2900 AC_SUBST(OBJLIST)
2901
2902 lld="lld"
2903 llu="llu"
2904
2905 WCFLAGS=
2906 WLDFLAGS=
2907
2908 dnl
2909 dnl Finally we set appropriate distribution specific
2910 dnl  variables and defaults
2911 dnl
2912 dnl PFILES are platform specific files
2913 PFILES="platforms/Makefile"
2914 PSCMD="ps -e"
2915 WIN32=
2916 MACOSX=
2917 COMPRESS_MANPAGES=yes
2918
2919 hostname=`uname -n | cut -d '.' -f 1`
2920 if test x${hostname} = x ; then
2921    hostname="localhost"
2922 fi
2923 dnl Make sure hostname is resolved
2924 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2925 if test ! $? = 0; then
2926   hostname="localhost"
2927 fi
2928
2929 case "$DISTNAME" in
2930 aix)
2931    DISTVER=`uname -r`
2932    PSCMD="ps -e -o pid,comm"
2933    PFILES="${PFILES} \
2934       platforms/aix/Makefile"
2935    TAPEDRIVE="/dev/rmt0.1" 
2936   ;;     
2937 alpha)
2938    DISTVER=`uname -r`
2939    PTHREAD_LIB="-lpthread -lexc"
2940    if test "${CC}" = "gcc" ; then
2941       lld="lld"
2942       llu="llu"
2943    else
2944       lld="ld"
2945       llu="lu"
2946    fi
2947    TAPEDRIVE="/dev/nrmt0"
2948   ;;
2949 bsdi)
2950    DISTVER=`uname -a |awk '{print $3}'`
2951    TAPEDRIVE="/dev/nrmt0"
2952    PTHREAD_LIB="-pthread"
2953    CFLAGS="${CFLAGS} -pthread"
2954    PSCMD="ps -ax -o pid,command"
2955    lld="qd"
2956    llu="qu"
2957    PFILES="${PFILES} \
2958        platforms/bsdi/Makefile \
2959        platforms/bsdi/bacula-fd \
2960        platforms/bsdi/bacula-sd \
2961        platforms/bsdi/bacula-dir"
2962    largefile_support="yes"
2963   ;;
2964 cygwin)
2965    DISTVER=`uname -a |awk '{print $3}'`
2966    TAPEDRIVE="/dev/nrst0"
2967    WIN32=win32
2968    WCFLAGS="-mwindows"
2969    WLDFLAGS="-mwindows"
2970   ;;
2971 darwin)
2972    DISTVER=`uname -r`
2973    TAPEDRIVE="/dev/nst0"
2974    PSCMD="ps -e -o pid,command"
2975    MACOSX=macosx
2976    PFILES="${PFILES} \
2977       platforms/darwin/Makefile"
2978   ;;
2979 osx)
2980    DISTVER=`uname -r`
2981    TAPEDRIVE="/dev/nst0"
2982    PSCMD="ps -e -o pid,command"
2983    MACOSX=macosx
2984    PFILES="${PFILES} \
2985       platforms/osx/Makefile"
2986   ;;
2987 debian)
2988    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2989       DISTNAME="ubuntu"
2990    fi
2991    DISTVER=`cat /etc/debian_version`
2992    if test -f /etc/lsb-release ; then
2993       . /etc/lsb-release
2994       if test "x$DISTRIB_ID" != "x" ; then
2995          DISTNAME=$DISTRIB_ID
2996       fi
2997       if test "x$DISTRIB_RELEASE" != "x" ; then
2998          DISTVER=$DISTRIB_RELEASE
2999       fi
3000    fi
3001    if test "$DISTNAME" = "Ubuntu" ; then
3002       DISTNAME="ubuntu"
3003    fi
3004    TAPEDRIVE="/dev/nst0"
3005    PSCMD="ps -e -o pid,command"
3006    if test "$DISTNAME" = "ubuntu" ; then
3007       PFILES="${PFILES} \
3008          platforms/ubuntu/Makefile \
3009          platforms/ubuntu/bacula-fd \
3010          platforms/ubuntu/bacula-sd \
3011          platforms/ubuntu/bacula-dir"
3012    else 
3013       PFILES="${PFILES} \
3014          platforms/debian/Makefile \
3015          platforms/debian/bacula-fd \
3016          platforms/debian/bacula-sd \
3017          platforms/debian/bacula-dir"
3018    fi
3019   ;;
3020 freebsd)
3021    DISTVER=`uname -a |awk '{print $3}'`
3022    VER=`echo $DISTVER | cut -c 1`
3023    if test x$VER = x4 ; then
3024       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
3025       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
3026    fi
3027    lld="qd"
3028    llu="qu"
3029    TAPEDRIVE="/dev/nrsa0"
3030    PSCMD="ps -ax -o pid,command"
3031    PFILES="${PFILES} \
3032        platforms/freebsd/Makefile \
3033        platforms/freebsd/bacula-fd \
3034        platforms/freebsd/bacula-sd \
3035        platforms/freebsd/bacula-dir"
3036    largefile_support="yes"
3037   ;;
3038 hpux)
3039    PSCMD="UNIX95=1; ps -e -o pid,comm"
3040    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
3041    DISTVER=`uname -r`
3042    TAPEDRIVE="/dev/rmt/0hnb"
3043    PTHREAD_LIB="-lpthread"
3044    AC_DEFINE([_INCLUDE_LONGLONG])
3045   ;;
3046 irix)
3047    DISTVER=`uname -r`
3048    TAPEDRIVE="/dev/rmt/0cbn"
3049    PSCMD="ps -e -o pid,comm"
3050    PFILES="${PFILES} \
3051        platforms/irix/Makefile \
3052        platforms/irix/bacula-fd \
3053        platforms/irix/bacula-sd \
3054        platforms/irix/bacula-dir"
3055   ;;
3056 netbsd)
3057    DISTVER=`uname -a |awk '{print $3}'`
3058    lld="qd"
3059    llu="qu"
3060    TAPEDRIVE="/dev/nrst0"
3061    PSCMD="ps -ax -o pid,command"
3062    PTHREAD_LIB="-pthread"
3063    CFLAGS="${CFLAGS} -pthread"
3064   ;;
3065 openbsd)
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    PFILES="${PFILES} \
3074        platforms/openbsd/Makefile \
3075        platforms/openbsd/bacula-fd \
3076        platforms/openbsd/bacula-sd \
3077        platforms/openbsd/bacula-dir"
3078   ;;
3079 redhat)
3080    if test -f /etc/whitebox-release ; then
3081       f=/etc/whitebox-release
3082    else
3083       f=/etc/redhat-release
3084    fi
3085    if test `cat $f | grep release |\
3086          cut -f 3 -d ' '`x = "Enterprise"x ; then
3087       DISTVER="Enterprise "`cat $f | grep release |\
3088           cut -f 6 -d ' '`
3089    else
3090        DISTVER=`cat /etc/redhat-release | grep release |\
3091            cut -f 5 -d ' '`
3092    fi
3093    TAPEDRIVE="/dev/nst0"
3094    PSCMD="ps -e -o pid,command"
3095    PFILES="${PFILES} \
3096        platforms/redhat/Makefile \
3097        platforms/redhat/bacula-fd \
3098        platforms/redhat/bacula-sd \
3099        platforms/redhat/bacula-dir
3100        "
3101   ;;
3102 mandrake)
3103    DISTVER=`cat /etc/mandrake-release | grep release |\
3104       cut -f 5 -d ' '`
3105    TAPEDRIVE="/dev/nst0"
3106    PSCMD="ps -e -o pid,command"
3107    PFILES="${PFILES} \
3108        platforms/mandrake/Makefile \
3109        platforms/mandrake/bacula-fd \
3110        platforms/mandrake/bacula-sd \
3111        platforms/mandrake/bacula-dir \
3112        "
3113   ;;
3114 gentoo)
3115    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
3116    TAPEDRIVE="/dev/nst0"
3117    PSCMD="ps -e -o pid,command"
3118    PFILES="${PFILES} \
3119        platforms/gentoo/Makefile \
3120     platforms/gentoo/bacula-init \
3121        platforms/gentoo/bacula-fd \
3122        platforms/gentoo/bacula-sd \
3123        platforms/gentoo/bacula-dir"
3124   ;;
3125 slackware)
3126    DISTVER=`cat /etc/slackware-version`
3127    TAPEDRIVE="/dev/nst0"
3128    PSCMD="ps -e -o pid,command"
3129    PFILES="${PFILES} \
3130        platforms/slackware/Makefile \
3131        platforms/slackware/rc.bacula-fd \
3132        platforms/slackware/rc.bacula-sd \
3133        platforms/slackware/rc.bacula-dir\
3134        platforms/slackware/functions.bacula"
3135   ;;
3136 solaris)
3137    DISTVER=`uname -r`
3138    TAPEDRIVE="/dev/rmt/0cbn"
3139    PSCMD="ps -e -o pid,comm"
3140    PFILES="${PFILES} \
3141        platforms/solaris/Makefile \
3142        platforms/solaris/bacula-fd \
3143        platforms/solaris/bacula-sd \
3144        platforms/solaris/bacula-dir"
3145    COMPRESS_MANPAGES=
3146    case ${DISTVER} in
3147    5.5|5.6)
3148       AC_DEFINE(HAVE_OLD_SOCKOPT)
3149       AC_DEFINE(USE_THR_SETCONCURRENCY)
3150       ;;
3151    5.7|5.8)
3152       AC_DEFINE(USE_THR_SETCONCURRENCY)
3153       ;;
3154    *)
3155       ;;
3156    esac
3157    LIBS="$LIBS -lresolv -lrt"
3158   ;;
3159 suse)
3160    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3161        cut -f 3 -d ' '`
3162    TAPEDRIVE="/dev/nst0"
3163    PSCMD="ps -e -o pid,command"
3164    PFILES="${PFILES} \
3165        platforms/suse/Makefile \
3166        platforms/suse/bacula-fd \
3167        platforms/suse/bacula-sd \
3168        platforms/suse/bacula-dir \
3169        platforms/suse/bacula"
3170   ;;
3171 suse5)
3172    DISTNAME=suse
3173    DISTVER=5.x
3174    TAPEDRIVE="/dev/nst0"
3175    PSCMD="ps -e -o pid,command"
3176    PFILES="${PFILES} \
3177        platforms/suse/Makefile \
3178        platforms/suse/bacula-fd \
3179        platforms/suse/bacula-sd \
3180        platforms/suse/bacula-dir"
3181   ;;
3182 unknown)
3183    DISTVER=unknown
3184    TAPEDRIVE="/dev/nst0"
3185   ;;
3186 *)
3187   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3188   ;;
3189 esac  
3190
3191 AC_SUBST(hostname)
3192
3193 LIBS="$PTHREAD_LIB $LIBS"
3194
3195 AC_DEFINE_UNQUOTED(lld, "$lld")
3196 AC_DEFINE_UNQUOTED(llu, "$llu")
3197 AC_SUBST(TAPEDRIVE)
3198 AC_SUBST(PSCMD)
3199 AC_SUBST(WIN32)
3200 AC_SUBST(MACOSX)
3201 AC_SUBST(DISTNAME)
3202 AC_SUBST(DISTVER)
3203 AC_SUBST(COMPRESS_MANPAGES)
3204
3205 dnl common parts of the Makefile
3206 MCOMMON=./autoconf/Make.common
3207 AC_SUBST_FILE(MCOMMON)
3208
3209 dnl Insanity check
3210 if test "x${subsysdir}" = "x${sbindir}" ; then
3211    echo " "
3212    echo " "
3213    echo "You have set both --sbindir and --with-subsys-dir"
3214    echo "  equal to: ${subsysdir} "
3215    echo "This is not permitted. Please reconfigure."
3216    echo " "
3217    echo "Aborting configuration ..."
3218    echo " "
3219    echo " "
3220    exit 1
3221 fi 
3222
3223 AC_OUTPUT([autoconf/Make.common \
3224            Makefile \
3225            manpages/Makefile \
3226            scripts/btraceback \
3227            scripts/bconsole \
3228            scripts/bacula \
3229            scripts/bacula-ctl-dir \
3230            scripts/bacula-ctl-fd \
3231            scripts/bacula-ctl-sd \
3232            scripts/devel_bacula \
3233            scripts/Makefile \
3234            scripts/logrotate \
3235            scripts/bacula.desktop.gnome1 \
3236            scripts/bacula.desktop.gnome2 \
3237            scripts/bacula.desktop.gnome1.consolehelper \
3238            scripts/bacula.desktop.gnome2.consolehelper \
3239            scripts/bacula.desktop.gnome1.xsu \
3240            scripts/bacula.desktop.gnome2.xsu \
3241            scripts/bgnome-console.console_apps \
3242            scripts/mtx-changer \
3243            scripts/disk-changer \
3244            scripts/dvd-handler \
3245            scripts/dvd-simulator \
3246            scripts/bacula-tray-monitor.desktop \
3247            scripts/logwatch/Makefile \
3248            scripts/logwatch/logfile.bacula.conf \
3249            scripts/wxconsole.console_apps \
3250            scripts/wxconsole.desktop.consolehelper \
3251            scripts/wxconsole.desktop.xsu \
3252            scripts/bat.desktop \
3253            scripts/bat.desktop.xsu \
3254            scripts/bat.desktop.consolehelper \
3255            scripts/bat.console_apps \
3256            src/Makefile \
3257            src/host.h \
3258            src/console/Makefile \
3259            src/console/bconsole.conf \
3260            src/qt-console/tray-monitor/tray-monitor.pro \
3261            src/qt-console/tray-monitor/tray-monitor.conf \
3262            src/qt-console/bat.conf \
3263            src/qt-console/bat.pro \
3264            src/qt-console/bat.pro.mingw32 \
3265            src/qt-console/install_conf_file \
3266            src/wx-console/Makefile \
3267            src/wx-console/bwx-console.conf \
3268            src/tray-monitor/Makefile \
3269            src/tray-monitor/tray-monitor.conf \
3270            src/dird/Makefile \
3271            src/dird/bacula-dir.conf \
3272            src/lib/Makefile \
3273            src/stored/Makefile \
3274            src/stored/bacula-sd.conf \
3275            src/filed/Makefile \
3276            src/filed/bacula-fd.conf \
3277            src/cats/Makefile \
3278            src/cats/make_catalog_backup.pl \
3279            src/cats/make_catalog_backup \
3280            src/cats/delete_catalog_backup \
3281            src/cats/create_postgresql_database \
3282            src/cats/update_postgresql_tables \
3283            src/cats/make_postgresql_tables \
3284            src/cats/grant_postgresql_privileges \
3285            src/cats/drop_postgresql_tables \
3286            src/cats/drop_postgresql_database \
3287            src/cats/create_mysql_database \
3288            src/cats/update_mysql_tables \
3289            src/cats/make_mysql_tables \
3290            src/cats/grant_mysql_privileges \
3291            src/cats/drop_mysql_tables \
3292            src/cats/drop_mysql_database \
3293            src/cats/create_sqlite3_database \
3294            src/cats/update_sqlite3_tables \
3295            src/cats/make_sqlite3_tables \
3296            src/cats/grant_sqlite3_privileges \
3297            src/cats/drop_sqlite3_tables \
3298            src/cats/drop_sqlite3_database \
3299            src/cats/sqlite \
3300            src/cats/mysql \
3301            src/cats/create_bacula_database \
3302            src/cats/update_bacula_tables \
3303            src/cats/grant_bacula_privileges \
3304            src/cats/make_bacula_tables \
3305            src/cats/drop_bacula_tables \
3306            src/cats/drop_bacula_database \
3307            src/cats/install-default-backend \
3308            src/findlib/Makefile \
3309            src/tools/Makefile \
3310            src/plugins/fd/Makefile \
3311            src/plugins/sd/Makefile \
3312            src/plugins/dir/Makefile \
3313            src/win32/Makefile.inc \
3314            po/Makefile.in \
3315            updatedb/update_mysql_tables_9_to_10 \
3316            updatedb/update_sqlite3_tables_9_to_10 \
3317            updatedb/update_postgresql_tables_9_to_10 \
3318            updatedb/update_mysql_tables_10_to_11 \
3319            updatedb/update_sqlite3_tables_10_to_11 \
3320            updatedb/update_postgresql_tables_10_to_11 \
3321            updatedb/update_mysql_tables_11_to_12 \
3322            updatedb/update_sqlite3_tables_11_to_12 \
3323            updatedb/update_postgresql_tables_11_to_12 \
3324            examples/nagios/check_bacula/Makefile \
3325            $PFILES ],  
3326      [ ]
3327 )
3328
3329 if test "${support_bat}" = "yes" ; then
3330    if test "x$QMAKE" = "xnone"; then
3331       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3332    fi
3333
3334    cd src/qt-console
3335    echo "Creating bat Makefile"
3336    touch bat
3337    chmod 755 bat
3338    rm -f Makefile
3339    $QMAKE
3340    ${MAKE:-make} clean
3341    cd ${BUILD_DIR}
3342 fi
3343
3344 dnl
3345 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3346 dnl requires gcc).  If it's not, don't rebuild dependencies
3347 dnl
3348 if test X"$GCC" = "Xyes" ; then
3349   echo "Doing make of dependencies"
3350   ${MAKE:-make} depend
3351 fi
3352
3353 cd src/qt-console
3354 chmod 755 install_conf_file build-depkgs-qt-console
3355 cd ${BUILD_DIR}
3356
3357 cd scripts
3358 chmod 755 bacula btraceback mtx-changer
3359 chmod 755 dvd-handler dvd-simulator
3360 chmod 755 bconsole mtx-changer devel_bacula logrotate
3361 cd ..
3362
3363 c=updatedb
3364 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3365 chmod 755 $c/update_postgresql_tables_10_to_11
3366 chmod 755 $c/update_mysql_tables_11_to_12   $c/update_sqlite3_tables_11_to_12
3367 chmod 755 $c/update_postgresql_tables_11_to_12
3368
3369
3370 c=src/cats
3371
3372 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3373 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3374
3375 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3376 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3377
3378 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3379 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3380
3381 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3382 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3383
3384 #chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3385 #chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3386
3387
3388 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3389 chmod 755 $c/sqlite
3390 chmod 755 $c/mysql
3391
3392 chmod 755 src/win32/build-depkgs-mingw32
3393
3394 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3395    largefile_support="yes"
3396 fi
3397
3398 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3399 if test X"$GCC" = "Xyes" ; then
3400    dnl
3401    dnl A whole lot of hand springs to get the compiler version.
3402    dnl  This is because gcc changed the output in version 3.0
3403    dnl
3404    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3405    if test "x${CCVERSION}" = "x" ; then
3406       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3407    fi
3408    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3409    if test x"${CXXVERSION}" = x ; then
3410       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3411    fi
3412 fi
3413
3414 # clean up any old junk
3415 echo " "
3416 echo "Cleaning up"
3417 echo " "
3418 ${MAKE:-make} clean
3419
3420 echo "
3421 Configuration on `date`:
3422
3423    Host:                     ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3424    Bacula version:           ${BACULA} ${VERSION} (${DATE})
3425    Source code location:     ${srcdir}
3426    Install binaries:         ${sbindir}
3427    Install libraries:        ${libdir}
3428    Install config files:     ${sysconfdir}
3429    Scripts directory:        ${scriptdir}
3430    Archive directory:        ${archivedir}
3431    Working directory:        ${working_dir}
3432    PID directory:            ${piddir}
3433    Subsys directory:         ${subsysdir}
3434    Man directory:            ${mandir}
3435    Data directory:           ${datarootdir}
3436    Plugin directory:         ${plugindir}
3437    C Compiler:               ${CC} ${CCVERSION}
3438    C++ Compiler:             ${CXX} ${CXXVERSION}
3439    Compiler flags:           ${WCFLAGS} ${CFLAGS} 
3440    Linker flags:             ${WLDFLAGS} ${LDFLAGS}
3441    Libraries:                ${LIBS}
3442    Statically Linked Tools:  ${support_static_tools}
3443    Statically Linked FD:     ${support_static_fd}
3444    Statically Linked SD:     ${support_static_sd}
3445    Statically Linked DIR:    ${support_static_dir}
3446    Statically Linked CONS:   ${support_static_cons}
3447    Database backends:        ${db_backends}
3448    Database port:            ${db_port}
3449    Database name:            ${db_name}
3450    Database user:            ${db_user}
3451  
3452    Job Output Email:         ${job_email}
3453    Traceback Email:          ${dump_email}
3454    SMTP Host Address:        ${smtp_host}
3455  
3456    Director Port:            ${dir_port}
3457    File daemon Port:         ${fd_port}
3458    Storage daemon Port:      ${sd_port}
3459  
3460    Director User:            ${dir_user}
3461    Director Group:           ${dir_group}
3462    Storage Daemon User:      ${sd_user}
3463    Storage DaemonGroup:      ${sd_group}
3464    File Daemon User:         ${fd_user}
3465    File Daemon Group:        ${fd_group}
3466  
3467    Large file support:      $largefile_support
3468    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3469    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3470    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3471    TLS support:             ${support_tls}
3472    Encryption support:      ${support_crypto} 
3473    ZLIB support:            ${have_zlib}
3474    LZO support:             ${have_lzo}
3475    enable-smartalloc:       ${support_smartalloc} 
3476    enable-lockmgr:          ${support_lockmgr}
3477    bat support:             ${support_bat}
3478    enable-gnome:            ${support_gnome} ${gnome_version}
3479    enable-bwx-console:      ${support_wx_console} ${wx_version}
3480    enable-tray-monitor:     ${support_tray_monitor}
3481    client-only:             ${build_client_only}
3482    build-dird:              ${build_dird}
3483    build-stored:            ${build_stored}
3484    Plugin support:          ${have_plugins}
3485    ACL support:             ${have_acl}
3486    XATTR support:           ${have_xattr}
3487    Python support:          ${support_python} ${PYTHON_LIBS}
3488    Batch insert enabled:    ${support_batch_insert}
3489
3490   " > config.out
3491
3492 # create a small shell script useful for support with
3493 # configure options and config.out info
3494 cat > scripts/bacula_config << EOF
3495 #!/bin/sh
3496 cat << __EOC__
3497 $ $0 $ac_configure_args
3498 EOF
3499 cat config.out >> scripts/bacula_config
3500 echo __EOC__ >> scripts/bacula_config
3501 chmod 755 scripts/bacula_config
3502
3503 cat config.out