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