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