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