]> 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 bigendian
1871 dnl --------------------------------------------------------------------------
1872 AC_CACHE_CHECK([for bigendian], ba_cv_bigendian,
1873    [
1874        AC_TRY_RUN(
1875           [
1876               main(){long a=1L; char *p=(char *)&a; exit(*p);}
1877           ], [
1878              ba_cv_bigendian=yes
1879           ], [
1880              ba_cv_bigendian=no
1881           ], [
1882              ba_cv_bigendian=no
1883           ]
1884        )
1885    ]
1886 )
1887 test $ba_cv_bigendian = yes && AC_DEFINE(HAVE_BIGENDIAN)
1888
1889 dnl --------------------------------------------------------------------------
1890 dnl Check for typeof()
1891 dnl --------------------------------------------------------------------------
1892 AC_LANG_PUSH(C++)
1893 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
1894    [
1895        AC_TRY_RUN(
1896           [
1897               main(){char *a = 0; a = (typeof a)a;}
1898           ], [
1899               ba_cv_have_typeof=yes
1900           ], [
1901               ba_cv_have_typeof=no
1902           ], [
1903               ba_cv_have_typeof=no
1904           ]
1905        )
1906    ]
1907 )
1908 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
1909 AC_LANG_POP(C++)
1910
1911 AC_C_CONST
1912
1913 dnl --------------------------------------------------------------------------
1914 dnl CHECKING FOR FILESYSTEM TYPE
1915 dnl --------------------------------------------------------------------------
1916 AC_MSG_CHECKING(how to get filesystem type)
1917 fstype=no
1918 # The order of these tests is important.
1919 AC_TRY_CPP(
1920    [
1921        #include <sys/statvfs.h>
1922        #include <sys/fstyp.h>
1923    ],
1924    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
1925 )
1926 if test $fstype = no; then
1927    AC_TRY_CPP(
1928       [
1929           #include <sys/statfs.h>
1930           #include <sys/fstyp.h>
1931       ],
1932       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
1933    )
1934 fi
1935 if test $fstype = no; then
1936    AC_TRY_CPP(
1937       [
1938           #include <sys/statfs.h>
1939           #include <sys/vmount.h>
1940       ],
1941       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
1942    )
1943 fi
1944 if test $fstype = no; then  
1945    AC_TRY_CPP(
1946       [
1947           #include <mntent.h>
1948       ],
1949       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
1950    )
1951 fi
1952 if test $fstype = no; then  
1953    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
1954 fi
1955 if test $fstype = no; then  
1956    AC_TRY_CPP(
1957       [
1958           #include <sys/mount.h>
1959           #include <sys/fs_types.h>
1960       ],
1961       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
1962    )
1963 fi
1964 AC_MSG_RESULT($fstype)
1965
1966 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
1967
1968 dnl --------------------------------------------------------------------------
1969 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
1970 dnl --------------------------------------------------------------------------
1971 AC_TYPE_SIGNAL
1972 SIGNAL_CHECK
1973 AC_TYPE_MODE_T
1974 AC_TYPE_UID_T
1975 AC_TYPE_SIZE_T
1976 AC_TYPE_PID_T
1977 AC_TYPE_OFF_T
1978 AC_TYPE_INTPTR_T
1979 AC_TYPE_UINTPTR_T
1980 AC_CHECK_TYPE(ino_t, unsigned long)
1981 AC_CHECK_TYPE(dev_t, unsigned long)
1982 AC_CHECK_TYPE(daddr_t, long)
1983 AC_CHECK_TYPE(major_t, int)
1984 AC_CHECK_TYPE(minor_t, int)
1985 AC_CHECK_TYPE(ssize_t, int)
1986 AC_STRUCT_ST_BLOCKS
1987 AC_STRUCT_ST_RDEV
1988 AC_STRUCT_TM
1989 AC_C_CONST
1990
1991 AC_CHECK_SIZEOF(char, 1)
1992 AC_CHECK_SIZEOF(short int, 2)
1993 AC_CHECK_SIZEOF(int, 4)
1994 AC_CHECK_SIZEOF(long int, 4)
1995 AC_CHECK_SIZEOF(long long int, 8)
1996 AC_CHECK_SIZEOF(int *, 4)
1997
1998 dnl Check for sys/types.h types
1999 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
2000    [
2001        AC_TRY_COMPILE(
2002           [
2003               #include <sys/types.h>
2004           ], [
2005               u_int a; a = 1;
2006           ], [
2007               ac_cv_have_u_int="yes"
2008           ], [
2009               ac_cv_have_u_int="no"
2010           ]
2011        )
2012    ]
2013 )
2014 if test "x$ac_cv_have_u_int" = "xyes" ; then
2015    AC_DEFINE(HAVE_U_INT)
2016    have_u_int=1
2017 fi
2018
2019 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2020    [
2021        AC_TRY_COMPILE(
2022           [
2023               #include <sys/types.h>
2024           ], [
2025               intmax_t a; a = 1;
2026           ], [
2027               ac_cv_have_intmax_t="yes"
2028           ], [ 
2029               AC_TRY_COMPILE(
2030                  [
2031                      #include <stdint.h>
2032                  ], [
2033                      intmax_t a; a = 1;
2034                  ], [
2035                      ac_cv_have_intmax_t="yes"
2036                  ], [
2037                      ac_cv_have_intmax_t="no"
2038                  ]
2039               )
2040           ]
2041        )       
2042    ]
2043 )
2044 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2045    AC_DEFINE(HAVE_INTMAX_T)
2046    have_intmax_t=1
2047 fi
2048
2049 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2050    [
2051        AC_TRY_COMPILE(
2052           [
2053               #include <sys/types.h>
2054           ], [
2055               u_intmax_t a; a = 1;
2056           ], [
2057               ac_cv_have_u_intmax_t="yes"
2058           ], [ 
2059               AC_TRY_COMPILE(
2060                  [
2061                      #include <stdint.h>
2062                  ], [
2063                     u_intmax_t a; a = 1;
2064                  ], [
2065                     ac_cv_have_u_intmax_t="yes"
2066                  ], [
2067                     ac_cv_have_u_intmax_t="no"
2068                  ]
2069               )
2070           ]
2071        )
2072    ]
2073 )
2074 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2075    AC_DEFINE(HAVE_U_INTMAX_T)
2076    have_u_intmax_t=1
2077 fi
2078
2079 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2080    [
2081        AC_TRY_COMPILE(
2082           [
2083               #include <sys/types.h>
2084           ], [
2085               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2086           ], [
2087               ac_cv_have_intxx_t="yes"
2088           ], [
2089               ac_cv_have_intxx_t="no"
2090           ]
2091        )
2092    ]
2093 )
2094 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2095    AC_DEFINE(HAVE_INTXX_T)
2096    have_intxx_t=1
2097 fi
2098    
2099 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2100    [
2101        AC_TRY_COMPILE(
2102           [
2103               #include <sys/types.h>
2104           ], [
2105               int64_t a; a = 1;
2106           ], [
2107               ac_cv_have_int64_t="yes"
2108           ], [
2109               ac_cv_have_int64_t="no"
2110           ]
2111        )
2112    ]
2113 )
2114 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2115    AC_DEFINE(HAVE_INT64_T)
2116    have_int64_t=1
2117 fi
2118    
2119 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2120    [
2121        AC_TRY_COMPILE(
2122           [
2123               #include <sys/types.h>
2124           ], [
2125               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2126           ], [
2127              ac_cv_have_u_intxx_t="yes"
2128           ], [
2129              ac_cv_have_u_intxx_t="no"
2130           ]
2131        )
2132    ]
2133 )
2134 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2135    AC_DEFINE(HAVE_U_INTXX_T)
2136    have_u_intxx_t=1
2137 fi
2138
2139 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2140    [
2141        AC_TRY_COMPILE(
2142           [
2143               #include <sys/types.h>
2144           ], [
2145               u_int64_t a; a = 1;
2146           ], [
2147              ac_cv_have_u_int64_t="yes"
2148           ], [
2149              ac_cv_have_u_int64_t="no"
2150           ]
2151        )
2152    ]
2153 )
2154 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2155    AC_DEFINE(HAVE_U_INT64_T)
2156    have_u_int64_t=1
2157 fi
2158
2159 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2160     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2161 then
2162    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2163    AC_TRY_COMPILE(
2164       [
2165           #include <sys/bitypes.h>
2166       ], [
2167           int8_t a; int16_t b; int32_t c;
2168           u_int8_t e; u_int16_t f; u_int32_t g;
2169           a = b = c = e = f = g = 1;
2170       ], [
2171           AC_DEFINE(HAVE_U_INTXX_T)
2172           AC_DEFINE(HAVE_INTXX_T)
2173           AC_DEFINE(HAVE_SYS_BITYPES_H)
2174           AC_MSG_RESULT(yes)
2175       ], [
2176           AC_MSG_RESULT(no)
2177       ]
2178    ) 
2179 fi
2180
2181 if test -z "$have_u_intxx_t" ; then
2182    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2183       [
2184           AC_TRY_COMPILE(
2185              [
2186                  #include <sys/types.h>
2187              ], [
2188                  uint8_t a; uint16_t b; 
2189                  uint32_t c; a = b = c = 1;
2190              ], [
2191                 ac_cv_have_uintxx_t="yes"
2192              ], [
2193                 ac_cv_have_uintxx_t="no"
2194              ]
2195           )
2196       ]
2197    )
2198    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2199       AC_DEFINE(HAVE_UINTXX_T)
2200    fi
2201 fi
2202
2203 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2204     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2205 then
2206    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2207    AC_TRY_COMPILE(
2208       [
2209           #include <sys/bitypes.h>
2210       ], [
2211           int64_t a; u_int64_t b; 
2212           a = b = 1;
2213       ], [
2214           AC_DEFINE(HAVE_U_INT64_T)
2215           AC_DEFINE(HAVE_INT64_T)
2216           AC_MSG_RESULT(yes)
2217       ], [
2218           AC_MSG_RESULT(no)
2219       ]
2220    ) 
2221 fi
2222
2223 if (test -z "$have_uintxx_t" && \
2224     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2225 then
2226    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2227    AC_TRY_COMPILE(
2228       [
2229           #include <sys/bitypes.h>
2230       ], [
2231           uint8_t a; uint16_t b; 
2232           uint32_t c; a = b = c = 1;
2233       ], [
2234           AC_DEFINE(HAVE_UINTXX_T)
2235           AC_MSG_RESULT(yes)
2236       ], [
2237           AC_MSG_RESULT(no)
2238       ]
2239    ) 
2240 fi
2241
2242 dnl --------------------------------------------------------------------------
2243 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2244 dnl --------------------------------------------------------------------------
2245 AC_CHECK_FUNCS( \
2246    fork \
2247    getcwd \
2248    gethostname \
2249    getpid \
2250    gettimeofday \
2251    setpgid \
2252    setpgrp \
2253    setsid \
2254    signal \
2255    strerror \
2256    strncmp \
2257    strncpy \
2258    vfprintf \
2259    ,,
2260    [echo 'configure: cannot find needed function.'; exit 1]
2261 )
2262
2263 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2264 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2265 AC_CHECK_FUNCS(posix_fadvise)
2266 AC_CHECK_FUNCS(fdatasync)
2267
2268 AC_CHECK_FUNCS(chflags) 
2269
2270 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2271
2272 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2273    [
2274        AC_TRY_LINK(
2275           [
2276               #include <stdarg.h>
2277               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2278               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2279           ], [
2280               call_use_va_copy(1,2,3)
2281           ], [
2282               ba_cv_va_copy=yes,
2283           ], [
2284               ba_cv_va_copy=no
2285           ]
2286        )
2287    ]
2288 )
2289 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2290
2291 dnl --------------------------------------------------------------------------
2292 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2293 dnl --------------------------------------------------------------------------
2294 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2295
2296 # If resolver functions are not in libc check for -lnsl or -lresolv.
2297 AC_CHECK_FUNC(gethostbyname_r,
2298     AC_MSG_RESULT(using libc's resolver),
2299     AC_CHECK_LIB(nsl,gethostbyname_r)
2300     AC_CHECK_LIB(resolv,gethostbyname_r))
2301
2302 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2303 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2304 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2305
2306 dnl ----------------------------
2307 dnl check sa_len of sockaddr
2308 dnl ----------------------------
2309 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2310    [
2311        AC_TRY_COMPILE(
2312           [
2313               #include <sys/socket.h>
2314           ], [
2315               struct sockaddr s; s.sa_len;
2316           ], [
2317              ac_cv_struct_sockaddr_sa_len=yes
2318           ], [ac_cv_struct_sockaddr_sa_len=no
2319           ]
2320        )
2321    ]
2322 )
2323
2324 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2325   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2326 fi
2327
2328 AC_FUNC_STRFTIME
2329 AC_FUNC_VPRINTF
2330 AC_FUNC_ALLOCA
2331 AC_FUNC_GETMNTENT
2332 AC_FUNC_CLOSEDIR_VOID
2333 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2334 # AC_FUNC_FNMATCH    dnl use local version
2335
2336 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2337
2338 AC_CHECK_LIB(sun, getpwnam)
2339
2340 AC_CHECK_HEADERS(zlib.h)
2341 AC_CHECK_LIB(z, deflate, [FDLIBS="-lz"])
2342 have_zlib=no
2343 if test x$FDLIBS = x-lz; then
2344    AC_DEFINE(HAVE_LIBZ)
2345    have_zlib=yes
2346 fi
2347
2348 dnl
2349 dnl Check for ACL support and libraries
2350 dnl
2351 support_acl=auto
2352 AC_ARG_ENABLE(acl,
2353    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2354    [
2355        if test x$enableval = xyes; then
2356           support_acl=yes
2357        elif test x$enableval = xno; then
2358           support_acl=no
2359        fi
2360    ]
2361 )
2362
2363 have_acl=no
2364 have_extended_acl=no
2365 if test x$support_acl = xyes -o x$support_acl = xauto; then
2366    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2367    AC_CHECK_FUNC(acl_get_file,
2368       [
2369           have_acl=yes
2370       ], [
2371           AC_CHECK_LIB(acl, acl_get_file,
2372              [
2373                  have_acl=yes;
2374                  FDLIBS="-lacl $FDLIBS"
2375              ], [
2376                  AC_CHECK_LIB(pacl, acl_get_file,
2377                     [
2378                         have_acl=yes;
2379                         FDLIBS="-lpacl $FDLIBS"
2380                     ], [
2381                         AC_CHECK_LIB(sec, acltotext,
2382                            [
2383                                have_acl=yes;
2384                                FDLIBS="-lsec $FDLIBS"
2385
2386                                AC_CHECK_LIB(sec, acl_totext,
2387                                   [
2388                                       have_extended_acl=yes
2389                                   ]
2390                                )
2391                            ]
2392                         )
2393                     ]
2394                  )
2395              ]
2396           )
2397       ]
2398    )
2399
2400    if test x$support_acl = xyes -a $have_acl != yes; then
2401       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2402   please either load the acl libraries or rerun configure without --enable-acl])
2403    else
2404       if test $have_acl = yes; then
2405          AC_DEFINE([HAVE_ACL], [], [Normal attribute support])
2406       fi
2407
2408       if test $have_extended_acl = yes; then
2409          AC_DEFINE([HAVE_EXTENDED_ACL], [], [Extended attribute support])
2410       fi
2411    fi
2412 fi
2413
2414 dnl
2415 dnl Check for XATTR support
2416 dnl
2417 support_xattr=auto
2418 AC_ARG_ENABLE(xattr,
2419    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2420    [
2421        if test x$enableval = xyes; then
2422           support_xattr=yes
2423        elif test x$enableval = xno; then
2424           support_xattr=no
2425        fi
2426    ]
2427 )
2428
2429 have_xattr=no
2430 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2431    AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2432    AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2433       [
2434           have_xattr=yes
2435           AC_DEFINE([HAVE_LLISTXATTR], [], [LLISTXATTR support])
2436           AC_DEFINE([HAVE_LGETXATTR], [], [LGETXATTR support])
2437           AC_DEFINE([HAVE_LSETXATTR], [], [LSETXATTR support])
2438       ]
2439    )
2440
2441    #
2442    # OSX specific
2443    #
2444    if test $have_xattr = no; then
2445       AC_CHECK_FUNCS(listxattr getxattr setxattr,
2446          [
2447              have_xattr=yes
2448              AC_DEFINE([HAVE_LLISTXATTR], [], [LLISTXATTR support])
2449              AC_DEFINE([HAVE_LGETXATTR], [], [LGETXATTR support])
2450              AC_DEFINE([HAVE_LSETXATTR], [], [LSETXATTR support])
2451          ]
2452       )
2453    fi
2454
2455    #
2456    # Solaris specific
2457    #
2458    if test $have_xattr = no; then
2459       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2460       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2461       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2462
2463       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2464          [
2465              have_xattr=yes
2466              AC_DEFINE([HAVE_OPENAT], [], [OPENAT support])
2467              AC_DEFINE([HAVE_FSTATAT], [], [FSTATAT support])
2468              AC_DEFINE([HAVE_UNLINKAT], [], [UNLINKAT support])
2469              AC_DEFINE([HAVE_FCHOWNAT], [], [FCHOWNAT support])
2470              AC_DEFINE([HAVE_FUTIMESAT], [], [FUTIMESAT support])
2471          ]
2472       )
2473
2474       if test $have_xattr = yes; then
2475          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2476             [
2477                 FDLIBS="-lnvpair $FDLIBS"
2478             ]
2479          )
2480       fi
2481    fi
2482
2483    if test x$support_xattr = xyes -a $have_xattr != yes; then
2484       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2485   please either load the xattr libraries or rerun configure without --enable-xatt])
2486    else
2487       if test $have_xattr = yes; then
2488          AC_DEFINE([HAVE_XATTR], [], [XATTR support])
2489       fi
2490    fi
2491 fi
2492
2493 dnl
2494 dnl Check for pthread libraries
2495 dnl
2496 PTHREAD_LIB=""
2497 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2498    [
2499        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2500           [
2501               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2502                  [
2503                      AC_CHECK_FUNC(pthread_create)
2504                  ]
2505               )
2506           ]
2507        )
2508    ]
2509 )
2510
2511 AC_SUBST(FDLIBS)
2512 AC_DEFINE(FDLIBS)
2513
2514 CFLAGS=${CFLAGS--O}
2515
2516 if test x$have_gcc = xyes ; then
2517    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2518    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2519 fi
2520 LDFLAGS=${LDFLAGS--O}
2521 DB_LIBS="${SQL_LFLAGS}"
2522 CPPFLAGS="$CPPFLAGS"
2523 CFLAGS="$CFLAGS"
2524 AC_SUBST(DEBUG)
2525 AC_SUBST(DINCLUDE)
2526 AC_SUBST(CFLAGS)
2527 AC_SUBST(CPPFLAGS)
2528 AC_SUBST(LDFLAGS)
2529 AC_SUBST(X_CFLAGS)
2530 AC_SUBST(DEFS)
2531 AC_SUBST(LIBS)
2532 AC_SUBST(DLIB)
2533 AC_SUBST(DB_LIBS)
2534 AC_SUBST(X_LIBS)
2535 AC_SUBST(X_EXTRA_LIBS)
2536 AC_SUBST(WCFLAGS)
2537 AC_SUBST(WLDFLAGS)
2538 AC_SUBST(WRAPLIBS)
2539
2540 dnl extra configurable objects
2541 OBJLIST=
2542 AC_SUBST(OBJLIST)
2543
2544 lld="lld"
2545 llu="llu"
2546
2547 WCFLAGS=
2548 WLDFLAGS=
2549
2550 dnl
2551 dnl Finally we set appropriate distribution specific
2552 dnl  variables and defaults
2553 dnl
2554 dnl PFILES are platform specific files
2555 PFILES="platforms/Makefile"
2556 PSCMD="ps -e"
2557 WIN32=
2558 MACOSX=
2559
2560 hostname=`uname -n | cut -d '.' -f 1`
2561 if test x${hostname} = x ; then
2562    hostname="localhost"
2563 fi
2564 dnl Make sure hostname is resolved
2565 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2566 if test ! $? = 0; then
2567   hostname="localhost"
2568 fi
2569
2570 case "$DISTNAME" in
2571 aix)
2572    DISTVER=`uname -r`
2573    PSCMD="ps -e -o pid,comm"
2574    PFILES="${PFILES} \
2575       platforms/aix/Makefile"
2576    TAPEDRIVE="/dev/rmt0.1" 
2577   ;;     
2578 alpha)
2579    DISTVER=`uname -r`
2580    PTHREAD_LIB="-lpthread -lexc"
2581    if test "${CC}" = "gcc" ; then
2582       lld="lld"
2583       llu="llu"
2584    else
2585       lld="ld"
2586       llu="lu"
2587    fi
2588    TAPEDRIVE="/dev/nrmt0"
2589   ;;
2590 bsdi)
2591    DISTVER=`uname -a |awk '{print $3}'`
2592    TAPEDRIVE="/dev/nrmt0"
2593    PTHREAD_LIB="-pthread"
2594    CFLAGS="${CFLAGS} -pthread"
2595    PSCMD="ps -ax -o pid,command"
2596    lld="qd"
2597    llu="qu"
2598    PFILES="${PFILES} \
2599        platforms/bsdi/Makefile \
2600        platforms/bsdi/bacula-fd \
2601        platforms/bsdi/bacula-sd \
2602        platforms/bsdi/bacula-dir"
2603    largefile_support="yes"
2604   ;;
2605 cygwin)
2606    DISTVER=`uname -a |awk '{print $3}'`
2607    TAPEDRIVE="/dev/nrst0"
2608    WIN32=win32
2609    WCFLAGS="-mwindows"
2610    WLDFLAGS="-mwindows"
2611   ;;
2612 darwin)
2613    DISTVER=`uname -r`
2614    TAPEDRIVE="/dev/nst0"
2615    PSCMD="ps -e -o pid,command"
2616    MACOSX=macosx
2617    PFILES="${PFILES} \
2618       platforms/darwin/Makefile"
2619   ;;
2620 osx)
2621    DISTVER=`uname -r`
2622    TAPEDRIVE="/dev/nst0"
2623    PSCMD="ps -e -o pid,command"
2624    MACOSX=macosx
2625    PFILES="${PFILES} \
2626       platforms/osx/Makefile"
2627   ;;
2628 debian)
2629    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2630       DISTNAME="ubuntu"
2631    fi
2632    DISTVER=`cat /etc/debian_version`
2633    if test -f /etc/lsb-release ; then
2634       . /etc/lsb-release
2635       if test "x$DISTRIB_ID" != "x" ; then
2636          DISTNAME=$DISTRIB_ID
2637       fi
2638       if test "x$DISTRIB_RELEASE" != "x" ; then
2639          DISTVER=$DISTRIB_RELEASE
2640       fi
2641    fi
2642    if test "$DISTNAME" = "Ubuntu" ; then
2643       DISTNAME="ubuntu"
2644    fi
2645    TAPEDRIVE="/dev/nst0"
2646    PSCMD="ps -e -o pid,command"
2647    if test "$DISTNAME" = "ubuntu" ; then
2648       PFILES="${PFILES} \
2649          platforms/ubuntu/Makefile \
2650          platforms/ubuntu/bacula-fd \
2651          platforms/ubuntu/bacula-sd \
2652          platforms/ubuntu/bacula-dir"
2653    else 
2654       PFILES="${PFILES} \
2655          platforms/debian/Makefile \
2656          platforms/debian/bacula-fd \
2657          platforms/debian/bacula-sd \
2658          platforms/debian/bacula-dir"
2659    fi
2660   ;;
2661 freebsd)
2662    DISTVER=`uname -a |awk '{print $3}'`
2663    VER=`echo $DISTVER | cut -c 1`
2664    if test x$VER = x4 ; then
2665       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
2666       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
2667    fi
2668    lld="qd"
2669    llu="qu"
2670    TAPEDRIVE="/dev/nrsa0"
2671    PSCMD="ps -ax -o pid,command"
2672    PFILES="${PFILES} \
2673        platforms/freebsd/Makefile \
2674        platforms/freebsd/bacula-fd \
2675        platforms/freebsd/bacula-sd \
2676        platforms/freebsd/bacula-dir"
2677    largefile_support="yes"
2678   ;;
2679 hpux)
2680    PSCMD="UNIX95=1; ps -e -o pid,comm"
2681    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
2682    DISTVER=`uname -r`
2683    TAPEDRIVE="/dev/rmt/0hnb"
2684    PTHREAD_LIB="-lpthread"
2685    AC_DEFINE([_INCLUDE_LONGLONG])
2686   ;;
2687 irix)
2688    DISTVER=`uname -r`
2689    TAPEDRIVE="/dev/rmt/0cbn"
2690    PSCMD="ps -e -o pid,comm"
2691    PFILES="${PFILES} \
2692        platforms/irix/Makefile \
2693        platforms/irix/bacula-fd \
2694        platforms/irix/bacula-sd \
2695        platforms/irix/bacula-dir"
2696   ;;
2697 netbsd)
2698    DISTVER=`uname -a |awk '{print $3}'`
2699    lld="qd"
2700    llu="qu"
2701    TAPEDRIVE="/dev/nrst0"
2702    PSCMD="ps -ax -o pid,command"
2703    PTHREAD_LIB="-pthread"
2704    CFLAGS="${CFLAGS} -pthread"
2705   ;;
2706 openbsd)
2707    DISTVER=`uname -a |awk '{print $3}'`
2708    lld="qd"
2709    llu="qu"
2710    TAPEDRIVE="/dev/nrst0"
2711    PSCMD="ps -ax -o pid,command"
2712    PTHREAD_LIB="-pthread"
2713    CFLAGS="${CFLAGS} -pthread"
2714    PFILES="${PFILES} \
2715        platforms/openbsd/Makefile \
2716        platforms/openbsd/bacula-fd \
2717        platforms/openbsd/bacula-sd \
2718        platforms/openbsd/bacula-dir"
2719   ;;
2720 redhat)
2721    if test -f /etc/whitebox-release ; then
2722       f=/etc/whitebox-release
2723    else
2724       f=/etc/redhat-release
2725    fi
2726    if test `cat $f | grep release |\
2727          cut -f 3 -d ' '`x = "Enterprise"x ; then
2728       DISTVER="Enterprise "`cat $f | grep release |\
2729           cut -f 6 -d ' '`
2730    else
2731        DISTVER=`cat /etc/redhat-release | grep release |\
2732            cut -f 5 -d ' '`
2733    fi
2734    TAPEDRIVE="/dev/nst0"
2735    PSCMD="ps -e -o pid,command"
2736    PFILES="${PFILES} \
2737        platforms/redhat/Makefile \
2738        platforms/redhat/bacula-fd \
2739        platforms/redhat/bacula-sd \
2740        platforms/redhat/bacula-dir
2741        "
2742   ;;
2743 mandrake)
2744    DISTVER=`cat /etc/mandrake-release | grep release |\
2745       cut -f 5 -d ' '`
2746    TAPEDRIVE="/dev/nst0"
2747    PSCMD="ps -e -o pid,command"
2748    PFILES="${PFILES} \
2749        platforms/mandrake/Makefile \
2750        platforms/mandrake/bacula-fd \
2751        platforms/mandrake/bacula-sd \
2752        platforms/mandrake/bacula-dir \
2753        platforms/mandrake/bacula.spec \
2754        "
2755   ;;
2756 gentoo)
2757    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
2758    TAPEDRIVE="/dev/nst0"
2759    PSCMD="ps -e -o pid,command"
2760    PFILES="${PFILES} \
2761        platforms/gentoo/Makefile \
2762     platforms/gentoo/bacula-init \
2763        platforms/gentoo/bacula-fd \
2764        platforms/gentoo/bacula-sd \
2765        platforms/gentoo/bacula-dir"
2766   ;;
2767 slackware)
2768    DISTVER=`cat /etc/slackware-version`
2769    TAPEDRIVE="/dev/nst0"
2770    PSCMD="ps -e -o pid,command"
2771    PFILES="${PFILES} \
2772        platforms/slackware/Makefile \
2773        platforms/slackware/rc.bacula-fd \
2774        platforms/slackware/rc.bacula-sd \
2775        platforms/slackware/rc.bacula-dir\
2776        platforms/slackware/functions.bacula"
2777   ;;
2778 solaris)
2779    DISTVER=`uname -r`
2780    TAPEDRIVE="/dev/rmt/0cbn"
2781    PSCMD="ps -e -o pid,comm"
2782    PFILES="${PFILES} \
2783        platforms/solaris/Makefile \
2784        platforms/solaris/bacula-fd \
2785        platforms/solaris/bacula-sd \
2786        platforms/solaris/bacula-dir"
2787    if test x$DISTVER = x5.6 ; then
2788        AC_DEFINE(HAVE_OLD_SOCKOPT)
2789    fi
2790    LIBS="$LIBS -lresolv"
2791   ;;
2792 suse)
2793    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
2794        cut -f 3 -d ' '`
2795    TAPEDRIVE="/dev/nst0"
2796    PSCMD="ps -e -o pid,command"
2797    PFILES="${PFILES} \
2798        platforms/suse/Makefile \
2799        platforms/suse/bacula-fd \
2800        platforms/suse/bacula-sd \
2801        platforms/suse/bacula-dir \
2802        platforms/suse/bacula \
2803        platforms/suse/bacula.spec"
2804   ;;
2805 suse5)
2806    DISTNAME=suse
2807    DISTVER=5.x
2808    TAPEDRIVE="/dev/nst0"
2809    PSCMD="ps -e -o pid,command"
2810    PFILES="${PFILES} \
2811        platforms/suse/Makefile \
2812        platforms/suse/bacula-fd \
2813        platforms/suse/bacula-sd \
2814        platforms/suse/bacula-dir"
2815   ;;
2816 unknown)
2817    DISTVER=unknown
2818    TAPEDRIVE="/dev/nst0"
2819   ;;
2820 *)
2821   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
2822   ;;
2823 esac  
2824
2825 AC_SUBST(hostname)
2826
2827 LIBS="$PTHREAD_LIB $LIBS"
2828
2829 AC_DEFINE_UNQUOTED(lld, "$lld")
2830 AC_DEFINE_UNQUOTED(llu, "$llu")
2831 AC_SUBST(TAPEDRIVE)
2832 AC_SUBST(PSCMD)
2833 AC_SUBST(WIN32)
2834 AC_SUBST(MACOSX)
2835 AC_SUBST(DISTNAME)
2836 AC_SUBST(DISTVER)
2837
2838 dnl common parts of the Makefile
2839 MCOMMON=./autoconf/Make.common
2840 AC_SUBST_FILE(MCOMMON)
2841
2842 dnl Insanity check
2843 if test "x${subsysdir}" = "x${sbindir}" ; then
2844    echo " "
2845    echo " "
2846    echo "You have set both --sbindir and --with-subsys-dir"
2847    echo "  equal to: ${subsysdir} "
2848    echo "This is not permitted. Please reconfigure."
2849    echo " "
2850    echo "Aborting configuration ..."
2851    echo " "
2852    echo " "
2853    exit 1
2854 fi 
2855
2856 AC_OUTPUT([autoconf/Make.common \
2857            Makefile \
2858            manpages/Makefile \
2859            scripts/startmysql \
2860            scripts/stopmysql \
2861            scripts/btraceback \
2862            scripts/startit \
2863            scripts/stopit \
2864            scripts/bconsole \
2865            scripts/gconsole \
2866            scripts/bacula \
2867            scripts/bacula-ctl-dir \
2868            scripts/bacula-ctl-fd \
2869            scripts/bacula-ctl-sd \
2870            scripts/devel_bacula \
2871            scripts/Makefile \
2872            scripts/logrotate \
2873            scripts/bacula.desktop.gnome1 \
2874            scripts/bacula.desktop.gnome2 \
2875            scripts/bacula.desktop.gnome1.consolehelper \
2876            scripts/bacula.desktop.gnome2.consolehelper \
2877            scripts/bacula.desktop.gnome1.xsu \
2878            scripts/bacula.desktop.gnome2.xsu \
2879            scripts/bgnome-console.console_apps \
2880            scripts/mtx-changer \
2881            scripts/disk-changer \
2882            scripts/dvd-handler \
2883            scripts/dvd-simulator \
2884            scripts/bacula-tray-monitor.desktop \
2885            scripts/logwatch/Makefile \
2886            scripts/logwatch/logfile.bacula.conf \
2887            scripts/wxconsole.console_apps \
2888            scripts/wxconsole.desktop.consolehelper \
2889            scripts/wxconsole.desktop.xsu \
2890            scripts/bat.desktop \
2891            scripts/bat.desktop.xsu \
2892            scripts/bat.desktop.consolehelper \
2893            scripts/bat.console_apps \
2894            src/Makefile \
2895            src/host.h \
2896            src/console/Makefile \
2897            src/console/bconsole.conf \
2898            src/gnome2-console/Makefile \
2899            src/gnome2-console/bgnome-console.conf \
2900            src/qt-console/bat.conf \
2901            src/qt-console/bat.pro \
2902            src/qt-console/bat.pro.mingw32 \
2903            src/qt-console/install_conf_file \
2904            src/wx-console/Makefile \
2905            src/wx-console/bwx-console.conf \
2906            src/tray-monitor/Makefile \
2907            src/tray-monitor/tray-monitor.conf \
2908            src/dird/Makefile \
2909            src/dird/bacula-dir.conf \
2910            src/lib/Makefile \
2911            src/stored/Makefile \
2912            src/stored/bacula-sd.conf \
2913            src/filed/Makefile \
2914            src/filed/bacula-fd.conf \
2915            src/cats/Makefile \
2916            src/cats/make_catalog_backup \
2917            src/cats/delete_catalog_backup \
2918            src/cats/create_postgresql_database \
2919            src/cats/update_postgresql_tables \
2920            src/cats/make_postgresql_tables \
2921            src/cats/grant_postgresql_privileges \
2922            src/cats/drop_postgresql_tables \
2923            src/cats/drop_postgresql_database \
2924            src/cats/create_mysql_database \
2925            src/cats/update_mysql_tables \
2926            src/cats/make_mysql_tables \
2927            src/cats/grant_mysql_privileges \
2928            src/cats/drop_mysql_tables \
2929            src/cats/drop_mysql_database \
2930            src/cats/create_sqlite_database \
2931            src/cats/update_sqlite_tables \
2932            src/cats/make_sqlite_tables \
2933            src/cats/grant_sqlite_privileges \
2934            src/cats/drop_sqlite_tables \
2935            src/cats/drop_sqlite_database \
2936            src/cats/create_sqlite3_database \
2937            src/cats/update_sqlite3_tables \
2938            src/cats/make_sqlite3_tables \
2939            src/cats/grant_sqlite3_privileges \
2940            src/cats/drop_sqlite3_tables \
2941            src/cats/drop_sqlite3_database \
2942            src/cats/sqlite \
2943            src/cats/mysql \
2944            src/cats/create_bdb_database \
2945            src/cats/update_bdb_tables \
2946            src/cats/make_bdb_tables \
2947            src/cats/grant_bdb_privileges \
2948            src/cats/drop_bdb_tables \
2949            src/cats/drop_bdb_database \
2950            src/cats/create_bacula_database \
2951            src/cats/update_bacula_tables \
2952            src/cats/grant_bacula_privileges \
2953            src/cats/make_bacula_tables \
2954            src/cats/drop_bacula_tables \
2955            src/cats/drop_bacula_database \
2956            src/findlib/Makefile \
2957            src/tools/Makefile \
2958            src/plugins/fd/Makefile \
2959            src/plugins/sd/Makefile \
2960            src/plugins/dir/Makefile \
2961            src/win32/Makefile.inc \
2962            po/Makefile.in \
2963            updatedb/update_mysql_tables_9_to_10 \
2964            updatedb/update_sqlite3_tables_9_to_10 \
2965            updatedb/update_postgresql_tables_9_to_10 \
2966            updatedb/update_sqlite_tables_9_to_10 \
2967            updatedb/update_mysql_tables_10_to_11 \
2968            updatedb/update_sqlite3_tables_10_to_11 \
2969            updatedb/update_postgresql_tables_10_to_11 \
2970            updatedb/update_sqlite_tables_10_to_11 \
2971            $PFILES ],  
2972      [ ]
2973 )
2974
2975 if test "${support_bat}" = "yes" ; then
2976    if test "x$QMAKE" = "xnone" && test "x$QMAKEQT4" = "xnone"; then
2977       AC_MSG_ERROR([Could not find qmake or qmake-qt4 in $PATH. Check your Qt installation])
2978    fi
2979
2980    QMAKEBIN="qmake"
2981
2982    if test "x$QMAKEQT4" != "xnone"; then
2983        QMAKEBIN=qmake-qt4
2984    fi
2985   
2986    cd src/qt-console
2987    echo "Creating bat Makefile"
2988    touch bat
2989    chmod 755 bat
2990    $QMAKEBIN
2991    make clean
2992    cd ${BUILD_DIR}
2993 fi
2994
2995 dnl
2996 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
2997 dnl requires gcc).  If it's not, don't rebuild dependencies
2998 dnl
2999 if test X"$GCC" = "Xyes" ; then
3000   echo "Doing make of dependencies"
3001   ${MAKE:-make} depend
3002 fi
3003
3004 cd src/qt-console
3005 chmod 755 install_conf_file build-depkgs-qt-console
3006 cd ${BUILD_DIR}
3007
3008 cd scripts
3009 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
3010 chmod 755 dvd-handler dvd-simulator
3011 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
3012 cd ..
3013
3014 c=updatedb
3015 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3016 chmod 755 $c/update_postgresql_tables_10_to_11   $c/update_sqlite_tables_10_to_11
3017
3018 c=src/cats
3019
3020 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3021 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3022
3023 chmod 755 $c/create_bdb_database      $c/update_bdb_tables     $c/make_bdb_tables
3024 chmod 755 $c/grant_bdb_privileges     $c/drop_bdb_tables       $c/drop_bdb_database
3025
3026 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3027 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3028
3029 chmod 755 $c/create_sqlite_database   $c/update_sqlite_tables  $c/make_sqlite_tables
3030 chmod 755 $c/grant_sqlite_privileges  $c/drop_sqlite_tables    $c/drop_sqlite_database
3031
3032 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3033 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3034
3035 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3036 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3037
3038 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup
3039 chmod 755 $c/sqlite
3040 chmod 755 $c/mysql
3041
3042 chmod 755 src/win32/build-depkgs-mingw32
3043
3044 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3045    largefile_support="yes"
3046 fi
3047
3048 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3049 if test X"$GCC" = "Xyes" ; then
3050    dnl
3051    dnl A whole lot of hand springs to get the compiler version.
3052    dnl  This is because gcc changed the output in version 3.0
3053    dnl
3054    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3055    if test "x${CCVERSION}" = "x" ; then
3056       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3057    fi
3058    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3059    if test x"${CXXVERSION}" = x ; then
3060       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3061    fi
3062 fi
3063
3064 # clean up any old junk
3065 echo " "
3066 echo "Cleaning up"
3067 echo " "
3068 make clean
3069
3070 if test "x${db_type}" = "xInternal" ; then
3071    echo " "
3072    echo " "
3073    echo "You have not specified either --enable-client-only or one of the"
3074    echo "  supported databases: MySQL, PostgreSQL, SQLite3, SQLite or DBI."
3075    echo "  This is not permitted. Please reconfigure."
3076    echo " "
3077    echo "Aborting the configuration ..."
3078    echo " "
3079    echo " "
3080    exit 1
3081 fi
3082
3083 echo "
3084 Configuration on `date`:
3085
3086    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3087    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3088    Source code location:    ${srcdir}
3089    Install binaries:        ${sbindir}
3090    Install libraries:       ${libdir}
3091    Install config files:    ${sysconfdir}
3092    Scripts directory:       ${scriptdir}
3093    Archive directory:       ${archivedir}
3094    Working directory:       ${working_dir}
3095    PID directory:           ${piddir}
3096    Subsys directory:        ${subsysdir}
3097    Man directory:           ${mandir}
3098    Data directory:          ${datarootdir}
3099    Plugin directory:        ${plugindir}
3100    C Compiler:              ${CC} ${CCVERSION}
3101    C++ Compiler:            ${CXX} ${CXXVERSION}
3102    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3103    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3104    Libraries:               ${LIBS}
3105    Statically Linked Tools: ${support_static_tools}
3106    Statically Linked FD:    ${support_static_fd}
3107    Statically Linked SD:    ${support_static_sd}
3108    Statically Linked DIR:   ${support_static_dir}
3109    Statically Linked CONS:  ${support_static_cons}
3110    Database type:           ${db_type}
3111    Database port:           ${db_port}
3112    Database lib:            ${DB_LIBS}
3113    Database name:           ${db_name}
3114    Database user:           ${db_user}
3115  
3116    Job Output Email:        ${job_email}
3117    Traceback Email:         ${dump_email}
3118    SMTP Host Address:       ${smtp_host}
3119  
3120    Director Port:           ${dir_port}
3121    File daemon Port:        ${fd_port}
3122    Storage daemon Port:     ${sd_port}
3123  
3124    Director User:           ${dir_user}
3125    Director Group:          ${dir_group}
3126    Storage Daemon User:     ${sd_user}
3127    Storage DaemonGroup:     ${sd_group}
3128    File Daemon User:        ${fd_user}
3129    File Daemon Group:       ${fd_group}
3130  
3131    SQL binaries Directory   ${SQL_BINDIR}
3132  
3133    Large file support:      $largefile_support
3134    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3135    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3136    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3137    TLS support:             ${support_tls}
3138    Encryption support:      ${support_crypto} 
3139    ZLIB support:            ${have_zlib}
3140    enable-smartalloc:       ${support_smartalloc} 
3141    enable-lockmgr:          ${support_lockmgr}
3142    bat support:             ${support_bat} ${QWT_LDFLAGS}
3143    enable-gnome:            ${support_gnome} ${gnome_version}
3144    enable-bwx-console:      ${support_wx_console} ${wx_version}
3145    enable-tray-monitor:     ${support_tray_monitor}
3146    client-only:             ${build_client_only}
3147    build-dird:              ${build_dird}
3148    build-stored:            ${build_stored}
3149    ACL support:             ${have_acl}
3150    XATTR support:           ${have_xattr}
3151    Python support:          ${support_python} ${PYTHON_LIBS}
3152    Batch insert enabled:    ${support_batch_insert}
3153
3154   " > config.out
3155
3156 cat config.out