]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Simplify libtool revision and use VERSION as default
[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 AC_DEFINE(AFS_CFLAGS)
2482 AC_DEFINE(AFS_LIBS)
2483
2484 dnl
2485 dnl Check for ACL support and libraries
2486 dnl
2487 support_acl=auto
2488 AC_ARG_ENABLE(acl,
2489    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2490    [
2491        if test x$enableval = xyes; then
2492           support_acl=yes
2493        elif test x$enableval = xno; then
2494           support_acl=no
2495        fi
2496    ]
2497 )
2498
2499 have_acl=no
2500 have_extended_acl=no
2501 if test x$support_acl = xyes -o x$support_acl = xauto; then
2502    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2503    AC_CHECK_FUNC(acl_get_file,
2504       [
2505           have_acl=yes
2506       ], [
2507           AC_CHECK_LIB(acl, acl_get_file,
2508              [
2509                  have_acl=yes;
2510                  if test $have_afs = yes; then
2511                     dnl
2512                     dnl Because of possible naming conflict with AFS libacl make sure we use the one in /usr/lib64 or /usr/lib !!!
2513                     dnl
2514                     if test -d /usr/lib64/; then
2515                        FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
2516                     else
2517                        FDLIBS="-L/usr/lib -lacl $FDLIBS"
2518                     fi
2519                  else
2520                     FDLIBS="-lacl $FDLIBS"
2521                  fi
2522              ], [
2523                  AC_CHECK_LIB(pacl, acl_get_file,
2524                     [
2525                         have_acl=yes;
2526                         FDLIBS="-lpacl $FDLIBS"
2527                     ], [
2528                         AC_CHECK_LIB(sec, acltotext,
2529                            [
2530                                have_acl=yes;
2531                                FDLIBS="-lsec $FDLIBS"
2532
2533                                AC_CHECK_LIB(sec, acl_totext,
2534                                   [
2535                                       have_extended_acl=yes
2536                                   ]
2537                                )
2538                            ]
2539                         )
2540                     ]
2541                  )
2542              ]
2543           )
2544       ]
2545    )
2546
2547    if test x$support_acl = xyes -a $have_acl != yes; then
2548       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2549   please either load the acl libraries or rerun configure without --enable-acl])
2550    else
2551       if test $have_acl = yes; then
2552          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2553       fi
2554
2555       if test $have_extended_acl = yes; then
2556          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2557       fi
2558    fi
2559 fi
2560
2561 dnl
2562 dnl Check for XATTR support
2563 dnl
2564 support_xattr=auto
2565 AC_ARG_ENABLE(xattr,
2566    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2567    [
2568        if test x$enableval = xyes; then
2569           support_xattr=yes
2570        elif test x$enableval = xno; then
2571           support_xattr=no
2572        fi
2573    ]
2574 )
2575
2576 have_xattr=no
2577 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2578    dnl
2579    dnl First check for *BSD support
2580    dnl
2581    AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2582    AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2583    AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2584       [
2585           have_xattr=yes
2586           AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2587           AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2588           AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2589       ]
2590    )
2591    
2592    if test $have_xattr = no; then
2593       AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2594          [
2595              have_xattr=yes
2596              AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2597              AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2598              AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2599          ]
2600       )
2601    fi
2602    
2603    if test $have_xattr = yes; then
2604       have_extattr_string_in_libc=no
2605       AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2606          [
2607              have_extattr_string_in_libc=yes
2608              AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2609              AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2610          ]
2611       )
2612
2613       dnl
2614       dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2615       dnl
2616       if test $have_extattr_string_in_libc = no; then
2617          AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2618             [
2619                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2620                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2621                 FDLIBS="-lutil $FDLIBS"
2622             ]
2623          )
2624       fi
2625    fi
2626
2627    dnl
2628    dnl If we failed to find *BSD support try the Linux or OSX implementation of xattr
2629    dnl
2630    if test $have_xattr = no; then
2631       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2632       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2633          [
2634              have_xattr=yes
2635              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2636              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2637              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2638          ]
2639       )
2640
2641       if test $have_xattr = no; then
2642          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2643             [
2644                 have_xattr=yes
2645                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2646                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2647                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2648             ]
2649          )
2650       fi
2651    fi
2652
2653    dnl
2654    dnl If we failed to find *BSD support and the Linux or OSX implementation of xattr try the Solaris xattr implementation
2655    dnl
2656    if test $have_xattr = no; then
2657       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2658       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2659       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2660
2661       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2662          [
2663              have_xattr=yes
2664              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2665              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2666              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2667              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2668              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2669          ]
2670       )
2671
2672       if test $have_xattr = yes; then
2673          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2674             [
2675                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2676                 FDLIBS="-lnvpair $FDLIBS"
2677             ]
2678          )
2679       fi
2680    fi
2681
2682    if test x$support_xattr = xyes -a $have_xattr != yes; then
2683       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2684   please either load the xattr libraries or rerun configure without --enable-xattr])
2685    else
2686       if test $have_xattr = yes; then
2687          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2688       fi
2689    fi
2690 fi
2691
2692 dnl
2693 dnl Check for pthread libraries
2694 dnl
2695 PTHREAD_LIB=""
2696 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2697    [
2698        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2699           [
2700               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2701                  [
2702                      AC_CHECK_FUNC(pthread_create)
2703                  ]
2704               )
2705           ]
2706        )
2707    ]
2708 )
2709
2710 dnl
2711 dnl Check for headers, functions and libraries required to support
2712 dnl keeping readall capabilities
2713 dnl
2714 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2715 AC_CHECK_FUNCS(prctl setreuid)
2716 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2717 if test x$CAP_LIBS = x-lcap; then
2718    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2719 fi
2720 AC_SUBST(CAP_LIBS)
2721
2722 AC_SUBST(FDLIBS)
2723 AC_DEFINE(FDLIBS)
2724
2725 CFLAGS=${CFLAGS--O}
2726
2727 if test x$have_gcc = xyes ; then
2728    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2729    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2730 fi
2731 LDFLAGS=${LDFLAGS--O}
2732 DB_LIBS="${SQL_LFLAGS}"
2733 CPPFLAGS="$CPPFLAGS"
2734 CFLAGS="$CFLAGS"
2735 AC_SUBST(DEBUG)
2736 AC_SUBST(DINCLUDE)
2737 AC_SUBST(CFLAGS)
2738 AC_SUBST(CPPFLAGS)
2739 AC_SUBST(LDFLAGS)
2740 AC_SUBST(X_CFLAGS)
2741 AC_SUBST(DEFS)
2742 AC_SUBST(LIBS)
2743 AC_SUBST(DLIB)
2744 AC_SUBST(DB_LIBS)
2745 AC_SUBST(X_LIBS)
2746 AC_SUBST(X_EXTRA_LIBS)
2747 AC_SUBST(WCFLAGS)
2748 AC_SUBST(WLDFLAGS)
2749 AC_SUBST(WRAPLIBS)
2750
2751 dnl extra configurable objects
2752 OBJLIST=
2753 AC_SUBST(OBJLIST)
2754
2755 lld="lld"
2756 llu="llu"
2757
2758 WCFLAGS=
2759 WLDFLAGS=
2760
2761 dnl
2762 dnl Finally we set appropriate distribution specific
2763 dnl  variables and defaults
2764 dnl
2765 dnl PFILES are platform specific files
2766 PFILES="platforms/Makefile"
2767 PSCMD="ps -e"
2768 WIN32=
2769 MACOSX=
2770
2771 hostname=`uname -n | cut -d '.' -f 1`
2772 if test x${hostname} = x ; then
2773    hostname="localhost"
2774 fi
2775 dnl Make sure hostname is resolved
2776 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2777 if test ! $? = 0; then
2778   hostname="localhost"
2779 fi
2780
2781 case "$DISTNAME" in
2782 aix)
2783    DISTVER=`uname -r`
2784    PSCMD="ps -e -o pid,comm"
2785    PFILES="${PFILES} \
2786       platforms/aix/Makefile"
2787    TAPEDRIVE="/dev/rmt0.1" 
2788   ;;     
2789 alpha)
2790    DISTVER=`uname -r`
2791    PTHREAD_LIB="-lpthread -lexc"
2792    if test "${CC}" = "gcc" ; then
2793       lld="lld"
2794       llu="llu"
2795    else
2796       lld="ld"
2797       llu="lu"
2798    fi
2799    TAPEDRIVE="/dev/nrmt0"
2800   ;;
2801 bsdi)
2802    DISTVER=`uname -a |awk '{print $3}'`
2803    TAPEDRIVE="/dev/nrmt0"
2804    PTHREAD_LIB="-pthread"
2805    CFLAGS="${CFLAGS} -pthread"
2806    PSCMD="ps -ax -o pid,command"
2807    lld="qd"
2808    llu="qu"
2809    PFILES="${PFILES} \
2810        platforms/bsdi/Makefile \
2811        platforms/bsdi/bacula-fd \
2812        platforms/bsdi/bacula-sd \
2813        platforms/bsdi/bacula-dir"
2814    largefile_support="yes"
2815   ;;
2816 cygwin)
2817    DISTVER=`uname -a |awk '{print $3}'`
2818    TAPEDRIVE="/dev/nrst0"
2819    WIN32=win32
2820    WCFLAGS="-mwindows"
2821    WLDFLAGS="-mwindows"
2822   ;;
2823 darwin)
2824    DISTVER=`uname -r`
2825    TAPEDRIVE="/dev/nst0"
2826    PSCMD="ps -e -o pid,command"
2827    MACOSX=macosx
2828    PFILES="${PFILES} \
2829       platforms/darwin/Makefile"
2830   ;;
2831 osx)
2832    DISTVER=`uname -r`
2833    TAPEDRIVE="/dev/nst0"
2834    PSCMD="ps -e -o pid,command"
2835    MACOSX=macosx
2836    PFILES="${PFILES} \
2837       platforms/osx/Makefile"
2838   ;;
2839 debian)
2840    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2841       DISTNAME="ubuntu"
2842    fi
2843    DISTVER=`cat /etc/debian_version`
2844    if test -f /etc/lsb-release ; then
2845       . /etc/lsb-release
2846       if test "x$DISTRIB_ID" != "x" ; then
2847          DISTNAME=$DISTRIB_ID
2848       fi
2849       if test "x$DISTRIB_RELEASE" != "x" ; then
2850          DISTVER=$DISTRIB_RELEASE
2851       fi
2852    fi
2853    if test "$DISTNAME" = "Ubuntu" ; then
2854       DISTNAME="ubuntu"
2855    fi
2856    TAPEDRIVE="/dev/nst0"
2857    PSCMD="ps -e -o pid,command"
2858    if test "$DISTNAME" = "ubuntu" ; then
2859       PFILES="${PFILES} \
2860          platforms/ubuntu/Makefile \
2861          platforms/ubuntu/bacula-fd \
2862          platforms/ubuntu/bacula-sd \
2863          platforms/ubuntu/bacula-dir"
2864    else 
2865       PFILES="${PFILES} \
2866          platforms/debian/Makefile \
2867          platforms/debian/bacula-fd \
2868          platforms/debian/bacula-sd \
2869          platforms/debian/bacula-dir"
2870    fi
2871   ;;
2872 freebsd)
2873    DISTVER=`uname -a |awk '{print $3}'`
2874    VER=`echo $DISTVER | cut -c 1`
2875    if test x$VER = x4 ; then
2876       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
2877       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
2878    fi
2879    lld="qd"
2880    llu="qu"
2881    TAPEDRIVE="/dev/nrsa0"
2882    PSCMD="ps -ax -o pid,command"
2883    PFILES="${PFILES} \
2884        platforms/freebsd/Makefile \
2885        platforms/freebsd/bacula-fd \
2886        platforms/freebsd/bacula-sd \
2887        platforms/freebsd/bacula-dir"
2888    largefile_support="yes"
2889   ;;
2890 hpux)
2891    PSCMD="UNIX95=1; ps -e -o pid,comm"
2892    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
2893    DISTVER=`uname -r`
2894    TAPEDRIVE="/dev/rmt/0hnb"
2895    PTHREAD_LIB="-lpthread"
2896    AC_DEFINE([_INCLUDE_LONGLONG])
2897   ;;
2898 irix)
2899    DISTVER=`uname -r`
2900    TAPEDRIVE="/dev/rmt/0cbn"
2901    PSCMD="ps -e -o pid,comm"
2902    PFILES="${PFILES} \
2903        platforms/irix/Makefile \
2904        platforms/irix/bacula-fd \
2905        platforms/irix/bacula-sd \
2906        platforms/irix/bacula-dir"
2907   ;;
2908 netbsd)
2909    DISTVER=`uname -a |awk '{print $3}'`
2910    lld="qd"
2911    llu="qu"
2912    TAPEDRIVE="/dev/nrst0"
2913    PSCMD="ps -ax -o pid,command"
2914    PTHREAD_LIB="-pthread"
2915    CFLAGS="${CFLAGS} -pthread"
2916   ;;
2917 openbsd)
2918    DISTVER=`uname -a |awk '{print $3}'`
2919    lld="qd"
2920    llu="qu"
2921    TAPEDRIVE="/dev/nrst0"
2922    PSCMD="ps -ax -o pid,command"
2923    PTHREAD_LIB="-pthread"
2924    CFLAGS="${CFLAGS} -pthread"
2925    PFILES="${PFILES} \
2926        platforms/openbsd/Makefile \
2927        platforms/openbsd/bacula-fd \
2928        platforms/openbsd/bacula-sd \
2929        platforms/openbsd/bacula-dir"
2930   ;;
2931 redhat)
2932    if test -f /etc/whitebox-release ; then
2933       f=/etc/whitebox-release
2934    else
2935       f=/etc/redhat-release
2936    fi
2937    if test `cat $f | grep release |\
2938          cut -f 3 -d ' '`x = "Enterprise"x ; then
2939       DISTVER="Enterprise "`cat $f | grep release |\
2940           cut -f 6 -d ' '`
2941    else
2942        DISTVER=`cat /etc/redhat-release | grep release |\
2943            cut -f 5 -d ' '`
2944    fi
2945    TAPEDRIVE="/dev/nst0"
2946    PSCMD="ps -e -o pid,command"
2947    PFILES="${PFILES} \
2948        platforms/redhat/Makefile \
2949        platforms/redhat/bacula-fd \
2950        platforms/redhat/bacula-sd \
2951        platforms/redhat/bacula-dir
2952        "
2953   ;;
2954 mandrake)
2955    DISTVER=`cat /etc/mandrake-release | grep release |\
2956       cut -f 5 -d ' '`
2957    TAPEDRIVE="/dev/nst0"
2958    PSCMD="ps -e -o pid,command"
2959    PFILES="${PFILES} \
2960        platforms/mandrake/Makefile \
2961        platforms/mandrake/bacula-fd \
2962        platforms/mandrake/bacula-sd \
2963        platforms/mandrake/bacula-dir \
2964        "
2965   ;;
2966 gentoo)
2967    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
2968    TAPEDRIVE="/dev/nst0"
2969    PSCMD="ps -e -o pid,command"
2970    PFILES="${PFILES} \
2971        platforms/gentoo/Makefile \
2972     platforms/gentoo/bacula-init \
2973        platforms/gentoo/bacula-fd \
2974        platforms/gentoo/bacula-sd \
2975        platforms/gentoo/bacula-dir"
2976   ;;
2977 slackware)
2978    DISTVER=`cat /etc/slackware-version`
2979    TAPEDRIVE="/dev/nst0"
2980    PSCMD="ps -e -o pid,command"
2981    PFILES="${PFILES} \
2982        platforms/slackware/Makefile \
2983        platforms/slackware/rc.bacula-fd \
2984        platforms/slackware/rc.bacula-sd \
2985        platforms/slackware/rc.bacula-dir\
2986        platforms/slackware/functions.bacula"
2987   ;;
2988 solaris)
2989    DISTVER=`uname -r`
2990    TAPEDRIVE="/dev/rmt/0cbn"
2991    PSCMD="ps -e -o pid,comm"
2992    PFILES="${PFILES} \
2993        platforms/solaris/Makefile \
2994        platforms/solaris/bacula-fd \
2995        platforms/solaris/bacula-sd \
2996        platforms/solaris/bacula-dir"
2997    if test x$DISTVER = x5.6 ; then
2998        AC_DEFINE(HAVE_OLD_SOCKOPT)
2999    fi
3000    LIBS="$LIBS -lresolv -lrt"
3001   ;;
3002 suse)
3003    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3004        cut -f 3 -d ' '`
3005    TAPEDRIVE="/dev/nst0"
3006    PSCMD="ps -e -o pid,command"
3007    PFILES="${PFILES} \
3008        platforms/suse/Makefile \
3009        platforms/suse/bacula-fd \
3010        platforms/suse/bacula-sd \
3011        platforms/suse/bacula-dir \
3012        platforms/suse/bacula"
3013   ;;
3014 suse5)
3015    DISTNAME=suse
3016    DISTVER=5.x
3017    TAPEDRIVE="/dev/nst0"
3018    PSCMD="ps -e -o pid,command"
3019    PFILES="${PFILES} \
3020        platforms/suse/Makefile \
3021        platforms/suse/bacula-fd \
3022        platforms/suse/bacula-sd \
3023        platforms/suse/bacula-dir"
3024   ;;
3025 unknown)
3026    DISTVER=unknown
3027    TAPEDRIVE="/dev/nst0"
3028   ;;
3029 *)
3030   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3031   ;;
3032 esac  
3033
3034 AC_SUBST(hostname)
3035
3036 LIBS="$PTHREAD_LIB $LIBS"
3037
3038 AC_DEFINE_UNQUOTED(lld, "$lld")
3039 AC_DEFINE_UNQUOTED(llu, "$llu")
3040 AC_SUBST(TAPEDRIVE)
3041 AC_SUBST(PSCMD)
3042 AC_SUBST(WIN32)
3043 AC_SUBST(MACOSX)
3044 AC_SUBST(DISTNAME)
3045 AC_SUBST(DISTVER)
3046
3047 dnl common parts of the Makefile
3048 MCOMMON=./autoconf/Make.common
3049 AC_SUBST_FILE(MCOMMON)
3050
3051 dnl Insanity check
3052 if test "x${subsysdir}" = "x${sbindir}" ; then
3053    echo " "
3054    echo " "
3055    echo "You have set both --sbindir and --with-subsys-dir"
3056    echo "  equal to: ${subsysdir} "
3057    echo "This is not permitted. Please reconfigure."
3058    echo " "
3059    echo "Aborting configuration ..."
3060    echo " "
3061    echo " "
3062    exit 1
3063 fi 
3064
3065 AC_OUTPUT([autoconf/Make.common \
3066            Makefile \
3067            manpages/Makefile \
3068            scripts/startmysql \
3069            scripts/stopmysql \
3070            scripts/btraceback \
3071            scripts/startit \
3072            scripts/stopit \
3073            scripts/bconsole \
3074            scripts/gconsole \
3075            scripts/bacula \
3076            scripts/bacula-ctl-dir \
3077            scripts/bacula-ctl-fd \
3078            scripts/bacula-ctl-sd \
3079            scripts/devel_bacula \
3080            scripts/Makefile \
3081            scripts/logrotate \
3082            scripts/bacula.desktop.gnome1 \
3083            scripts/bacula.desktop.gnome2 \
3084            scripts/bacula.desktop.gnome1.consolehelper \
3085            scripts/bacula.desktop.gnome2.consolehelper \
3086            scripts/bacula.desktop.gnome1.xsu \
3087            scripts/bacula.desktop.gnome2.xsu \
3088            scripts/bgnome-console.console_apps \
3089            scripts/mtx-changer \
3090            scripts/disk-changer \
3091            scripts/dvd-handler \
3092            scripts/dvd-simulator \
3093            scripts/bacula-tray-monitor.desktop \
3094            scripts/logwatch/Makefile \
3095            scripts/logwatch/logfile.bacula.conf \
3096            scripts/wxconsole.console_apps \
3097            scripts/wxconsole.desktop.consolehelper \
3098            scripts/wxconsole.desktop.xsu \
3099            scripts/bat.desktop \
3100            scripts/bat.desktop.xsu \
3101            scripts/bat.desktop.consolehelper \
3102            scripts/bat.console_apps \
3103            src/Makefile \
3104            src/host.h \
3105            src/console/Makefile \
3106            src/console/bconsole.conf \
3107            src/qt-console/bat.conf \
3108            src/qt-console/bat.pro \
3109            src/qt-console/bat.pro.mingw32 \
3110            src/qt-console/install_conf_file \
3111            src/wx-console/Makefile \
3112            src/wx-console/bwx-console.conf \
3113            src/tray-monitor/Makefile \
3114            src/tray-monitor/tray-monitor.conf \
3115            src/dird/Makefile \
3116            src/dird/bacula-dir.conf \
3117            src/lib/Makefile \
3118            src/stored/Makefile \
3119            src/stored/bacula-sd.conf \
3120            src/filed/Makefile \
3121            src/filed/bacula-fd.conf \
3122            src/cats/Makefile \
3123            src/cats/make_catalog_backup.pl \
3124            src/cats/make_catalog_backup \
3125            src/cats/delete_catalog_backup \
3126            src/cats/create_postgresql_database \
3127            src/cats/update_postgresql_tables \
3128            src/cats/make_postgresql_tables \
3129            src/cats/grant_postgresql_privileges \
3130            src/cats/drop_postgresql_tables \
3131            src/cats/drop_postgresql_database \
3132            src/cats/create_mysql_database \
3133            src/cats/update_mysql_tables \
3134            src/cats/make_mysql_tables \
3135            src/cats/grant_mysql_privileges \
3136            src/cats/drop_mysql_tables \
3137            src/cats/drop_mysql_database \
3138            src/cats/create_sqlite3_database \
3139            src/cats/update_sqlite3_tables \
3140            src/cats/make_sqlite3_tables \
3141            src/cats/grant_sqlite3_privileges \
3142            src/cats/drop_sqlite3_tables \
3143            src/cats/drop_sqlite3_database \
3144            src/cats/create_ingres_database \
3145            src/cats/update_ingres_tables \
3146            src/cats/make_ingres_tables \
3147            src/cats/grant_ingres_privileges \
3148            src/cats/drop_ingres_tables \
3149            src/cats/drop_ingres_database \
3150            src/cats/sqlite \
3151            src/cats/mysql \
3152            src/cats/create_bacula_database \
3153            src/cats/update_bacula_tables \
3154            src/cats/grant_bacula_privileges \
3155            src/cats/make_bacula_tables \
3156            src/cats/drop_bacula_tables \
3157            src/cats/drop_bacula_database \
3158            src/findlib/Makefile \
3159            src/tools/Makefile \
3160            src/plugins/fd/Makefile \
3161            src/plugins/sd/Makefile \
3162            src/plugins/dir/Makefile \
3163            src/win32/Makefile.inc \
3164            po/Makefile.in \
3165            updatedb/update_mysql_tables_9_to_10 \
3166            updatedb/update_sqlite3_tables_9_to_10 \
3167            updatedb/update_postgresql_tables_9_to_10 \
3168            updatedb/update_mysql_tables_10_to_11 \
3169            updatedb/update_sqlite3_tables_10_to_11 \
3170            updatedb/update_postgresql_tables_10_to_11 \
3171            examples/nagios/check_bacula/Makefile \
3172            $PFILES ],  
3173      [ ]
3174 )
3175
3176 if test "${support_bat}" = "yes" ; then
3177    if test "x$QMAKE" = "xnone"; then
3178       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3179    fi
3180
3181    QMAKEBIN="qmake"
3182    cd src/qt-console
3183    echo "Creating bat Makefile"
3184    touch bat
3185    chmod 755 bat
3186    rm -f Makefile
3187    $QMAKEBIN
3188    ${MAKE:-make} clean
3189    cd ${BUILD_DIR}
3190 fi
3191
3192 dnl
3193 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3194 dnl requires gcc).  If it's not, don't rebuild dependencies
3195 dnl
3196 if test X"$GCC" = "Xyes" ; then
3197   echo "Doing make of dependencies"
3198   ${MAKE:-make} depend
3199 fi
3200
3201 cd src/qt-console
3202 chmod 755 install_conf_file build-depkgs-qt-console
3203 cd ${BUILD_DIR}
3204
3205 cd scripts
3206 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
3207 chmod 755 dvd-handler dvd-simulator
3208 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
3209 cd ..
3210
3211 c=updatedb
3212 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3213 chmod 755 $c/update_postgresql_tables_10_to_11
3214
3215 c=src/cats
3216
3217 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3218 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3219
3220 chmod 755 $c/create_bdb_database      $c/update_bdb_tables     $c/make_bdb_tables
3221 chmod 755 $c/grant_bdb_privileges     $c/drop_bdb_tables       $c/drop_bdb_database
3222
3223 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3224 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3225
3226 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3227 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3228
3229 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3230 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3231
3232 chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3233 chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3234
3235
3236 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3237 chmod 755 $c/sqlite
3238 chmod 755 $c/mysql
3239
3240 chmod 755 src/win32/build-depkgs-mingw32
3241
3242 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3243    largefile_support="yes"
3244 fi
3245
3246 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3247 if test X"$GCC" = "Xyes" ; then
3248    dnl
3249    dnl A whole lot of hand springs to get the compiler version.
3250    dnl  This is because gcc changed the output in version 3.0
3251    dnl
3252    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3253    if test "x${CCVERSION}" = "x" ; then
3254       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3255    fi
3256    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3257    if test x"${CXXVERSION}" = x ; then
3258       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3259    fi
3260 fi
3261
3262 # clean up any old junk
3263 echo " "
3264 echo "Cleaning up"
3265 echo " "
3266 ${MAKE:-make} clean
3267
3268 if test "x${db_type}" = "xInternal" ; then
3269    echo " "
3270    echo " "
3271    echo "You have not specified either --enable-client-only or one of the"
3272    echo "  supported databases: MySQL, PostgreSQL, Ingres, SQLite3 or DBI."
3273    echo "  This is not permitted. Please reconfigure."
3274    echo " "
3275    echo "Aborting the configuration ..."
3276    echo " "
3277    echo " "
3278    exit 1
3279 fi
3280
3281 echo "
3282 Configuration on `date`:
3283
3284    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3285    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3286    Source code location:    ${srcdir}
3287    Install binaries:        ${sbindir}
3288    Install libraries:       ${libdir}
3289    Install config files:    ${sysconfdir}
3290    Scripts directory:       ${scriptdir}
3291    Archive directory:       ${archivedir}
3292    Working directory:       ${working_dir}
3293    PID directory:           ${piddir}
3294    Subsys directory:        ${subsysdir}
3295    Man directory:           ${mandir}
3296    Data directory:          ${datarootdir}
3297    Plugin directory:        ${plugindir}
3298    C Compiler:              ${CC} ${CCVERSION}
3299    C++ Compiler:            ${CXX} ${CXXVERSION}
3300    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3301    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3302    Libraries:               ${LIBS}
3303    Statically Linked Tools: ${support_static_tools}
3304    Statically Linked FD:    ${support_static_fd}
3305    Statically Linked SD:    ${support_static_sd}
3306    Statically Linked DIR:   ${support_static_dir}
3307    Statically Linked CONS:  ${support_static_cons}
3308    Database type:           ${db_type}
3309    Database port:           ${db_port}
3310    Database lib:            ${DB_LIBS}
3311    Database name:           ${db_name}
3312    Database user:           ${db_user}
3313  
3314    Job Output Email:        ${job_email}
3315    Traceback Email:         ${dump_email}
3316    SMTP Host Address:       ${smtp_host}
3317  
3318    Director Port:           ${dir_port}
3319    File daemon Port:        ${fd_port}
3320    Storage daemon Port:     ${sd_port}
3321  
3322    Director User:           ${dir_user}
3323    Director Group:          ${dir_group}
3324    Storage Daemon User:     ${sd_user}
3325    Storage DaemonGroup:     ${sd_group}
3326    File Daemon User:        ${fd_user}
3327    File Daemon Group:       ${fd_group}
3328  
3329    SQL binaries Directory   ${SQL_BINDIR}
3330  
3331    Large file support:      $largefile_support
3332    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3333    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3334    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3335    TLS support:             ${support_tls}
3336    Encryption support:      ${support_crypto} 
3337    ZLIB support:            ${have_zlib}
3338    enable-smartalloc:       ${support_smartalloc} 
3339    enable-lockmgr:          ${support_lockmgr}
3340    bat support:             ${support_bat}
3341    enable-gnome:            ${support_gnome} ${gnome_version}
3342    enable-bwx-console:      ${support_wx_console} ${wx_version}
3343    enable-tray-monitor:     ${support_tray_monitor}
3344    client-only:             ${build_client_only}
3345    build-dird:              ${build_dird}
3346    build-stored:            ${build_stored}
3347    Plugin support:          ${have_plugins}
3348    AFS support:             ${have_afs}
3349    ACL support:             ${have_acl}
3350    XATTR support:           ${have_xattr}
3351    Python support:          ${support_python} ${PYTHON_LIBS}
3352    Batch insert enabled:    ${support_batch_insert}
3353
3354   " > config.out
3355
3356 # create a small shell script useful for support with
3357 # configure options and config.out info
3358 cat > scripts/bacula_config << EOF
3359 #!/bin/sh
3360 cat << __EOC__
3361 $ $0 $ac_configure_args
3362 EOF
3363 cat config.out >> scripts/bacula_config
3364 echo __EOC__ >> scripts/bacula_config
3365 chmod 755 scripts/bacula_config
3366
3367 cat config.out
3368
3369 # Display a warning message if postgresql client lib is <= 8.1
3370 if test x$DB_TYPE = xpostgresql -a x$ac_cv_lib_pq_PQisthreadsafe != xyes \
3371         -a x$support_batch_insert = xyes
3372 then
3373         echo "WARNING: Your PostgreSQL client library is too old to detect "
3374         echo " if it was compiled with --enable-thread-safety, consider to"
3375         echo " upgrade it in order to avoid problems with Batch insert mode"
3376         echo
3377 fi