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