]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Merge branch 'master' into basejobv3
[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              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
570   please rerun configure with --disable-libtool])
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              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
592   please rerun configure with --disable-libtool])
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              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
614   please rerun configure with --disable-libtool])
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              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
636   please rerun configure with --disable-libtool])
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              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
658   please rerun configure with --disable-libtool])
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              if test -e /usr/bin/python-config ; then
926                 PYTHON_INCDIR=`/usr/bin/python-config --includes`
927                 PYTHON_LIBS=`/usr/bin/python-config --libs`
928              else
929                 for python_root in /usr /usr/local /usr/sfw; do
930                    for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
931                       if test -f $python_root/include/${ver}/Python.h; then
932                          PYTHON_INCDIR=-I$python_root/include/${ver}
933                          if test -d $python_root/lib64/${ver}/config; then
934                             PYTHON_LIBS="-L$python_root/lib64/${ver}/config -l${ver}"
935                          else
936                             PYTHON_LIBS="-L$python_root/lib/${ver}/config -l${ver}"
937                          fi
938                          break 
939                       fi
940                    done
941                 done
942
943                 if test x$PYTHON_INCDIR = x; then
944                    if test -f $prefix/include/Python.h; then
945                       PYTHON_INCDIR=-I$prefix/include
946                       if test -d $prefix/lib64/config; then
947                          PYTHON_LIBS="-L$prefix/lib64/config -lpython"
948                       else
949                          PYTHON_LIBS="-L$prefix/lib/config -lpython"
950                       fi
951                    else
952                       AC_MSG_RESULT(no)
953                       AC_MSG_ERROR(Unable to find Python.h in standard locations)
954                    fi
955                 fi
956              fi
957           else
958              if test -e $withval/bin/python-config ; then
959                 PYTHON_INCDIR=`$withval/bin/python-config --includes`
960                 PYTHON_LIBS=`$withval/bin/python-config --libs`
961              elif test -f $withval/Python.h; then
962                 PYTHON_INCDIR=-I$withval
963                 PYTHON_LIBS="-L$withval/config -lpython"
964              elif test -f $withval/include/Python.h; then
965                 PYTHON_INCDIR=-I$withval/include
966                 if test -d $withval/lib64/config; then
967                    PYTHON_LIBS="-L$withval/lib64/config -lpython"
968                 else
969                    PYTHON_LIBS="-L$withval/lib/config -lpython"
970                 fi
971              elif test -f $withval/include/python/Python.h; then
972                 PYTHON_INCDIR=-I$withval/include/python
973                 if test -d $withval/lib64/python/config; then
974                    PYTHON_LIBS="-L$withval/lib64/python/config -lpython"
975                 else
976                    PYTHON_LIBS="-L$withval/lib/python/config -lpython"
977                 fi
978              else
979                 AC_MSG_RESULT(no)
980                 AC_MSG_ERROR(Invalid Python directory $withval - unable to find Python.h under $withval)
981              fi
982           fi
983
984           AC_DEFINE([HAVE_PYTHON], 1)
985           AC_MSG_RESULT(yes)
986           support_python=yes
987           AC_MSG_NOTICE(checking for more Python libs)
988           saved_LIBS="$LIBS"; LIBS=
989           AC_SEARCH_LIBS(shm_open, [rt])
990           AC_CHECK_LIB(util, openpty)
991           PYTHON_LIBS="$PYTHON_LIBS $LIBS"
992           LIBS="$saved_LIBS"
993        else
994           AC_MSG_RESULT(no)
995        fi
996    ],[
997        AC_MSG_RESULT(no)
998    ]
999 )
1000 AC_SUBST(PYTHON_LIBS)
1001 AC_SUBST(PYTHON_INCDIR)
1002
1003 dnl
1004 dnl Find where sockets are (especially for Solaris)
1005 dnl Do this before the TCP Wrappers test since tcp wrappers
1006 dnl uses the socket library and some linkers are stupid.
1007 dnl
1008 AC_CHECK_FUNC(socket,
1009     AC_MSG_RESULT(using libc's socket),
1010     AC_CHECK_LIB(xnet,socket)
1011     AC_CHECK_LIB(socket,socket)
1012     AC_CHECK_LIB(inet,socket))
1013
1014 dnl -----------------------------------------------------------
1015 dnl Check whether user wants TCP wrappers support (default off)
1016 dnl -----------------------------------------------------------
1017 TCPW_MSG="no" 
1018 WRAPLIBS=""
1019 AC_ARG_WITH(tcp-wrappers,
1020    AC_HELP_STRING([--with-tcp-wrappers@<:@=DIR@:>@], [enable tcpwrappers support]),
1021    [
1022        if test "x$withval" != "xno" ; then
1023           saved_LIBS="$LIBS"
1024           LIBS="$saved_LIBS -lwrap"
1025           AC_MSG_CHECKING(for libwrap)
1026           AC_SEARCH_LIBS(nanosleep, [rt])
1027           AC_TRY_LINK(
1028              [ 
1029                #include <sys/types.h>
1030                #include <tcpd.h>
1031                int deny_severity = 0;
1032                int allow_severity = 0;
1033                struct request_info *req;
1034              ], [
1035                 hosts_access(req);
1036              ], [
1037                  AC_MSG_RESULT(yes)
1038                  AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1039                  TCPW_MSG="yes" 
1040                  LIBS="$saved_LIBS"
1041                  WRAPLIBS="-lwrap"
1042              ], [
1043                  LIBS="$saved_LIBS -lwrap -lnsl"
1044                  WRAPLIBS="$saved_LIBS -lwrap -lnsl"
1045                  AC_TRY_LINK(
1046                    [
1047                        #include <sys/types.h>
1048                        #include <tcpd.h>
1049                        int deny_severity = 0;
1050                        int allow_severity = 0;
1051                        struct request_info *req;
1052                    ], [
1053                        hosts_access(req);
1054                    ], [
1055                       AC_MSG_RESULT(yes)
1056                       AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1057                       TCPW_MSG="yes" 
1058                       LIBS="$saved_LIBS"
1059                       WRAPLIBS="-lwrap"
1060                    ], [
1061                       AC_MSG_ERROR([*** libwrap missing])
1062                    ]
1063                 )
1064              ]
1065           )
1066        fi
1067    ]
1068 )
1069
1070 dnl -----------------------------------------------------------
1071 dnl Check whether OpenSSL is available
1072 dnl -----------------------------------------------------------
1073 AC_MSG_CHECKING([for OpenSSL])
1074 dnl The following uses quadrigraphs:
1075 dnl '@<:@' = '['
1076 dnl '@:>@' = ']'
1077 AC_ARG_WITH(openssl,
1078     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@], [Include OpenSSL support. DIR is the OpenSSL base]),
1079     [
1080         with_openssl_directory=${withval}
1081     ]
1082 )
1083
1084 if test "x$with_openssl_directory" != "xno"; then
1085    OPENSSL_LIBS="-lssl -lcrypto"
1086    OPENSSL_INC=""
1087
1088    if test "x$with_openssl_directory" != "xyes" && test x"${with_openssl_directory}" != "x"; then
1089       #
1090       # Make sure the $with_openssl_directory also makes sense
1091       #
1092       if test -d "$with_openssl_directory/lib" -a -d "$with_openssl_directory/include"; then
1093          OPENSSL_LIBS="-L$with_openssl_directory/lib $OPENSSL_LIBS"
1094          OPENSSL_INC="-I$with_openssl_directory/include $OPENSSL_INC"
1095       fi
1096    fi
1097
1098    saved_LIBS="${LIBS}"
1099    saved_CFLAGS="${CFLAGS}"
1100    LIBS="${saved_LIBS} ${OPENSSL_LIBS}"
1101    CFLAGS="${saved_CFLAGS} ${OPENSSL_INC}"
1102
1103    AC_TRY_LINK(
1104       [
1105           #include <openssl/ssl.h>
1106       ], [
1107            CRYPTO_set_id_callback(NULL);
1108       ], [
1109           support_tls="yes"
1110           support_crypto="yes"
1111       ], [
1112           support_tls="no"
1113       ]
1114    )
1115
1116    AC_TRY_LINK(
1117       [
1118           #include <openssl/evp.h>
1119       ], [
1120           EVP_sha512();
1121       ], [
1122           ac_cv_openssl_sha2="yes"
1123       ], [
1124           ac_cv_openssl_sha2="no"
1125       ]
1126    )
1127
1128    dnl Solaris disables greater than 128+ bit encryption in their OpenSSL
1129    dnl implementation, presumably for export reasons. If 192bit AES
1130    dnl is available, we assume that we're running with a 'non-export'
1131    dnl openssl library.
1132    AC_TRY_LINK(
1133       [
1134           #include <openssl/evp.h>
1135       ], [
1136           EVP_aes_192_cbc();
1137       ], [
1138           ac_cv_openssl_export="no"
1139       ], [
1140           ac_cv_openssl_export="yes"
1141       ]
1142    )
1143
1144    LIBS="${saved_LIBS}"
1145    CFLAGS="${saved_CFLAGS}"
1146
1147    if test "$support_tls" = "yes"; then
1148       AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL library is available])
1149       AC_DEFINE(HAVE_TLS, 1, [Define if TLS support should be enabled])
1150       AC_DEFINE(HAVE_CRYPTO, 1, [Define if encryption support should be enabled])
1151    fi
1152
1153    if test "$ac_cv_openssl_sha2" = "yes"; then
1154       AC_DEFINE(HAVE_SHA2, 1, [Define if the SHA-2 family of digest algorithms is available])
1155    fi
1156
1157    if test "$ac_cv_openssl_export" = "yes"; then
1158       AC_DEFINE(HAVE_OPENSSL_EXPORT_LIBRARY, 1, [Define if the OpenSSL library is export-contrained to 128bit ciphers])
1159    fi
1160 else
1161    support_tls="no"
1162    support_crypto="no"
1163    OPENSSL_LIBS=""
1164    OPENSSL_INC=""
1165 fi
1166
1167 if test "$support_tls" = "no"; then
1168    OPENSSL_LIBS=""
1169    OPENSSL_INC=""
1170 fi  
1171
1172 AC_MSG_RESULT([$support_tls])
1173 AC_SUBST(OPENSSL_LIBS)
1174 AC_SUBST(OPENSSL_INC)
1175
1176 dnl -----------------------------------------------------------
1177 dnl dlopen is needed for plugins
1178 dnl -----------------------------------------------------------
1179 AC_SEARCH_LIBS(dlopen, [dl])
1180
1181 dnl ------------------------------------------
1182 dnl Where to place working dir
1183 dnl ------------------------------------------
1184 working_dir=`eval echo ${prefix}/var/bacula/working`
1185 AC_ARG_WITH(working-dir,
1186    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
1187    [
1188        if test "x$withval" != "xno" ; then     
1189          working_dir=$withval
1190        fi
1191    ]
1192 )
1193
1194 AC_SUBST(working_dir)
1195
1196 dnl ------------------------------------------------------------------
1197 dnl If the user has not set archivedir, we set our default as /tmp
1198 dnl ------------------------------------------------------------------
1199 archivedir=/tmp
1200 AC_ARG_WITH(archivedir,
1201    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
1202    [
1203        if test "x$withval" != "xno" ; then     
1204           archivedir=$withval
1205        fi
1206    ]
1207 )
1208
1209 AC_SUBST(archivedir)
1210
1211 dnl ------------------------------------------------------------------
1212 dnl Allow the user to specify the daemon resource name default hostname
1213 dnl ------------------------------------------------------------------
1214 basename=`hostname`
1215 AC_ARG_WITH(basename,
1216    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
1217    [
1218        if test "x$withval" != "xno" ; then     
1219           basename=$withval
1220        fi
1221    ]
1222 )
1223
1224 AC_SUBST(basename)
1225
1226 dnl ------------------------------------------------------------------
1227 dnl Allow the user to override the hostname (default = machine hostname)
1228 dnl ------------------------------------------------------------------
1229 hostname=`uname -n | cut -d '.' -f 1`
1230 if test x${hostname} = x ; then
1231   hostname="localhost"
1232 fi
1233 AC_ARG_WITH(hostname,
1234    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
1235    [
1236        if test "x$withval" != "xno" ; then
1237          hostname=$withval
1238        fi
1239    ]
1240 )
1241
1242 AC_SUBST(hostname)
1243
1244
1245 dnl ------------------------------------------
1246 dnl Where to place scriptdir (script files)
1247 dnl ------------------------------------------
1248 scriptdir=`eval echo ${sysconfdir}`
1249 AC_ARG_WITH(scriptdir,
1250    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
1251    [
1252        if test "x$withval" != "xno" ; then     
1253           scriptdir=$withval
1254        fi
1255    ]
1256 )
1257
1258 AC_SUBST(scriptdir)
1259
1260
1261 dnl ------------------------------------------
1262 dnl Where to place bsrdir (bsr files)
1263 dnl ------------------------------------------
1264 bsrdir=/tmp
1265 AC_ARG_WITH(bsrdir,
1266    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
1267    [
1268        if test "x$withval" != "xno" ; then     
1269           bsrdir=$withval
1270        fi
1271    ]
1272 )
1273
1274 AC_SUBST(bsrdir)
1275
1276 dnl ------------------------------------------
1277 dnl Where to place logdir (bsr files)
1278 dnl ------------------------------------------
1279 logdir=/tmp
1280 AC_ARG_WITH(logdir,
1281    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
1282    [
1283        if test "x$withval" != "xno" ; then     
1284           logdir=$withval
1285        fi
1286    ]
1287 )
1288
1289 AC_SUBST(logdir)
1290
1291
1292 # ------------------------------------------
1293 # Where to place plugindir (plugin files)
1294 # ------------------------------------------
1295 plugindir=`eval echo ${libdir}`
1296 AC_ARG_WITH(plugindir,
1297    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
1298    [
1299        if test "x$withval" != "xno" ; then     
1300           plugindir=$withval
1301        fi
1302    ]
1303 )
1304
1305 AC_SUBST(plugindir)
1306
1307 dnl ------------------------------------------
1308 dnl Where to send dump email
1309 dnl ------------------------------------------
1310 dump_email=root@localhost
1311 AC_ARG_WITH(dump-email,
1312    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
1313    [
1314        if test "x$withval" != "xno" ; then     
1315           dump_email=$withval
1316        fi
1317    ]
1318 )
1319
1320 AC_SUBST(dump_email)
1321
1322 dnl ------------------------------------------
1323 dnl Where to send job email
1324 dnl ------------------------------------------
1325 job_email=root@localhost
1326 AC_ARG_WITH(job-email,
1327    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
1328    [
1329        if test "x$withval" != "xno" ; then     
1330           job_email=$withval
1331        fi
1332    ]
1333 )
1334
1335 AC_SUBST(job_email)
1336
1337 dnl ------------------------------------------
1338 dnl Where to find smtp host
1339 dnl ------------------------------------------
1340 smtp_host=localhost
1341 AC_ARG_WITH(smtp_host,
1342    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
1343    [
1344        if test "x$withval" != "xno" ; then     
1345           smtp_host=$withval
1346        fi
1347    ]
1348 )
1349
1350 AC_SUBST(smtp_host)
1351
1352 dnl ------------------------------------
1353 dnl Where to place pid files
1354 dnl ------------------------------------
1355 piddir=/var/run
1356 AC_ARG_WITH(pid-dir,
1357    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
1358    [
1359        if test "x$withval" != "xno" ; then   
1360           piddir=$withval
1361        fi
1362    ]
1363 )
1364
1365 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
1366 AC_SUBST(piddir)
1367
1368 dnl ------------------------------------
1369 dnl Where to place subsys "lock file"
1370 dnl ------------------------------------
1371 subsysdir=/var/run/subsys
1372 if test -d /var/run/subsys; then
1373    subsysdir=/var/run/subsys
1374 elif test -d /var/lock/subsys; then
1375    subsysdir=/var/lock/subsys
1376 else
1377    subsysdir=/var/run/subsys
1378 fi
1379 AC_ARG_WITH(subsys-dir,
1380    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
1381    [
1382        if test "x$withval" != "xno" ; then   
1383           subsysdir=$withval
1384        fi
1385    ]
1386 )
1387
1388 AC_SUBST(subsysdir)
1389
1390 dnl ------------------------------------
1391 dnl Where to start assigning ports
1392 dnl ------------------------------------
1393 baseport=9101
1394 AC_ARG_WITH(baseport,
1395    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
1396    [
1397        if test "x$withval" != "xno" ; then   
1398           baseport=$withval
1399        fi
1400    ]
1401 )
1402
1403 AC_SUBST(baseport)
1404 dir_port=`expr $baseport`
1405 fd_port=`expr $baseport + 1`
1406 sd_port=`expr $fd_port + 1`
1407
1408 AC_SUBST(dir_port)
1409 AC_SUBST(fd_port)
1410 AC_SUBST(sd_port)
1411
1412 dnl ------------------------------------------
1413 dnl Generate passwords
1414 dnl ------------------------------------------
1415 dir_password=
1416 AC_ARG_WITH(dir-password,
1417    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
1418    [
1419        if test "x$withval" != "xno" ; then     
1420           dir_password=$withval
1421        fi
1422    ]
1423 )
1424
1425 if test "x$dir_password" = "x" ; then
1426    if test "x$OPENSSL" = "xnone" ; then
1427       key=`autoconf/randpass 33`
1428    else
1429       key=`openssl rand -base64 33`
1430    fi
1431    dir_password=$key
1432 fi
1433
1434 fd_password=
1435 AC_ARG_WITH(fd-password,
1436    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
1437    [
1438        if test "x$withval" != "xno" ; then     
1439           fd_password=$withval
1440        fi
1441    ]
1442 )
1443
1444 if test "x$fd_password" = "x" ; then
1445    if test "x$OPENSSL" = "xnone" ; then
1446       key=`autoconf/randpass 37`
1447    else
1448       key=`openssl rand -base64 33`
1449    fi
1450    fd_password=$key
1451 fi
1452
1453 sd_password=
1454 AC_ARG_WITH(sd-password,
1455    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
1456    [
1457        if test "x$withval" != "xno" ; then     
1458           sd_password=$withval
1459        fi
1460    ]
1461 )
1462
1463 if test "x$sd_password" = "x" ; then
1464    if test "x$OPENSSL" = "xnone" ; then
1465       key=`autoconf/randpass 41`
1466    else
1467       key=`openssl rand -base64 33`
1468    fi
1469    sd_password=$key
1470 fi
1471
1472 mon_dir_password=
1473 AC_ARG_WITH(mon-dir-password,
1474    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
1475    [
1476        if test "x$withval" != "xno" ; then     
1477           mon_dir_password=$withval
1478        fi
1479    ]
1480 )
1481
1482 if test "x$mon_dir_password" = "x" ; then
1483    if test "x$OPENSSL" = "xnone" ; then
1484       key=`autoconf/randpass 33`
1485    else
1486       key=`openssl rand -base64 33`
1487    fi
1488    mon_dir_password=$key
1489 fi
1490
1491 mon_fd_password=
1492 AC_ARG_WITH(mon-fd-password,
1493    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
1494    [
1495        if test "x$withval" != "xno" ; then     
1496           mon_fd_password=$withval
1497        fi
1498    ]
1499 )
1500
1501 if test "x$mon_fd_password" = "x" ; then
1502    if test "x$OPENSSL" = "xnone" ; then
1503       key=`autoconf/randpass 37`
1504    else
1505       key=`openssl rand -base64 33`
1506    fi
1507    mon_fd_password=$key
1508 fi
1509
1510 mon_sd_password=
1511 AC_ARG_WITH(mon-sd-password,
1512    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
1513    [
1514        if test "x$withval" != "xno" ; then     
1515           mon_sd_password=$withval
1516        fi
1517    ]
1518 )
1519
1520 if test "x$mon_sd_password" = "x" ; then
1521    if test "x$OPENSSL" = "xnone" ; then
1522       key=`autoconf/randpass 41`
1523    else
1524       key=`openssl rand -base64 33`
1525    fi
1526    mon_sd_password=$key
1527 fi
1528
1529 AC_SUBST(dir_password)
1530 AC_SUBST(fd_password)
1531 AC_SUBST(sd_password)
1532 AC_SUBST(mon_dir_password)
1533 AC_SUBST(mon_fd_password)
1534 AC_SUBST(mon_sd_password)
1535
1536 dnl
1537 dnl Pickup any database name
1538 dnl
1539 db_name=bacula
1540 AC_ARG_WITH(db_name,
1541    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
1542    [
1543        if test "x$withval" != "x" ; then   
1544           db_name=$withval
1545        fi
1546    ]
1547 )
1548 AC_SUBST(db_name)
1549
1550 db_user=bacula
1551 AC_ARG_WITH(db_user,
1552    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
1553    [
1554        if test "x$withval" != "x" ; then   
1555           db_user=$withval
1556        fi
1557    ]
1558 )
1559 AC_SUBST(db_user)
1560
1561 db_password=
1562 AC_ARG_WITH(db_password,
1563    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
1564    [
1565        if test "x$withval" != "x" ; then   
1566           db_password=$withval
1567        fi
1568    ]
1569 )
1570 AC_SUBST(db_password)
1571
1572 dnl
1573 dnl Pickup a database port
1574 dnl
1575 db_port=" "
1576 AC_ARG_WITH(db_port,
1577    AC_HELP_STRING([--with-db-port=DBPORT], [specify a database port @<:@default=null@:>@]),
1578    [
1579        if test "x$withval" != "x" ; then
1580           db_port=$withval
1581        fi
1582    ]
1583 )
1584 AC_SUBST(db_port)
1585
1586 #
1587 # Handle users and groups for each daemon
1588 #
1589 dir_user=
1590 AC_ARG_WITH(dir_user,
1591    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
1592    [
1593        if test "x$withval" != "x" ; then   
1594            dir_user=$withval
1595        fi
1596    ]
1597 )
1598
1599 dir_group=
1600 AC_ARG_WITH(dir_group,
1601    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
1602    [
1603        if test "x$withval" != "x" ; then   
1604           dir_group=$withval
1605        fi
1606    ]
1607 )
1608
1609 sd_user=
1610 AC_ARG_WITH(sd_user,
1611    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
1612    [
1613        if test "x$withval" != "x" ; then   
1614           sd_user=$withval
1615        fi
1616    ]
1617 )
1618
1619 sd_group=
1620 AC_ARG_WITH(sd_group,
1621    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
1622    [
1623        if test "x$withval" != "x" ; then   
1624           sd_group=$withval
1625        fi
1626    ]
1627 )
1628
1629 fd_user=
1630 AC_ARG_WITH(fd_user,
1631    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
1632    [
1633        if test "x$withval" != "x" ; then   
1634           fd_user=$withval
1635        fi
1636    ]
1637 )
1638
1639 fd_group=
1640 AC_ARG_WITH(fd_group,
1641    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
1642    [
1643        if test "x$withval" != "x" ; then   
1644           fd_group=$withval
1645        fi
1646    ]
1647 )
1648
1649 AC_SUBST(dir_user)
1650 AC_SUBST(dir_group)
1651 AC_SUBST(sd_user)
1652 AC_SUBST(sd_group)
1653 AC_SUBST(fd_user)
1654 AC_SUBST(fd_group)
1655
1656 dnl
1657 dnl allow setting default executable permissions
1658 dnl
1659 SBINPERM=0754
1660 AC_ARG_WITH(sbin-perm,
1661    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0754@:>@]),
1662    [
1663        if test "x$withval" != "x" ; then   
1664           SBINPERM=$withval
1665        fi
1666    ]
1667 )
1668
1669 AC_SUBST(SBINPERM)
1670
1671 dnl ------------------------------------------------
1672 dnl Bacula check for various SQL database engines
1673 dnl ------------------------------------------------
1674 SQL_LIB=
1675 BA_CHECK_POSTGRESQL_DB
1676
1677 BA_CHECK_MYSQL_DB
1678
1679 BA_CHECK_SQLITE3_DB
1680
1681 BA_CHECK_SQLITE_DB
1682
1683 BA_CHECK_DBI_DB
1684
1685 BA_CHECK_DBI_DRIVER
1686
1687 AC_SUBST(cats)
1688 AC_SUBST(DB_TYPE)
1689
1690 dnl -------------------------------------------
1691 dnl enable batch attribute DB insert (default on)
1692 dnl -------------------------------------------
1693 support_batch_insert=no
1694 A=`test -f $SQL_LIB && nm $SQL_LIB | grep pthread_mutex_lock`
1695 pkg=$?
1696 if test $pkg = 0; then
1697    support_batch_insert=yes
1698    AC_ARG_ENABLE(batch-insert,
1699       AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1700       [
1701           if test x$enableval = xno; then
1702              support_batch_insert=no
1703           else
1704              support_batch_insert=yes
1705           fi
1706       ]
1707    )
1708 fi
1709    
1710 dnl Check if postgresql support batch mode   
1711 if test x$DB_TYPE = xpostgresql; then
1712    A=`test -f $SQL_LIB && nm $SQL_LIB | grep PQputCopyData`
1713    pkg=$?
1714    if test $pkg != 0; then
1715       support_batch_insert=no
1716    fi
1717 fi
1718
1719 if test x$DB_TYPE = xdbi; then
1720    DB_TYPE=$DB_PROG
1721    db_type=$DB_PROG
1722    pkg=1
1723    dnl Check for batch insert
1724    if test $DB_PROG = postgresql; then
1725       A=`test -f $SQL_LIB && nm $SQL_LIB | grep PQputCopyData`
1726       pkg=$?
1727    fi
1728
1729    if test $DB_PROG = mysql; then
1730       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1731       pkg=$?    
1732    fi
1733
1734    if test $DB_PROG = sqlite3; then
1735       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1736       pkg=$?
1737    fi
1738
1739    if test $pkg = 0; then
1740       AC_ARG_ENABLE(batch-insert,
1741          AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1742          [
1743              if test x$enableval = xno; then
1744                 support_batch_insert=no
1745              else
1746                 support_batch_insert=yes
1747              fi
1748          ]
1749       )
1750    fi
1751 else 
1752    dnl If dbi was not chosen, let the comment in file
1753    uncomment_dbi="#"  
1754 fi
1755
1756 AC_SUBST(uncomment_dbi)
1757
1758 if test $support_batch_insert = yes ; then
1759    AC_DEFINE(HAVE_BATCH_FILE_INSERT, 1, [Set if DB batch insert code enabled])
1760 fi
1761
1762 AC_DEFINE(PROTOTYPES)
1763
1764 dnl --------------------------------------------------------------------------
1765 dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
1766 dnl
1767 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
1768    if test -z "$CCOPTS"; then
1769       CCOPTS='-g -O2 -Wall'
1770    fi
1771    CFLAGS="$CCOPTS"
1772 fi
1773
1774 dnl A few others 
1775 AC_EXEEXT
1776
1777 dnl See if we can use 64 bit file addresses
1778 largefile_support="no"
1779 AC_BAC_LARGEFILE
1780
1781 AC_PATH_XTRA
1782
1783 dnl --------------------------------------------------------------------------
1784 dnl CHECKING FOR HEADER FILES
1785 dnl --------------------------------------------------------------------------
1786 AC_CHECK_HEADERS( \
1787    assert.h \
1788    fcntl.h \
1789    grp.h \
1790    pwd.h \
1791    libc.h \
1792    limits.h \
1793    stdarg.h \
1794    stdlib.h \
1795    stdint.h \
1796    string.h \
1797    strings.h \
1798    termios.h \
1799    termcap.h \
1800    term.h \
1801    unistd.h \
1802    sys/bitypes.h \
1803    sys/byteorder.h \
1804    sys/ioctl.h \
1805    sys/select.h \
1806    sys/socket.h \
1807    sys/sockio.h \
1808    sys/stat.h \
1809    sys/time.h \
1810    sys/types.h \
1811    arpa/nameser.h \
1812    mtio.h \
1813    sys/mtio.h \
1814    sys/tape.h \
1815    regex.h \
1816 )
1817 AC_HEADER_STDC
1818 AC_HEADER_MAJOR
1819 AC_HEADER_DIRENT
1820 AC_HEADER_STAT
1821 AC_HEADER_SYS_WAIT
1822 AC_HEADER_TIME
1823 AC_STRUCT_ST_BLKSIZE
1824 AC_STRUCT_ST_BLOCKS
1825 AC_STRUCT_TIMEZONE
1826
1827 dnl --------------------------------------------------------------------------
1828 dnl Check for utime.h structure 
1829 dnl --------------------------------------------------------------------------
1830 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
1831    [
1832        AC_TRY_COMPILE(
1833           [
1834               #include <sys/types.h>
1835               #include <utime.h>
1836           ], [
1837               struct utimbuf foo
1838           ], [
1839               ba_cv_header_utime_h=yes
1840           ], [
1841               ba_cv_header_utime_h=no
1842           ]
1843        )
1844    ]
1845 )
1846 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H, 1, [Set if utime.h exists])
1847
1848 dnl --------------------------------------------------------------------------
1849 dnl Check for socklen_t
1850 dnl --------------------------------------------------------------------------
1851 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1852    [
1853        AC_TRY_COMPILE(
1854           [
1855               #include <sys/types.h>
1856               #include <sys/socket.h>
1857           ], [
1858               socklen_t x
1859           ], [
1860              ba_cv_header_socklen_t=yes
1861           ], [
1862              ba_cv_header_socklen_t=no
1863           ]
1864        )
1865    ]
1866 )
1867 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T)
1868
1869 dnl --------------------------------------------------------------------------
1870 dnl Check for typeof()
1871 dnl --------------------------------------------------------------------------
1872 AC_LANG_PUSH(C++)
1873 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
1874    [
1875        AC_TRY_RUN(
1876           [
1877               main(){char *a = 0; a = (typeof a)a;}
1878           ], [
1879               ba_cv_have_typeof=yes
1880           ], [
1881               ba_cv_have_typeof=no
1882           ], [
1883               ba_cv_have_typeof=no
1884           ]
1885        )
1886    ]
1887 )
1888 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
1889 AC_LANG_POP(C++)
1890
1891 AC_C_CONST
1892
1893 dnl --------------------------------------------------------------------------
1894 dnl CHECKING FOR FILESYSTEM TYPE
1895 dnl --------------------------------------------------------------------------
1896 AC_MSG_CHECKING(how to get filesystem type)
1897 fstype=no
1898 # The order of these tests is important.
1899 AC_TRY_CPP(
1900    [
1901        #include <sys/statvfs.h>
1902        #include <sys/fstyp.h>
1903    ],
1904    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
1905 )
1906 if test $fstype = no; then
1907    AC_TRY_CPP(
1908       [
1909           #include <sys/statfs.h>
1910           #include <sys/fstyp.h>
1911       ],
1912       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
1913    )
1914 fi
1915 if test $fstype = no; then
1916    AC_TRY_CPP(
1917       [
1918           #include <sys/statfs.h>
1919           #include <sys/vmount.h>
1920       ],
1921       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
1922    )
1923 fi
1924 if test $fstype = no; then  
1925    AC_TRY_CPP(
1926       [
1927           #include <mntent.h>
1928       ],
1929       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
1930    )
1931 fi
1932 if test $fstype = no; then  
1933    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
1934 fi
1935 if test $fstype = no; then  
1936    AC_TRY_CPP(
1937       [
1938           #include <sys/mount.h>
1939           #include <sys/fs_types.h>
1940       ],
1941       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
1942    )
1943 fi
1944 AC_MSG_RESULT($fstype)
1945
1946 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
1947
1948 dnl --------------------------------------------------------------------------
1949 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
1950 dnl --------------------------------------------------------------------------
1951 AC_TYPE_SIGNAL
1952 SIGNAL_CHECK
1953 AC_TYPE_MODE_T
1954 AC_TYPE_UID_T
1955 AC_TYPE_SIZE_T
1956 AC_TYPE_PID_T
1957 AC_TYPE_OFF_T
1958 AC_TYPE_INTPTR_T
1959 AC_TYPE_UINTPTR_T
1960 AC_CHECK_TYPE(ino_t, unsigned long)
1961 AC_CHECK_TYPE(dev_t, unsigned long)
1962 AC_CHECK_TYPE(daddr_t, long)
1963 AC_CHECK_TYPE(major_t, int)
1964 AC_CHECK_TYPE(minor_t, int)
1965 AC_CHECK_TYPE(ssize_t, int)
1966 AC_STRUCT_ST_BLOCKS
1967 AC_STRUCT_ST_RDEV
1968 AC_STRUCT_TM
1969 AC_C_CONST
1970
1971 AC_CHECK_SIZEOF(char, 1)
1972 AC_CHECK_SIZEOF(short int, 2)
1973 AC_CHECK_SIZEOF(int, 4)
1974 AC_CHECK_SIZEOF(long int, 4)
1975 AC_CHECK_SIZEOF(long long int, 8)
1976 AC_CHECK_SIZEOF(int *, 4)
1977
1978 dnl Check for sys/types.h types
1979 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
1980    [
1981        AC_TRY_COMPILE(
1982           [
1983               #include <sys/types.h>
1984           ], [
1985               u_int a; a = 1;
1986           ], [
1987               ac_cv_have_u_int="yes"
1988           ], [
1989               ac_cv_have_u_int="no"
1990           ]
1991        )
1992    ]
1993 )
1994 if test "x$ac_cv_have_u_int" = "xyes" ; then
1995    AC_DEFINE(HAVE_U_INT)
1996    have_u_int=1
1997 fi
1998
1999 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2000    [
2001        AC_TRY_COMPILE(
2002           [
2003               #include <sys/types.h>
2004           ], [
2005               intmax_t a; a = 1;
2006           ], [
2007               ac_cv_have_intmax_t="yes"
2008           ], [ 
2009               AC_TRY_COMPILE(
2010                  [
2011                      #include <stdint.h>
2012                  ], [
2013                      intmax_t a; a = 1;
2014                  ], [
2015                      ac_cv_have_intmax_t="yes"
2016                  ], [
2017                      ac_cv_have_intmax_t="no"
2018                  ]
2019               )
2020           ]
2021        )       
2022    ]
2023 )
2024 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2025    AC_DEFINE(HAVE_INTMAX_T)
2026    have_intmax_t=1
2027 fi
2028
2029 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2030    [
2031        AC_TRY_COMPILE(
2032           [
2033               #include <sys/types.h>
2034           ], [
2035               u_intmax_t a; a = 1;
2036           ], [
2037               ac_cv_have_u_intmax_t="yes"
2038           ], [ 
2039               AC_TRY_COMPILE(
2040                  [
2041                      #include <stdint.h>
2042                  ], [
2043                     u_intmax_t a; a = 1;
2044                  ], [
2045                     ac_cv_have_u_intmax_t="yes"
2046                  ], [
2047                     ac_cv_have_u_intmax_t="no"
2048                  ]
2049               )
2050           ]
2051        )
2052    ]
2053 )
2054 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2055    AC_DEFINE(HAVE_U_INTMAX_T)
2056    have_u_intmax_t=1
2057 fi
2058
2059 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2060    [
2061        AC_TRY_COMPILE(
2062           [
2063               #include <sys/types.h>
2064           ], [
2065               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2066           ], [
2067               ac_cv_have_intxx_t="yes"
2068           ], [
2069               ac_cv_have_intxx_t="no"
2070           ]
2071        )
2072    ]
2073 )
2074 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2075    AC_DEFINE(HAVE_INTXX_T)
2076    have_intxx_t=1
2077 fi
2078    
2079 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2080    [
2081        AC_TRY_COMPILE(
2082           [
2083               #include <sys/types.h>
2084           ], [
2085               int64_t a; a = 1;
2086           ], [
2087               ac_cv_have_int64_t="yes"
2088           ], [
2089               ac_cv_have_int64_t="no"
2090           ]
2091        )
2092    ]
2093 )
2094 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2095    AC_DEFINE(HAVE_INT64_T)
2096    have_int64_t=1
2097 fi
2098    
2099 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2100    [
2101        AC_TRY_COMPILE(
2102           [
2103               #include <sys/types.h>
2104           ], [
2105               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2106           ], [
2107              ac_cv_have_u_intxx_t="yes"
2108           ], [
2109              ac_cv_have_u_intxx_t="no"
2110           ]
2111        )
2112    ]
2113 )
2114 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2115    AC_DEFINE(HAVE_U_INTXX_T)
2116    have_u_intxx_t=1
2117 fi
2118
2119 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2120    [
2121        AC_TRY_COMPILE(
2122           [
2123               #include <sys/types.h>
2124           ], [
2125               u_int64_t a; a = 1;
2126           ], [
2127              ac_cv_have_u_int64_t="yes"
2128           ], [
2129              ac_cv_have_u_int64_t="no"
2130           ]
2131        )
2132    ]
2133 )
2134 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2135    AC_DEFINE(HAVE_U_INT64_T)
2136    have_u_int64_t=1
2137 fi
2138
2139 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2140     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2141 then
2142    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2143    AC_TRY_COMPILE(
2144       [
2145           #include <sys/bitypes.h>
2146       ], [
2147           int8_t a; int16_t b; int32_t c;
2148           u_int8_t e; u_int16_t f; u_int32_t g;
2149           a = b = c = e = f = g = 1;
2150       ], [
2151           AC_DEFINE(HAVE_U_INTXX_T)
2152           AC_DEFINE(HAVE_INTXX_T)
2153           AC_DEFINE(HAVE_SYS_BITYPES_H)
2154           AC_MSG_RESULT(yes)
2155       ], [
2156           AC_MSG_RESULT(no)
2157       ]
2158    ) 
2159 fi
2160
2161 if test -z "$have_u_intxx_t" ; then
2162    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2163       [
2164           AC_TRY_COMPILE(
2165              [
2166                  #include <sys/types.h>
2167              ], [
2168                  uint8_t a; uint16_t b; 
2169                  uint32_t c; a = b = c = 1;
2170              ], [
2171                 ac_cv_have_uintxx_t="yes"
2172              ], [
2173                 ac_cv_have_uintxx_t="no"
2174              ]
2175           )
2176       ]
2177    )
2178    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2179       AC_DEFINE(HAVE_UINTXX_T)
2180    fi
2181 fi
2182
2183 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2184     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2185 then
2186    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2187    AC_TRY_COMPILE(
2188       [
2189           #include <sys/bitypes.h>
2190       ], [
2191           int64_t a; u_int64_t b; 
2192           a = b = 1;
2193       ], [
2194           AC_DEFINE(HAVE_U_INT64_T)
2195           AC_DEFINE(HAVE_INT64_T)
2196           AC_MSG_RESULT(yes)
2197       ], [
2198           AC_MSG_RESULT(no)
2199       ]
2200    ) 
2201 fi
2202
2203 if (test -z "$have_uintxx_t" && \
2204     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2205 then
2206    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2207    AC_TRY_COMPILE(
2208       [
2209           #include <sys/bitypes.h>
2210       ], [
2211           uint8_t a; uint16_t b; 
2212           uint32_t c; a = b = c = 1;
2213       ], [
2214           AC_DEFINE(HAVE_UINTXX_T)
2215           AC_MSG_RESULT(yes)
2216       ], [
2217           AC_MSG_RESULT(no)
2218       ]
2219    ) 
2220 fi
2221
2222 dnl --------------------------------------------------------------------------
2223 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2224 dnl --------------------------------------------------------------------------
2225 AC_CHECK_FUNCS( \
2226    fork \
2227    getcwd \
2228    gethostname \
2229    getpid \
2230    gettimeofday \
2231    setpgid \
2232    setpgrp \
2233    setsid \
2234    signal \
2235    strerror \
2236    strncmp \
2237    strncpy \
2238    vfprintf \
2239    ,,
2240    [echo 'configure: cannot find needed function.'; exit 1]
2241 )
2242
2243 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2244 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2245 AC_CHECK_FUNCS(posix_fadvise)
2246 AC_CHECK_FUNCS(fdatasync)
2247
2248 AC_CHECK_FUNCS(chflags) 
2249
2250 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2251
2252 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2253    [
2254        AC_TRY_LINK(
2255           [
2256               #include <stdarg.h>
2257               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2258               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2259           ], [
2260               call_use_va_copy(1,2,3)
2261           ], [
2262               ba_cv_va_copy=yes,
2263           ], [
2264               ba_cv_va_copy=no
2265           ]
2266        )
2267    ]
2268 )
2269 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2270
2271 dnl --------------------------------------------------------------------------
2272 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2273 dnl --------------------------------------------------------------------------
2274 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2275
2276 # If resolver functions are not in libc check for -lnsl or -lresolv.
2277 AC_CHECK_FUNC(gethostbyname_r,
2278     AC_MSG_RESULT(using libc's resolver),
2279     AC_CHECK_LIB(nsl,gethostbyname_r)
2280     AC_CHECK_LIB(resolv,gethostbyname_r))
2281
2282 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2283 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2284 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2285
2286 dnl ----------------------------
2287 dnl check sa_len of sockaddr
2288 dnl ----------------------------
2289 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2290    [
2291        AC_TRY_COMPILE(
2292           [
2293               #include <sys/socket.h>
2294           ], [
2295               struct sockaddr s; s.sa_len;
2296           ], [
2297              ac_cv_struct_sockaddr_sa_len=yes
2298           ], [ac_cv_struct_sockaddr_sa_len=no
2299           ]
2300        )
2301    ]
2302 )
2303
2304 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2305   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2306 fi
2307
2308 AC_FUNC_STRFTIME
2309 AC_FUNC_VPRINTF
2310 AC_FUNC_ALLOCA
2311 AC_FUNC_GETMNTENT
2312 AC_FUNC_CLOSEDIR_VOID
2313 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2314 # AC_FUNC_FNMATCH    dnl use local version
2315
2316 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2317
2318 AC_CHECK_LIB(sun, getpwnam)
2319
2320 AC_CHECK_HEADERS(zlib.h)
2321 AC_CHECK_LIB(z, deflate, [FDLIBS="-lz"])
2322 have_zlib=no
2323 if test x$FDLIBS = x-lz; then
2324    AC_DEFINE(HAVE_LIBZ)
2325    have_zlib=yes
2326 fi
2327
2328 dnl
2329 dnl Check for ACL support and libraries
2330 dnl
2331 support_acl=auto
2332 AC_ARG_ENABLE(acl,
2333    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2334    [
2335        if test x$enableval = xyes; then
2336           support_acl=yes
2337        elif test x$enableval = xno; then
2338           support_acl=no
2339        fi
2340    ]
2341 )
2342
2343 have_acl=no
2344 have_extended_acl=no
2345 if test x$support_acl = xyes -o x$support_acl = xauto; then
2346    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2347    AC_CHECK_FUNC(acl_get_file,
2348       [
2349           have_acl=yes
2350       ], [
2351           AC_CHECK_LIB(acl, acl_get_file,
2352              [
2353                  have_acl=yes;
2354                  FDLIBS="-lacl $FDLIBS"
2355              ], [
2356                  AC_CHECK_LIB(pacl, acl_get_file,
2357                     [
2358                         have_acl=yes;
2359                         FDLIBS="-lpacl $FDLIBS"
2360                     ], [
2361                         AC_CHECK_LIB(sec, acltotext,
2362                            [
2363                                have_acl=yes;
2364                                FDLIBS="-lsec $FDLIBS"
2365
2366                                AC_CHECK_LIB(sec, acl_totext,
2367                                   [
2368                                       have_extended_acl=yes
2369                                   ]
2370                                )
2371                            ]
2372                         )
2373                     ]
2374                  )
2375              ]
2376           )
2377       ]
2378    )
2379
2380    if test x$support_acl = xyes -a $have_acl != yes; then
2381       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2382   please either load the acl libraries or rerun configure without --enable-acl])
2383    else
2384       if test $have_acl = yes; then
2385          AC_DEFINE([HAVE_ACL], [], [Normal attribute support])
2386       fi
2387
2388       if test $have_extended_acl = yes; then
2389          AC_DEFINE([HAVE_EXTENDED_ACL], [], [Extended attribute support])
2390       fi
2391    fi
2392 fi
2393
2394 dnl
2395 dnl Check for XATTR support
2396 dnl
2397 support_xattr=auto
2398 AC_ARG_ENABLE(xattr,
2399    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2400    [
2401        if test x$enableval = xyes; then
2402           support_xattr=yes
2403        elif test x$enableval = xno; then
2404           support_xattr=no
2405        fi
2406    ]
2407 )
2408
2409 have_xattr=no
2410 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2411    AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2412    AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2413       [
2414           have_xattr=yes
2415           AC_DEFINE([HAVE_LLISTXATTR], [], [LLISTXATTR support])
2416           AC_DEFINE([HAVE_LGETXATTR], [], [LGETXATTR support])
2417           AC_DEFINE([HAVE_LSETXATTR], [], [LSETXATTR support])
2418       ]
2419    )
2420
2421    #
2422    # OSX specific
2423    #
2424    if test $have_xattr = no; then
2425       AC_CHECK_FUNCS(listxattr getxattr setxattr,
2426          [
2427              have_xattr=yes
2428              AC_DEFINE([HAVE_LLISTXATTR], [], [LLISTXATTR support])
2429              AC_DEFINE([HAVE_LGETXATTR], [], [LGETXATTR support])
2430              AC_DEFINE([HAVE_LSETXATTR], [], [LSETXATTR support])
2431          ]
2432       )
2433    fi
2434
2435    #
2436    # Solaris specific
2437    #
2438    if test $have_xattr = no; then
2439       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2440       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2441       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2442
2443       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2444          [
2445              have_xattr=yes
2446              AC_DEFINE([HAVE_OPENAT], [], [OPENAT support])
2447              AC_DEFINE([HAVE_FSTATAT], [], [FSTATAT support])
2448              AC_DEFINE([HAVE_UNLINKAT], [], [UNLINKAT support])
2449              AC_DEFINE([HAVE_FCHOWNAT], [], [FCHOWNAT support])
2450              AC_DEFINE([HAVE_FUTIMESAT], [], [FUTIMESAT support])
2451          ]
2452       )
2453
2454       if test $have_xattr = yes; then
2455          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2456             [
2457                 FDLIBS="-lnvpair $FDLIBS"
2458             ]
2459          )
2460       fi
2461    fi
2462
2463    if test x$support_xattr = xyes -a $have_xattr != yes; then
2464       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2465   please either load the xattr libraries or rerun configure without --enable-xatt])
2466    else
2467       if test $have_xattr = yes; then
2468          AC_DEFINE([HAVE_XATTR], [], [XATTR support])
2469       fi
2470    fi
2471 fi
2472
2473 dnl
2474 dnl Check for pthread libraries
2475 dnl
2476 PTHREAD_LIB=""
2477 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2478    [
2479        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2480           [
2481               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2482                  [
2483                      AC_CHECK_FUNC(pthread_create)
2484                  ]
2485               )
2486           ]
2487        )
2488    ]
2489 )
2490
2491 AC_SUBST(FDLIBS)
2492 AC_DEFINE(FDLIBS)
2493
2494 CFLAGS=${CFLAGS--O}
2495
2496 if test x$have_gcc = xyes ; then
2497    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2498    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2499 fi
2500 LDFLAGS=${LDFLAGS--O}
2501 DB_LIBS="${SQL_LFLAGS}"
2502 CPPFLAGS="$CPPFLAGS"
2503 CFLAGS="$CFLAGS"
2504 AC_SUBST(DEBUG)
2505 AC_SUBST(DINCLUDE)
2506 AC_SUBST(CFLAGS)
2507 AC_SUBST(CPPFLAGS)
2508 AC_SUBST(LDFLAGS)
2509 AC_SUBST(X_CFLAGS)
2510 AC_SUBST(DEFS)
2511 AC_SUBST(LIBS)
2512 AC_SUBST(DLIB)
2513 AC_SUBST(DB_LIBS)
2514 AC_SUBST(X_LIBS)
2515 AC_SUBST(X_EXTRA_LIBS)
2516 AC_SUBST(WCFLAGS)
2517 AC_SUBST(WLDFLAGS)
2518 AC_SUBST(WRAPLIBS)
2519
2520 dnl extra configurable objects
2521 OBJLIST=
2522 AC_SUBST(OBJLIST)
2523
2524 lld="lld"
2525 llu="llu"
2526
2527 WCFLAGS=
2528 WLDFLAGS=
2529
2530 dnl
2531 dnl Finally we set appropriate distribution specific
2532 dnl  variables and defaults
2533 dnl
2534 dnl PFILES are platform specific files
2535 PFILES="platforms/Makefile"
2536 PSCMD="ps -e"
2537 WIN32=
2538 MACOSX=
2539
2540 hostname=`uname -n | cut -d '.' -f 1`
2541 if test x${hostname} = x ; then
2542    hostname="localhost"
2543 fi
2544 dnl Make sure hostname is resolved
2545 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2546 if test ! $? = 0; then
2547   hostname="localhost"
2548 fi
2549
2550 case "$DISTNAME" in
2551 aix)
2552    DISTVER=`uname -r`
2553    PSCMD="ps -e -o pid,comm"
2554    PFILES="${PFILES} \
2555       platforms/aix/Makefile"
2556    TAPEDRIVE="/dev/rmt0.1" 
2557   ;;     
2558 alpha)
2559    DISTVER=`uname -r`
2560    PTHREAD_LIB="-lpthread -lexc"
2561    if test "${CC}" = "gcc" ; then
2562       lld="lld"
2563       llu="llu"
2564    else
2565       lld="ld"
2566       llu="lu"
2567    fi
2568    TAPEDRIVE="/dev/nrmt0"
2569   ;;
2570 bsdi)
2571    DISTVER=`uname -a |awk '{print $3}'`
2572    TAPEDRIVE="/dev/nrmt0"
2573    PTHREAD_LIB="-pthread"
2574    CFLAGS="${CFLAGS} -pthread"
2575    PSCMD="ps -ax -o pid,command"
2576    lld="qd"
2577    llu="qu"
2578    PFILES="${PFILES} \
2579        platforms/bsdi/Makefile \
2580        platforms/bsdi/bacula-fd \
2581        platforms/bsdi/bacula-sd \
2582        platforms/bsdi/bacula-dir"
2583    largefile_support="yes"
2584   ;;
2585 cygwin)
2586    DISTVER=`uname -a |awk '{print $3}'`
2587    TAPEDRIVE="/dev/nrst0"
2588    WIN32=win32
2589    WCFLAGS="-mwindows"
2590    WLDFLAGS="-mwindows"
2591   ;;
2592 darwin)
2593    DISTVER=`uname -r`
2594    TAPEDRIVE="/dev/nst0"
2595    PSCMD="ps -e -o pid,command"
2596    MACOSX=macosx
2597    PFILES="${PFILES} \
2598       platforms/darwin/Makefile"
2599   ;;
2600 osx)
2601    DISTVER=`uname -r`
2602    TAPEDRIVE="/dev/nst0"
2603    PSCMD="ps -e -o pid,command"
2604    MACOSX=macosx
2605    PFILES="${PFILES} \
2606       platforms/osx/Makefile"
2607   ;;
2608 debian)
2609    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2610       DISTNAME="ubuntu"
2611    fi
2612    DISTVER=`cat /etc/debian_version`
2613    if test -f /etc/lsb-release ; then
2614       . /etc/lsb-release
2615       if test "x$DISTRIB_ID" != "x" ; then
2616          DISTNAME=$DISTRIB_ID
2617       fi
2618       if test "x$DISTRIB_RELEASE" != "x" ; then
2619          DISTVER=$DISTRIB_RELEASE
2620       fi
2621    fi
2622    if test "$DISTNAME" = "Ubuntu" ; then
2623       DISTNAME="ubuntu"
2624    fi
2625    TAPEDRIVE="/dev/nst0"
2626    PSCMD="ps -e -o pid,command"
2627    if test "$DISTNAME" = "ubuntu" ; then
2628       PFILES="${PFILES} \
2629          platforms/ubuntu/Makefile \
2630          platforms/ubuntu/bacula-fd \
2631          platforms/ubuntu/bacula-sd \
2632          platforms/ubuntu/bacula-dir"
2633    else 
2634       PFILES="${PFILES} \
2635          platforms/debian/Makefile \
2636          platforms/debian/bacula-fd \
2637          platforms/debian/bacula-sd \
2638          platforms/debian/bacula-dir"
2639    fi
2640   ;;
2641 freebsd)
2642    DISTVER=`uname -a |awk '{print $3}'`
2643    VER=`echo $DISTVER | cut -c 1`
2644    if test x$VER = x4 ; then
2645       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
2646       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
2647    fi
2648    lld="qd"
2649    llu="qu"
2650    TAPEDRIVE="/dev/nrsa0"
2651    PSCMD="ps -ax -o pid,command"
2652    PFILES="${PFILES} \
2653        platforms/freebsd/Makefile \
2654        platforms/freebsd/bacula-fd \
2655        platforms/freebsd/bacula-sd \
2656        platforms/freebsd/bacula-dir"
2657    largefile_support="yes"
2658   ;;
2659 hpux)
2660    PSCMD="UNIX95=1; ps -e -o pid,comm"
2661    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
2662    DISTVER=`uname -r`
2663    TAPEDRIVE="/dev/rmt/0hnb"
2664    PTHREAD_LIB="-lpthread"
2665    AC_DEFINE([_INCLUDE_LONGLONG])
2666   ;;
2667 irix)
2668    DISTVER=`uname -r`
2669    TAPEDRIVE="/dev/rmt/0cbn"
2670    PSCMD="ps -e -o pid,comm"
2671    PFILES="${PFILES} \
2672        platforms/irix/Makefile \
2673        platforms/irix/bacula-fd \
2674        platforms/irix/bacula-sd \
2675        platforms/irix/bacula-dir"
2676   ;;
2677 netbsd)
2678    DISTVER=`uname -a |awk '{print $3}'`
2679    lld="qd"
2680    llu="qu"
2681    TAPEDRIVE="/dev/nrst0"
2682    PSCMD="ps -ax -o pid,command"
2683    PTHREAD_LIB="-pthread"
2684    CFLAGS="${CFLAGS} -pthread"
2685   ;;
2686 openbsd)
2687    DISTVER=`uname -a |awk '{print $3}'`
2688    lld="qd"
2689    llu="qu"
2690    TAPEDRIVE="/dev/nrst0"
2691    PSCMD="ps -ax -o pid,command"
2692    PTHREAD_LIB="-pthread"
2693    CFLAGS="${CFLAGS} -pthread"
2694    PFILES="${PFILES} \
2695        platforms/openbsd/Makefile \
2696        platforms/openbsd/bacula-fd \
2697        platforms/openbsd/bacula-sd \
2698        platforms/openbsd/bacula-dir"
2699   ;;
2700 redhat)
2701    if test -f /etc/whitebox-release ; then
2702       f=/etc/whitebox-release
2703    else
2704       f=/etc/redhat-release
2705    fi
2706    if test `cat $f | grep release |\
2707          cut -f 3 -d ' '`x = "Enterprise"x ; then
2708       DISTVER="Enterprise "`cat $f | grep release |\
2709           cut -f 6 -d ' '`
2710    else
2711        DISTVER=`cat /etc/redhat-release | grep release |\
2712            cut -f 5 -d ' '`
2713    fi
2714    TAPEDRIVE="/dev/nst0"
2715    PSCMD="ps -e -o pid,command"
2716    PFILES="${PFILES} \
2717        platforms/redhat/Makefile \
2718        platforms/redhat/bacula-fd \
2719        platforms/redhat/bacula-sd \
2720        platforms/redhat/bacula-dir
2721        "
2722   ;;
2723 mandrake)
2724    DISTVER=`cat /etc/mandrake-release | grep release |\
2725       cut -f 5 -d ' '`
2726    TAPEDRIVE="/dev/nst0"
2727    PSCMD="ps -e -o pid,command"
2728    PFILES="${PFILES} \
2729        platforms/mandrake/Makefile \
2730        platforms/mandrake/bacula-fd \
2731        platforms/mandrake/bacula-sd \
2732        platforms/mandrake/bacula-dir \
2733        platforms/mandrake/bacula.spec \
2734        "
2735   ;;
2736 gentoo)
2737    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
2738    TAPEDRIVE="/dev/nst0"
2739    PSCMD="ps -e -o pid,command"
2740    PFILES="${PFILES} \
2741        platforms/gentoo/Makefile \
2742     platforms/gentoo/bacula-init \
2743        platforms/gentoo/bacula-fd \
2744        platforms/gentoo/bacula-sd \
2745        platforms/gentoo/bacula-dir"
2746   ;;
2747 slackware)
2748    DISTVER=`cat /etc/slackware-version`
2749    TAPEDRIVE="/dev/nst0"
2750    PSCMD="ps -e -o pid,command"
2751    PFILES="${PFILES} \
2752        platforms/slackware/Makefile \
2753        platforms/slackware/rc.bacula-fd \
2754        platforms/slackware/rc.bacula-sd \
2755        platforms/slackware/rc.bacula-dir\
2756        platforms/slackware/functions.bacula"
2757   ;;
2758 solaris)
2759    DISTVER=`uname -r`
2760    TAPEDRIVE="/dev/rmt/0cbn"
2761    PSCMD="ps -e -o pid,comm"
2762    PFILES="${PFILES} \
2763        platforms/solaris/Makefile \
2764        platforms/solaris/bacula-fd \
2765        platforms/solaris/bacula-sd \
2766        platforms/solaris/bacula-dir"
2767    if test x$DISTVER = x5.6 ; then
2768        AC_DEFINE(HAVE_OLD_SOCKOPT)
2769    fi
2770    LIBS="$LIBS -lresolv"
2771   ;;
2772 suse)
2773    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
2774        cut -f 3 -d ' '`
2775    TAPEDRIVE="/dev/nst0"
2776    PSCMD="ps -e -o pid,command"
2777    PFILES="${PFILES} \
2778        platforms/suse/Makefile \
2779        platforms/suse/bacula-fd \
2780        platforms/suse/bacula-sd \
2781        platforms/suse/bacula-dir \
2782        platforms/suse/bacula \
2783        platforms/suse/bacula.spec"
2784   ;;
2785 suse5)
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       AC_MSG_ERROR([Could not find qmake or qmake-qt4 in $PATH. Check your Qt installation])
2958    fi
2959
2960    QMAKEBIN="qmake"
2961
2962    if test "x$QMAKEQT4" != "xnone"; then
2963        QMAKEBIN=qmake-qt4
2964    fi
2965   
2966    cd src/qt-console
2967    echo "Creating bat Makefile"
2968    touch bat
2969    chmod 755 bat
2970    $QMAKEBIN
2971    ${MAKE:-make} clean
2972    cd ${BUILD_DIR}
2973 fi
2974
2975 dnl
2976 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
2977 dnl requires gcc).  If it's not, don't rebuild dependencies
2978 dnl
2979 if test X"$GCC" = "Xyes" ; then
2980   echo "Doing make of dependencies"
2981   ${MAKE:-make} depend
2982 fi
2983
2984 cd src/qt-console
2985 chmod 755 install_conf_file build-depkgs-qt-console
2986 cd ${BUILD_DIR}
2987
2988 cd scripts
2989 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
2990 chmod 755 dvd-handler dvd-simulator
2991 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
2992 cd ..
2993
2994 c=updatedb
2995 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
2996 chmod 755 $c/update_postgresql_tables_10_to_11   $c/update_sqlite_tables_10_to_11
2997
2998 c=src/cats
2999
3000 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3001 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3002
3003 chmod 755 $c/create_bdb_database      $c/update_bdb_tables     $c/make_bdb_tables
3004 chmod 755 $c/grant_bdb_privileges     $c/drop_bdb_tables       $c/drop_bdb_database
3005
3006 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3007 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3008
3009 chmod 755 $c/create_sqlite_database   $c/update_sqlite_tables  $c/make_sqlite_tables
3010 chmod 755 $c/grant_sqlite_privileges  $c/drop_sqlite_tables    $c/drop_sqlite_database
3011
3012 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3013 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3014
3015 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3016 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3017
3018 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup
3019 chmod 755 $c/sqlite
3020 chmod 755 $c/mysql
3021
3022 chmod 755 src/win32/build-depkgs-mingw32
3023
3024 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3025    largefile_support="yes"
3026 fi
3027
3028 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3029 if test X"$GCC" = "Xyes" ; then
3030    dnl
3031    dnl A whole lot of hand springs to get the compiler version.
3032    dnl  This is because gcc changed the output in version 3.0
3033    dnl
3034    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3035    if test "x${CCVERSION}" = "x" ; then
3036       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3037    fi
3038    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3039    if test x"${CXXVERSION}" = x ; then
3040       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3041    fi
3042 fi
3043
3044 # clean up any old junk
3045 echo " "
3046 echo "Cleaning up"
3047 echo " "
3048 ${MAKE:-make} clean
3049
3050 if test "x${db_type}" = "xInternal" ; then
3051    echo " "
3052    echo " "
3053    echo "You have not specified either --enable-client-only or one of the"
3054    echo "  supported databases: MySQL, PostgreSQL, SQLite3, SQLite or DBI."
3055    echo "  This is not permitted. Please reconfigure."
3056    echo " "
3057    echo "Aborting the configuration ..."
3058    echo " "
3059    echo " "
3060    exit 1
3061 fi
3062
3063 echo "
3064 Configuration on `date`:
3065
3066    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3067    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3068    Source code location:    ${srcdir}
3069    Install binaries:        ${sbindir}
3070    Install libraries:       ${libdir}
3071    Install config files:    ${sysconfdir}
3072    Scripts directory:       ${scriptdir}
3073    Archive directory:       ${archivedir}
3074    Working directory:       ${working_dir}
3075    PID directory:           ${piddir}
3076    Subsys directory:        ${subsysdir}
3077    Man directory:           ${mandir}
3078    Data directory:          ${datarootdir}
3079    Plugin directory:        ${plugindir}
3080    C Compiler:              ${CC} ${CCVERSION}
3081    C++ Compiler:            ${CXX} ${CXXVERSION}
3082    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3083    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3084    Libraries:               ${LIBS}
3085    Statically Linked Tools: ${support_static_tools}
3086    Statically Linked FD:    ${support_static_fd}
3087    Statically Linked SD:    ${support_static_sd}
3088    Statically Linked DIR:   ${support_static_dir}
3089    Statically Linked CONS:  ${support_static_cons}
3090    Database type:           ${db_type}
3091    Database port:           ${db_port}
3092    Database lib:            ${DB_LIBS}
3093    Database name:           ${db_name}
3094    Database user:           ${db_user}
3095  
3096    Job Output Email:        ${job_email}
3097    Traceback Email:         ${dump_email}
3098    SMTP Host Address:       ${smtp_host}
3099  
3100    Director Port:           ${dir_port}
3101    File daemon Port:        ${fd_port}
3102    Storage daemon Port:     ${sd_port}
3103  
3104    Director User:           ${dir_user}
3105    Director Group:          ${dir_group}
3106    Storage Daemon User:     ${sd_user}
3107    Storage DaemonGroup:     ${sd_group}
3108    File Daemon User:        ${fd_user}
3109    File Daemon Group:       ${fd_group}
3110  
3111    SQL binaries Directory   ${SQL_BINDIR}
3112  
3113    Large file support:      $largefile_support
3114    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3115    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3116    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3117    TLS support:             ${support_tls}
3118    Encryption support:      ${support_crypto} 
3119    ZLIB support:            ${have_zlib}
3120    enable-smartalloc:       ${support_smartalloc} 
3121    enable-lockmgr:          ${support_lockmgr}
3122    bat support:             ${support_bat} ${QWT_LDFLAGS}
3123    enable-gnome:            ${support_gnome} ${gnome_version}
3124    enable-bwx-console:      ${support_wx_console} ${wx_version}
3125    enable-tray-monitor:     ${support_tray_monitor}
3126    client-only:             ${build_client_only}
3127    build-dird:              ${build_dird}
3128    build-stored:            ${build_stored}
3129    ACL support:             ${have_acl}
3130    XATTR support:           ${have_xattr}
3131    Python support:          ${support_python} ${PYTHON_LIBS}
3132    Batch insert enabled:    ${support_batch_insert}
3133
3134   " > config.out
3135
3136 cat config.out