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