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