]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
dfceccfb2ce0e94c8f4aa597e2688502e1b562e9
[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 AC_SUBST(VERSION)dnl 
40 AC_SUBST(DATE)dnl 
41 AC_SUBST(LSMDATE)dnl 
42 AC_SUBST(BACULA)dnl
43 AC_SUBST(post_host)dnl
44
45 dnl src/lib
46 dnl can be overwritten by specific values from version.h
47 LIBBAC_LT_RELEASE=`sed -n -e 's/^#.*LIBBAC_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
48 LIBBACCFG_LT_RELEASE=`sed -n -e 's/^#.*LIBBACCFG_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
49 LIBBACPY_LT_RELEASE=`sed -n -e 's/^#.*LIBBACPY_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
50
51 LIBBAC_LT_RELEASE=${LIBBAC_LT_RELEASE:-$VERSION}
52 LIBBACCFG_LT_RELEASE=${LIBBACCFG_LT_RELEASE:-$VERSION}
53 LIBBACPY_LT_RELEASE=${LIBBACPY_LT_RELEASE:-$VERSION}
54
55 AC_SUBST(LIBBAC_LT_RELEASE)dnl
56 AC_SUBST(LIBBACCFG_LT_RELEASE)dnl
57 AC_SUBST(LIBBACPY_LT_RELEASE)dnl
58
59 dnl src/cats
60 dnl can be overwritten by specific values from version.h
61 LIBBACSQL_LT_RELEASE=`sed -n -e 's/^#.*LIBBACSQL_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
62
63 LIBBACSQL_LT_RELEASE=${LIBBACSQL_LT_RELEASE:-$VERSION}
64
65 AC_SUBST(LIBBACSQL_LT_RELEASE)dnl
66
67 dnl src/findlib
68 dnl can be overwritten by specific values from version.h
69 LIBBACFIND_LT_RELEASE=`sed -n -e 's/^#.*LIBBACFIND_LT_RELEASE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
70
71 LIBBACFIND_LT_RELEASE=${LIBBACFIND_LT_RELEASE:-$VERSION}
72
73 AC_SUBST(LIBBACFIND_LT_RELEASE)dnl
74
75 echo "configuring for ${BACULA} $VERSION ($DATE)"
76
77
78 dnl -------------------------------------------------------
79 dnl Check for compiler.
80 dnl ------------------------------------------------------
81
82 AC_PROG_CC
83 AC_PROG_CXX
84 AC_PROG_CC_C_O         dnl Determine if C compiler support -c -o.
85 AC_PROG_GCC_TRADITIONAL    dnl Determine if ioctl() need -traditional.
86
87 BASECC=`basename $CC`
88 have_gcc=no
89 if test "x$BASECC" = xgcc; then
90    AC_DEFINE(HAVE_GCC)
91    have_gcc=yes
92 fi
93 AC_PATH_PROG(CXX, $CXX, $CXX)
94 if test ! -e $CXX; then
95    AC_MSG_ERROR(Unable to find C++ compiler)
96 fi
97
98 dnl -------------------------------------------------------
99 dnl Check for programs.
100 dnl ------------------------------------------------------
101 AC_PROG_INSTALL
102 AC_PATH_PROG(MV, mv, mv)
103 dnl Alert !!!
104 dnl If we name the variable RM it will shadow the RM variable in the configure script and we overwrite the
105 dnl value with the name of the rm command and not rm -f which is its normal content. This gives all kind
106 dnl of strange output of the configure script (like things don't exist etc.).
107 dnl So we name it REMOVE (more software has run into this problem)
108 AC_PATH_PROG(REMOVE, rm, rm)
109 AC_PATH_PROG(CP, cp, cp)
110 AC_PATH_PROG(SED, sed, sed)
111 AC_PATH_PROG(ECHO, echo, echo)
112 AC_PATH_PROG(CMP, cmp, cmp)
113 AC_PATH_PROG(TBL, tbl, tbl)
114 AC_PATH_PROG(AR, ar, ar)
115 AC_PATH_PROG(OPENSSL, openssl, none)
116 AC_PATH_PROG(MTX, mtx, mtx)
117 AC_PATH_PROG(DD, dd, dd)
118 AC_PATH_PROG(MKISOFS, mkisofs, mkisofs)
119 AC_PATH_PROG(PYTHON, python, python)
120 AC_PATH_PROG(GROWISOFS, growisofs, growisofs)
121 AC_PATH_PROG(DVDRWMEDIAINFO, dvd+rw-mediainfo, dvd+rw-mediainfo)
122 AC_PATH_PROG(DVDRWFORMAT, dvd+rw-format, dvd+rw-format)
123 AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config)
124 AC_PATH_PROG(QMAKE, qmake, none)
125 AC_PATH_PROG(GMAKE, gmake, none)
126 AC_ARG_VAR(WXCONFIG, [wx-config command. On some systems, you must set it to wx-config-2.6 to use wxWidgets 2.6.])
127 if test "x$WXCONFIG" = x; then
128    WXCONFIG=wx-config
129 fi
130 AC_PATH_PROG(WXCONFIG, ${WXCONFIG}, ${WXCONFIG})
131 AC_ARG_VAR(WXFLAGS, [Parameters to pass to wx-config (e.g. --unicode=no).])
132 AC_PATH_PROG(CDRECORD, cdrecord, cdrecord)
133 AC_PATH_PROG(PIDOF, pidof, pidof)
134 AC_PROG_AWK
135 # Some AWK programs fail, so test it and warn the user
136 if echo xfoo | $AWK 'BEGIN { prog=ARGV[1]; ARGC=1 } 
137       { if ((prog == $2) || (("(" prog ")") == $2) ||
138       (("[" prog "]") == $2) ||
139       ((prog ":") == $2)) { print $1 ; exit 0 } }' xfoo>/dev/null; then :;
140 else
141   AC_MSG_ERROR([!!!!!!!!! WARNING !!!!!!!!!!!!!!
142    The regex engine of $AWK is too broken to be used you 
143    might want to install GNU AWK.
144    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
145 fi
146 THE_AWK=$AWK
147 AC_PATH_PROG(AWK, $THE_AWK, $THE_AWK)
148
149
150 test -n "$ARFLAG" || ARFLAGS="cr"
151 AC_SUBST(ARFLAGS)
152
153 MAKE_SHELL=/bin/sh
154 AC_SUBST(MAKE_SHELL)
155
156 AC_SUBST(LOCAL_LIBS)
157 AC_SUBST(LOCAL_CFLAGS)
158 AC_SUBST(LOCAL_LDFLAGS)
159 AC_SUBST(LOCAL_DEFS)
160
161 dnl --------------------------------------------------
162 dnl Libtool config
163 dnl --------------------------------------------------
164 use_libtool=yes
165 AC_ARG_ENABLE(libtool,
166    AC_HELP_STRING([--enable-libtool], [enable building using GNU libtool @<:@default=yes@:>@]),
167    [
168        if test x$enableval = xno; then
169           use_libtool=no
170        fi
171    ]
172 )
173 LT_INIT([shared disable-static])
174 LT_LANG([C++])
175
176 if test x$use_libtool != xno; then
177    DEFAULT_OBJECT_TYPE=".lo"
178    DEFAULT_ARCHIVE_TYPE=".la"
179    DEFAULT_SHARED_OBJECT_TYPE=".la"
180    LIBTOOL="\$(LIBTOOL)"
181    LIBTOOL_INSTALL_TARGET="libtool-install"
182    LIBTOOL_UNINSTALL_TARGET="libtool-uninstall"
183    LIBTOOL_CLEAN_TARGET="libtool-clean"
184    QMAKE_LIBTOOL="${BUILD_DIR}/libtool"
185    FD_PLUGIN_DIR="src/plugins/fd"
186    have_plugins=yes
187 else
188    DEFAULT_OBJECT_TYPE=".o"
189    DEFAULT_ARCHIVE_TYPE=".a"
190    DEFAULT_SHARED_OBJECT_TYPE=".so"
191    LIBTOOL="# \$(LIBTOOL)"
192    LIBTOOL_INSTALL_TARGET=""
193    LIBTOOL_UNINSTALL_TARGET=""
194    LIBTOOL_CLEAN_TARGET=""
195    QMAKE_LIBTOOL="# ${BUILD_DIR}/libtool"
196    FD_PLUGIN_DIR=""
197    have_plugins=no
198 fi
199
200 AC_SUBST(DEFAULT_OBJECT_TYPE)
201 AC_SUBST(DEFAULT_ARCHIVE_TYPE)
202 AC_SUBST(DEFAULT_SHARED_OBJECT_TYPE)
203 AC_SUBST(LIBTOOL)
204 AC_SUBST(LIBTOOL_INSTALL_TARGET)
205 AC_SUBST(LIBTOOL_UNINSTALL_TARGET)
206 AC_SUBST(LIBTOOL_CLEAN_TARGET)
207 AC_SUBST(QMAKE_LIBTOOL)
208 AC_SUBST(FD_PLUGIN_DIR)
209
210 dnl --------------------------------------------------
211 dnl Include file handling
212 dnl --------------------------------------------------
213 AC_ARG_ENABLE(includes,
214    AC_HELP_STRING([--enable-includes], [enable installing of include files @<:@default=no@:>@]),
215    [
216        if test x$enableval = xyes; then
217           install_includes=yes
218        fi
219    ]
220 )
221
222 dnl It only makes sense to install include files when you install libraries which only happens when
223 dnl libtool is enabled
224
225 if test x$use_libtool != xno -a x$install_includes = xyes; then
226    INCLUDE_INSTALL_TARGET="install-includes"
227    INCLUDE_UNINSTALL_TARGET="uninstall-includes"
228 else
229    INCLUDE_INSTALL_TARGET=""
230    INCLUDE_UNINSTALL_TARGET=""
231 fi
232 AC_SUBST(INCLUDE_INSTALL_TARGET)
233 AC_SUBST(INCLUDE_UNINSTALL_TARGET)
234
235 dnl --------------------------------------------------
236 dnl Bacula OP Sys determination (see aclocal.m4)
237 dnl --------------------------------------------------
238 BA_CHECK_OPSYS
239
240 dnl -----------------------------------------------------------
241 dnl Bacula OPSys Distribution determination (see aclocal.m4)
242 dnl ----------------------------------------------------------
243 BA_CHECK_OPSYS_DISTNAME
244
245 dnl --------------------------------------------------
246 dnl Suppport for gettext (translations)
247 dnl By default, $datarootdir is ${prefix}/share
248 dnl --------------------------------------------------
249 AM_GNU_GETTEXT([external])
250
251 dnl ------------------------------------------------------------------
252 dnl If the user has not set --prefix, we set our default to nothing.
253 dnl In this case, if the user has not set --sysconfdir, we set it
254 dnl to the package default of /etc/bacula.  If either --prefix or
255 dnl --sysconfdir is set, we leave sysconfdir alone except to eval it.
256 dnl If the user has not set --libdir, we set it to the package
257 dnl default of /usr/lib. If either --prefix or --libdir is set,
258 dnl we leave libdir alone except to eval it. If the user has not set
259 dnl --includedir, we set it to the package default of /usr/include.
260 dnl If either --prefix or --includedir is set, we leave includedir
261 dnl alone except to eval it
262 dnl ------------------------------------------------------------------
263 os_name=`uname -s 2>/dev/null`
264 if test x${prefix} = xNONE ; then
265    if test `eval echo ${sysconfdir}` = NONE/etc ; then
266       sysconfdir=/etc/bacula
267    fi
268
269    if test `eval echo ${libdir}` = NONE/lib ; then
270       case ${os_name} in
271       Linux)
272          os_processor=`uname -p 2>/dev/null`
273          case ${os_processor} in
274          x86_64)
275             libdir=/usr/lib64
276             ;;
277          *)
278             libdir=/usr/lib
279             ;;
280          esac
281          ;;
282       *)
283          libdir=/usr/lib
284          ;;
285       esac
286    fi
287
288    if test `eval echo ${includedir}` = NONE/include ; then
289       includedir=/usr/include
290    fi
291
292    if test `eval echo ${datarootdir}` = NONE/share ; then
293       datarootdir=/usr/share
294    fi
295    prefix=
296 fi
297
298 dnl -------------------------------------------------------------------------
299 dnl  If the user has not set --exec-prefix, we default to ${prefix}
300 dnl -------------------------------------------------------------------------
301 if test x${exec_prefix} = xNONE ; then
302    exec_prefix=${prefix}
303 fi
304
305 sysconfdir=`eval echo ${sysconfdir}`
306 datarootdir=`eval echo ${datarootdir}`
307 docdir=`eval echo ${docdir}`
308 htmldir=`eval echo ${htmldir}`
309 libdir=`eval echo ${libdir}`
310 includedir=`eval echo ${includedir}`
311 localedir=`eval echo ${datarootdir}/locale`
312 AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir")
313 AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir") 
314
315 dnl ------------------------------------------------------------------
316 dnl If the user has not set --sbindir, we set our default as /sbin
317 dnl ------------------------------------------------------------------
318 if test x$sbindir = x'${exec_prefix}/sbin' ; then
319    sbindir=${exec_prefix}/sbin
320 fi
321 sbindir=`eval echo ${sbindir}`
322
323 dnl -------------------------------------------------------------------------
324 dnl  If the user has not set --mandir, we default to /usr/share/man
325 dnl -------------------------------------------------------------------------
326 if test x$mandir = x'${prefix}/man' ; then
327    mandir=/usr/share/man
328 fi
329
330 dnl -------------------------------------------------------------------------
331 dnl  If the user has not set --htmldir, we default to /usr/share/doc/bacula/html
332 dnl -------------------------------------------------------------------------
333 if test x$htmldir = x${docdir} ; then
334    htmldir=`eval echo ${docdir}bacula/html`
335 fi
336
337 dnl -------------------------------------------------------------------------
338 dnl  If the user has not set --docdir, we default to /usr/share/doc/
339 dnl -------------------------------------------------------------------------
340 if test x$docdir = x'/usr/share/doc/' ; then
341    docdir=`eval echo ${docdir}bacula`
342 fi
343
344             
345 AC_PATH_PROGS(MSGFMT, msgfmt, no)
346 if test "$MSGFMT" = "no"
347 then
348    echo 'msgfmt program not found, disabling NLS !'
349    USE_NLS=no
350    USE_INCLUDED_LIBINTL=no
351 #else
352    AM_GNU_GETTEXT
353 fi
354
355 support_mysql=no
356 support_sqlite=no
357 support_sqlite3=no
358 support_postgresql=no
359 support_ingres=no
360 support_dbi=no
361 support_smartalloc=yes
362 support_readline=yes
363 support_conio=yes
364 support_gnome=no
365 support_bat=no
366 support_wx_console=no
367 support_tray_monitor=no
368 support_tls=no
369 support_crypto=no
370 gnome_version=
371 wx_version=
372 support_static_tools=no
373 support_static_fd=no
374 support_static_sd=no
375 support_static_dir=no
376 support_static_cons=no
377 support_python=no
378 build_client_only=no
379 build_dird=yes
380 build_stored=yes
381 cats=
382 db_type=Internal
383 support_lockmgr=no
384 DB_TYPE=bdb
385
386 dnl --------------------------------------------------------------------------
387 dnl CHECKING COMMAND LINE OPTIONS
388 dnl --------------------------------------------------------------------------
389
390 dnl -------------------------------------------
391 dnl gnome (default off)
392 dnl -------------------------------------------
393 AC_ARG_ENABLE(gnome,
394    AC_HELP_STRING([--enable-gnome], [enable build of bgnome-console GUI @<:@default=no@:>@]),
395    [
396        if test x$enableval = xyes; then
397           support_gnome=yes
398        fi
399    ]
400 )
401
402 GNOME_DIR=
403 if test x$support_gnome = xyes; then
404    AC_MSG_ERROR(bgnome-console no longer supported)
405    AC_MSG_ERROR(--enable-gnome option no longer supported)
406 fi
407 # AC_SUBST(GNOME_DIR)
408
409 dnl -------------------------------------------
410 dnl bat (default off)
411 dnl -------------------------------------------
412 AC_ARG_ENABLE(bat,
413    AC_HELP_STRING([--enable-bat], [enable build of bat Qt4 GUI @<:@default=no@:>@]),
414    [
415        if test x$enableval = xyes; then
416           AC_DEFINE(HAVE_BAT, 1, [Set if Bacula bat Qt4 GUI support enabled]) 
417           support_bat=yes
418        fi
419    ]
420 )
421
422 BAT_DIR=
423 if test x$support_bat = xyes; then
424    abc=`$PKGCONFIG --atleast-version=4.2 QtGui`
425    pkg=$?
426    if test $pkg = 0; then
427       BAT_DIR=src/qt-console
428    else
429       AC_MSG_ERROR(Unable to find Qt4 installation needed by bat)
430    fi
431 fi
432
433 dnl 
434 dnl  The qwt library was used with bat, but that is no longer the case
435 dnl 
436 got_qwt=no
437 QWT_INC=
438 QWT_LDFLAGS=
439 QWT_LIB=
440 QWT=
441 no_qwt=no
442 dnl if test x$support_bat = xyes; then
443 dnl    AC_MSG_CHECKING(for qwt support)
444 dnl    AC_ARG_WITH(qwt,
445 dnl       AC_HELP_STRING([--with-qwt@<:@=DIR@:>@], [specify qwt library directory]),
446 dnl       [
447 dnl           case "$with_qwt" in
448 dnl           no)
449 dnl              no_qwt=yes
450 dnl              ;;
451 dnl           yes|*)
452 dnl              if test -f ${with_qwt}/include/qwt.h; then
453 dnl                 QWT_INC="${with_qwt}/include"
454 dnl                 QWT_LDFLAGS="-L${with_qwt}/lib"
455 dnl                 QWT_LIB="-lqwt"
456 dnl                 QWT="qwt"
457 dnl              fi
458 dnl              ;;
459 dnl           esac
460 dnl       ]    
461 dnl    )
462
463 dnl    dnl
464 dnl    dnl Search in standard places, or --with-qwt not specified
465 dnl    dnl
466 dnl    if test $no_qwt = no; then 
467 dnl       if test x$QWT_INC = x; then
468 dnl          for root in /usr /usr/local; do
469 dnl             for ver in qwt qwt5 qwt-qt4; do
470 dnl                if test -f ${root}/include/${ver}/qwt.h; then
471 dnl                   QWT_INC="${root}/include/${ver}"
472 dnl                   if test -d ${root}/lib64/; then
473 dnl                      QWT_LDFLAGS="-L${root}/lib64"
474 dnl                   elif test -d ${root}/lib/64/; then
475 dnl                      QWT_LDFLAGS="-L${root}/64"
476 dnl                   else
477 dnl                      QWT_LDFLAGS="-L${root}/lib"
478 dnl                   fi
479 dnl                   QWT_LIB="-lqwt"
480 dnl                   QWT="qwt"
481 dnl                   got_qwt=yes
482 dnl                   break;
483 dnl                fi
484 dnl             done
485 dnl          done
486 dnl       fi
487 dnl    fi
488 dnl    if test x$QWT_INC = x; then
489 dnl       AC_MSG_RESULT(no)
490 dnl    else
491 dnl       AC_DEFINE(HAVE_QWT, 1, [Set if bat QWT library found])
492 dnl       AC_MSG_RESULT(yes)
493 dnl    fi
494 dnl fi
495
496 AC_SUBST(BAT_DIR)
497 AC_SUBST(QWT_INC)
498 AC_SUBST(QWT_LDFLAGS)
499 AC_SUBST(QWT_LIB)
500 AC_SUBST(QWT)
501
502 dnl -------------------------------------------
503 dnl bwx-console (default off)
504 dnl -------------------------------------------
505 AC_ARG_ENABLE(bwx-console,
506    AC_HELP_STRING([--enable-bwx-console], [enable build of wxWidgets console @<:@default=no@:>@]),
507    [
508        if test x$enableval = xyes; then
509           support_wx_console=yes
510        fi
511    ]
512 )
513
514 WX_DIR=
515 if test x$support_wx_console = xyes; then
516    abc=`$WXCONFIG $WXFLAGS --cppflags`
517    pkg=$?
518    if test $pkg = 0; then
519       wx_version="wxWidgets `$WXCONFIG $WXFLAGS --release`"
520       WXCONS_CPPFLAGS=`$WXCONFIG $WXFLAGS --cppflags`
521       WXCONS_LDFLAGS=`$WXCONFIG $WXFLAGS --libs`
522
523       AC_SUBST(WXCONS_CPPFLAGS)
524       AC_SUBST(WXCONS_LDFLAGS)
525       WX_DIR="src/wx-console"
526    else
527       echo " "
528       echo "wx-config program not found. bwx-console disabled."
529       echo " "
530       support_wx_console=no
531    fi
532 fi
533 AC_SUBST(WX_DIR)
534
535 dnl -------------------------------------------
536 dnl tray-monitor (default off)
537 dnl -------------------------------------------
538 AC_ARG_ENABLE(tray-monitor,
539    AC_HELP_STRING([--enable-tray-monitor], [enable build of Gnome tray monitor (compatible with KDE @<:@default=no@:>@]),
540    [
541        if test x$enableval = xyes; then
542           support_tray_monitor=yes
543        fi
544    ]
545 )
546
547 TRAY_MONITOR_DIR=
548 if test x$support_tray_monitor = xyes; then
549    abc=`$PKGCONFIG --exists gtk+-2.0`
550    pkg=$?
551    if test $pkg = 0; then
552       TRAY_MONITOR_CPPFLAGS=`$PKGCONFIG --cflags gtk+-2.0`
553       TRAY_MONITOR_LDFLAGS=`$PKGCONFIG --libs gtk+-2.0`
554       AC_SUBST(TRAY_MONITOR_CPPFLAGS)
555       AC_SUBST(TRAY_MONITOR_LDFLAGS)
556       TRAY_MONITOR_DIR=src/tray-monitor
557       abc=`$PKGCONFIG --atleast-version=2.4 gtk+-2.0`
558       pkg=$?
559       if test $pkg = 0; then
560          AC_DEFINE(HAVE_GTK_2_4, 1, [Set if you have GTK 4.2 or greater loaded])
561       fi
562    fi
563 fi
564 AC_SUBST(TRAY_MONITOR_DIR)
565
566 dnl -------------------------------------------
567 dnl smartalloc (default off)
568 dnl -------------------------------------------
569 AC_ARG_ENABLE(smartalloc,
570    AC_HELP_STRING([--enable-smartalloc], [enable smartalloc debugging support @<:@default=no@:>@]),
571    [
572        if test x$enableval = xno; then
573           support_smartalloc=no
574        fi
575    ]
576 )
577
578 if test x$support_smartalloc = xyes; then
579    AC_DEFINE(SMARTALLOC, 1, [Set if you want Smartalloc enabled])
580 fi
581
582 dnl -------------------------------------------
583 dnl Lock Manager (default off)
584 dnl -------------------------------------------
585 AC_ARG_ENABLE(lockmgr,
586    AC_HELP_STRING([--enable-lockmgr], [enable lock manager support @<:@default=no@:>@]),
587    [
588        if test x$enableval = xyes; then
589           support_lockmgr=yes
590        fi
591    ]
592 )
593
594 if test x$support_lockmgr = xyes; then
595    AC_DEFINE(_USE_LOCKMGR, 1, [Set if you want Lock Manager enabled])
596 fi
597
598
599 dnl -------------------------------------------
600 dnl static-tools (default off)
601 dnl -------------------------------------------
602 AC_ARG_ENABLE(static-tools,
603    AC_HELP_STRING([--enable-static-tools], [enable static tape tools @<:@default=no@:>@]),
604    [
605        if test x$enableval = xyes; then
606           if test x$use_libtool = xyes; then
607              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
608   please rerun configure with --disable-libtool])
609           fi
610           support_static_tools=yes
611        fi
612    ]
613 )
614
615 TTOOL_LDFLAGS=
616 if test x$support_static_tools = xyes; then
617    TTOOL_LDFLAGS="-static"
618 fi
619 AC_SUBST(TTOOL_LDFLAGS)
620
621 dnl -------------------------------------------
622 dnl static-fd    (default off)
623 dnl -------------------------------------------
624 AC_ARG_ENABLE(static-fd,
625    AC_HELP_STRING([--enable-static-fd], [enable static File daemon @<:@default=no@:>@]),
626    [
627        if test x$enableval = xyes; then
628           if test x$use_libtool = xyes; then
629              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
630   please rerun configure with --disable-libtool])
631           fi
632           support_static_fd=yes
633        fi
634    ]
635 )
636
637 STATIC_FD=
638 if test x$support_static_fd = xyes; then
639    STATIC_FD="static-bacula-fd"
640 fi
641 AC_SUBST(STATIC_FD)
642
643 dnl -------------------------------------------
644 dnl static-sd    (default off)
645 dnl -------------------------------------------
646 AC_ARG_ENABLE(static-sd,
647    AC_HELP_STRING([--enable-static-sd], [enable static Storage daemon @<:@default=no@:>@]),
648    [
649        if test x$enableval = xyes; then
650           if test x$use_libtool = xyes; then
651              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
652   please rerun configure with --disable-libtool])
653           fi
654           support_static_sd=yes
655        fi
656    ]
657 )
658
659 STATIC_SD=
660 if test x$support_static_sd = xyes; then
661    STATIC_SD="static-bacula-sd"
662 fi
663 AC_SUBST(STATIC_SD)
664
665 dnl -------------------------------------------
666 dnl static-dir   (default off)
667 dnl -------------------------------------------
668 AC_ARG_ENABLE(static-dir,
669    AC_HELP_STRING([--enable-static-dir], [enable static Director @<:@default=no@:>@]),
670    [
671        if test x$enableval = xyes; then
672           if test x$use_libtool = xyes; then
673              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
674   please rerun configure with --disable-libtool])
675           fi
676           support_static_dir=yes
677        fi
678    ]
679 )
680
681 STATIC_DIR=
682 if test x$support_static_dir = xyes; then
683    STATIC_DIR="static-bacula-dir"
684 fi
685 AC_SUBST(STATIC_DIR)
686
687 dnl -------------------------------------------
688 dnl static-cons  (default off)
689 dnl -------------------------------------------
690 AC_ARG_ENABLE(static-cons,
691    AC_HELP_STRING([--enable-static-cons], [enable static Console @<:@default=no@:>@]),
692    [
693        if test x$enableval = xyes; then
694           if test x$use_libtool = xyes; then
695              AC_MSG_ERROR([Libtool is enabled, not compatible with static tools, 
696   please rerun configure with --disable-libtool])
697           fi
698           support_static_cons=yes
699        fi
700    ]
701 )
702
703 STATIC_CONS=
704 STATIC_GNOME_CONS=
705 STATIC_WX_CONS=
706 if test x$support_static_cons = xyes; then
707    STATIC_CONS="static-bconsole"
708    STATIC_GNOME_CONS="static-bgnome-console"
709    STATIC_WX_CONS="static-bwx-console"
710 fi
711 AC_SUBST(STATIC_CONS)
712 AC_SUBST(STATIC_GNOME_CONS)
713 AC_SUBST(STATIC_WX_CONS)
714
715 dnl -------------------------------------------
716 dnl client_only  (default off)
717 dnl -------------------------------------------
718 AC_ARG_ENABLE(client-only,
719    AC_HELP_STRING([--enable-client-only], [build client (File daemon) only @<:@default=no@:>@]),
720    [
721        if test x$enableval = xyes; then
722           build_client_only=yes
723           db_type=None
724           DB_TYPE=none
725        fi
726    ]
727 )
728 if test x$build_client_only = xno; then
729    ALL_DIRS="subdirs"
730 else
731    ALL_DIRS=""
732 fi
733 AC_SUBST(ALL_DIRS)
734
735 dnl -------------------------------------------
736 dnl director  (default on)
737 dnl -------------------------------------------
738 AC_ARG_ENABLE(build-dird,
739    AC_HELP_STRING([--enable-build-dird], [enable building of dird (Director) @<:@default=yes@:>@]),
740    [
741        if test x$enableval = xno; then
742           build_dird=no
743        fi
744    ]
745 )
746 if test x$build_dird = xyes; then
747    DIRD_DIR="src/dird"
748    DIR_TOOLS="DIRTOOLS"
749 else
750    DIRD_DIR=""
751    DIR_TOOLS="NODIRTOOLS"
752 fi
753 AC_SUBST(DIRD_DIR)
754 AC_SUBST(DIR_TOOLS)
755
756 dnl -------------------------------------------
757 dnl stored  (default on)
758 dnl -------------------------------------------
759 AC_ARG_ENABLE(build-stored,
760    AC_HELP_STRING([--enable-build-stored], [enable building of stored (Storage daemon) @<:@default=yes@:>@]),
761    [
762       if test x$enableval = xno; then
763          build_stored=no
764       fi
765    ]
766 )
767 if test x$build_stored = xyes; then
768    STORED_DIR="src/stored"
769 else
770    STORED_DIR=""
771 fi
772 AC_SUBST(STORED_DIR)
773
774 dnl ---------------------------------------------------
775 dnl Check for conio (Bacula readline substitute)(
776 dnl ---------------------------------------------------
777 dnl this allows you to turn it completely off
778 AC_ARG_ENABLE(conio,
779    AC_HELP_STRING([--disable-conio], [disable conio support @<:@default=no@:>@]),
780    [
781        if test x$enableval = xno; then
782           support_conio=no
783        fi
784    ]
785 )
786   
787
788 dnl ---------------------------------------------------
789 dnl Check for IPv6 support
790 dnl ---------------------------------------------------
791 dnl this allows you to turn it completely off
792 support_ipv6=yes
793 AC_ARG_ENABLE(ipv6,   
794    AC_HELP_STRING([--enable-ipv6], [enable ipv6 support @<:@default=yes@:>@]),
795    [
796        if test x$enableval = xno; then
797           support_ipv6=no  
798        fi
799    ]
800 )
801
802 if test x$support_ipv6 = xyes; then
803     AC_TRY_LINK([ #include <sys/types.h>
804 #include <sys/socket.h>
805 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;],
806       [support_ipv6=yes], [support_ipv6=no])
807 fi
808
809 if test x$support_ipv6 = xyes; then
810    AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
811 fi
812
813 TERM_LIB=""
814 AC_CHECK_HEADER(termcap.h, 
815   [ AC_CHECK_LIB(termcap, tgetent, 
816     [ TERM_LIB="-ltermcap" ],
817     [ AC_CHECK_LIB(ncurses, tgetent, [ TERM_LIB="-lncurses" ])
818     ])
819   ],
820   [  AC_CHECK_HEADERS(curses.h)
821      AC_CHECK_HEADER(term.h,
822        [ AC_CHECK_LIB(curses, tgetent, 
823          [ TERM_LIB="-lcurses" ] )
824        ])
825   ])
826
827
828 got_conio="no"
829 if test x$support_conio = xyes; then
830    if test x$TERM_LIB != x; then
831       CONS_LIBS=$TERM_LIB
832       CONS_OBJ="conio.o"
833       CONS_SRC="conio.c"
834       got_conio="yes"
835       support_readline=no
836       AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled]) 
837    else
838       echo " "; echo "Required libraries not found. CONIO turned off ..."; echo " "],
839    fi
840 fi
841
842
843 dnl ---------------------------------------------------
844 dnl Check for readline support/directory (default off)
845 dnl ---------------------------------------------------
846 dnl this allows you to turn it completely off
847 AC_ARG_ENABLE(readline,
848    AC_HELP_STRING([--disable-readline], [disable readline support @<:@default=yes@:>@]),
849    [
850        if test x$enableval = xno; then
851           support_readline=no
852        fi
853    ]
854 )
855 if test x$TERM_LIB = x ; then
856    support_readline=no
857 fi
858
859 got_readline="no"
860 READLINE_SRC=
861 if test x$support_readline = xyes; then
862    AC_ARG_WITH(readline,
863       AC_HELP_STRING([--with-readline@<:@=DIR@:>@], [specify readline library directory]),
864       [
865           case "$with_readline" in
866           no)
867              :
868              ;;
869           yes|*)
870              if test -f ${with_readline}/readline.h; then
871                 CONS_INC="-I${with_readline}"
872                 CONS_LDFLAGS="-L$with_readline"
873              elif test -f ${with_readline}/include/readline/readline.h; then
874                 CONS_INC="-I${with_readline}/include/readline"
875                 CONS_LDFLAGS="-L${with_readline}/lib"
876                 with_readline="${with_readline}/include/readline"
877              else
878                 with_readline="/usr/include/readline" 
879              fi
880
881              AC_CHECK_HEADER(${with_readline}/readline.h, 
882                 [
883                     AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
884                     CONS_LIBS="-lreadline -lhistory $TERM_LIB"
885                     got_readline="yes"   
886                 ], [
887                     echo " "
888                     echo "readline.h not found. readline turned off ..."
889                     echo " "
890                 ]
891              )
892              ;;
893           esac
894       ],[
895          dnl check for standard readline library
896          AC_CHECK_HEADER(/usr/include/readline/readline.h, 
897             [
898                 AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
899                 got_readline="yes"
900                 CONS_INC="-I/usr/include/readline"
901                 CONS_LIBS="-lreadline $TERM_LIB"
902             ], [
903                 dnl Did not find standard library, so try Bacula's default
904                 AC_CHECK_HEADER(${TOP_DIR}/depkgs/readline/readline.h, 
905                     [
906                         AC_DEFINE(HAVE_READLINE, 1, [Set to enable readline support])
907                         got_readline="yes"   
908                         CONS_INC="-I${TOP_DIR}/depkgs/readline"
909                         CONS_LIBS="-lreadline -lhistory $TERM_LIB"
910                         CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline"
911                         PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline"
912                     ], [
913                         echo " "
914                         echo "readline.h not found. readline turned off ..."
915                         echo " "
916                     ]
917                 )
918             ]
919          )
920       ]    
921    )
922 fi
923
924 AC_SUBST(CONS_INC)
925 AC_SUBST(CONS_OBJ)
926 AC_SUBST(CONS_SRC)
927 AC_SUBST(CONS_LIBS)
928 AC_SUBST(CONS_LDFLAGS)
929 AC_SUBST(READLINE_SRC)
930
931 dnl Minimal stuff for readline Makefile configuration
932 MAKE_SHELL=/bin/sh
933 AC_SUBST(MAKE_SHELL)
934 AC_HEADER_STAT
935 AC_HEADER_DIRENT
936 AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr lstat lchown)
937 AC_CHECK_FUNCS(nanosleep nl_langinfo)
938 AC_CHECK_HEADERS(varargs.h)
939
940 dnl End of readline/conio stuff
941 dnl -----------------------------------------------------------------------
942
943 dnl -----------------------------------------------------------------------
944 dnl  Check for Python support
945 dnl
946 AC_MSG_CHECKING(for Python support)
947 AC_ARG_WITH(python,
948    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.]),
949    [
950        PYTHON_INCDIR= 
951        PYTHON_LIBS=
952        if test "$withval" != "no"; then
953           if test "$withval" = "yes"; then
954              if test -e /usr/bin/python-config ; then
955                 PYTHON_INCDIR=`/usr/bin/python-config --includes`
956                 PYTHON_LIBS=`/usr/bin/python-config --libs`
957              else
958                 for python_root in /usr /usr/local /usr/sfw; do
959                    for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
960                       if test -f $python_root/include/${ver}/Python.h; then
961                          PYTHON_INCDIR=-I$python_root/include/${ver}
962                          if test -d $python_root/lib64/${ver}/config; then
963                             PYTHON_LIBS="-L$python_root/lib64/${ver}/config -l${ver}"
964                          else
965                             PYTHON_LIBS="-L$python_root/lib/${ver}/config -l${ver}"
966                          fi
967                          break 
968                       fi
969                    done
970                 done
971
972                 if test x$PYTHON_INCDIR = x; then
973                    if test -f $prefix/include/Python.h; then
974                       PYTHON_INCDIR=-I$prefix/include
975                       if test -d $prefix/lib64/config; then
976                          PYTHON_LIBS="-L$prefix/lib64/config -lpython"
977                       else
978                          PYTHON_LIBS="-L$prefix/lib/config -lpython"
979                       fi
980                    else
981                       AC_MSG_RESULT(no)
982                       AC_MSG_ERROR(Unable to find Python.h in standard locations)
983                    fi
984                 fi
985              fi
986           else
987              if test -e $withval/bin/python-config ; then
988                 PYTHON_INCDIR=`$withval/bin/python-config --includes`
989                 PYTHON_LIBS=`$withval/bin/python-config --libs`
990              elif test -f $withval/Python.h; then
991                 PYTHON_INCDIR=-I$withval
992                 PYTHON_LIBS="-L$withval/config -lpython"
993              elif test -f $withval/include/Python.h; then
994                 PYTHON_INCDIR=-I$withval/include
995                 if test -d $withval/lib64/config; then
996                    PYTHON_LIBS="-L$withval/lib64/config -lpython"
997                 else
998                    PYTHON_LIBS="-L$withval/lib/config -lpython"
999                 fi
1000              elif test -f $withval/include/python/Python.h; then
1001                 PYTHON_INCDIR=-I$withval/include/python
1002                 if test -d $withval/lib64/python/config; then
1003                    PYTHON_LIBS="-L$withval/lib64/python/config -lpython"
1004                 else
1005                    PYTHON_LIBS="-L$withval/lib/python/config -lpython"
1006                 fi
1007              else
1008                 AC_MSG_RESULT(no)
1009                 AC_MSG_ERROR(Invalid Python directory $withval - unable to find Python.h under $withval)
1010              fi
1011           fi
1012
1013           AC_DEFINE([HAVE_PYTHON], 1)
1014           AC_MSG_RESULT(yes)
1015           support_python=yes
1016           AC_MSG_NOTICE(checking for more Python libs)
1017           saved_LIBS="$LIBS"; LIBS=
1018           AC_SEARCH_LIBS(shm_open, [rt])
1019           AC_CHECK_LIB(util, openpty)
1020           PYTHON_LIBS="$PYTHON_LIBS $LIBS"
1021           LIBS="$saved_LIBS"
1022        else
1023           AC_MSG_RESULT(no)
1024        fi
1025    ],[
1026        AC_MSG_RESULT(no)
1027    ]
1028 )
1029 AC_SUBST(PYTHON_LIBS)
1030 AC_SUBST(PYTHON_INCDIR)
1031
1032 dnl
1033 dnl Find where sockets are (especially for Solaris)
1034 dnl Do this before the TCP Wrappers test since tcp wrappers
1035 dnl uses the socket library and some linkers are stupid.
1036 dnl
1037 AC_CHECK_FUNC(socket,
1038     AC_MSG_RESULT(using libc's socket),
1039     AC_CHECK_LIB(xnet,socket)
1040     AC_CHECK_LIB(socket,socket)
1041     AC_CHECK_LIB(inet,socket))
1042
1043 dnl -----------------------------------------------------------
1044 dnl Check whether user wants TCP wrappers support (default off)
1045 dnl -----------------------------------------------------------
1046 TCPW_MSG="no" 
1047 WRAPLIBS=""
1048 AC_ARG_WITH(tcp-wrappers,
1049    AC_HELP_STRING([--with-tcp-wrappers@<:@=DIR@:>@], [enable tcpwrappers support]),
1050    [
1051        if test "x$withval" != "xno" ; then
1052           saved_LIBS="$LIBS"
1053           LIBS="$saved_LIBS -lwrap"
1054           AC_SEARCH_LIBS(nanosleep, [rt])
1055           AC_MSG_CHECKING(for libwrap)
1056           AC_TRY_LINK(
1057              [ 
1058                #include <sys/types.h>
1059                #include <tcpd.h>
1060                int deny_severity = 0;
1061                int allow_severity = 0;
1062                struct request_info *req;
1063              ], [
1064                 hosts_access(req);
1065              ], [
1066                  AC_MSG_RESULT(yes)
1067                  AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1068                  TCPW_MSG="yes" 
1069                  LIBS="$saved_LIBS"
1070                  WRAPLIBS="-lwrap"
1071              ], [
1072                  LIBS="$saved_LIBS -lwrap -lnsl"
1073                  WRAPLIBS="$saved_LIBS -lwrap -lnsl"
1074                  AC_TRY_LINK(
1075                    [
1076                        #include <sys/types.h>
1077                        #include <tcpd.h>
1078                        int deny_severity = 0;
1079                        int allow_severity = 0;
1080                        struct request_info *req;
1081                    ], [
1082                        hosts_access(req);
1083                    ], [
1084                       AC_MSG_RESULT(yes)
1085                       AC_DEFINE(HAVE_LIBWRAP, 1, [Set to enable libwraper support])
1086                       TCPW_MSG="yes" 
1087                       LIBS="$saved_LIBS"
1088                       WRAPLIBS="-lwrap"
1089                    ], [
1090                       AC_MSG_ERROR([*** libwrap missing])
1091                    ]
1092                 )
1093              ]
1094           )
1095        fi
1096    ]
1097 )
1098
1099 dnl -----------------------------------------------------------
1100 dnl Check whether OpenSSL is available
1101 dnl -----------------------------------------------------------
1102 AC_MSG_CHECKING([for OpenSSL])
1103 dnl The following uses quadrigraphs:
1104 dnl '@<:@' = '['
1105 dnl '@:>@' = ']'
1106 AC_ARG_WITH(openssl,
1107     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@], [Include OpenSSL support. DIR is the OpenSSL base]),
1108     [
1109         with_openssl_directory=${withval}
1110     ]
1111 )
1112
1113 if test "x$with_openssl_directory" != "xno"; then
1114    OPENSSL_LIBS="-lssl -lcrypto"
1115    OPENSSL_INC=""
1116
1117    if test "x$with_openssl_directory" != "xyes" && test x"${with_openssl_directory}" != "x"; then
1118       #
1119       # Make sure the $with_openssl_directory also makes sense
1120       #
1121       if test -d "$with_openssl_directory/lib" -a -d "$with_openssl_directory/include"; then
1122          OPENSSL_LIBS="-L$with_openssl_directory/lib $OPENSSL_LIBS"
1123          OPENSSL_INC="-I$with_openssl_directory/include $OPENSSL_INC"
1124       fi
1125    fi
1126
1127    saved_LIBS="${LIBS}"
1128    saved_CFLAGS="${CFLAGS}"
1129    LIBS="${saved_LIBS} ${OPENSSL_LIBS}"
1130    CFLAGS="${saved_CFLAGS} ${OPENSSL_INC}"
1131
1132    AC_TRY_LINK(
1133       [
1134           #include <openssl/ssl.h>
1135       ], [
1136            CRYPTO_set_id_callback(NULL);
1137       ], [
1138           support_tls="yes"
1139           support_crypto="yes"
1140       ], [
1141           support_tls="no"
1142           support_crypto="no"
1143       ]
1144    )
1145
1146    AC_TRY_LINK(
1147       [
1148           #include <openssl/evp.h>
1149       ], [
1150           EVP_sha512();
1151       ], [
1152           ac_cv_openssl_sha2="yes"
1153       ], [
1154           ac_cv_openssl_sha2="no"
1155       ]
1156    )
1157
1158    dnl Solaris disables greater than 128+ bit encryption in their OpenSSL
1159    dnl implementation, presumably for export reasons. If 192bit AES
1160    dnl is available, we assume that we're running with a 'non-export'
1161    dnl openssl library.
1162    AC_TRY_LINK(
1163       [
1164           #include <openssl/evp.h>
1165       ], [
1166           EVP_aes_192_cbc();
1167       ], [
1168           ac_cv_openssl_export="no"
1169       ], [
1170           ac_cv_openssl_export="yes"
1171       ]
1172    )
1173
1174    LIBS="${saved_LIBS}"
1175    CFLAGS="${saved_CFLAGS}"
1176
1177    if test "$support_tls" = "yes"; then
1178       AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL library is available])
1179       AC_DEFINE(HAVE_TLS, 1, [Define if TLS support should be enabled])
1180       AC_DEFINE(HAVE_CRYPTO, 1, [Define if encryption support should be enabled])
1181    fi
1182
1183    if test "$ac_cv_openssl_sha2" = "yes"; then
1184       AC_DEFINE(HAVE_SHA2, 1, [Define if the SHA-2 family of digest algorithms is available])
1185    fi
1186
1187    if test "$ac_cv_openssl_export" = "yes"; then
1188       AC_DEFINE(HAVE_OPENSSL_EXPORT_LIBRARY, 1, [Define if the OpenSSL library is export-contrained to 128bit ciphers])
1189    fi
1190 else
1191    support_tls="no"
1192    support_crypto="no"
1193    OPENSSL_LIBS=""
1194    OPENSSL_INC=""
1195 fi
1196
1197 if test "$support_tls" = "no"; then
1198    OPENSSL_LIBS=""
1199    OPENSSL_INC=""
1200 fi  
1201 if test "$support_crypto" = "no"; then
1202    OPENSSL_LIBS=""
1203    OPENSSL_INC=""
1204 else
1205    AC_CHECK_LIB(ssl, EVP_PKEY_encrypt_old, AC_DEFINE(HAVE_OPENSSLv1, 1, [Set if have OpenSSL version 1.x]))
1206 fi  
1207
1208 AC_MSG_RESULT([$support_tls])
1209 AC_SUBST(OPENSSL_LIBS)
1210 AC_SUBST(OPENSSL_INC)
1211
1212 dnl -----------------------------------------------------------
1213 dnl dlopen is needed for plugins
1214 dnl -----------------------------------------------------------
1215 AC_SEARCH_LIBS(dlopen, [dl])
1216
1217 dnl ------------------------------------------
1218 dnl Where to place working dir
1219 dnl ------------------------------------------
1220 working_dir=`eval echo ${prefix}/var/bacula/working`
1221 AC_ARG_WITH(working-dir,
1222    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
1223    [
1224        if test "x$withval" != "xno" ; then     
1225          working_dir=$withval
1226        fi
1227    ]
1228 )
1229
1230 AC_SUBST(working_dir)
1231
1232 dnl ------------------------------------------------------------------
1233 dnl If the user has not set archivedir, we set our default as /tmp
1234 dnl ------------------------------------------------------------------
1235 archivedir=/tmp
1236 AC_ARG_WITH(archivedir,
1237    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
1238    [
1239        if test "x$withval" != "xno" ; then     
1240           archivedir=$withval
1241        fi
1242    ]
1243 )
1244
1245 AC_SUBST(archivedir)
1246
1247 dnl ------------------------------------------------------------------
1248 dnl Allow the user to specify the daemon resource name default hostname
1249 dnl ------------------------------------------------------------------
1250 basename=`hostname`
1251 AC_ARG_WITH(basename,
1252    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
1253    [
1254        if test "x$withval" != "xno" ; then     
1255           basename=$withval
1256        fi
1257    ]
1258 )
1259
1260 AC_SUBST(basename)
1261
1262 dnl ------------------------------------------------------------------
1263 dnl Allow the user to override the hostname (default = machine hostname)
1264 dnl ------------------------------------------------------------------
1265 hostname=`uname -n | cut -d '.' -f 1`
1266 if test x${hostname} = x ; then
1267   hostname="localhost"
1268 fi
1269 AC_ARG_WITH(hostname,
1270    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
1271    [
1272        if test "x$withval" != "xno" ; then
1273          hostname=$withval
1274        fi
1275    ]
1276 )
1277
1278 AC_SUBST(hostname)
1279
1280
1281 dnl ------------------------------------------
1282 dnl Where to place scriptdir (script files)
1283 dnl ------------------------------------------
1284 scriptdir=`eval echo ${sysconfdir}`
1285 AC_ARG_WITH(scriptdir,
1286    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
1287    [
1288        if test "x$withval" != "xno" ; then     
1289           scriptdir=$withval
1290        fi
1291    ]
1292 )
1293
1294 AC_SUBST(scriptdir)
1295
1296
1297 dnl ------------------------------------------
1298 dnl Where to place bsrdir (bsr files)
1299 dnl ------------------------------------------
1300 bsrdir=/tmp
1301 AC_ARG_WITH(bsrdir,
1302    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
1303    [
1304        if test "x$withval" != "xno" ; then     
1305           bsrdir=$withval
1306        fi
1307    ]
1308 )
1309
1310 AC_SUBST(bsrdir)
1311
1312 dnl ------------------------------------------
1313 dnl Where to place logdir (bsr files)
1314 dnl ------------------------------------------
1315 logdir=/tmp
1316 AC_ARG_WITH(logdir,
1317    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
1318    [
1319        if test "x$withval" != "xno" ; then     
1320           logdir=$withval
1321        fi
1322    ]
1323 )
1324
1325 AC_SUBST(logdir)
1326
1327
1328 # ------------------------------------------
1329 # Where to place plugindir (plugin files)
1330 # ------------------------------------------
1331 plugindir=`eval echo ${libdir}`
1332 AC_ARG_WITH(plugindir,
1333    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
1334    [
1335        if test "x$withval" != "xno" ; then     
1336           plugindir=$withval
1337        fi
1338    ]
1339 )
1340
1341 AC_SUBST(plugindir)
1342
1343 dnl ------------------------------------------
1344 dnl Where to send dump email
1345 dnl ------------------------------------------
1346 dump_email=root@localhost
1347 AC_ARG_WITH(dump-email,
1348    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
1349    [
1350        if test "x$withval" != "xno" ; then     
1351           dump_email=$withval
1352        fi
1353    ]
1354 )
1355
1356 AC_SUBST(dump_email)
1357
1358 dnl ------------------------------------------
1359 dnl Where to send job email
1360 dnl ------------------------------------------
1361 job_email=root@localhost
1362 AC_ARG_WITH(job-email,
1363    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
1364    [
1365        if test "x$withval" != "xno" ; then     
1366           job_email=$withval
1367        fi
1368    ]
1369 )
1370
1371 AC_SUBST(job_email)
1372
1373 dnl ------------------------------------------
1374 dnl Where to find smtp host
1375 dnl ------------------------------------------
1376 smtp_host=localhost
1377 AC_ARG_WITH(smtp_host,
1378    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
1379    [
1380        if test "x$withval" != "xno" ; then     
1381           smtp_host=$withval
1382        fi
1383    ]
1384 )
1385
1386 AC_SUBST(smtp_host)
1387
1388 dnl ------------------------------------
1389 dnl Where to place pid files
1390 dnl ------------------------------------
1391 piddir=/var/run
1392 AC_ARG_WITH(pid-dir,
1393    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
1394    [
1395        if test "x$withval" != "xno" ; then   
1396           piddir=$withval
1397        fi
1398    ]
1399 )
1400
1401 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
1402 AC_SUBST(piddir)
1403
1404 dnl ------------------------------------
1405 dnl Where to place subsys "lock file"
1406 dnl ------------------------------------
1407 subsysdir=/var/run/subsys
1408 if test -d /var/run/subsys; then
1409    subsysdir=/var/run/subsys
1410 elif test -d /var/lock/subsys; then
1411    subsysdir=/var/lock/subsys
1412 else
1413    subsysdir=/var/run/subsys
1414 fi
1415 AC_ARG_WITH(subsys-dir,
1416    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
1417    [
1418        if test "x$withval" != "xno" ; then   
1419           subsysdir=$withval
1420        fi
1421    ]
1422 )
1423
1424 AC_SUBST(subsysdir)
1425
1426 dnl ------------------------------------
1427 dnl Where to start assigning ports
1428 dnl ------------------------------------
1429 baseport=9101
1430 AC_ARG_WITH(baseport,
1431    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
1432    [
1433        if test "x$withval" != "xno" ; then   
1434           baseport=$withval
1435        fi
1436    ]
1437 )
1438
1439 AC_SUBST(baseport)
1440 dir_port=`expr $baseport`
1441 fd_port=`expr $baseport + 1`
1442 sd_port=`expr $fd_port + 1`
1443
1444 AC_SUBST(dir_port)
1445 AC_SUBST(fd_port)
1446 AC_SUBST(sd_port)
1447
1448 dnl ------------------------------------------
1449 dnl Generate passwords
1450 dnl ------------------------------------------
1451 dir_password=
1452 AC_ARG_WITH(dir-password,
1453    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
1454    [
1455        if test "x$withval" != "xno" ; then     
1456           dir_password=$withval
1457        fi
1458    ]
1459 )
1460
1461 if test "x$dir_password" = "x" ; then
1462    if test "x$OPENSSL" = "xnone" ; then
1463       key=`autoconf/randpass 33`
1464    else
1465       key=`openssl rand -base64 33`
1466    fi
1467    dir_password=$key
1468 fi
1469
1470 fd_password=
1471 AC_ARG_WITH(fd-password,
1472    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
1473    [
1474        if test "x$withval" != "xno" ; then     
1475           fd_password=$withval
1476        fi
1477    ]
1478 )
1479
1480 if test "x$fd_password" = "x" ; then
1481    if test "x$OPENSSL" = "xnone" ; then
1482       key=`autoconf/randpass 37`
1483    else
1484       key=`openssl rand -base64 33`
1485    fi
1486    fd_password=$key
1487 fi
1488
1489 sd_password=
1490 AC_ARG_WITH(sd-password,
1491    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
1492    [
1493        if test "x$withval" != "xno" ; then     
1494           sd_password=$withval
1495        fi
1496    ]
1497 )
1498
1499 if test "x$sd_password" = "x" ; then
1500    if test "x$OPENSSL" = "xnone" ; then
1501       key=`autoconf/randpass 41`
1502    else
1503       key=`openssl rand -base64 33`
1504    fi
1505    sd_password=$key
1506 fi
1507
1508 mon_dir_password=
1509 AC_ARG_WITH(mon-dir-password,
1510    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
1511    [
1512        if test "x$withval" != "xno" ; then     
1513           mon_dir_password=$withval
1514        fi
1515    ]
1516 )
1517
1518 if test "x$mon_dir_password" = "x" ; then
1519    if test "x$OPENSSL" = "xnone" ; then
1520       key=`autoconf/randpass 33`
1521    else
1522       key=`openssl rand -base64 33`
1523    fi
1524    mon_dir_password=$key
1525 fi
1526
1527 mon_fd_password=
1528 AC_ARG_WITH(mon-fd-password,
1529    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
1530    [
1531        if test "x$withval" != "xno" ; then     
1532           mon_fd_password=$withval
1533        fi
1534    ]
1535 )
1536
1537 if test "x$mon_fd_password" = "x" ; then
1538    if test "x$OPENSSL" = "xnone" ; then
1539       key=`autoconf/randpass 37`
1540    else
1541       key=`openssl rand -base64 33`
1542    fi
1543    mon_fd_password=$key
1544 fi
1545
1546 mon_sd_password=
1547 AC_ARG_WITH(mon-sd-password,
1548    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
1549    [
1550        if test "x$withval" != "xno" ; then     
1551           mon_sd_password=$withval
1552        fi
1553    ]
1554 )
1555
1556 if test "x$mon_sd_password" = "x" ; then
1557    if test "x$OPENSSL" = "xnone" ; then
1558       key=`autoconf/randpass 41`
1559    else
1560       key=`openssl rand -base64 33`
1561    fi
1562    mon_sd_password=$key
1563 fi
1564
1565 AC_SUBST(dir_password)
1566 AC_SUBST(fd_password)
1567 AC_SUBST(sd_password)
1568 AC_SUBST(mon_dir_password)
1569 AC_SUBST(mon_fd_password)
1570 AC_SUBST(mon_sd_password)
1571
1572 dnl
1573 dnl Pickup any database name
1574 dnl
1575 db_name=bacula
1576 AC_ARG_WITH(db_name,
1577    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
1578    [
1579        if test "x$withval" != "x" ; then   
1580           db_name=$withval
1581        fi
1582    ]
1583 )
1584 AC_SUBST(db_name)
1585
1586 db_user=bacula
1587 AC_ARG_WITH(db_user,
1588    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
1589    [
1590        if test "x$withval" != "x" ; then   
1591           db_user=$withval
1592        fi
1593    ]
1594 )
1595 AC_SUBST(db_user)
1596
1597 db_password=
1598 AC_ARG_WITH(db_password,
1599    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
1600    [
1601        if test "x$withval" != "x" ; then   
1602           db_password=$withval
1603        fi
1604    ]
1605 )
1606 AC_SUBST(db_password)
1607
1608 dnl
1609 dnl Pickup a database port
1610 dnl
1611 db_port=" "
1612 AC_ARG_WITH(db_port,
1613    AC_HELP_STRING([--with-db-port=DBPORT], [specify a database port @<:@default=null@:>@]),
1614    [
1615        if test "x$withval" != "x" ; then
1616           db_port=$withval
1617        fi
1618    ]
1619 )
1620 AC_SUBST(db_port)
1621
1622 #
1623 # Handle users and groups for each daemon
1624 #
1625 dir_user=
1626 AC_ARG_WITH(dir_user,
1627    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
1628    [
1629        if test "x$withval" != "x" ; then   
1630            dir_user=$withval
1631        fi
1632    ]
1633 )
1634
1635 dir_group=
1636 AC_ARG_WITH(dir_group,
1637    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
1638    [
1639        if test "x$withval" != "x" ; then   
1640           dir_group=$withval
1641        fi
1642    ]
1643 )
1644
1645 sd_user=
1646 AC_ARG_WITH(sd_user,
1647    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
1648    [
1649        if test "x$withval" != "x" ; then   
1650           sd_user=$withval
1651        fi
1652    ]
1653 )
1654
1655 sd_group=
1656 AC_ARG_WITH(sd_group,
1657    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
1658    [
1659        if test "x$withval" != "x" ; then   
1660           sd_group=$withval
1661        fi
1662    ]
1663 )
1664
1665 fd_user=
1666 AC_ARG_WITH(fd_user,
1667    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
1668    [
1669        if test "x$withval" != "x" ; then   
1670           fd_user=$withval
1671        fi
1672    ]
1673 )
1674
1675 fd_group=
1676 AC_ARG_WITH(fd_group,
1677    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
1678    [
1679        if test "x$withval" != "x" ; then   
1680           fd_group=$withval
1681        fi
1682    ]
1683 )
1684
1685 AC_SUBST(dir_user)
1686 AC_SUBST(dir_group)
1687 AC_SUBST(sd_user)
1688 AC_SUBST(sd_group)
1689 AC_SUBST(fd_user)
1690 AC_SUBST(fd_group)
1691
1692 dnl
1693 dnl allow setting default executable permissions
1694 dnl
1695 SBINPERM=0750
1696 AC_ARG_WITH(sbin-perm,
1697    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0750@:>@]),
1698    [
1699        if test "x$withval" != "x" ; then   
1700           SBINPERM=$withval
1701        fi
1702    ]
1703 )
1704
1705 AC_SUBST(SBINPERM)
1706
1707 dnl ------------------------------------------------
1708 dnl Bacula check for various SQL database engines
1709 dnl ------------------------------------------------
1710 SQL_LIB=
1711 BA_CHECK_POSTGRESQL_DB
1712
1713 BA_CHECK_MYSQL_DB
1714
1715 BA_CHECK_INGRES_DB
1716
1717 BA_CHECK_SQLITE3_DB
1718
1719 # BA_CHECK_SQLITE_DB
1720
1721 BA_CHECK_DBI_DB
1722
1723 BA_CHECK_DBI_DRIVER
1724
1725 AC_SUBST(cats)
1726 AC_SUBST(DB_TYPE)
1727
1728 dnl -------------------------------------------
1729 dnl enable batch attribute DB insert (default on)
1730 dnl -------------------------------------------
1731 support_batch_insert=no
1732 A=`test -f $SQL_LIB && nm $SQL_LIB | grep pthread_mutex_lock`
1733 pkg=$?
1734 if test $pkg = 0; then
1735    support_batch_insert=yes
1736    AC_ARG_ENABLE(batch-insert,
1737       AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1738       [
1739           if test x$enableval = xno; then
1740              support_batch_insert=no
1741           else
1742              support_batch_insert=yes
1743           fi
1744       ]
1745    )
1746 fi
1747
1748 dnl For postgresql checking
1749 saved_LIBS="${LIBS}"
1750 LIBS="${saved_LIBS} ${SQL_LFLAGS}"
1751    
1752 dnl Check if postgresql can support batch mode
1753 if test x$DB_TYPE = xpostgresql; then
1754    AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE, 1, [Set if have PQisthreadsafe]))
1755    AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY, 1, [Set if have PQputCopyData]))
1756    if test "x$ac_cv_lib_pq_PQputCopyData" != "xyes"
1757     then
1758         support_batch_insert=no
1759    fi
1760 fi
1761
1762 if test x$DB_TYPE = xdbi; then
1763    DB_TYPE=$DB_PROG
1764    db_type=$DB_PROG
1765    pkg=1
1766    dnl Check for batch insert
1767    if test $DB_PROG = postgresql; then
1768       AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE))
1769       AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY))
1770       test "x$ac_cv_lib_pq_PQputCopyData" != "xyes"
1771       pkg=$?
1772    fi
1773
1774    if test $DB_PROG = mysql; then
1775       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1776       pkg=$?    
1777    fi
1778
1779    if test $DB_PROG = sqlite3; then
1780       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1781       pkg=$?
1782       AC_CHECK_LIB(sqlite3, sqlite3_threadsafe, AC_DEFINE(HAVE_SQLITE3_THREADSAFE, 1, [Set if have sqlite3_threadsafe]))
1783    fi
1784
1785    if test $pkg = 0; then
1786       AC_ARG_ENABLE(batch-insert,
1787          AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1788          [
1789              if test x$enableval = xno; then
1790                 support_batch_insert=no
1791              else
1792                 support_batch_insert=yes
1793              fi
1794          ]
1795       )
1796    fi
1797 else 
1798    dnl If dbi was not chosen, let the comment in file
1799    uncomment_dbi="#"  
1800 fi
1801
1802 dnl revert after postgresql checks
1803 LIBS="${saved_LIBS}"
1804
1805 AC_SUBST(uncomment_dbi)
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_FUNC_CLOSEDIR_VOID
2391 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2392 # AC_FUNC_FNMATCH    dnl use local version
2393
2394 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2395
2396 AC_CHECK_LIB(sun, getpwnam)
2397
2398 AC_CHECK_HEADERS(zlib.h)
2399 AC_CHECK_LIB(z, deflate, [FDLIBS="-lz"])
2400 have_zlib=no
2401 if test x$FDLIBS = x-lz; then
2402    AC_DEFINE(HAVE_LIBZ)
2403    have_zlib=yes
2404 fi
2405
2406 dnl
2407 dnl Check for ACL support and libraries
2408 dnl
2409 support_acl=auto
2410 AC_ARG_ENABLE(acl,
2411    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2412    [
2413        if test x$enableval = xyes; then
2414           support_acl=yes
2415        elif test x$enableval = xno; then
2416           support_acl=no
2417        fi
2418    ]
2419 )
2420
2421 have_acl=no
2422 have_extended_acl=no
2423 if test x$support_acl = xyes -o x$support_acl = xauto; then
2424    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2425    AC_CHECK_FUNC(acl_get_file,
2426       [
2427           have_acl=yes
2428       ], [
2429           AC_CHECK_LIB(acl, acl_get_file,
2430              [
2431                  have_acl=yes;
2432                  FDLIBS="-lacl $FDLIBS"
2433              ], [
2434                  AC_CHECK_LIB(pacl, acl_get_file,
2435                     [
2436                         have_acl=yes;
2437                         FDLIBS="-lpacl $FDLIBS"
2438                     ], [
2439                         AC_CHECK_LIB(sec, acltotext,
2440                            [
2441                                have_acl=yes;
2442                                FDLIBS="-lsec $FDLIBS"
2443
2444                                AC_CHECK_LIB(sec, acl_totext,
2445                                   [
2446                                       have_extended_acl=yes
2447                                   ]
2448                                )
2449                            ]
2450                         )
2451                     ]
2452                  )
2453              ]
2454           )
2455       ]
2456    )
2457
2458    if test x$support_acl = xyes -a $have_acl != yes; then
2459       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2460   please either load the acl libraries or rerun configure without --enable-acl])
2461    else
2462       if test $have_acl = yes; then
2463          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2464       fi
2465
2466       if test $have_extended_acl = yes; then
2467          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2468       fi
2469    fi
2470 fi
2471
2472 dnl
2473 dnl Check for XATTR support
2474 dnl
2475 support_xattr=auto
2476 AC_ARG_ENABLE(xattr,
2477    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2478    [
2479        if test x$enableval = xyes; then
2480           support_xattr=yes
2481        elif test x$enableval = xno; then
2482           support_xattr=no
2483        fi
2484    ]
2485 )
2486
2487 have_xattr=no
2488 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2489    dnl
2490    dnl First check for *BSD support
2491    dnl
2492    AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2493    AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2494    AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2495       [
2496           have_xattr=yes
2497           AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2498           AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2499           AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2500       ]
2501    )
2502    
2503    if test $have_xattr = no; then
2504       AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2505          [
2506              have_xattr=yes
2507              AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2508              AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2509              AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2510          ]
2511       )
2512    fi
2513    
2514    if test $have_xattr = yes; then
2515       have_extattr_string_in_libc=no
2516       AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2517          [
2518              have_extattr_string_in_libc=yes
2519              AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2520              AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2521          ]
2522       )
2523
2524       dnl
2525       dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2526       dnl
2527       if test $have_extattr_string_in_libc = no; then
2528          AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2529             [
2530                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2531                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2532                 FDLIBS="-lutil $FDLIBS"
2533             ]
2534          )
2535       fi
2536    fi
2537
2538    dnl
2539    dnl If we failed to find *BSD support try the Linux or OSX implementation of xattr
2540    dnl
2541    if test $have_xattr = no; then
2542       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2543       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2544          [
2545              have_xattr=yes
2546              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2547              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2548              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2549          ]
2550       )
2551
2552       if test $have_xattr = no; then
2553          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2554             [
2555                 have_xattr=yes
2556                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2557                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2558                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2559             ]
2560          )
2561       fi
2562    fi
2563
2564    dnl
2565    dnl If we failed to find *BSD support and the Linux or OSX implementation of xattr try the Solaris xattr implementation
2566    dnl
2567    if test $have_xattr = no; then
2568       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2569       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2570       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2571
2572       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2573          [
2574              have_xattr=yes
2575              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2576              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2577              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2578              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2579              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2580          ]
2581       )
2582
2583       if test $have_xattr = yes; then
2584          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2585             [
2586                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2587                 FDLIBS="-lnvpair $FDLIBS"
2588             ]
2589          )
2590       fi
2591    fi
2592
2593    if test x$support_xattr = xyes -a $have_xattr != yes; then
2594       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2595   please either load the xattr libraries or rerun configure without --enable-xattr])
2596    else
2597       if test $have_xattr = yes; then
2598          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2599       fi
2600    fi
2601 fi
2602
2603 dnl
2604 dnl Check for pthread libraries
2605 dnl
2606 PTHREAD_LIB=""
2607 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2608    [
2609        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2610           [
2611               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2612                  [
2613                      AC_CHECK_FUNC(pthread_create)
2614                  ]
2615               )
2616           ]
2617        )
2618    ]
2619 )
2620
2621 dnl
2622 dnl Check for headers, functions and libraries required to support
2623 dnl keeping readall capabilities
2624 dnl
2625 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2626 AC_CHECK_FUNCS(prctl setreuid)
2627 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2628 if test x$CAP_LIBS = x-lcap; then
2629    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2630 fi
2631 AC_SUBST(CAP_LIBS)
2632
2633 AC_SUBST(FDLIBS)
2634 AC_DEFINE(FDLIBS)
2635
2636 CFLAGS=${CFLAGS--O}
2637
2638 if test x$have_gcc = xyes ; then
2639    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2640    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2641 fi
2642 LDFLAGS=${LDFLAGS--O}
2643 DB_LIBS="${SQL_LFLAGS}"
2644 CPPFLAGS="$CPPFLAGS"
2645 CFLAGS="$CFLAGS"
2646 AC_SUBST(DEBUG)
2647 AC_SUBST(DINCLUDE)
2648 AC_SUBST(CFLAGS)
2649 AC_SUBST(CPPFLAGS)
2650 AC_SUBST(LDFLAGS)
2651 AC_SUBST(X_CFLAGS)
2652 AC_SUBST(DEFS)
2653 AC_SUBST(LIBS)
2654 AC_SUBST(DLIB)
2655 AC_SUBST(DB_LIBS)
2656 AC_SUBST(X_LIBS)
2657 AC_SUBST(X_EXTRA_LIBS)
2658 AC_SUBST(WCFLAGS)
2659 AC_SUBST(WLDFLAGS)
2660 AC_SUBST(WRAPLIBS)
2661
2662 dnl extra configurable objects
2663 OBJLIST=
2664 AC_SUBST(OBJLIST)
2665
2666 lld="lld"
2667 llu="llu"
2668
2669 WCFLAGS=
2670 WLDFLAGS=
2671
2672 dnl
2673 dnl Finally we set appropriate distribution specific
2674 dnl  variables and defaults
2675 dnl
2676 dnl PFILES are platform specific files
2677 PFILES="platforms/Makefile"
2678 PSCMD="ps -e"
2679 WIN32=
2680 MACOSX=
2681
2682 hostname=`uname -n | cut -d '.' -f 1`
2683 if test x${hostname} = x ; then
2684    hostname="localhost"
2685 fi
2686 dnl Make sure hostname is resolved
2687 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2688 if test ! $? = 0; then
2689   hostname="localhost"
2690 fi
2691
2692 case "$DISTNAME" in
2693 aix)
2694    DISTVER=`uname -r`
2695    PSCMD="ps -e -o pid,comm"
2696    PFILES="${PFILES} \
2697       platforms/aix/Makefile"
2698    TAPEDRIVE="/dev/rmt0.1" 
2699   ;;     
2700 alpha)
2701    DISTVER=`uname -r`
2702    PTHREAD_LIB="-lpthread -lexc"
2703    if test "${CC}" = "gcc" ; then
2704       lld="lld"
2705       llu="llu"
2706    else
2707       lld="ld"
2708       llu="lu"
2709    fi
2710    TAPEDRIVE="/dev/nrmt0"
2711   ;;
2712 bsdi)
2713    DISTVER=`uname -a |awk '{print $3}'`
2714    TAPEDRIVE="/dev/nrmt0"
2715    PTHREAD_LIB="-pthread"
2716    CFLAGS="${CFLAGS} -pthread"
2717    PSCMD="ps -ax -o pid,command"
2718    lld="qd"
2719    llu="qu"
2720    PFILES="${PFILES} \
2721        platforms/bsdi/Makefile \
2722        platforms/bsdi/bacula-fd \
2723        platforms/bsdi/bacula-sd \
2724        platforms/bsdi/bacula-dir"
2725    largefile_support="yes"
2726   ;;
2727 cygwin)
2728    DISTVER=`uname -a |awk '{print $3}'`
2729    TAPEDRIVE="/dev/nrst0"
2730    WIN32=win32
2731    WCFLAGS="-mwindows"
2732    WLDFLAGS="-mwindows"
2733   ;;
2734 darwin)
2735    DISTVER=`uname -r`
2736    TAPEDRIVE="/dev/nst0"
2737    PSCMD="ps -e -o pid,command"
2738    MACOSX=macosx
2739    PFILES="${PFILES} \
2740       platforms/darwin/Makefile"
2741   ;;
2742 osx)
2743    DISTVER=`uname -r`
2744    TAPEDRIVE="/dev/nst0"
2745    PSCMD="ps -e -o pid,command"
2746    MACOSX=macosx
2747    PFILES="${PFILES} \
2748       platforms/osx/Makefile"
2749   ;;
2750 debian)
2751    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2752       DISTNAME="ubuntu"
2753    fi
2754    DISTVER=`cat /etc/debian_version`
2755    if test -f /etc/lsb-release ; then
2756       . /etc/lsb-release
2757       if test "x$DISTRIB_ID" != "x" ; then
2758          DISTNAME=$DISTRIB_ID
2759       fi
2760       if test "x$DISTRIB_RELEASE" != "x" ; then
2761          DISTVER=$DISTRIB_RELEASE
2762       fi
2763    fi
2764    if test "$DISTNAME" = "Ubuntu" ; then
2765       DISTNAME="ubuntu"
2766    fi
2767    TAPEDRIVE="/dev/nst0"
2768    PSCMD="ps -e -o pid,command"
2769    if test "$DISTNAME" = "ubuntu" ; then
2770       PFILES="${PFILES} \
2771          platforms/ubuntu/Makefile \
2772          platforms/ubuntu/bacula-fd \
2773          platforms/ubuntu/bacula-sd \
2774          platforms/ubuntu/bacula-dir"
2775    else 
2776       PFILES="${PFILES} \
2777          platforms/debian/Makefile \
2778          platforms/debian/bacula-fd \
2779          platforms/debian/bacula-sd \
2780          platforms/debian/bacula-dir"
2781    fi
2782   ;;
2783 freebsd)
2784    DISTVER=`uname -a |awk '{print $3}'`
2785    VER=`echo $DISTVER | cut -c 1`
2786    if test x$VER = x4 ; then
2787       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
2788       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
2789    fi
2790    lld="qd"
2791    llu="qu"
2792    TAPEDRIVE="/dev/nrsa0"
2793    PSCMD="ps -ax -o pid,command"
2794    PFILES="${PFILES} \
2795        platforms/freebsd/Makefile \
2796        platforms/freebsd/bacula-fd \
2797        platforms/freebsd/bacula-sd \
2798        platforms/freebsd/bacula-dir"
2799    largefile_support="yes"
2800   ;;
2801 hpux)
2802    PSCMD="UNIX95=1; ps -e -o pid,comm"
2803    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
2804    DISTVER=`uname -r`
2805    TAPEDRIVE="/dev/rmt/0hnb"
2806    PTHREAD_LIB="-lpthread"
2807    AC_DEFINE([_INCLUDE_LONGLONG])
2808   ;;
2809 irix)
2810    DISTVER=`uname -r`
2811    TAPEDRIVE="/dev/rmt/0cbn"
2812    PSCMD="ps -e -o pid,comm"
2813    PFILES="${PFILES} \
2814        platforms/irix/Makefile \
2815        platforms/irix/bacula-fd \
2816        platforms/irix/bacula-sd \
2817        platforms/irix/bacula-dir"
2818   ;;
2819 netbsd)
2820    DISTVER=`uname -a |awk '{print $3}'`
2821    lld="qd"
2822    llu="qu"
2823    TAPEDRIVE="/dev/nrst0"
2824    PSCMD="ps -ax -o pid,command"
2825    PTHREAD_LIB="-pthread"
2826    CFLAGS="${CFLAGS} -pthread"
2827   ;;
2828 openbsd)
2829    DISTVER=`uname -a |awk '{print $3}'`
2830    lld="qd"
2831    llu="qu"
2832    TAPEDRIVE="/dev/nrst0"
2833    PSCMD="ps -ax -o pid,command"
2834    PTHREAD_LIB="-pthread"
2835    CFLAGS="${CFLAGS} -pthread"
2836    PFILES="${PFILES} \
2837        platforms/openbsd/Makefile \
2838        platforms/openbsd/bacula-fd \
2839        platforms/openbsd/bacula-sd \
2840        platforms/openbsd/bacula-dir"
2841   ;;
2842 redhat)
2843    if test -f /etc/whitebox-release ; then
2844       f=/etc/whitebox-release
2845    else
2846       f=/etc/redhat-release
2847    fi
2848    if test `cat $f | grep release |\
2849          cut -f 3 -d ' '`x = "Enterprise"x ; then
2850       DISTVER="Enterprise "`cat $f | grep release |\
2851           cut -f 6 -d ' '`
2852    else
2853        DISTVER=`cat /etc/redhat-release | grep release |\
2854            cut -f 5 -d ' '`
2855    fi
2856    TAPEDRIVE="/dev/nst0"
2857    PSCMD="ps -e -o pid,command"
2858    PFILES="${PFILES} \
2859        platforms/redhat/Makefile \
2860        platforms/redhat/bacula-fd \
2861        platforms/redhat/bacula-sd \
2862        platforms/redhat/bacula-dir
2863        "
2864   ;;
2865 mandrake)
2866    DISTVER=`cat /etc/mandrake-release | grep release |\
2867       cut -f 5 -d ' '`
2868    TAPEDRIVE="/dev/nst0"
2869    PSCMD="ps -e -o pid,command"
2870    PFILES="${PFILES} \
2871        platforms/mandrake/Makefile \
2872        platforms/mandrake/bacula-fd \
2873        platforms/mandrake/bacula-sd \
2874        platforms/mandrake/bacula-dir \
2875        "
2876   ;;
2877 gentoo)
2878    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
2879    TAPEDRIVE="/dev/nst0"
2880    PSCMD="ps -e -o pid,command"
2881    PFILES="${PFILES} \
2882        platforms/gentoo/Makefile \
2883     platforms/gentoo/bacula-init \
2884        platforms/gentoo/bacula-fd \
2885        platforms/gentoo/bacula-sd \
2886        platforms/gentoo/bacula-dir"
2887   ;;
2888 slackware)
2889    DISTVER=`cat /etc/slackware-version`
2890    TAPEDRIVE="/dev/nst0"
2891    PSCMD="ps -e -o pid,command"
2892    PFILES="${PFILES} \
2893        platforms/slackware/Makefile \
2894        platforms/slackware/rc.bacula-fd \
2895        platforms/slackware/rc.bacula-sd \
2896        platforms/slackware/rc.bacula-dir\
2897        platforms/slackware/functions.bacula"
2898   ;;
2899 solaris)
2900    DISTVER=`uname -r`
2901    TAPEDRIVE="/dev/rmt/0cbn"
2902    PSCMD="ps -e -o pid,comm"
2903    PFILES="${PFILES} \
2904        platforms/solaris/Makefile \
2905        platforms/solaris/bacula-fd \
2906        platforms/solaris/bacula-sd \
2907        platforms/solaris/bacula-dir"
2908    if test x$DISTVER = x5.6 ; then
2909        AC_DEFINE(HAVE_OLD_SOCKOPT)
2910    fi
2911    LIBS="$LIBS -lresolv -lrt"
2912   ;;
2913 suse)
2914    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
2915        cut -f 3 -d ' '`
2916    TAPEDRIVE="/dev/nst0"
2917    PSCMD="ps -e -o pid,command"
2918    PFILES="${PFILES} \
2919        platforms/suse/Makefile \
2920        platforms/suse/bacula-fd \
2921        platforms/suse/bacula-sd \
2922        platforms/suse/bacula-dir"
2923   ;;
2924 suse5)
2925    DISTNAME=suse
2926    DISTVER=5.x
2927    TAPEDRIVE="/dev/nst0"
2928    PSCMD="ps -e -o pid,command"
2929    PFILES="${PFILES} \
2930        platforms/suse/Makefile \
2931        platforms/suse/bacula-fd \
2932        platforms/suse/bacula-sd \
2933        platforms/suse/bacula-dir"
2934   ;;
2935 unknown)
2936    DISTVER=unknown
2937    TAPEDRIVE="/dev/nst0"
2938   ;;
2939 *)
2940   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
2941   ;;
2942 esac  
2943
2944 AC_SUBST(hostname)
2945
2946 LIBS="$PTHREAD_LIB $LIBS"
2947
2948 AC_DEFINE_UNQUOTED(lld, "$lld")
2949 AC_DEFINE_UNQUOTED(llu, "$llu")
2950 AC_SUBST(TAPEDRIVE)
2951 AC_SUBST(PSCMD)
2952 AC_SUBST(WIN32)
2953 AC_SUBST(MACOSX)
2954 AC_SUBST(DISTNAME)
2955 AC_SUBST(DISTVER)
2956
2957 dnl common parts of the Makefile
2958 MCOMMON=./autoconf/Make.common
2959 AC_SUBST_FILE(MCOMMON)
2960
2961 dnl Insanity check
2962 if test "x${subsysdir}" = "x${sbindir}" ; then
2963    echo " "
2964    echo " "
2965    echo "You have set both --sbindir and --with-subsys-dir"
2966    echo "  equal to: ${subsysdir} "
2967    echo "This is not permitted. Please reconfigure."
2968    echo " "
2969    echo "Aborting configuration ..."
2970    echo " "
2971    echo " "
2972    exit 1
2973 fi 
2974
2975 AC_OUTPUT([autoconf/Make.common \
2976            Makefile \
2977            manpages/Makefile \
2978            scripts/startmysql \
2979            scripts/stopmysql \
2980            scripts/btraceback \
2981            scripts/startit \
2982            scripts/stopit \
2983            scripts/bconsole \
2984            scripts/gconsole \
2985            scripts/bacula \
2986            scripts/bacula-ctl-dir \
2987            scripts/bacula-ctl-fd \
2988            scripts/bacula-ctl-sd \
2989            scripts/devel_bacula \
2990            scripts/Makefile \
2991            scripts/logrotate \
2992            scripts/bacula.desktop.gnome1 \
2993            scripts/bacula.desktop.gnome2 \
2994            scripts/bacula.desktop.gnome1.consolehelper \
2995            scripts/bacula.desktop.gnome2.consolehelper \
2996            scripts/bacula.desktop.gnome1.xsu \
2997            scripts/bacula.desktop.gnome2.xsu \
2998            scripts/bgnome-console.console_apps \
2999            scripts/mtx-changer \
3000            scripts/disk-changer \
3001            scripts/dvd-handler \
3002            scripts/dvd-simulator \
3003            scripts/bacula-tray-monitor.desktop \
3004            scripts/logwatch/Makefile \
3005            scripts/logwatch/logfile.bacula.conf \
3006            scripts/wxconsole.console_apps \
3007            scripts/wxconsole.desktop.consolehelper \
3008            scripts/wxconsole.desktop.xsu \
3009            scripts/bat.desktop \
3010            scripts/bat.desktop.xsu \
3011            scripts/bat.desktop.consolehelper \
3012            scripts/bat.console_apps \
3013            src/Makefile \
3014            src/host.h \
3015            src/console/Makefile \
3016            src/console/bconsole.conf \
3017            src/qt-console/bat.conf \
3018            src/qt-console/bat.pro \
3019            src/qt-console/bat.pro.mingw32 \
3020            src/qt-console/install_conf_file \
3021            src/wx-console/Makefile \
3022            src/wx-console/bwx-console.conf \
3023            src/tray-monitor/Makefile \
3024            src/tray-monitor/tray-monitor.conf \
3025            src/dird/Makefile \
3026            src/dird/bacula-dir.conf \
3027            src/lib/Makefile \
3028            src/stored/Makefile \
3029            src/stored/bacula-sd.conf \
3030            src/filed/Makefile \
3031            src/filed/bacula-fd.conf \
3032            src/cats/Makefile \
3033            src/cats/make_catalog_backup.pl \
3034            src/cats/make_catalog_backup \
3035            src/cats/delete_catalog_backup \
3036            src/cats/create_postgresql_database \
3037            src/cats/update_postgresql_tables \
3038            src/cats/make_postgresql_tables \
3039            src/cats/grant_postgresql_privileges \
3040            src/cats/drop_postgresql_tables \
3041            src/cats/drop_postgresql_database \
3042            src/cats/create_mysql_database \
3043            src/cats/update_mysql_tables \
3044            src/cats/make_mysql_tables \
3045            src/cats/grant_mysql_privileges \
3046            src/cats/drop_mysql_tables \
3047            src/cats/drop_mysql_database \
3048            src/cats/create_sqlite3_database \
3049            src/cats/update_sqlite3_tables \
3050            src/cats/make_sqlite3_tables \
3051            src/cats/grant_sqlite3_privileges \
3052            src/cats/drop_sqlite3_tables \
3053            src/cats/drop_sqlite3_database \
3054            src/cats/create_ingres_database \
3055            src/cats/update_ingres_tables \
3056            src/cats/make_ingres_tables \
3057            src/cats/grant_ingres_privileges \
3058            src/cats/drop_ingres_tables \
3059            src/cats/drop_ingres_database \
3060            src/cats/sqlite \
3061            src/cats/mysql \
3062            src/cats/create_bdb_database \
3063            src/cats/update_bdb_tables \
3064            src/cats/make_bdb_tables \
3065            src/cats/grant_bdb_privileges \
3066            src/cats/drop_bdb_tables \
3067            src/cats/drop_bdb_database \
3068            src/cats/create_bacula_database \
3069            src/cats/update_bacula_tables \
3070            src/cats/grant_bacula_privileges \
3071            src/cats/make_bacula_tables \
3072            src/cats/drop_bacula_tables \
3073            src/cats/drop_bacula_database \
3074            src/findlib/Makefile \
3075            src/tools/Makefile \
3076            src/plugins/fd/Makefile \
3077            src/plugins/sd/Makefile \
3078            src/plugins/dir/Makefile \
3079            src/win32/Makefile.inc \
3080            po/Makefile.in \
3081            updatedb/update_mysql_tables_9_to_10 \
3082            updatedb/update_sqlite3_tables_9_to_10 \
3083            updatedb/update_postgresql_tables_9_to_10 \
3084            updatedb/update_mysql_tables_10_to_11 \
3085            updatedb/update_sqlite3_tables_10_to_11 \
3086            updatedb/update_postgresql_tables_10_to_11 \
3087            examples/nagios/check_bacula/Makefile \
3088            $PFILES ],  
3089      [ ]
3090 )
3091
3092 if test "${support_bat}" = "yes" ; then
3093    if test "x$QMAKE" = "xnone"; then
3094       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3095    fi
3096
3097    QMAKEBIN="qmake"
3098    cd src/qt-console
3099    echo "Creating bat Makefile"
3100    touch bat
3101    chmod 755 bat
3102    rm -f Makefile
3103    $QMAKEBIN
3104    ${MAKE:-make} clean
3105    cd ${BUILD_DIR}
3106 fi
3107
3108 dnl
3109 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3110 dnl requires gcc).  If it's not, don't rebuild dependencies
3111 dnl
3112 if test X"$GCC" = "Xyes" ; then
3113   echo "Doing make of dependencies"
3114   ${MAKE:-make} depend
3115 fi
3116
3117 cd src/qt-console
3118 chmod 755 install_conf_file build-depkgs-qt-console
3119 cd ${BUILD_DIR}
3120
3121 cd scripts
3122 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
3123 chmod 755 dvd-handler dvd-simulator
3124 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
3125 cd ..
3126
3127 c=updatedb
3128 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3129 chmod 755 $c/update_postgresql_tables_10_to_11
3130
3131 c=src/cats
3132
3133 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3134 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3135
3136 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3137 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3138
3139 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3140 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3141
3142 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3143 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3144
3145 chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3146 chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3147
3148
3149 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3150 chmod 755 $c/sqlite
3151 chmod 755 $c/mysql
3152
3153 chmod 755 src/win32/build-depkgs-mingw32
3154
3155 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3156    largefile_support="yes"
3157 fi
3158
3159 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3160 if test X"$GCC" = "Xyes" ; then
3161    dnl
3162    dnl A whole lot of hand springs to get the compiler version.
3163    dnl  This is because gcc changed the output in version 3.0
3164    dnl
3165    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3166    if test "x${CCVERSION}" = "x" ; then
3167       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3168    fi
3169    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3170    if test x"${CXXVERSION}" = x ; then
3171       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3172    fi
3173 fi
3174
3175 # clean up any old junk
3176 echo " "
3177 echo "Cleaning up"
3178 echo " "
3179 ${MAKE:-make} clean
3180
3181 if test "x${db_type}" = "xInternal" ; then
3182    echo " "
3183    echo " "
3184    echo "You have not specified either --enable-client-only or one of the"
3185    echo "  supported databases: MySQL, PostgreSQL, Ingres, SQLite3 or DBI."
3186    echo "  This is not permitted. Please reconfigure."
3187    echo " "
3188    echo "Aborting the configuration ..."
3189    echo " "
3190    echo " "
3191    exit 1
3192 fi
3193
3194 echo "
3195 Configuration on `date`:
3196
3197    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3198    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3199    Source code location:    ${srcdir}
3200    Install binaries:        ${sbindir}
3201    Install libraries:       ${libdir}
3202    Install config files:    ${sysconfdir}
3203    Scripts directory:       ${scriptdir}
3204    Archive directory:       ${archivedir}
3205    Working directory:       ${working_dir}
3206    PID directory:           ${piddir}
3207    Subsys directory:        ${subsysdir}
3208    Man directory:           ${mandir}
3209    Data directory:          ${datarootdir}
3210    Plugin directory:        ${plugindir}
3211    C Compiler:              ${CC} ${CCVERSION}
3212    C++ Compiler:            ${CXX} ${CXXVERSION}
3213    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3214    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3215    Libraries:               ${LIBS}
3216    Statically Linked Tools: ${support_static_tools}
3217    Statically Linked FD:    ${support_static_fd}
3218    Statically Linked SD:    ${support_static_sd}
3219    Statically Linked DIR:   ${support_static_dir}
3220    Statically Linked CONS:  ${support_static_cons}
3221    Database type:           ${db_type}
3222    Database port:           ${db_port}
3223    Database lib:            ${DB_LIBS}
3224    Database name:           ${db_name}
3225    Database user:           ${db_user}
3226  
3227    Job Output Email:        ${job_email}
3228    Traceback Email:         ${dump_email}
3229    SMTP Host Address:       ${smtp_host}
3230  
3231    Director Port:           ${dir_port}
3232    File daemon Port:        ${fd_port}
3233    Storage daemon Port:     ${sd_port}
3234  
3235    Director User:           ${dir_user}
3236    Director Group:          ${dir_group}
3237    Storage Daemon User:     ${sd_user}
3238    Storage DaemonGroup:     ${sd_group}
3239    File Daemon User:        ${fd_user}
3240    File Daemon Group:       ${fd_group}
3241  
3242    SQL binaries Directory   ${SQL_BINDIR}
3243  
3244    Large file support:      $largefile_support
3245    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3246    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3247    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3248    TLS support:             ${support_tls}
3249    Encryption support:      ${support_crypto} 
3250    ZLIB support:            ${have_zlib}
3251    enable-smartalloc:       ${support_smartalloc} 
3252    enable-lockmgr:          ${support_lockmgr}
3253    bat support:             ${support_bat}
3254    enable-gnome:            ${support_gnome} ${gnome_version}
3255    enable-bwx-console:      ${support_wx_console} ${wx_version}
3256    enable-tray-monitor:     ${support_tray_monitor}
3257    client-only:             ${build_client_only}
3258    build-dird:              ${build_dird}
3259    build-stored:            ${build_stored}
3260    Plugin support:          ${have_plugins}
3261    ACL support:             ${have_acl}
3262    XATTR support:           ${have_xattr}
3263    Python support:          ${support_python} ${PYTHON_LIBS}
3264    Batch insert enabled:    ${support_batch_insert}
3265
3266   " > config.out
3267
3268 # create a small shell script useful for support with
3269 # configure options and config.out info
3270 cat > scripts/bacula_config << EOF
3271 #!/bin/sh
3272 cat << __EOC__
3273 $ $0 $ac_configure_args
3274 EOF
3275 cat config.out >> scripts/bacula_config
3276 echo __EOC__ >> scripts/bacula_config
3277 chmod 755 scripts/bacula_config
3278
3279 cat config.out
3280
3281 # Display a warning message if postgresql client lib is <= 8.1
3282 if test x$DB_TYPE = xpostgresql -a x$ac_cv_lib_pq_PQisthreadsafe != xyes \
3283         -a x$support_batch_insert = xyes
3284 then
3285         echo "WARNING: Your PostgreSQL client library is too old to detect "
3286         echo " if it was compiled with --enable-thread-safety, consider to"
3287         echo " upgrade it in order to avoid problems with Batch insert mode"
3288         echo
3289 fi