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