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