]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
525a0e2a552c89dfb41a0c256bd19d09a93cce01
[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              if test $have_afs = yes; then
2548                 dnl
2549                 dnl Because of possible naming conflict with AFS libacl make sure we use the one in /usr/lib64 or /usr/lib !!!
2550                 dnl
2551                 if test -d /usr/lib64/; then
2552                    FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
2553                 else
2554                    FDLIBS="-L/usr/lib -lacl $FDLIBS"
2555                 fi
2556              else
2557                 FDLIBS="-lacl $FDLIBS"
2558              fi
2559          ]
2560       )
2561    fi
2562
2563    dnl
2564    dnl Check for acl_get_file in libpacl (OSF1)
2565    dnl and if ACL_TYPE_DEFAULT_DIR is defined.
2566    dnl
2567    if test $have_acl = no -a \
2568            x${HAVE_OSF1_OS_TRUE} = x; then
2569       AC_CHECK_LIB(pacl, acl_get_file,
2570          [
2571              have_acl=yes
2572              FDLIBS="-lpacl $FDLIBS"
2573          ]
2574       )
2575
2576       AC_MSG_CHECKING(for ACL_TYPE_DEFAULT_DIR in acl.h include file)
2577       grep ACL_TYPE_DEFAULT_DIR /usr/include/sys/acl.h > /dev/null 2>&1
2578       if test $? = 0; then
2579          AC_DEFINE(HAVE_ACL_TYPE_DEFAULT_DIR,1,[Defines if your system have the ACL_TYPE_DEFAULT_DIR acl type])
2580          AC_MSG_RESULT(yes)
2581       else
2582          AC_MSG_RESULT(no)
2583       fi
2584    fi
2585
2586    dnl
2587    dnl On OSX check for availability of ACL_TYPE_EXTENDED
2588    dnl
2589    if test $have_acl = yes -a \
2590            x${HAVE_DARWIN_OS_TRUE} = x; then
2591       AC_MSG_CHECKING(for ACL_TYPE_EXTENDED in acl.h include file)
2592       grep ACL_TYPE_EXTENDED /usr/include/sys/acl.h > /dev/null 2>&1
2593       if test $? = 0; then
2594          AC_DEFINE(HAVE_ACL_TYPE_EXTENDED,1,[Defines if your system have the ACL_TYPE_EXTENDED acl type])
2595          AC_MSG_RESULT(yes)
2596       else
2597          AC_MSG_RESULT(no)
2598       fi
2599    fi
2600
2601    dnl
2602    dnl On FreeBSD check for availability of ACL_TYPE_NFS4
2603    dnl
2604    if test $have_acl = yes -a \
2605            x${HAVE_FREEBSD_OS_TRUE} = x; then
2606       AC_MSG_CHECKING(for ACL_TYPE_NFS4 in acl.h include file)
2607       grep ACL_TYPE_NFS4 /usr/include/sys/acl.h > /dev/null 2>&1
2608       if test $? = 0; then
2609          AC_DEFINE(HAVE_ACL_TYPE_NFS4,1,[Defines if your system have the ACL_TYPE_NFS4 acl type])
2610          AC_MSG_RESULT(yes)
2611       else
2612          AC_MSG_RESULT(no)
2613       fi
2614    fi
2615
2616    dnl
2617    dnl Check for acltotext and acl_totext (Solaris)
2618    dnl
2619    if test $have_acl = no -a \
2620            x${HAVE_SUN_OS_TRUE} = x; then
2621       AC_CHECK_LIB(sec, acltotext,
2622          [
2623              have_acl=yes
2624              FDLIBS="-lsec $FDLIBS"
2625
2626              AC_CHECK_LIB(sec, acl_totext,
2627                 [
2628                     have_extended_acl=yes
2629                 ]
2630              )
2631          ]
2632       )
2633    fi
2634
2635    dnl
2636    dnl Check for acl_get and aclx_get (AIX)
2637    dnl
2638    if test $have_acl = no -a \
2639            x${HAVE_AIX_OS_TRUE} = x; then
2640       AC_CHECK_FUNC(acl_get,
2641          [
2642              have_acl=yes
2643
2644              AC_CHECK_FUNC(aclx_get,
2645                 [
2646                     have_extended_acl=yes
2647                 ]
2648              )
2649          ]
2650       )
2651    fi
2652
2653    if test x$support_acl = xyes -a $have_acl != yes; then
2654       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2655   please either load the acl libraries or rerun configure without --enable-acl])
2656    else
2657       if test $have_acl = yes; then
2658          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2659       fi
2660
2661       if test $have_extended_acl = yes; then
2662          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2663       fi
2664    fi
2665 fi
2666
2667 dnl
2668 dnl Check for XATTR support
2669 dnl
2670 support_xattr=auto
2671 AC_ARG_ENABLE(xattr,
2672    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2673    [
2674        if test x$enableval = xyes; then
2675           support_xattr=yes
2676        elif test x$enableval = xno; then
2677           support_xattr=no
2678        fi
2679    ]
2680 )
2681
2682 have_xattr=no
2683 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2684    dnl
2685    dnl First check for *BSD support
2686    dnl When running on a BSD variant
2687    dnl
2688    if test x${HAVE_FREEBSD_OS_TRUE} = x -o \
2689            x${HAVE_NETBSD_OS_TRUE} = x -o \
2690            x${HAVE_OPENBSD_OS_TRUE} = x; then
2691       AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2692       AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2693       AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2694          [
2695              have_xattr=yes
2696              AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2697              AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2698              AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2699          ]
2700       )
2701    
2702       if test $have_xattr = no; then
2703          AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2704             [
2705                 have_xattr=yes
2706                 AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2707                 AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2708                 AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2709             ]
2710          )
2711       fi
2712    
2713       if test $have_xattr = yes; then
2714          have_extattr_string_in_libc=no
2715          AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2716             [
2717                 have_extattr_string_in_libc=yes
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             ]
2721          )
2722
2723          dnl
2724          dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2725          dnl
2726          if test $have_extattr_string_in_libc = no; then
2727             AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2728                [
2729                    AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2730                    AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2731                    FDLIBS="-lutil $FDLIBS"
2732                ]
2733             )
2734          fi
2735       fi
2736    fi
2737
2738    dnl
2739    dnl If we failed to find *BSD support try the AIX implementation of extented attributes (EA)
2740    dnl When running on AIX
2741    dnl
2742    if test $have_xattr = no -a \
2743            x${HAVE_AIX_OS_TRUE} = x; then
2744       AC_CHECK_HEADER(sys/ea.h, [ AC_DEFINE(HAVE_SYS_EA_H,1,[Defines if your system have the sys/ea.h header file])] , )
2745       AC_CHECK_FUNCS(llistea lgetea lsetea,
2746          [
2747              have_xattr=yes
2748              AC_DEFINE([HAVE_LLISTEA],1,[Define to 1 if you have the 'llistea' function.])
2749              AC_DEFINE([HAVE_LGETEA],1,[Define to 1 if you have the 'lgetea' function.])
2750              AC_DEFINE([HAVE_LSETEA],1,[Define to 1 if you have the 'lsetea' function.])
2751          ]
2752       )
2753
2754       if test $have_xattr = no; then
2755          AC_CHECK_FUNCS(listea getea setea,
2756             [
2757                 have_xattr=yes
2758                 AC_DEFINE([HAVE_LISTEA],1,[Define to 1 if you have the 'listea' function.])
2759                 AC_DEFINE([HAVE_GETEA],1,[Define to 1 if you have the 'getea' function.])
2760                 AC_DEFINE([HAVE_SETEA],1,[Define to 1 if you have the 'setea' function.])
2761             ]
2762          )
2763       fi
2764    fi
2765
2766    dnl
2767    dnl If we failed to find AIX support try the TRU64 implementation of extented attributes
2768    dnl when running on a TRU64 OS.
2769    dnl
2770    if test $have_xattr = no -a \
2771            x${HAVE_OSF1_OS_TRUE} = x; then
2772       AC_CHECK_HEADER(sys/proplist.h, [ AC_DEFINE(HAVE_SYS_PROPLIST_H,1,[Defines if your system have the sys/proplist.h header file])] , )
2773       AC_CHECK_FUNCS(getproplist get_proplist_entry sizeof_proplist_entry add_proplist_entry setproplist,
2774          [
2775              have_xattr=yes
2776              AC_DEFINE([HAVE_GETPROPLIST],1,[Define to 1 if you have the 'getproplist' function.])
2777              AC_DEFINE([HAVE_GET_PROPLIST_ENTRY],1,[Define to 1 if you have the 'get_proplist_entry' function.])
2778              AC_DEFINE([HAVE_SIZEOF_PROPLIST_ENTRY],1,[Define to 1 if you have the 'sizeof_proplist_entry' function.])
2779              AC_DEFINE([HAVE_ADD_PROPLIST_ENTRY],1,[Define to 1 if you have the 'add_proplist_entry' function.])
2780              AC_DEFINE([HAVE_SETPROPLIST],1,[Define to 1 if you have the 'setproplist' function.])
2781          ]
2782       )
2783    fi
2784
2785    dnl
2786    dnl If we failed to find TRU64 support try the SOLARIS implementation of extented and extensible attributes
2787    dnl when running on a Solaris.
2788    dnl
2789    if test $have_xattr = no -a \
2790            x${HAVE_SUN_OS_TRUE} = x; then
2791       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2792       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2793       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2794
2795       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2796          [
2797              have_xattr=yes
2798              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2799              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2800              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2801              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2802              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2803          ]
2804       )
2805
2806       if test $have_xattr = yes; then
2807          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2808             [
2809                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2810                 FDLIBS="-lnvpair $FDLIBS"
2811             ]
2812          )
2813       fi
2814    fi
2815
2816    dnl
2817    dnl If we failed to find Solaris support try the generic xattr support code
2818    dnl
2819    if test $have_xattr = no; then
2820       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2821       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2822          [
2823              have_xattr=yes
2824              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2825              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2826              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2827          ]
2828       )
2829
2830       if test $have_xattr = no; then
2831          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2832             [
2833                 have_xattr=yes
2834                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2835                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2836                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2837             ]
2838          )
2839       fi
2840    fi
2841
2842    if test x$support_xattr = xyes -a $have_xattr != yes; then
2843       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2844   please either load the xattr libraries or rerun configure without --enable-xattr])
2845    else
2846       if test $have_xattr = yes; then
2847          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2848       fi
2849    fi
2850 fi
2851
2852 dnl
2853 dnl Check for pthread libraries
2854 dnl
2855 PTHREAD_LIB=""
2856 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2857    [
2858        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2859           [
2860               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2861                  [
2862                      AC_CHECK_FUNC(pthread_create)
2863                  ]
2864               )
2865           ]
2866        )
2867    ]
2868 )
2869
2870 dnl
2871 dnl Check for headers, functions and libraries required to support
2872 dnl keeping readall capabilities
2873 dnl
2874 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2875 AC_CHECK_FUNCS(prctl setreuid)
2876 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2877 if test x$CAP_LIBS = x-lcap; then
2878    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2879 fi
2880 AC_SUBST(CAP_LIBS)
2881
2882 AC_SUBST(FDLIBS)
2883 AC_DEFINE(FDLIBS)
2884
2885 CFLAGS=${CFLAGS--O}
2886
2887 if test x$have_gcc = xyes ; then
2888    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2889    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2890 fi
2891 LDFLAGS=${LDFLAGS--O}
2892 CPPFLAGS="$CPPFLAGS"
2893 CFLAGS="$CFLAGS"
2894 AC_SUBST(DEBUG)
2895 AC_SUBST(DINCLUDE)
2896 AC_SUBST(CFLAGS)
2897 AC_SUBST(CPPFLAGS)
2898 AC_SUBST(LDFLAGS)
2899 AC_SUBST(X_CFLAGS)
2900 AC_SUBST(DEFS)
2901 AC_SUBST(LIBS)
2902 AC_SUBST(DLIB)
2903 AC_SUBST(X_LIBS)
2904 AC_SUBST(X_EXTRA_LIBS)
2905 AC_SUBST(WCFLAGS)
2906 AC_SUBST(WLDFLAGS)
2907 AC_SUBST(WRAPLIBS)
2908
2909 dnl extra configurable objects
2910 OBJLIST=
2911 AC_SUBST(OBJLIST)
2912
2913 lld="lld"
2914 llu="llu"
2915
2916 WCFLAGS=
2917 WLDFLAGS=
2918
2919 dnl
2920 dnl Finally we set appropriate distribution specific
2921 dnl  variables and defaults
2922 dnl
2923 dnl PFILES are platform specific files
2924 PFILES="platforms/Makefile"
2925 PSCMD="ps -e"
2926 WIN32=
2927 MACOSX=
2928 COMPRESS_MANPAGES=yes
2929
2930 hostname=`uname -n | cut -d '.' -f 1`
2931 if test x${hostname} = x ; then
2932    hostname="localhost"
2933 fi
2934 dnl Make sure hostname is resolved
2935 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2936 if test ! $? = 0; then
2937   hostname="localhost"
2938 fi
2939
2940 case "$DISTNAME" in
2941 aix)
2942    DISTVER=`uname -r`
2943    PSCMD="ps -e -o pid,comm"
2944    PFILES="${PFILES} \
2945       platforms/aix/Makefile"
2946    TAPEDRIVE="/dev/rmt0.1" 
2947   ;;     
2948 alpha)
2949    DISTVER=`uname -r`
2950    PTHREAD_LIB="-lpthread -lexc"
2951    if test "${CC}" = "gcc" ; then
2952       lld="lld"
2953       llu="llu"
2954    else
2955       lld="ld"
2956       llu="lu"
2957    fi
2958    TAPEDRIVE="/dev/nrmt0"
2959   ;;
2960 bsdi)
2961    DISTVER=`uname -a |awk '{print $3}'`
2962    TAPEDRIVE="/dev/nrmt0"
2963    PTHREAD_LIB="-pthread"
2964    CFLAGS="${CFLAGS} -pthread"
2965    PSCMD="ps -ax -o pid,command"
2966    lld="qd"
2967    llu="qu"
2968    PFILES="${PFILES} \
2969        platforms/bsdi/Makefile \
2970        platforms/bsdi/bacula-fd \
2971        platforms/bsdi/bacula-sd \
2972        platforms/bsdi/bacula-dir"
2973    largefile_support="yes"
2974   ;;
2975 cygwin)
2976    DISTVER=`uname -a |awk '{print $3}'`
2977    TAPEDRIVE="/dev/nrst0"
2978    WIN32=win32
2979    WCFLAGS="-mwindows"
2980    WLDFLAGS="-mwindows"
2981   ;;
2982 darwin)
2983    DISTVER=`uname -r`
2984    TAPEDRIVE="/dev/nst0"
2985    PSCMD="ps -e -o pid,command"
2986    MACOSX=macosx
2987    PFILES="${PFILES} \
2988       platforms/darwin/Makefile"
2989   ;;
2990 osx)
2991    DISTVER=`uname -r`
2992    TAPEDRIVE="/dev/nst0"
2993    PSCMD="ps -e -o pid,command"
2994    MACOSX=macosx
2995    PFILES="${PFILES} \
2996       platforms/osx/Makefile"
2997   ;;
2998 debian)
2999    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
3000       DISTNAME="ubuntu"
3001    fi
3002    DISTVER=`cat /etc/debian_version`
3003    if test -f /etc/lsb-release ; then
3004       . /etc/lsb-release
3005       if test "x$DISTRIB_ID" != "x" ; then
3006          DISTNAME=$DISTRIB_ID
3007       fi
3008       if test "x$DISTRIB_RELEASE" != "x" ; then
3009          DISTVER=$DISTRIB_RELEASE
3010       fi
3011    fi
3012    if test "$DISTNAME" = "Ubuntu" ; then
3013       DISTNAME="ubuntu"
3014    fi
3015    TAPEDRIVE="/dev/nst0"
3016    PSCMD="ps -e -o pid,command"
3017    if test "$DISTNAME" = "ubuntu" ; then
3018       PFILES="${PFILES} \
3019          platforms/ubuntu/Makefile \
3020          platforms/ubuntu/bacula-fd \
3021          platforms/ubuntu/bacula-sd \
3022          platforms/ubuntu/bacula-dir"
3023    else 
3024       PFILES="${PFILES} \
3025          platforms/debian/Makefile \
3026          platforms/debian/bacula-fd \
3027          platforms/debian/bacula-sd \
3028          platforms/debian/bacula-dir"
3029    fi
3030   ;;
3031 freebsd)
3032    DISTVER=`uname -a |awk '{print $3}'`
3033    VER=`echo $DISTVER | cut -c 1`
3034    if test x$VER = x4 ; then
3035       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
3036       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
3037    fi
3038    lld="qd"
3039    llu="qu"
3040    TAPEDRIVE="/dev/nrsa0"
3041    PSCMD="ps -ax -o pid,command"
3042    PFILES="${PFILES} \
3043        platforms/freebsd/Makefile \
3044        platforms/freebsd/bacula-fd \
3045        platforms/freebsd/bacula-sd \
3046        platforms/freebsd/bacula-dir"
3047    largefile_support="yes"
3048   ;;
3049 hpux)
3050    PSCMD="UNIX95=1; ps -e -o pid,comm"
3051    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
3052    DISTVER=`uname -r`
3053    TAPEDRIVE="/dev/rmt/0hnb"
3054    PTHREAD_LIB="-lpthread"
3055    AC_DEFINE([_INCLUDE_LONGLONG])
3056   ;;
3057 irix)
3058    DISTVER=`uname -r`
3059    TAPEDRIVE="/dev/rmt/0cbn"
3060    PSCMD="ps -e -o pid,comm"
3061    PFILES="${PFILES} \
3062        platforms/irix/Makefile \
3063        platforms/irix/bacula-fd \
3064        platforms/irix/bacula-sd \
3065        platforms/irix/bacula-dir"
3066   ;;
3067 netbsd)
3068    DISTVER=`uname -a |awk '{print $3}'`
3069    lld="qd"
3070    llu="qu"
3071    TAPEDRIVE="/dev/nrst0"
3072    PSCMD="ps -ax -o pid,command"
3073    PTHREAD_LIB="-pthread"
3074    CFLAGS="${CFLAGS} -pthread"
3075   ;;
3076 openbsd)
3077    DISTVER=`uname -a |awk '{print $3}'`
3078    lld="qd"
3079    llu="qu"
3080    TAPEDRIVE="/dev/nrst0"
3081    PSCMD="ps -ax -o pid,command"
3082    PTHREAD_LIB="-pthread"
3083    CFLAGS="${CFLAGS} -pthread"
3084    PFILES="${PFILES} \
3085        platforms/openbsd/Makefile \
3086        platforms/openbsd/bacula-fd \
3087        platforms/openbsd/bacula-sd \
3088        platforms/openbsd/bacula-dir"
3089   ;;
3090 redhat)
3091    if test -f /etc/whitebox-release ; then
3092       f=/etc/whitebox-release
3093    else
3094       f=/etc/redhat-release
3095    fi
3096    if test `cat $f | grep release |\
3097          cut -f 3 -d ' '`x = "Enterprise"x ; then
3098       DISTVER="Enterprise "`cat $f | grep release |\
3099           cut -f 6 -d ' '`
3100    else
3101        DISTVER=`cat /etc/redhat-release | grep release |\
3102            cut -f 5 -d ' '`
3103    fi
3104    TAPEDRIVE="/dev/nst0"
3105    PSCMD="ps -e -o pid,command"
3106    PFILES="${PFILES} \
3107        platforms/redhat/Makefile \
3108        platforms/redhat/bacula-fd \
3109        platforms/redhat/bacula-sd \
3110        platforms/redhat/bacula-dir
3111        "
3112   ;;
3113 mandrake)
3114    DISTVER=`cat /etc/mandrake-release | grep release |\
3115       cut -f 5 -d ' '`
3116    TAPEDRIVE="/dev/nst0"
3117    PSCMD="ps -e -o pid,command"
3118    PFILES="${PFILES} \
3119        platforms/mandrake/Makefile \
3120        platforms/mandrake/bacula-fd \
3121        platforms/mandrake/bacula-sd \
3122        platforms/mandrake/bacula-dir \
3123        "
3124   ;;
3125 gentoo)
3126    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
3127    TAPEDRIVE="/dev/nst0"
3128    PSCMD="ps -e -o pid,command"
3129    PFILES="${PFILES} \
3130        platforms/gentoo/Makefile \
3131     platforms/gentoo/bacula-init \
3132        platforms/gentoo/bacula-fd \
3133        platforms/gentoo/bacula-sd \
3134        platforms/gentoo/bacula-dir"
3135   ;;
3136 slackware)
3137    DISTVER=`cat /etc/slackware-version`
3138    TAPEDRIVE="/dev/nst0"
3139    PSCMD="ps -e -o pid,command"
3140    PFILES="${PFILES} \
3141        platforms/slackware/Makefile \
3142        platforms/slackware/rc.bacula-fd \
3143        platforms/slackware/rc.bacula-sd \
3144        platforms/slackware/rc.bacula-dir\
3145        platforms/slackware/functions.bacula"
3146   ;;
3147 solaris)
3148    DISTVER=`uname -r`
3149    TAPEDRIVE="/dev/rmt/0cbn"
3150    PSCMD="ps -e -o pid,comm"
3151    PFILES="${PFILES} \
3152        platforms/solaris/Makefile \
3153        platforms/solaris/bacula-fd \
3154        platforms/solaris/bacula-sd \
3155        platforms/solaris/bacula-dir"
3156    COMPRESS_MANPAGES=
3157    case ${DISTVER} in
3158    5.5|5.6)
3159       AC_DEFINE(HAVE_OLD_SOCKOPT)
3160       AC_DEFINE(USE_THR_SETCONCURRENCY)
3161       ;;
3162    5.7|5.8)
3163       AC_DEFINE(USE_THR_SETCONCURRENCY)
3164       ;;
3165    *)
3166       ;;
3167    esac
3168    LIBS="$LIBS -lresolv -lrt"
3169   ;;
3170 suse)
3171    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3172        cut -f 3 -d ' '`
3173    TAPEDRIVE="/dev/nst0"
3174    PSCMD="ps -e -o pid,command"
3175    PFILES="${PFILES} \
3176        platforms/suse/Makefile \
3177        platforms/suse/bacula-fd \
3178        platforms/suse/bacula-sd \
3179        platforms/suse/bacula-dir \
3180        platforms/suse/bacula"
3181   ;;
3182 suse5)
3183    DISTNAME=suse
3184    DISTVER=5.x
3185    TAPEDRIVE="/dev/nst0"
3186    PSCMD="ps -e -o pid,command"
3187    PFILES="${PFILES} \
3188        platforms/suse/Makefile \
3189        platforms/suse/bacula-fd \
3190        platforms/suse/bacula-sd \
3191        platforms/suse/bacula-dir"
3192   ;;
3193 unknown)
3194    DISTVER=unknown
3195    TAPEDRIVE="/dev/nst0"
3196   ;;
3197 *)
3198   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3199   ;;
3200 esac  
3201
3202 AC_SUBST(hostname)
3203
3204 LIBS="$PTHREAD_LIB $LIBS"
3205
3206 AC_DEFINE_UNQUOTED(lld, "$lld")
3207 AC_DEFINE_UNQUOTED(llu, "$llu")
3208 AC_SUBST(TAPEDRIVE)
3209 AC_SUBST(PSCMD)
3210 AC_SUBST(WIN32)
3211 AC_SUBST(MACOSX)
3212 AC_SUBST(DISTNAME)
3213 AC_SUBST(DISTVER)
3214 AC_SUBST(COMPRESS_MANPAGES)
3215
3216 dnl common parts of the Makefile
3217 MCOMMON=./autoconf/Make.common
3218 AC_SUBST_FILE(MCOMMON)
3219
3220 dnl Insanity check
3221 if test "x${subsysdir}" = "x${sbindir}" ; then
3222    echo " "
3223    echo " "
3224    echo "You have set both --sbindir and --with-subsys-dir"
3225    echo "  equal to: ${subsysdir} "
3226    echo "This is not permitted. Please reconfigure."
3227    echo " "
3228    echo "Aborting configuration ..."
3229    echo " "
3230    echo " "
3231    exit 1
3232 fi 
3233
3234 AC_OUTPUT([autoconf/Make.common \
3235            Makefile \
3236            manpages/Makefile \
3237            scripts/btraceback \
3238            scripts/bconsole \
3239            scripts/bacula \
3240            scripts/bacula-ctl-dir \
3241            scripts/bacula-ctl-fd \
3242            scripts/bacula-ctl-sd \
3243            scripts/devel_bacula \
3244            scripts/Makefile \
3245            scripts/logrotate \
3246            scripts/bacula.desktop.gnome1 \
3247            scripts/bacula.desktop.gnome2 \
3248            scripts/bacula.desktop.gnome1.consolehelper \
3249            scripts/bacula.desktop.gnome2.consolehelper \
3250            scripts/bacula.desktop.gnome1.xsu \
3251            scripts/bacula.desktop.gnome2.xsu \
3252            scripts/bgnome-console.console_apps \
3253            scripts/mtx-changer \
3254            scripts/disk-changer \
3255            scripts/dvd-handler \
3256            scripts/dvd-simulator \
3257            scripts/bacula-tray-monitor.desktop \
3258            scripts/logwatch/Makefile \
3259            scripts/logwatch/logfile.bacula.conf \
3260            scripts/wxconsole.console_apps \
3261            scripts/wxconsole.desktop.consolehelper \
3262            scripts/wxconsole.desktop.xsu \
3263            scripts/bat.desktop \
3264            scripts/bat.desktop.xsu \
3265            scripts/bat.desktop.consolehelper \
3266            scripts/bat.console_apps \
3267            src/Makefile \
3268            src/host.h \
3269            src/console/Makefile \
3270            src/console/bconsole.conf \
3271            src/qt-console/tray-monitor/tray-monitor.pro \
3272            src/qt-console/tray-monitor/tray-monitor.conf \
3273            src/qt-console/bat.conf \
3274            src/qt-console/bat.pro \
3275            src/qt-console/bat.pro.mingw32 \
3276            src/qt-console/install_conf_file \
3277            src/wx-console/Makefile \
3278            src/wx-console/bwx-console.conf \
3279            src/tray-monitor/Makefile \
3280            src/tray-monitor/tray-monitor.conf \
3281            src/dird/Makefile \
3282            src/dird/bacula-dir.conf \
3283            src/lib/Makefile \
3284            src/stored/Makefile \
3285            src/stored/bacula-sd.conf \
3286            src/filed/Makefile \
3287            src/filed/bacula-fd.conf \
3288            src/cats/Makefile \
3289            src/cats/make_catalog_backup.pl \
3290            src/cats/make_catalog_backup \
3291            src/cats/delete_catalog_backup \
3292            src/cats/create_postgresql_database \
3293            src/cats/update_postgresql_tables \
3294            src/cats/make_postgresql_tables \
3295            src/cats/grant_postgresql_privileges \
3296            src/cats/drop_postgresql_tables \
3297            src/cats/drop_postgresql_database \
3298            src/cats/create_mysql_database \
3299            src/cats/update_mysql_tables \
3300            src/cats/make_mysql_tables \
3301            src/cats/grant_mysql_privileges \
3302            src/cats/drop_mysql_tables \
3303            src/cats/drop_mysql_database \
3304            src/cats/create_sqlite3_database \
3305            src/cats/update_sqlite3_tables \
3306            src/cats/make_sqlite3_tables \
3307            src/cats/grant_sqlite3_privileges \
3308            src/cats/drop_sqlite3_tables \
3309            src/cats/drop_sqlite3_database \
3310            src/cats/sqlite \
3311            src/cats/mysql \
3312            src/cats/create_bacula_database \
3313            src/cats/update_bacula_tables \
3314            src/cats/grant_bacula_privileges \
3315            src/cats/make_bacula_tables \
3316            src/cats/drop_bacula_tables \
3317            src/cats/drop_bacula_database \
3318            src/findlib/Makefile \
3319            src/tools/Makefile \
3320            src/plugins/fd/Makefile \
3321            src/plugins/sd/Makefile \
3322            src/plugins/dir/Makefile \
3323            src/win32/Makefile.inc \
3324            po/Makefile.in \
3325            updatedb/update_mysql_tables_9_to_10 \
3326            updatedb/update_sqlite3_tables_9_to_10 \
3327            updatedb/update_postgresql_tables_9_to_10 \
3328            updatedb/update_mysql_tables_10_to_11 \
3329            updatedb/update_sqlite3_tables_10_to_11 \
3330            updatedb/update_postgresql_tables_10_to_11 \
3331            updatedb/update_mysql_tables_11_to_12 \
3332            updatedb/update_sqlite3_tables_11_to_12 \
3333            updatedb/update_postgresql_tables_11_to_12 \
3334            examples/nagios/check_bacula/Makefile \
3335            $PFILES ],  
3336      [ ]
3337 )
3338
3339 if test "${support_bat}" = "yes" ; then
3340    if test "x$QMAKE" = "xnone"; then
3341       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3342    fi
3343
3344    cd src/qt-console
3345    echo "Creating bat Makefile"
3346    touch bat
3347    chmod 755 bat
3348    rm -f Makefile
3349    $QMAKE
3350    ${MAKE:-make} clean
3351    cd ${BUILD_DIR}
3352 fi
3353
3354 dnl
3355 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3356 dnl requires gcc).  If it's not, don't rebuild dependencies
3357 dnl
3358 if test X"$GCC" = "Xyes" ; then
3359   echo "Doing make of dependencies"
3360   ${MAKE:-make} depend
3361 fi
3362
3363 cd src/qt-console
3364 chmod 755 install_conf_file build-depkgs-qt-console
3365 cd ${BUILD_DIR}
3366
3367 cd scripts
3368 chmod 755 bacula btraceback mtx-changer
3369 chmod 755 dvd-handler dvd-simulator
3370 chmod 755 bconsole mtx-changer devel_bacula logrotate
3371 cd ..
3372
3373 c=updatedb
3374 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3375 chmod 755 $c/update_postgresql_tables_10_to_11
3376 chmod 755 $c/update_mysql_tables_11_to_12   $c/update_sqlite3_tables_11_to_12
3377 chmod 755 $c/update_postgresql_tables_11_to_12
3378
3379
3380 c=src/cats
3381
3382 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3383 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3384
3385 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3386 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3387
3388 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3389 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3390
3391 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3392 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3393
3394 #chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3395 #chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3396
3397
3398 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3399 chmod 755 $c/sqlite
3400 chmod 755 $c/mysql
3401
3402 chmod 755 src/win32/build-depkgs-mingw32
3403
3404 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3405    largefile_support="yes"
3406 fi
3407
3408 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3409 if test X"$GCC" = "Xyes" ; then
3410    dnl
3411    dnl A whole lot of hand springs to get the compiler version.
3412    dnl  This is because gcc changed the output in version 3.0
3413    dnl
3414    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3415    if test "x${CCVERSION}" = "x" ; then
3416       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3417    fi
3418    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3419    if test x"${CXXVERSION}" = x ; then
3420       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3421    fi
3422 fi
3423
3424 # clean up any old junk
3425 echo " "
3426 echo "Cleaning up"
3427 echo " "
3428 ${MAKE:-make} clean
3429
3430 echo "
3431 Configuration on `date`:
3432
3433    Host:                     ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3434    Bacula version:           ${BACULA} ${VERSION} (${DATE})
3435    Source code location:     ${srcdir}
3436    Install binaries:         ${sbindir}
3437    Install libraries:        ${libdir}
3438    Install config files:     ${sysconfdir}
3439    Scripts directory:        ${scriptdir}
3440    Archive directory:        ${archivedir}
3441    Working directory:        ${working_dir}
3442    PID directory:            ${piddir}
3443    Subsys directory:         ${subsysdir}
3444    Man directory:            ${mandir}
3445    Data directory:           ${datarootdir}
3446    Plugin directory:         ${plugindir}
3447    C Compiler:               ${CC} ${CCVERSION}
3448    C++ Compiler:             ${CXX} ${CXXVERSION}
3449    Compiler flags:           ${WCFLAGS} ${CFLAGS} 
3450    Linker flags:             ${WLDFLAGS} ${LDFLAGS}
3451    Libraries:                ${LIBS}
3452    Statically Linked Tools:  ${support_static_tools}
3453    Statically Linked FD:     ${support_static_fd}
3454    Statically Linked SD:     ${support_static_sd}
3455    Statically Linked DIR:    ${support_static_dir}
3456    Statically Linked CONS:   ${support_static_cons}
3457    Database backends:        ${db_backends}
3458    Database port:            ${db_port}
3459    Database name:            ${db_name}
3460    Database user:            ${db_user}
3461  
3462    Job Output Email:         ${job_email}
3463    Traceback Email:          ${dump_email}
3464    SMTP Host Address:        ${smtp_host}
3465  
3466    Director Port:            ${dir_port}
3467    File daemon Port:         ${fd_port}
3468    Storage daemon Port:      ${sd_port}
3469  
3470    Director User:            ${dir_user}
3471    Director Group:           ${dir_group}
3472    Storage Daemon User:      ${sd_user}
3473    Storage DaemonGroup:      ${sd_group}
3474    File Daemon User:         ${fd_user}
3475    File Daemon Group:        ${fd_group}
3476  
3477    Large file support:      $largefile_support
3478    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3479    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3480    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3481    TLS support:             ${support_tls}
3482    Encryption support:      ${support_crypto} 
3483    ZLIB support:            ${have_zlib}
3484    LZO support:             ${have_lzo}
3485    enable-smartalloc:       ${support_smartalloc} 
3486    enable-lockmgr:          ${support_lockmgr}
3487    bat support:             ${support_bat}
3488    enable-gnome:            ${support_gnome} ${gnome_version}
3489    enable-bwx-console:      ${support_wx_console} ${wx_version}
3490    enable-tray-monitor:     ${support_tray_monitor}
3491    client-only:             ${build_client_only}
3492    build-dird:              ${build_dird}
3493    build-stored:            ${build_stored}
3494    Plugin support:          ${have_plugins}
3495    AFS support:             ${have_afs}
3496    ACL support:             ${have_acl}
3497    XATTR support:           ${have_xattr}
3498    Python support:          ${support_python} ${PYTHON_LIBS}
3499    Batch insert enabled:    ${support_batch_insert}
3500
3501   " > config.out
3502
3503 # create a small shell script useful for support with
3504 # configure options and config.out info
3505 cat > scripts/bacula_config << EOF
3506 #!/bin/sh
3507 cat << __EOC__
3508 $ $0 $ac_configure_args
3509 EOF
3510 cat config.out >> scripts/bacula_config
3511 echo __EOC__ >> scripts/bacula_config
3512 chmod 755 scripts/bacula_config
3513
3514 cat config.out