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