]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Drop 2 unneeded AC_DEFINE statements from configure.in for AFS.
[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(curses.h, 
815   [ AC_CHECK_LIB(ncurses, tgetent, 
816     [ TERM_LIB="-lncurses" ],
817     [ AC_CHECK_LIB(termcap, tgetent, [ TERM_LIB="-ltermcap" ])
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 AC_MSG_RESULT([$support_tls])
1197
1198 if test "$support_tls" = "no"; then
1199    OPENSSL_LIBS=""
1200    OPENSSL_INC=""
1201 fi  
1202 if test "$support_crypto" = "no"; then
1203    OPENSSL_LIBS=""
1204    OPENSSL_INC=""
1205 else
1206    AC_CHECK_LIB(ssl, EVP_PKEY_encrypt_old, AC_DEFINE(HAVE_OPENSSLv1, 1, [Set if have OpenSSL version 1.x]))
1207 fi  
1208
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 Check if postgresql can support batch mode   
1749 if test x$DB_TYPE = xpostgresql; then
1750    AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE, 1, [Set if have PQisthreadsafe]))
1751    AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY, 1, [Set if have PQputCopyData]))
1752    if test "x$ac_cv_lib_pq_PQputCopyData" != "xyes"
1753     then
1754         support_batch_insert=no
1755    fi
1756 fi
1757
1758 if test x$DB_TYPE = xdbi; then
1759    DB_TYPE=$DB_PROG
1760    db_type=$DB_PROG
1761    pkg=1
1762    dnl Check for batch insert
1763    if test $DB_PROG = postgresql; then
1764       AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE))
1765       AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY))
1766       test "x$ac_cv_lib_pq_PQputCopyData" != "xyes"
1767       pkg=$?
1768    fi
1769
1770    if test $DB_PROG = mysql; then
1771       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1772       pkg=$?    
1773    fi
1774
1775    if test $DB_PROG = sqlite3; then
1776       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1777       pkg=$?
1778       AC_CHECK_LIB(sqlite3, sqlite3_threadsafe, AC_DEFINE(HAVE_SQLITE3_THREADSAFE, 1, [Set if have sqlite3_threadsafe]))
1779    fi
1780
1781    if test $pkg = 0; then
1782       AC_ARG_ENABLE(batch-insert,
1783          AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1784          [
1785              if test x$enableval = xno; then
1786                 support_batch_insert=no
1787              else
1788                 support_batch_insert=yes
1789              fi
1790          ]
1791       )
1792    fi
1793 else 
1794    dnl If dbi was not chosen, let the comment in file
1795    uncomment_dbi="#"  
1796 fi
1797
1798 AC_SUBST(uncomment_dbi)
1799
1800 dnl For Ingres always enable batch inserts.
1801 if test x$DB_TYPE = xingres; then
1802    support_batch_insert=yes
1803 fi
1804
1805 if test $support_batch_insert = yes ; then
1806    AC_DEFINE(HAVE_BATCH_FILE_INSERT, 1, [Set if DB batch insert code enabled])
1807 fi
1808
1809 AC_DEFINE(PROTOTYPES)
1810
1811 dnl --------------------------------------------------------------------------
1812 dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
1813 dnl
1814 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
1815    if test -z "$CCOPTS"; then
1816       CCOPTS='-g -O2 -Wall'
1817    fi
1818    CFLAGS="$CCOPTS"
1819 fi
1820
1821 dnl A few others 
1822 AC_EXEEXT
1823
1824 dnl See if we can use 64 bit file addresses
1825 largefile_support="no"
1826 AC_BAC_LARGEFILE
1827
1828 AC_PATH_XTRA
1829
1830 dnl --------------------------------------------------------------------------
1831 dnl CHECKING FOR HEADER FILES
1832 dnl --------------------------------------------------------------------------
1833 AC_CHECK_HEADERS( \
1834    assert.h \
1835    fcntl.h \
1836    grp.h \
1837    pwd.h \
1838    libc.h \
1839    limits.h \
1840    stdarg.h \
1841    stdlib.h \
1842    stdint.h \
1843    string.h \
1844    strings.h \
1845    termios.h \
1846    termcap.h \
1847    term.h \
1848    unistd.h \
1849    sys/bitypes.h \
1850    sys/byteorder.h \
1851    sys/ioctl.h \
1852    sys/select.h \
1853    sys/socket.h \
1854    sys/sockio.h \
1855    sys/stat.h \
1856    sys/time.h \
1857    sys/types.h \
1858    arpa/nameser.h \
1859    mtio.h \
1860    sys/mtio.h \
1861    sys/tape.h \
1862    regex.h \
1863 )
1864 AC_HEADER_STDC
1865 AC_HEADER_MAJOR
1866 AC_HEADER_DIRENT
1867 AC_HEADER_STAT
1868 AC_HEADER_SYS_WAIT
1869 AC_HEADER_TIME
1870 AC_STRUCT_ST_BLKSIZE
1871 AC_STRUCT_ST_BLOCKS
1872 AC_STRUCT_TIMEZONE
1873
1874 dnl --------------------------------------------------------------------------
1875 dnl Check for utime.h structure 
1876 dnl --------------------------------------------------------------------------
1877 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
1878    [
1879        AC_TRY_COMPILE(
1880           [
1881               #include <sys/types.h>
1882               #include <utime.h>
1883           ], [
1884               struct utimbuf foo
1885           ], [
1886               ba_cv_header_utime_h=yes
1887           ], [
1888               ba_cv_header_utime_h=no
1889           ]
1890        )
1891    ]
1892 )
1893 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H, 1, [Set if utime.h exists])
1894
1895 dnl --------------------------------------------------------------------------
1896 dnl Check for socklen_t
1897 dnl --------------------------------------------------------------------------
1898 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1899    [
1900        AC_TRY_COMPILE(
1901           [
1902               #include <sys/types.h>
1903               #include <sys/socket.h>
1904           ], [
1905               socklen_t x
1906           ], [
1907              ba_cv_header_socklen_t=yes
1908           ], [
1909              ba_cv_header_socklen_t=no
1910           ]
1911        )
1912    ]
1913 )
1914 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T, 1, [Set if socklen_t exists])
1915
1916 dnl --------------------------------------------------------------------------
1917 dnl Check for ioctl request type
1918 dnl --------------------------------------------------------------------------
1919 AC_LANG(C++)
1920 AC_CACHE_CHECK(for ioctl_req_t, ba_cv_header_ioctl_req_t,
1921    [
1922        AC_TRY_COMPILE(
1923           [
1924               #include <unistd.h>
1925               #include <sys/types.h>
1926               #include <sys/ioctl.h>
1927           ], [
1928               int (*d_ioctl)(int fd, unsigned long int request, ...);
1929               d_ioctl = ::ioctl;
1930           ], [
1931              ba_cv_header_ioctl_req_t=yes
1932           ], [
1933              ba_cv_header_ioctl_req_t=no
1934           ]
1935        )
1936    ]
1937 )
1938 test $ba_cv_header_ioctl_req_t = yes && AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [Set if ioctl request is unsigned long int])
1939
1940 dnl Note: it is more correct to use AC_LANG(C++) but some of the older
1941 dnl   *BSD systems still use old style C prototypes, which are wrong with
1942 dnl   compiled with a C++ compiler. 
1943 AC_LANG(C)
1944
1945 dnl --------------------------------------------------------------------------
1946 dnl Check for typeof()
1947 dnl --------------------------------------------------------------------------
1948 AC_LANG_PUSH(C++)
1949 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
1950    [
1951        AC_TRY_RUN(
1952           [
1953               main(){char *a = 0; a = (typeof a)a;}
1954           ], [
1955               ba_cv_have_typeof=yes
1956           ], [
1957               ba_cv_have_typeof=no
1958           ], [
1959               ba_cv_have_typeof=no
1960           ]
1961        )
1962    ]
1963 )
1964 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
1965 AC_LANG_POP(C++)
1966
1967 AC_C_CONST
1968
1969 dnl --------------------------------------------------------------------------
1970 dnl CHECKING FOR FILESYSTEM TYPE
1971 dnl --------------------------------------------------------------------------
1972 AC_MSG_CHECKING(how to get filesystem type)
1973 fstype=no
1974 # The order of these tests is important.
1975 AC_TRY_CPP(
1976    [
1977        #include <sys/statvfs.h>
1978        #include <sys/fstyp.h>
1979    ],
1980    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
1981 )
1982 if test $fstype = no; then
1983    AC_TRY_CPP(
1984       [
1985           #include <sys/statfs.h>
1986           #include <sys/fstyp.h>
1987       ],
1988       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
1989    )
1990 fi
1991 if test $fstype = no; then
1992    AC_TRY_CPP(
1993       [
1994           #include <sys/statfs.h>
1995           #include <sys/vmount.h>
1996       ],
1997       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
1998    )
1999 fi
2000 if test $fstype = no; then  
2001    AC_TRY_CPP(
2002       [
2003           #include <mntent.h>
2004       ],
2005       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
2006    )
2007 fi
2008 if test $fstype = no; then  
2009    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
2010 fi
2011 if test $fstype = no; then  
2012    AC_TRY_CPP(
2013       [
2014           #include <sys/mount.h>
2015           #include <sys/fs_types.h>
2016       ],
2017       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
2018    )
2019 fi
2020 AC_MSG_RESULT($fstype)
2021
2022 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
2023
2024 dnl --------------------------------------------------------------------------
2025 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
2026 dnl --------------------------------------------------------------------------
2027 AC_TYPE_SIGNAL
2028 SIGNAL_CHECK
2029 AC_TYPE_MODE_T
2030 AC_TYPE_UID_T
2031 AC_TYPE_SIZE_T
2032 AC_TYPE_PID_T
2033 AC_TYPE_OFF_T
2034 AC_TYPE_INTPTR_T
2035 AC_TYPE_UINTPTR_T
2036 AC_CHECK_TYPE(ino_t, unsigned long)
2037 AC_CHECK_TYPE(dev_t, unsigned long)
2038 AC_CHECK_TYPE(daddr_t, long)
2039 AC_CHECK_TYPE(major_t, int)
2040 AC_CHECK_TYPE(minor_t, int)
2041 AC_CHECK_TYPE(ssize_t, int)
2042 AC_STRUCT_ST_BLOCKS
2043 AC_STRUCT_ST_RDEV
2044 AC_STRUCT_TM
2045 AC_C_CONST
2046
2047 AC_CHECK_SIZEOF(char, 1)
2048 AC_CHECK_SIZEOF(short int, 2)
2049 AC_CHECK_SIZEOF(int, 4)
2050 AC_CHECK_SIZEOF(long int, 4)
2051 AC_CHECK_SIZEOF(long long int, 8)
2052 AC_CHECK_SIZEOF(int *, 4)
2053
2054 dnl Check for sys/types.h types
2055 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
2056    [
2057        AC_TRY_COMPILE(
2058           [
2059               #include <sys/types.h>
2060           ], [
2061               u_int a; a = 1;
2062           ], [
2063               ac_cv_have_u_int="yes"
2064           ], [
2065               ac_cv_have_u_int="no"
2066           ]
2067        )
2068    ]
2069 )
2070 if test "x$ac_cv_have_u_int" = "xyes" ; then
2071    AC_DEFINE(HAVE_U_INT)
2072    have_u_int=1
2073 fi
2074
2075 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2076    [
2077        AC_TRY_COMPILE(
2078           [
2079               #include <sys/types.h>
2080           ], [
2081               intmax_t a; a = 1;
2082           ], [
2083               ac_cv_have_intmax_t="yes"
2084           ], [ 
2085               AC_TRY_COMPILE(
2086                  [
2087                      #include <stdint.h>
2088                  ], [
2089                      intmax_t a; a = 1;
2090                  ], [
2091                      ac_cv_have_intmax_t="yes"
2092                  ], [
2093                      ac_cv_have_intmax_t="no"
2094                  ]
2095               )
2096           ]
2097        )       
2098    ]
2099 )
2100 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2101    AC_DEFINE(HAVE_INTMAX_T)
2102    have_intmax_t=1
2103 fi
2104
2105 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2106    [
2107        AC_TRY_COMPILE(
2108           [
2109               #include <sys/types.h>
2110           ], [
2111               u_intmax_t a; a = 1;
2112           ], [
2113               ac_cv_have_u_intmax_t="yes"
2114           ], [ 
2115               AC_TRY_COMPILE(
2116                  [
2117                      #include <stdint.h>
2118                  ], [
2119                     u_intmax_t a; a = 1;
2120                  ], [
2121                     ac_cv_have_u_intmax_t="yes"
2122                  ], [
2123                     ac_cv_have_u_intmax_t="no"
2124                  ]
2125               )
2126           ]
2127        )
2128    ]
2129 )
2130 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2131    AC_DEFINE(HAVE_U_INTMAX_T)
2132    have_u_intmax_t=1
2133 fi
2134
2135 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2136    [
2137        AC_TRY_COMPILE(
2138           [
2139               #include <sys/types.h>
2140           ], [
2141               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2142           ], [
2143               ac_cv_have_intxx_t="yes"
2144           ], [
2145               ac_cv_have_intxx_t="no"
2146           ]
2147        )
2148    ]
2149 )
2150 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2151    AC_DEFINE(HAVE_INTXX_T)
2152    have_intxx_t=1
2153 fi
2154    
2155 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2156    [
2157        AC_TRY_COMPILE(
2158           [
2159               #include <sys/types.h>
2160           ], [
2161               int64_t a; a = 1;
2162           ], [
2163               ac_cv_have_int64_t="yes"
2164           ], [
2165               ac_cv_have_int64_t="no"
2166           ]
2167        )
2168    ]
2169 )
2170 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2171    AC_DEFINE(HAVE_INT64_T)
2172    have_int64_t=1
2173 fi
2174    
2175 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2176    [
2177        AC_TRY_COMPILE(
2178           [
2179               #include <sys/types.h>
2180           ], [
2181               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2182           ], [
2183              ac_cv_have_u_intxx_t="yes"
2184           ], [
2185              ac_cv_have_u_intxx_t="no"
2186           ]
2187        )
2188    ]
2189 )
2190 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2191    AC_DEFINE(HAVE_U_INTXX_T)
2192    have_u_intxx_t=1
2193 fi
2194
2195 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2196    [
2197        AC_TRY_COMPILE(
2198           [
2199               #include <sys/types.h>
2200           ], [
2201               u_int64_t a; a = 1;
2202           ], [
2203              ac_cv_have_u_int64_t="yes"
2204           ], [
2205              ac_cv_have_u_int64_t="no"
2206           ]
2207        )
2208    ]
2209 )
2210 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2211    AC_DEFINE(HAVE_U_INT64_T)
2212    have_u_int64_t=1
2213 fi
2214
2215 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2216     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2217 then
2218    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2219    AC_TRY_COMPILE(
2220       [
2221           #include <sys/bitypes.h>
2222       ], [
2223           int8_t a; int16_t b; int32_t c;
2224           u_int8_t e; u_int16_t f; u_int32_t g;
2225           a = b = c = e = f = g = 1;
2226       ], [
2227           AC_DEFINE(HAVE_U_INTXX_T)
2228           AC_DEFINE(HAVE_INTXX_T)
2229           AC_DEFINE(HAVE_SYS_BITYPES_H)
2230           AC_MSG_RESULT(yes)
2231       ], [
2232           AC_MSG_RESULT(no)
2233       ]
2234    ) 
2235 fi
2236
2237 if test -z "$have_u_intxx_t" ; then
2238    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2239       [
2240           AC_TRY_COMPILE(
2241              [
2242                  #include <sys/types.h>
2243              ], [
2244                  uint8_t a; uint16_t b; 
2245                  uint32_t c; a = b = c = 1;
2246              ], [
2247                 ac_cv_have_uintxx_t="yes"
2248              ], [
2249                 ac_cv_have_uintxx_t="no"
2250              ]
2251           )
2252       ]
2253    )
2254    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2255       AC_DEFINE(HAVE_UINTXX_T)
2256    fi
2257 fi
2258
2259 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2260     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2261 then
2262    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2263    AC_TRY_COMPILE(
2264       [
2265           #include <sys/bitypes.h>
2266       ], [
2267           int64_t a; u_int64_t b; 
2268           a = b = 1;
2269       ], [
2270           AC_DEFINE(HAVE_U_INT64_T)
2271           AC_DEFINE(HAVE_INT64_T)
2272           AC_MSG_RESULT(yes)
2273       ], [
2274           AC_MSG_RESULT(no)
2275       ]
2276    ) 
2277 fi
2278
2279 if (test -z "$have_uintxx_t" && \
2280     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2281 then
2282    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2283    AC_TRY_COMPILE(
2284       [
2285           #include <sys/bitypes.h>
2286       ], [
2287           uint8_t a; uint16_t b; 
2288           uint32_t c; a = b = c = 1;
2289       ], [
2290           AC_DEFINE(HAVE_UINTXX_T)
2291           AC_MSG_RESULT(yes)
2292       ], [
2293           AC_MSG_RESULT(no)
2294       ]
2295    ) 
2296 fi
2297
2298 dnl --------------------------------------------------------------------------
2299 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2300 dnl --------------------------------------------------------------------------
2301 AC_CHECK_FUNCS( \
2302    fork \
2303    getcwd \
2304    gethostname \
2305    getpid \
2306    gettimeofday \
2307    setpgid \
2308    setpgrp \
2309    setsid \
2310    signal \
2311    strerror \
2312    strncmp \
2313    strncpy \
2314    vfprintf \
2315    ,,
2316    [echo 'configure: cannot find needed function.'; exit 1]
2317 )
2318
2319 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2320 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2321 AC_CHECK_FUNCS(posix_fadvise)
2322 AC_CHECK_FUNCS(fdatasync)
2323
2324 AC_CHECK_FUNCS(chflags) 
2325
2326 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2327
2328 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2329    [
2330        AC_TRY_LINK(
2331           [
2332               #include <stdarg.h>
2333               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2334               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2335           ], [
2336               call_use_va_copy(1,2,3)
2337           ], [
2338               ba_cv_va_copy=yes,
2339           ], [
2340               ba_cv_va_copy=no
2341           ]
2342        )
2343    ]
2344 )
2345 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2346
2347 dnl --------------------------------------------------------------------------
2348 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2349 dnl --------------------------------------------------------------------------
2350 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2351
2352 # If resolver functions are not in libc check for -lnsl or -lresolv.
2353 AC_CHECK_FUNC(gethostbyname_r,
2354     AC_MSG_RESULT(using libc's resolver),
2355     AC_CHECK_LIB(nsl,gethostbyname_r)
2356     AC_CHECK_LIB(resolv,gethostbyname_r))
2357
2358 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2359 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2360 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2361
2362 dnl ----------------------------
2363 dnl check sa_len of sockaddr
2364 dnl ----------------------------
2365 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2366    [
2367        AC_TRY_COMPILE(
2368           [
2369               #include <sys/socket.h>
2370           ], [
2371               struct sockaddr s; s.sa_len;
2372           ], [
2373              ac_cv_struct_sockaddr_sa_len=yes
2374           ], [ac_cv_struct_sockaddr_sa_len=no
2375           ]
2376        )
2377    ]
2378 )
2379
2380 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2381   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2382 fi
2383
2384 AC_FUNC_STRFTIME
2385 AC_FUNC_VPRINTF
2386 AC_FUNC_ALLOCA
2387 AC_FUNC_GETMNTENT
2388 AC_CHECK_FUNCS(getmntinfo, [AC_DEFINE(HAVE_GETMNTINFO)])
2389 AC_FUNC_CLOSEDIR_VOID
2390 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2391 # AC_FUNC_FNMATCH    dnl use local version
2392
2393 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2394
2395 AC_CHECK_LIB(sun, getpwnam)
2396
2397 AC_CHECK_HEADERS(zlib.h)
2398 AC_CHECK_LIB(z, deflate, [ZLIBS="-lz"])
2399 have_zlib=no
2400 if test x$ZLIBS = x-lz; then
2401    AC_DEFINE(HAVE_LIBZ)
2402    have_zlib=yes
2403 fi
2404 AC_SUBST(ZLIBS)
2405
2406 dnl
2407 dnl Check if we have AFS on this system
2408 dnl
2409 AFS_CFLAGS=""
2410 AFS_LIBS=""
2411 support_afs=auto
2412 AC_ARG_ENABLE(afs,
2413    AC_HELP_STRING([--disable-afs], [disable afs support @<:@default=auto@:>@]),
2414    [
2415        if test x$enableval = xyes; then
2416           support_afs=yes
2417        elif test x$enableval = xno; then
2418           support_afs=no
2419        fi
2420    ]
2421 )
2422
2423 have_afs=no
2424 if test x$support_afs = xyes -o x$support_afs = xauto; then
2425    AC_ARG_WITH(afsdir,
2426       AC_HELP_STRING([--with-afsdir@<:@=DIR@:>@], [Directory holding AFS includes/libs]),
2427       with_afsdir=$withval
2428    )
2429
2430    dnl
2431    dnl Search in standard places, or --with-afsdir not specified
2432    dnl
2433    if test x$with_afsdir = x; then
2434       for root in /usr /usr/local; do
2435          if test -d ${root}/include/afs/ ; then
2436             with_afsdir=${root}
2437             break
2438          fi
2439       done
2440    fi
2441
2442    AFS_CFLAGS="-I${with_afsdir}/include"
2443
2444    saved_CFLAGS="${CFLAGS}"
2445    CFLAGS="${AFS_CFLAGS} ${saved_CFLAGS}"
2446
2447    AC_CHECK_HEADERS(afs/stds.h)
2448
2449    CFLAGS="${saved_CFLAGS}"
2450
2451    dnl
2452    dnl See if we can find a libsys with the pioctl symbol in there
2453    dnl
2454    for dir in ${with_afsdir}/lib ${with_afsdir}/lib/afs
2455    do
2456       for arch_type in .a .so
2457       do
2458          A=`test -f ${dir}/libsys${arch_type} && nm ${dir}/libsys${arch_type} | grep pioctl`
2459          pkg=$?
2460          if test $pkg = 0; then
2461             have_afs=yes
2462             AFS_LIBS="-L${dir} -lsys -lrx -llwp ${dir}/util.a"
2463             break
2464          fi
2465       done
2466    done
2467
2468    if test x$support_afs = xyes -a $have_afs != yes; then
2469       AC_MSG_ERROR([afs support explicitly enabled but no supported afs implementation found, 
2470   please either load the afs libraries or rerun configure without --enable-afs])
2471    else
2472       if test $have_afs = yes; then
2473          AC_DEFINE([HAVE_AFS],1,[Defines if your system has AFS support])
2474          AC_DEFINE([HAVE_AFS_ACL],1,[Andrew FileSystem ACL support])
2475       fi
2476    fi
2477 fi
2478
2479 AC_SUBST(AFS_CFLAGS)
2480 AC_SUBST(AFS_LIBS)
2481
2482 dnl
2483 dnl Check for ACL support and libraries
2484 dnl
2485 support_acl=auto
2486 AC_ARG_ENABLE(acl,
2487    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2488    [
2489        if test x$enableval = xyes; then
2490           support_acl=yes
2491        elif test x$enableval = xno; then
2492           support_acl=no
2493        fi
2494    ]
2495 )
2496
2497 have_acl=no
2498 have_extended_acl=no
2499 if test x$support_acl = xyes -o x$support_acl = xauto; then
2500    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2501    AC_CHECK_FUNC(acl_get_file,
2502       [
2503           have_acl=yes
2504       ], [
2505           AC_CHECK_LIB(acl, acl_get_file,
2506              [
2507                  have_acl=yes;
2508                  if test $have_afs = yes; then
2509                     dnl
2510                     dnl Because of possible naming conflict with AFS libacl make sure we use the one in /usr/lib64 or /usr/lib !!!
2511                     dnl
2512                     if test -d /usr/lib64/; then
2513                        FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
2514                     else
2515                        FDLIBS="-L/usr/lib -lacl $FDLIBS"
2516                     fi
2517                  else
2518                     FDLIBS="-lacl $FDLIBS"
2519                  fi
2520              ], [
2521                  AC_CHECK_LIB(pacl, acl_get_file,
2522                     [
2523                         have_acl=yes;
2524                         FDLIBS="-lpacl $FDLIBS"
2525                     ], [
2526                         AC_CHECK_LIB(sec, acltotext,
2527                            [
2528                                have_acl=yes;
2529                                FDLIBS="-lsec $FDLIBS"
2530
2531                                AC_CHECK_LIB(sec, acl_totext,
2532                                   [
2533                                       have_extended_acl=yes
2534                                   ]
2535                                )
2536                            ]
2537                         )
2538                     ]
2539                  )
2540              ]
2541           )
2542       ]
2543    )
2544
2545    if test x$support_acl = xyes -a $have_acl != yes; then
2546       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2547   please either load the acl libraries or rerun configure without --enable-acl])
2548    else
2549       if test $have_acl = yes; then
2550          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2551       fi
2552
2553       if test $have_extended_acl = yes; then
2554          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2555       fi
2556    fi
2557 fi
2558
2559 dnl
2560 dnl Check for XATTR support
2561 dnl
2562 support_xattr=auto
2563 AC_ARG_ENABLE(xattr,
2564    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2565    [
2566        if test x$enableval = xyes; then
2567           support_xattr=yes
2568        elif test x$enableval = xno; then
2569           support_xattr=no
2570        fi
2571    ]
2572 )
2573
2574 have_xattr=no
2575 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2576    dnl
2577    dnl First check for *BSD support
2578    dnl
2579    AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2580    AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2581    AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2582       [
2583           have_xattr=yes
2584           AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2585           AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2586           AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2587       ]
2588    )
2589    
2590    if test $have_xattr = no; then
2591       AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2592          [
2593              have_xattr=yes
2594              AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2595              AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2596              AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2597          ]
2598       )
2599    fi
2600    
2601    if test $have_xattr = yes; then
2602       have_extattr_string_in_libc=no
2603       AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2604          [
2605              have_extattr_string_in_libc=yes
2606              AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2607              AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2608          ]
2609       )
2610
2611       dnl
2612       dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2613       dnl
2614       if test $have_extattr_string_in_libc = no; then
2615          AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2616             [
2617                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2618                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2619                 FDLIBS="-lutil $FDLIBS"
2620             ]
2621          )
2622       fi
2623    fi
2624
2625    dnl
2626    dnl If we failed to find *BSD support try the Linux or OSX implementation of xattr
2627    dnl
2628    if test $have_xattr = no; then
2629       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2630       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2631          [
2632              have_xattr=yes
2633              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2634              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2635              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2636          ]
2637       )
2638
2639       if test $have_xattr = no; then
2640          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2641             [
2642                 have_xattr=yes
2643                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2644                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2645                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2646             ]
2647          )
2648       fi
2649    fi
2650
2651    dnl
2652    dnl If we failed to find *BSD support and the Linux or OSX implementation of xattr try the Solaris xattr implementation
2653    dnl
2654    if test $have_xattr = no; then
2655       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2656       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2657       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2658
2659       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2660          [
2661              have_xattr=yes
2662              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2663              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2664              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2665              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2666              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2667          ]
2668       )
2669
2670       if test $have_xattr = yes; then
2671          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2672             [
2673                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2674                 FDLIBS="-lnvpair $FDLIBS"
2675             ]
2676          )
2677       fi
2678    fi
2679
2680    if test x$support_xattr = xyes -a $have_xattr != yes; then
2681       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2682   please either load the xattr libraries or rerun configure without --enable-xattr])
2683    else
2684       if test $have_xattr = yes; then
2685          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2686       fi
2687    fi
2688 fi
2689
2690 dnl
2691 dnl Check for pthread libraries
2692 dnl
2693 PTHREAD_LIB=""
2694 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2695    [
2696        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2697           [
2698               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2699                  [
2700                      AC_CHECK_FUNC(pthread_create)
2701                  ]
2702               )
2703           ]
2704        )
2705    ]
2706 )
2707
2708 dnl
2709 dnl Check for headers, functions and libraries required to support
2710 dnl keeping readall capabilities
2711 dnl
2712 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2713 AC_CHECK_FUNCS(prctl setreuid)
2714 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2715 if test x$CAP_LIBS = x-lcap; then
2716    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2717 fi
2718 AC_SUBST(CAP_LIBS)
2719
2720 AC_SUBST(FDLIBS)
2721 AC_DEFINE(FDLIBS)
2722
2723 CFLAGS=${CFLAGS--O}
2724
2725 if test x$have_gcc = xyes ; then
2726    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2727    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2728 fi
2729 LDFLAGS=${LDFLAGS--O}
2730 DB_LIBS="${SQL_LFLAGS}"
2731 CPPFLAGS="$CPPFLAGS"
2732 CFLAGS="$CFLAGS"
2733 AC_SUBST(DEBUG)
2734 AC_SUBST(DINCLUDE)
2735 AC_SUBST(CFLAGS)
2736 AC_SUBST(CPPFLAGS)
2737 AC_SUBST(LDFLAGS)
2738 AC_SUBST(X_CFLAGS)
2739 AC_SUBST(DEFS)
2740 AC_SUBST(LIBS)
2741 AC_SUBST(DLIB)
2742 AC_SUBST(DB_LIBS)
2743 AC_SUBST(X_LIBS)
2744 AC_SUBST(X_EXTRA_LIBS)
2745 AC_SUBST(WCFLAGS)
2746 AC_SUBST(WLDFLAGS)
2747 AC_SUBST(WRAPLIBS)
2748
2749 dnl extra configurable objects
2750 OBJLIST=
2751 AC_SUBST(OBJLIST)
2752
2753 lld="lld"
2754 llu="llu"
2755
2756 WCFLAGS=
2757 WLDFLAGS=
2758
2759 dnl
2760 dnl Finally we set appropriate distribution specific
2761 dnl  variables and defaults
2762 dnl
2763 dnl PFILES are platform specific files
2764 PFILES="platforms/Makefile"
2765 PSCMD="ps -e"
2766 WIN32=
2767 MACOSX=
2768
2769 hostname=`uname -n | cut -d '.' -f 1`
2770 if test x${hostname} = x ; then
2771    hostname="localhost"
2772 fi
2773 dnl Make sure hostname is resolved
2774 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2775 if test ! $? = 0; then
2776   hostname="localhost"
2777 fi
2778
2779 case "$DISTNAME" in
2780 aix)
2781    DISTVER=`uname -r`
2782    PSCMD="ps -e -o pid,comm"
2783    PFILES="${PFILES} \
2784       platforms/aix/Makefile"
2785    TAPEDRIVE="/dev/rmt0.1" 
2786   ;;     
2787 alpha)
2788    DISTVER=`uname -r`
2789    PTHREAD_LIB="-lpthread -lexc"
2790    if test "${CC}" = "gcc" ; then
2791       lld="lld"
2792       llu="llu"
2793    else
2794       lld="ld"
2795       llu="lu"
2796    fi
2797    TAPEDRIVE="/dev/nrmt0"
2798   ;;
2799 bsdi)
2800    DISTVER=`uname -a |awk '{print $3}'`
2801    TAPEDRIVE="/dev/nrmt0"
2802    PTHREAD_LIB="-pthread"
2803    CFLAGS="${CFLAGS} -pthread"
2804    PSCMD="ps -ax -o pid,command"
2805    lld="qd"
2806    llu="qu"
2807    PFILES="${PFILES} \
2808        platforms/bsdi/Makefile \
2809        platforms/bsdi/bacula-fd \
2810        platforms/bsdi/bacula-sd \
2811        platforms/bsdi/bacula-dir"
2812    largefile_support="yes"
2813   ;;
2814 cygwin)
2815    DISTVER=`uname -a |awk '{print $3}'`
2816    TAPEDRIVE="/dev/nrst0"
2817    WIN32=win32
2818    WCFLAGS="-mwindows"
2819    WLDFLAGS="-mwindows"
2820   ;;
2821 darwin)
2822    DISTVER=`uname -r`
2823    TAPEDRIVE="/dev/nst0"
2824    PSCMD="ps -e -o pid,command"
2825    MACOSX=macosx
2826    PFILES="${PFILES} \
2827       platforms/darwin/Makefile"
2828   ;;
2829 osx)
2830    DISTVER=`uname -r`
2831    TAPEDRIVE="/dev/nst0"
2832    PSCMD="ps -e -o pid,command"
2833    MACOSX=macosx
2834    PFILES="${PFILES} \
2835       platforms/osx/Makefile"
2836   ;;
2837 debian)
2838    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2839       DISTNAME="ubuntu"
2840    fi
2841    DISTVER=`cat /etc/debian_version`
2842    if test -f /etc/lsb-release ; then
2843       . /etc/lsb-release
2844       if test "x$DISTRIB_ID" != "x" ; then
2845          DISTNAME=$DISTRIB_ID
2846       fi
2847       if test "x$DISTRIB_RELEASE" != "x" ; then
2848          DISTVER=$DISTRIB_RELEASE
2849       fi
2850    fi
2851    if test "$DISTNAME" = "Ubuntu" ; then
2852       DISTNAME="ubuntu"
2853    fi
2854    TAPEDRIVE="/dev/nst0"
2855    PSCMD="ps -e -o pid,command"
2856    if test "$DISTNAME" = "ubuntu" ; then
2857       PFILES="${PFILES} \
2858          platforms/ubuntu/Makefile \
2859          platforms/ubuntu/bacula-fd \
2860          platforms/ubuntu/bacula-sd \
2861          platforms/ubuntu/bacula-dir"
2862    else 
2863       PFILES="${PFILES} \
2864          platforms/debian/Makefile \
2865          platforms/debian/bacula-fd \
2866          platforms/debian/bacula-sd \
2867          platforms/debian/bacula-dir"
2868    fi
2869   ;;
2870 freebsd)
2871    DISTVER=`uname -a |awk '{print $3}'`
2872    VER=`echo $DISTVER | cut -c 1`
2873    if test x$VER = x4 ; then
2874       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
2875       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
2876    fi
2877    lld="qd"
2878    llu="qu"
2879    TAPEDRIVE="/dev/nrsa0"
2880    PSCMD="ps -ax -o pid,command"
2881    PFILES="${PFILES} \
2882        platforms/freebsd/Makefile \
2883        platforms/freebsd/bacula-fd \
2884        platforms/freebsd/bacula-sd \
2885        platforms/freebsd/bacula-dir"
2886    largefile_support="yes"
2887   ;;
2888 hpux)
2889    PSCMD="UNIX95=1; ps -e -o pid,comm"
2890    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
2891    DISTVER=`uname -r`
2892    TAPEDRIVE="/dev/rmt/0hnb"
2893    PTHREAD_LIB="-lpthread"
2894    AC_DEFINE([_INCLUDE_LONGLONG])
2895   ;;
2896 irix)
2897    DISTVER=`uname -r`
2898    TAPEDRIVE="/dev/rmt/0cbn"
2899    PSCMD="ps -e -o pid,comm"
2900    PFILES="${PFILES} \
2901        platforms/irix/Makefile \
2902        platforms/irix/bacula-fd \
2903        platforms/irix/bacula-sd \
2904        platforms/irix/bacula-dir"
2905   ;;
2906 netbsd)
2907    DISTVER=`uname -a |awk '{print $3}'`
2908    lld="qd"
2909    llu="qu"
2910    TAPEDRIVE="/dev/nrst0"
2911    PSCMD="ps -ax -o pid,command"
2912    PTHREAD_LIB="-pthread"
2913    CFLAGS="${CFLAGS} -pthread"
2914   ;;
2915 openbsd)
2916    DISTVER=`uname -a |awk '{print $3}'`
2917    lld="qd"
2918    llu="qu"
2919    TAPEDRIVE="/dev/nrst0"
2920    PSCMD="ps -ax -o pid,command"
2921    PTHREAD_LIB="-pthread"
2922    CFLAGS="${CFLAGS} -pthread"
2923    PFILES="${PFILES} \
2924        platforms/openbsd/Makefile \
2925        platforms/openbsd/bacula-fd \
2926        platforms/openbsd/bacula-sd \
2927        platforms/openbsd/bacula-dir"
2928   ;;
2929 redhat)
2930    if test -f /etc/whitebox-release ; then
2931       f=/etc/whitebox-release
2932    else
2933       f=/etc/redhat-release
2934    fi
2935    if test `cat $f | grep release |\
2936          cut -f 3 -d ' '`x = "Enterprise"x ; then
2937       DISTVER="Enterprise "`cat $f | grep release |\
2938           cut -f 6 -d ' '`
2939    else
2940        DISTVER=`cat /etc/redhat-release | grep release |\
2941            cut -f 5 -d ' '`
2942    fi
2943    TAPEDRIVE="/dev/nst0"
2944    PSCMD="ps -e -o pid,command"
2945    PFILES="${PFILES} \
2946        platforms/redhat/Makefile \
2947        platforms/redhat/bacula-fd \
2948        platforms/redhat/bacula-sd \
2949        platforms/redhat/bacula-dir
2950        "
2951   ;;
2952 mandrake)
2953    DISTVER=`cat /etc/mandrake-release | grep release |\
2954       cut -f 5 -d ' '`
2955    TAPEDRIVE="/dev/nst0"
2956    PSCMD="ps -e -o pid,command"
2957    PFILES="${PFILES} \
2958        platforms/mandrake/Makefile \
2959        platforms/mandrake/bacula-fd \
2960        platforms/mandrake/bacula-sd \
2961        platforms/mandrake/bacula-dir \
2962        "
2963   ;;
2964 gentoo)
2965    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
2966    TAPEDRIVE="/dev/nst0"
2967    PSCMD="ps -e -o pid,command"
2968    PFILES="${PFILES} \
2969        platforms/gentoo/Makefile \
2970     platforms/gentoo/bacula-init \
2971        platforms/gentoo/bacula-fd \
2972        platforms/gentoo/bacula-sd \
2973        platforms/gentoo/bacula-dir"
2974   ;;
2975 slackware)
2976    DISTVER=`cat /etc/slackware-version`
2977    TAPEDRIVE="/dev/nst0"
2978    PSCMD="ps -e -o pid,command"
2979    PFILES="${PFILES} \
2980        platforms/slackware/Makefile \
2981        platforms/slackware/rc.bacula-fd \
2982        platforms/slackware/rc.bacula-sd \
2983        platforms/slackware/rc.bacula-dir\
2984        platforms/slackware/functions.bacula"
2985   ;;
2986 solaris)
2987    DISTVER=`uname -r`
2988    TAPEDRIVE="/dev/rmt/0cbn"
2989    PSCMD="ps -e -o pid,comm"
2990    PFILES="${PFILES} \
2991        platforms/solaris/Makefile \
2992        platforms/solaris/bacula-fd \
2993        platforms/solaris/bacula-sd \
2994        platforms/solaris/bacula-dir"
2995    if test x$DISTVER = x5.6 ; then
2996        AC_DEFINE(HAVE_OLD_SOCKOPT)
2997    fi
2998    LIBS="$LIBS -lresolv -lrt"
2999   ;;
3000 suse)
3001    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3002        cut -f 3 -d ' '`
3003    TAPEDRIVE="/dev/nst0"
3004    PSCMD="ps -e -o pid,command"
3005    PFILES="${PFILES} \
3006        platforms/suse/Makefile \
3007        platforms/suse/bacula-fd \
3008        platforms/suse/bacula-sd \
3009        platforms/suse/bacula-dir \
3010        platforms/suse/bacula"
3011   ;;
3012 suse5)
3013    DISTNAME=suse
3014    DISTVER=5.x
3015    TAPEDRIVE="/dev/nst0"
3016    PSCMD="ps -e -o pid,command"
3017    PFILES="${PFILES} \
3018        platforms/suse/Makefile \
3019        platforms/suse/bacula-fd \
3020        platforms/suse/bacula-sd \
3021        platforms/suse/bacula-dir"
3022   ;;
3023 unknown)
3024    DISTVER=unknown
3025    TAPEDRIVE="/dev/nst0"
3026   ;;
3027 *)
3028   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3029   ;;
3030 esac  
3031
3032 AC_SUBST(hostname)
3033
3034 LIBS="$PTHREAD_LIB $LIBS"
3035
3036 AC_DEFINE_UNQUOTED(lld, "$lld")
3037 AC_DEFINE_UNQUOTED(llu, "$llu")
3038 AC_SUBST(TAPEDRIVE)
3039 AC_SUBST(PSCMD)
3040 AC_SUBST(WIN32)
3041 AC_SUBST(MACOSX)
3042 AC_SUBST(DISTNAME)
3043 AC_SUBST(DISTVER)
3044
3045 dnl common parts of the Makefile
3046 MCOMMON=./autoconf/Make.common
3047 AC_SUBST_FILE(MCOMMON)
3048
3049 dnl Insanity check
3050 if test "x${subsysdir}" = "x${sbindir}" ; then
3051    echo " "
3052    echo " "
3053    echo "You have set both --sbindir and --with-subsys-dir"
3054    echo "  equal to: ${subsysdir} "
3055    echo "This is not permitted. Please reconfigure."
3056    echo " "
3057    echo "Aborting configuration ..."
3058    echo " "
3059    echo " "
3060    exit 1
3061 fi 
3062
3063 AC_OUTPUT([autoconf/Make.common \
3064            Makefile \
3065            manpages/Makefile \
3066            scripts/startmysql \
3067            scripts/stopmysql \
3068            scripts/btraceback \
3069            scripts/startit \
3070            scripts/stopit \
3071            scripts/bconsole \
3072            scripts/gconsole \
3073            scripts/bacula \
3074            scripts/bacula-ctl-dir \
3075            scripts/bacula-ctl-fd \
3076            scripts/bacula-ctl-sd \
3077            scripts/devel_bacula \
3078            scripts/Makefile \
3079            scripts/logrotate \
3080            scripts/bacula.desktop.gnome1 \
3081            scripts/bacula.desktop.gnome2 \
3082            scripts/bacula.desktop.gnome1.consolehelper \
3083            scripts/bacula.desktop.gnome2.consolehelper \
3084            scripts/bacula.desktop.gnome1.xsu \
3085            scripts/bacula.desktop.gnome2.xsu \
3086            scripts/bgnome-console.console_apps \
3087            scripts/mtx-changer \
3088            scripts/disk-changer \
3089            scripts/dvd-handler \
3090            scripts/dvd-simulator \
3091            scripts/bacula-tray-monitor.desktop \
3092            scripts/logwatch/Makefile \
3093            scripts/logwatch/logfile.bacula.conf \
3094            scripts/wxconsole.console_apps \
3095            scripts/wxconsole.desktop.consolehelper \
3096            scripts/wxconsole.desktop.xsu \
3097            scripts/bat.desktop \
3098            scripts/bat.desktop.xsu \
3099            scripts/bat.desktop.consolehelper \
3100            scripts/bat.console_apps \
3101            src/Makefile \
3102            src/host.h \
3103            src/console/Makefile \
3104            src/console/bconsole.conf \
3105            src/qt-console/bat.conf \
3106            src/qt-console/bat.pro \
3107            src/qt-console/bat.pro.mingw32 \
3108            src/qt-console/install_conf_file \
3109            src/wx-console/Makefile \
3110            src/wx-console/bwx-console.conf \
3111            src/tray-monitor/Makefile \
3112            src/tray-monitor/tray-monitor.conf \
3113            src/dird/Makefile \
3114            src/dird/bacula-dir.conf \
3115            src/lib/Makefile \
3116            src/stored/Makefile \
3117            src/stored/bacula-sd.conf \
3118            src/filed/Makefile \
3119            src/filed/bacula-fd.conf \
3120            src/cats/Makefile \
3121            src/cats/make_catalog_backup.pl \
3122            src/cats/make_catalog_backup \
3123            src/cats/delete_catalog_backup \
3124            src/cats/create_postgresql_database \
3125            src/cats/update_postgresql_tables \
3126            src/cats/make_postgresql_tables \
3127            src/cats/grant_postgresql_privileges \
3128            src/cats/drop_postgresql_tables \
3129            src/cats/drop_postgresql_database \
3130            src/cats/create_mysql_database \
3131            src/cats/update_mysql_tables \
3132            src/cats/make_mysql_tables \
3133            src/cats/grant_mysql_privileges \
3134            src/cats/drop_mysql_tables \
3135            src/cats/drop_mysql_database \
3136            src/cats/create_sqlite3_database \
3137            src/cats/update_sqlite3_tables \
3138            src/cats/make_sqlite3_tables \
3139            src/cats/grant_sqlite3_privileges \
3140            src/cats/drop_sqlite3_tables \
3141            src/cats/drop_sqlite3_database \
3142            src/cats/create_ingres_database \
3143            src/cats/update_ingres_tables \
3144            src/cats/make_ingres_tables \
3145            src/cats/grant_ingres_privileges \
3146            src/cats/drop_ingres_tables \
3147            src/cats/drop_ingres_database \
3148            src/cats/sqlite \
3149            src/cats/mysql \
3150            src/cats/create_bacula_database \
3151            src/cats/update_bacula_tables \
3152            src/cats/grant_bacula_privileges \
3153            src/cats/make_bacula_tables \
3154            src/cats/drop_bacula_tables \
3155            src/cats/drop_bacula_database \
3156            src/findlib/Makefile \
3157            src/tools/Makefile \
3158            src/plugins/fd/Makefile \
3159            src/plugins/sd/Makefile \
3160            src/plugins/dir/Makefile \
3161            src/win32/Makefile.inc \
3162            po/Makefile.in \
3163            updatedb/update_mysql_tables_9_to_10 \
3164            updatedb/update_sqlite3_tables_9_to_10 \
3165            updatedb/update_postgresql_tables_9_to_10 \
3166            updatedb/update_mysql_tables_10_to_11 \
3167            updatedb/update_sqlite3_tables_10_to_11 \
3168            updatedb/update_postgresql_tables_10_to_11 \
3169            examples/nagios/check_bacula/Makefile \
3170            $PFILES ],  
3171      [ ]
3172 )
3173
3174 if test "${support_bat}" = "yes" ; then
3175    if test "x$QMAKE" = "xnone"; then
3176       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3177    fi
3178
3179    QMAKEBIN="qmake"
3180    cd src/qt-console
3181    echo "Creating bat Makefile"
3182    touch bat
3183    chmod 755 bat
3184    rm -f Makefile
3185    $QMAKEBIN
3186    ${MAKE:-make} clean
3187    cd ${BUILD_DIR}
3188 fi
3189
3190 dnl
3191 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3192 dnl requires gcc).  If it's not, don't rebuild dependencies
3193 dnl
3194 if test X"$GCC" = "Xyes" ; then
3195   echo "Doing make of dependencies"
3196   ${MAKE:-make} depend
3197 fi
3198
3199 cd src/qt-console
3200 chmod 755 install_conf_file build-depkgs-qt-console
3201 cd ${BUILD_DIR}
3202
3203 cd scripts
3204 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
3205 chmod 755 dvd-handler dvd-simulator
3206 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
3207 cd ..
3208
3209 c=updatedb
3210 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3211 chmod 755 $c/update_postgresql_tables_10_to_11
3212
3213 c=src/cats
3214
3215 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3216 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3217
3218 chmod 755 $c/create_bdb_database      $c/update_bdb_tables     $c/make_bdb_tables
3219 chmod 755 $c/grant_bdb_privileges     $c/drop_bdb_tables       $c/drop_bdb_database
3220
3221 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3222 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3223
3224 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3225 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3226
3227 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3228 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3229
3230 chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3231 chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3232
3233
3234 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3235 chmod 755 $c/sqlite
3236 chmod 755 $c/mysql
3237
3238 chmod 755 src/win32/build-depkgs-mingw32
3239
3240 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3241    largefile_support="yes"
3242 fi
3243
3244 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3245 if test X"$GCC" = "Xyes" ; then
3246    dnl
3247    dnl A whole lot of hand springs to get the compiler version.
3248    dnl  This is because gcc changed the output in version 3.0
3249    dnl
3250    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3251    if test "x${CCVERSION}" = "x" ; then
3252       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3253    fi
3254    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3255    if test x"${CXXVERSION}" = x ; then
3256       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3257    fi
3258 fi
3259
3260 # clean up any old junk
3261 echo " "
3262 echo "Cleaning up"
3263 echo " "
3264 ${MAKE:-make} clean
3265
3266 if test "x${db_type}" = "xInternal" ; then
3267    echo " "
3268    echo " "
3269    echo "You have not specified either --enable-client-only or one of the"
3270    echo "  supported databases: MySQL, PostgreSQL, Ingres, SQLite3 or DBI."
3271    echo "  This is not permitted. Please reconfigure."
3272    echo " "
3273    echo "Aborting the configuration ..."
3274    echo " "
3275    echo " "
3276    exit 1
3277 fi
3278
3279 echo "
3280 Configuration on `date`:
3281
3282    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3283    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3284    Source code location:    ${srcdir}
3285    Install binaries:        ${sbindir}
3286    Install libraries:       ${libdir}
3287    Install config files:    ${sysconfdir}
3288    Scripts directory:       ${scriptdir}
3289    Archive directory:       ${archivedir}
3290    Working directory:       ${working_dir}
3291    PID directory:           ${piddir}
3292    Subsys directory:        ${subsysdir}
3293    Man directory:           ${mandir}
3294    Data directory:          ${datarootdir}
3295    Plugin directory:        ${plugindir}
3296    C Compiler:              ${CC} ${CCVERSION}
3297    C++ Compiler:            ${CXX} ${CXXVERSION}
3298    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3299    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3300    Libraries:               ${LIBS}
3301    Statically Linked Tools: ${support_static_tools}
3302    Statically Linked FD:    ${support_static_fd}
3303    Statically Linked SD:    ${support_static_sd}
3304    Statically Linked DIR:   ${support_static_dir}
3305    Statically Linked CONS:  ${support_static_cons}
3306    Database type:           ${db_type}
3307    Database port:           ${db_port}
3308    Database lib:            ${DB_LIBS}
3309    Database name:           ${db_name}
3310    Database user:           ${db_user}
3311  
3312    Job Output Email:        ${job_email}
3313    Traceback Email:         ${dump_email}
3314    SMTP Host Address:       ${smtp_host}
3315  
3316    Director Port:           ${dir_port}
3317    File daemon Port:        ${fd_port}
3318    Storage daemon Port:     ${sd_port}
3319  
3320    Director User:           ${dir_user}
3321    Director Group:          ${dir_group}
3322    Storage Daemon User:     ${sd_user}
3323    Storage DaemonGroup:     ${sd_group}
3324    File Daemon User:        ${fd_user}
3325    File Daemon Group:       ${fd_group}
3326  
3327    SQL binaries Directory   ${SQL_BINDIR}
3328  
3329    Large file support:      $largefile_support
3330    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3331    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3332    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3333    TLS support:             ${support_tls}
3334    Encryption support:      ${support_crypto} 
3335    ZLIB support:            ${have_zlib}
3336    enable-smartalloc:       ${support_smartalloc} 
3337    enable-lockmgr:          ${support_lockmgr}
3338    bat support:             ${support_bat}
3339    enable-gnome:            ${support_gnome} ${gnome_version}
3340    enable-bwx-console:      ${support_wx_console} ${wx_version}
3341    enable-tray-monitor:     ${support_tray_monitor}
3342    client-only:             ${build_client_only}
3343    build-dird:              ${build_dird}
3344    build-stored:            ${build_stored}
3345    Plugin support:          ${have_plugins}
3346    AFS support:             ${have_afs}
3347    ACL support:             ${have_acl}
3348    XATTR support:           ${have_xattr}
3349    Python support:          ${support_python} ${PYTHON_LIBS}
3350    Batch insert enabled:    ${support_batch_insert}
3351
3352   " > config.out
3353
3354 # create a small shell script useful for support with
3355 # configure options and config.out info
3356 cat > scripts/bacula_config << EOF
3357 #!/bin/sh
3358 cat << __EOC__
3359 $ $0 $ac_configure_args
3360 EOF
3361 cat config.out >> scripts/bacula_config
3362 echo __EOC__ >> scripts/bacula_config
3363 chmod 755 scripts/bacula_config
3364
3365 cat config.out
3366
3367 # Display a warning message if postgresql client lib is <= 8.1
3368 if test x$DB_TYPE = xpostgresql -a x$ac_cv_lib_pq_PQisthreadsafe != xyes \
3369         -a x$support_batch_insert = xyes
3370 then
3371         echo "WARNING: Your PostgreSQL client library is too old to detect "
3372         echo " if it was compiled with --enable-thread-safety, consider to"
3373         echo " upgrade it in order to avoid problems with Batch insert mode"
3374         echo
3375 fi