]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Added configure logic for detecting the TRU64 extended attributes interface.
[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    if test "$support_tls" = "yes"; then
1177       AC_DEFINE(HAVE_OPENSSL, 1, [Define if OpenSSL library is available])
1178       AC_DEFINE(HAVE_TLS, 1, [Define if TLS support should be enabled])
1179       AC_DEFINE(HAVE_CRYPTO, 1, [Define if encryption support should be enabled])
1180    fi
1181
1182    if test "$ac_cv_openssl_sha2" = "yes"; then
1183       AC_DEFINE(HAVE_SHA2, 1, [Define if the SHA-2 family of digest algorithms is available])
1184    fi
1185
1186    if test "$ac_cv_openssl_export" = "yes"; then
1187       AC_DEFINE(HAVE_OPENSSL_EXPORT_LIBRARY, 1, [Define if the OpenSSL library is export-contrained to 128bit ciphers])
1188    fi
1189
1190    if test "$support_crypto" = "yes"; then
1191       AC_CHECK_LIB(ssl, EVP_PKEY_encrypt_old, AC_DEFINE(HAVE_OPENSSLv1, 1, [Set if have OpenSSL version 1.x]))
1192    fi
1193
1194    LIBS="${saved_LIBS}"
1195    CFLAGS="${saved_CFLAGS}"
1196 else
1197    support_tls="no"
1198    support_crypto="no"
1199    OPENSSL_LIBS=""
1200    OPENSSL_INC=""
1201 fi
1202 AC_MSG_RESULT([$support_tls])
1203
1204 if test "$support_tls" = "no"; then
1205    OPENSSL_LIBS=""
1206    OPENSSL_INC=""
1207 fi  
1208 if test "$support_crypto" = "no"; then
1209    OPENSSL_LIBS=""
1210    OPENSSL_INC=""
1211 fi  
1212
1213 AC_SUBST(OPENSSL_LIBS)
1214 AC_SUBST(OPENSSL_INC)
1215
1216 dnl -----------------------------------------------------------
1217 dnl dlopen is needed for plugins
1218 dnl -----------------------------------------------------------
1219 AC_SEARCH_LIBS(dlopen, [dl])
1220
1221 dnl ------------------------------------------
1222 dnl Where to place working dir
1223 dnl ------------------------------------------
1224 working_dir=`eval echo ${prefix}/var/bacula/working`
1225 AC_ARG_WITH(working-dir,
1226    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
1227    [
1228        if test "x$withval" != "xno" ; then     
1229          working_dir=$withval
1230        fi
1231    ]
1232 )
1233
1234 AC_SUBST(working_dir)
1235
1236 dnl ------------------------------------------------------------------
1237 dnl If the user has not set archivedir, we set our default as /tmp
1238 dnl ------------------------------------------------------------------
1239 archivedir=/tmp
1240 AC_ARG_WITH(archivedir,
1241    AC_HELP_STRING([--with-archivedir=PATH], [specify path of SD archive directory]),
1242    [
1243        if test "x$withval" != "xno" ; then     
1244           archivedir=$withval
1245        fi
1246    ]
1247 )
1248
1249 AC_SUBST(archivedir)
1250
1251 dnl ------------------------------------------------------------------
1252 dnl Allow the user to specify the daemon resource name default hostname
1253 dnl ------------------------------------------------------------------
1254 basename=`hostname`
1255 AC_ARG_WITH(basename,
1256    AC_HELP_STRING([--with-basename=RESNAME], [specify base resource name for daemons]),
1257    [
1258        if test "x$withval" != "xno" ; then     
1259           basename=$withval
1260        fi
1261    ]
1262 )
1263
1264 AC_SUBST(basename)
1265
1266 dnl ------------------------------------------------------------------
1267 dnl Allow the user to override the hostname (default = machine hostname)
1268 dnl ------------------------------------------------------------------
1269 hostname=`uname -n | cut -d '.' -f 1`
1270 if test x${hostname} = x ; then
1271   hostname="localhost"
1272 fi
1273 AC_ARG_WITH(hostname,
1274    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
1275    [
1276        if test "x$withval" != "xno" ; then
1277          hostname=$withval
1278        fi
1279    ]
1280 )
1281
1282 AC_SUBST(hostname)
1283
1284
1285 dnl ------------------------------------------
1286 dnl Where to place scriptdir (script files)
1287 dnl ------------------------------------------
1288 scriptdir=`eval echo ${sysconfdir}`
1289 AC_ARG_WITH(scriptdir,
1290    AC_HELP_STRING([--with-scriptdir=PATH], [specify path of Bacula scripts directory]),
1291    [
1292        if test "x$withval" != "xno" ; then     
1293           scriptdir=$withval
1294        fi
1295    ]
1296 )
1297
1298 AC_SUBST(scriptdir)
1299
1300
1301 dnl ------------------------------------------
1302 dnl Where to place bsrdir (bsr files)
1303 dnl ------------------------------------------
1304 bsrdir=/tmp
1305 AC_ARG_WITH(bsrdir,
1306    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
1307    [
1308        if test "x$withval" != "xno" ; then     
1309           bsrdir=$withval
1310        fi
1311    ]
1312 )
1313
1314 AC_SUBST(bsrdir)
1315
1316 dnl ------------------------------------------
1317 dnl Where to place logdir (bsr files)
1318 dnl ------------------------------------------
1319 logdir=/tmp
1320 AC_ARG_WITH(logdir,
1321    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
1322    [
1323        if test "x$withval" != "xno" ; then     
1324           logdir=$withval
1325        fi
1326    ]
1327 )
1328
1329 AC_SUBST(logdir)
1330
1331
1332 # ------------------------------------------
1333 # Where to place plugindir (plugin files)
1334 # ------------------------------------------
1335 plugindir=`eval echo ${libdir}`
1336 AC_ARG_WITH(plugindir,
1337    AC_HELP_STRING([--with-plugindir=PATH], [specify path of Bacula plugins directory]),
1338    [
1339        if test "x$withval" != "xno" ; then     
1340           plugindir=$withval
1341        fi
1342    ]
1343 )
1344
1345 AC_SUBST(plugindir)
1346
1347 dnl ------------------------------------------
1348 dnl Where to send dump email
1349 dnl ------------------------------------------
1350 dump_email=root@localhost
1351 AC_ARG_WITH(dump-email,
1352    AC_HELP_STRING([--with-dump-email=EMAIL], [dump email address]),
1353    [
1354        if test "x$withval" != "xno" ; then     
1355           dump_email=$withval
1356        fi
1357    ]
1358 )
1359
1360 AC_SUBST(dump_email)
1361
1362 dnl ------------------------------------------
1363 dnl Where to send job email
1364 dnl ------------------------------------------
1365 job_email=root@localhost
1366 AC_ARG_WITH(job-email,
1367    AC_HELP_STRING([--with-job-email=EMAIL], [job output email address]),
1368    [
1369        if test "x$withval" != "xno" ; then     
1370           job_email=$withval
1371        fi
1372    ]
1373 )
1374
1375 AC_SUBST(job_email)
1376
1377 dnl ------------------------------------------
1378 dnl Where to find smtp host
1379 dnl ------------------------------------------
1380 smtp_host=localhost
1381 AC_ARG_WITH(smtp_host,
1382    AC_HELP_STRING([--with-smtp-host=HOST], [SMTP mail host address]),
1383    [
1384        if test "x$withval" != "xno" ; then     
1385           smtp_host=$withval
1386        fi
1387    ]
1388 )
1389
1390 AC_SUBST(smtp_host)
1391
1392 dnl ------------------------------------
1393 dnl Where to place pid files
1394 dnl ------------------------------------
1395 piddir=/var/run
1396 AC_ARG_WITH(pid-dir,
1397    AC_HELP_STRING([--with-pid-dir=PATH], [specify location of Bacula pid files]),
1398    [
1399        if test "x$withval" != "xno" ; then   
1400           piddir=$withval
1401        fi
1402    ]
1403 )
1404
1405 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
1406 AC_SUBST(piddir)
1407
1408 dnl ------------------------------------
1409 dnl Where to place subsys "lock file"
1410 dnl ------------------------------------
1411 subsysdir=/var/run/subsys
1412 if test -d /var/run/subsys; then
1413    subsysdir=/var/run/subsys
1414 elif test -d /var/lock/subsys; then
1415    subsysdir=/var/lock/subsys
1416 else
1417    subsysdir=/var/run/subsys
1418 fi
1419 AC_ARG_WITH(subsys-dir,
1420    AC_HELP_STRING([--with-subsys-dir=PATH], [specify location of Bacula subsys file]),
1421    [
1422        if test "x$withval" != "xno" ; then   
1423           subsysdir=$withval
1424        fi
1425    ]
1426 )
1427
1428 AC_SUBST(subsysdir)
1429
1430 dnl ------------------------------------
1431 dnl Where to start assigning ports
1432 dnl ------------------------------------
1433 baseport=9101
1434 AC_ARG_WITH(baseport,
1435    AC_HELP_STRING([--with-baseport=PORT], [specify base port address for daemons]),
1436    [
1437        if test "x$withval" != "xno" ; then   
1438           baseport=$withval
1439        fi
1440    ]
1441 )
1442
1443 AC_SUBST(baseport)
1444 dir_port=`expr $baseport`
1445 fd_port=`expr $baseport + 1`
1446 sd_port=`expr $fd_port + 1`
1447
1448 AC_SUBST(dir_port)
1449 AC_SUBST(fd_port)
1450 AC_SUBST(sd_port)
1451
1452 dnl ------------------------------------------
1453 dnl Generate passwords
1454 dnl ------------------------------------------
1455 dir_password=
1456 AC_ARG_WITH(dir-password,
1457    AC_HELP_STRING([--with-dir-password=PASSWORD], [specify Director's password]),
1458    [
1459        if test "x$withval" != "xno" ; then     
1460           dir_password=$withval
1461        fi
1462    ]
1463 )
1464
1465 if test "x$dir_password" = "x" ; then
1466    if test "x$OPENSSL" = "xnone" ; then
1467       key=`autoconf/randpass 33`
1468    else
1469       key=`openssl rand -base64 33`
1470    fi
1471    dir_password=$key
1472 fi
1473
1474 fd_password=
1475 AC_ARG_WITH(fd-password,
1476    AC_HELP_STRING([--with-fd-password=PASSWORD], [specify Client's password]),
1477    [
1478        if test "x$withval" != "xno" ; then     
1479           fd_password=$withval
1480        fi
1481    ]
1482 )
1483
1484 if test "x$fd_password" = "x" ; then
1485    if test "x$OPENSSL" = "xnone" ; then
1486       key=`autoconf/randpass 37`
1487    else
1488       key=`openssl rand -base64 33`
1489    fi
1490    fd_password=$key
1491 fi
1492
1493 sd_password=
1494 AC_ARG_WITH(sd-password,
1495    AC_HELP_STRING([--with-sd-password=PASSWORD], [specify Storage daemon's password]),
1496    [
1497        if test "x$withval" != "xno" ; then     
1498           sd_password=$withval
1499        fi
1500    ]
1501 )
1502
1503 if test "x$sd_password" = "x" ; then
1504    if test "x$OPENSSL" = "xnone" ; then
1505       key=`autoconf/randpass 41`
1506    else
1507       key=`openssl rand -base64 33`
1508    fi
1509    sd_password=$key
1510 fi
1511
1512 mon_dir_password=
1513 AC_ARG_WITH(mon-dir-password,
1514    AC_HELP_STRING([--with-mon-dir-password=PASSWORD], [specify Director's password used by the monitor]),
1515    [
1516        if test "x$withval" != "xno" ; then     
1517           mon_dir_password=$withval
1518        fi
1519    ]
1520 )
1521
1522 if test "x$mon_dir_password" = "x" ; then
1523    if test "x$OPENSSL" = "xnone" ; then
1524       key=`autoconf/randpass 33`
1525    else
1526       key=`openssl rand -base64 33`
1527    fi
1528    mon_dir_password=$key
1529 fi
1530
1531 mon_fd_password=
1532 AC_ARG_WITH(mon-fd-password,
1533    AC_HELP_STRING([--with-mon-fd-password=PASSWORD], [specify Client's password used by the monitor]),
1534    [
1535        if test "x$withval" != "xno" ; then     
1536           mon_fd_password=$withval
1537        fi
1538    ]
1539 )
1540
1541 if test "x$mon_fd_password" = "x" ; then
1542    if test "x$OPENSSL" = "xnone" ; then
1543       key=`autoconf/randpass 37`
1544    else
1545       key=`openssl rand -base64 33`
1546    fi
1547    mon_fd_password=$key
1548 fi
1549
1550 mon_sd_password=
1551 AC_ARG_WITH(mon-sd-password,
1552    AC_HELP_STRING([--with-mon-sd-password=PASSWORD], [specify Storage daemon's password used by the monitor]),
1553    [
1554        if test "x$withval" != "xno" ; then     
1555           mon_sd_password=$withval
1556        fi
1557    ]
1558 )
1559
1560 if test "x$mon_sd_password" = "x" ; then
1561    if test "x$OPENSSL" = "xnone" ; then
1562       key=`autoconf/randpass 41`
1563    else
1564       key=`openssl rand -base64 33`
1565    fi
1566    mon_sd_password=$key
1567 fi
1568
1569 AC_SUBST(dir_password)
1570 AC_SUBST(fd_password)
1571 AC_SUBST(sd_password)
1572 AC_SUBST(mon_dir_password)
1573 AC_SUBST(mon_fd_password)
1574 AC_SUBST(mon_sd_password)
1575
1576 dnl
1577 dnl Pickup any database name
1578 dnl
1579 db_name=bacula
1580 AC_ARG_WITH(db_name,
1581    AC_HELP_STRING([--with-db-name=DBNAME], [specify database name @<:@default=bacula@:>@]),
1582    [
1583        if test "x$withval" != "x" ; then   
1584           db_name=$withval
1585        fi
1586    ]
1587 )
1588 AC_SUBST(db_name)
1589
1590 db_user=bacula
1591 AC_ARG_WITH(db_user,
1592    AC_HELP_STRING([--with-db-user=UNAME], [specify database user @<:@default=bacula@:>@]),
1593    [
1594        if test "x$withval" != "x" ; then   
1595           db_user=$withval
1596        fi
1597    ]
1598 )
1599 AC_SUBST(db_user)
1600
1601 db_password=
1602 AC_ARG_WITH(db_password,
1603    AC_HELP_STRING([--with-db-password=PWD], [specify database password @<:@default=*none*@:>@]),
1604    [
1605        if test "x$withval" != "x" ; then   
1606           db_password=$withval
1607        fi
1608    ]
1609 )
1610 AC_SUBST(db_password)
1611
1612 dnl
1613 dnl Pickup a database port
1614 dnl
1615 db_port=" "
1616 AC_ARG_WITH(db_port,
1617    AC_HELP_STRING([--with-db-port=DBPORT], [specify a database port @<:@default=null@:>@]),
1618    [
1619        if test "x$withval" != "x" ; then
1620           db_port=$withval
1621        fi
1622    ]
1623 )
1624 AC_SUBST(db_port)
1625
1626 #
1627 # Handle users and groups for each daemon
1628 #
1629 dir_user=
1630 AC_ARG_WITH(dir_user,
1631    AC_HELP_STRING([--with-dir-user=USER], [specify user for Director daemon]),
1632    [
1633        if test "x$withval" != "x" ; then   
1634            dir_user=$withval
1635        fi
1636    ]
1637 )
1638
1639 dir_group=
1640 AC_ARG_WITH(dir_group,
1641    AC_HELP_STRING([--with-dir-group=GROUP], [specify group for Director daemon]),
1642    [
1643        if test "x$withval" != "x" ; then   
1644           dir_group=$withval
1645        fi
1646    ]
1647 )
1648
1649 sd_user=
1650 AC_ARG_WITH(sd_user,
1651    AC_HELP_STRING([--with-sd-user=USER], [specify user for Storage daemon]),
1652    [
1653        if test "x$withval" != "x" ; then   
1654           sd_user=$withval
1655        fi
1656    ]
1657 )
1658
1659 sd_group=
1660 AC_ARG_WITH(sd_group,
1661    AC_HELP_STRING([--with-sd-group=GROUP], [specify group for Storage daemon]),
1662    [
1663        if test "x$withval" != "x" ; then   
1664           sd_group=$withval
1665        fi
1666    ]
1667 )
1668
1669 fd_user=
1670 AC_ARG_WITH(fd_user,
1671    AC_HELP_STRING([--with-fd-user=USER], [specify user for File daemon]),
1672    [
1673        if test "x$withval" != "x" ; then   
1674           fd_user=$withval
1675        fi
1676    ]
1677 )
1678
1679 fd_group=
1680 AC_ARG_WITH(fd_group,
1681    AC_HELP_STRING([--with-fd-group=GROUP], [specify group for File daemon]),
1682    [
1683        if test "x$withval" != "x" ; then   
1684           fd_group=$withval
1685        fi
1686    ]
1687 )
1688
1689 AC_SUBST(dir_user)
1690 AC_SUBST(dir_group)
1691 AC_SUBST(sd_user)
1692 AC_SUBST(sd_group)
1693 AC_SUBST(fd_user)
1694 AC_SUBST(fd_group)
1695
1696 dnl
1697 dnl allow setting default executable permissions
1698 dnl
1699 SBINPERM=0750
1700 AC_ARG_WITH(sbin-perm,
1701    AC_HELP_STRING([--with-sbin-perm=MODE], [specify permissions for sbin binaries @<:@default=0750@:>@]),
1702    [
1703        if test "x$withval" != "x" ; then   
1704           SBINPERM=$withval
1705        fi
1706    ]
1707 )
1708
1709 AC_SUBST(SBINPERM)
1710
1711 dnl ------------------------------------------------
1712 dnl Bacula check for various SQL database engines
1713 dnl ------------------------------------------------
1714 SQL_LIB=
1715 BA_CHECK_POSTGRESQL_DB
1716
1717 BA_CHECK_MYSQL_DB
1718
1719 BA_CHECK_INGRES_DB
1720
1721 BA_CHECK_SQLITE3_DB
1722
1723 # BA_CHECK_SQLITE_DB
1724
1725 BA_CHECK_DBI_DB
1726
1727 BA_CHECK_DBI_DRIVER
1728
1729 AC_SUBST(cats)
1730 AC_SUBST(DB_TYPE)
1731
1732 dnl -------------------------------------------
1733 dnl enable batch attribute DB insert (default on)
1734 dnl -------------------------------------------
1735 support_batch_insert=no
1736 A=`test -f $SQL_LIB && nm $SQL_LIB | grep pthread_mutex_lock`
1737 pkg=$?
1738 if test $pkg = 0; then
1739    support_batch_insert=yes
1740    AC_ARG_ENABLE(batch-insert,
1741       AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1742       [
1743           if test x$enableval = xno; then
1744              support_batch_insert=no
1745           else
1746              support_batch_insert=yes
1747           fi
1748       ]
1749    )
1750 fi
1751
1752 if test x$support_batch_insert = xno; then
1753   if test x$DB_TYPE = xmysql; then
1754     A=`test -f $MYSQL_LIBDIR/libmysqlclient_r.so && nm -D $MYSQL_LIBDIR/libmysqlclient_r.so | grep pthread_mutex_lock`
1755     pkg=$?
1756     if test $pkg = 0; then
1757       support_batch_insert=yes
1758       AC_ARG_ENABLE(batch-insert,
1759         AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1760         [
1761           if test x$enableval = xno; then
1762              support_batch_insert=no
1763           else
1764              support_batch_insert=yes
1765           fi
1766         ]
1767       )
1768     fi
1769   fi
1770 fi  
1771
1772 dnl For postgresql checking
1773 saved_LIBS="${LIBS}"
1774 LIBS="${saved_LIBS} ${SQL_LFLAGS}"
1775    
1776 dnl Check if postgresql can support batch mode
1777 if test x$DB_TYPE = xpostgresql; then
1778    support_batch_insert=yes
1779    AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE, 1, [Set if have PQisthreadsafe]))
1780    AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY, 1, [Set if have PQputCopyData]))
1781    test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"
1782    pkg=$?
1783    if test $pkg = 0; then
1784       AC_ARG_ENABLE(batch-insert,
1785          AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1786          [
1787              if test x$enableval = xno; then
1788                 support_batch_insert=no
1789              fi
1790          ]
1791       )
1792    else
1793       support_batch_insert=no
1794    fi
1795 fi
1796
1797 if test x$DB_TYPE = xdbi; then
1798    DB_TYPE=$DB_PROG
1799    db_type=$DB_PROG
1800    pkg=1
1801    dnl Check for batch insert
1802    if test $DB_PROG = postgresql; then
1803       AC_CHECK_LIB(pq, PQisthreadsafe, AC_DEFINE(HAVE_PQISTHREADSAFE))
1804       AC_CHECK_LIB(pq, PQputCopyData, AC_DEFINE(HAVE_PQ_COPY))
1805       test "x$ac_cv_lib_pq_PQputCopyData" = "xyes"
1806       pkg=$?
1807    fi
1808
1809    if test $DB_PROG = mysql; then
1810       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1811       pkg=$?    
1812    fi
1813
1814    if test $DB_PROG = sqlite3; then
1815       A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock`
1816       pkg=$?
1817       AC_CHECK_LIB(sqlite3, sqlite3_threadsafe, AC_DEFINE(HAVE_SQLITE3_THREADSAFE, 1, [Set if have sqlite3_threadsafe]))
1818    fi
1819
1820    if test $pkg = 0; then
1821       AC_ARG_ENABLE(batch-insert,
1822          AC_HELP_STRING([--enable-batch-insert], [enable the DB batch insert code @<:@default=no@:>@]),
1823          [
1824              if test x$enableval = xno; then
1825                 support_batch_insert=no
1826              else
1827                 support_batch_insert=yes
1828              fi
1829          ]
1830       )
1831    fi
1832 else 
1833    dnl If dbi was not chosen, let the comment in file
1834    uncomment_dbi="#"  
1835 fi
1836
1837 dnl revert after postgresql checks
1838 LIBS="${saved_LIBS}"
1839
1840 AC_SUBST(uncomment_dbi)
1841
1842 dnl For Ingres always enable batch inserts.
1843 if test x$DB_TYPE = xingres; then
1844    support_batch_insert=yes
1845 fi
1846
1847 if test $support_batch_insert = yes ; then
1848    AC_DEFINE(HAVE_BATCH_FILE_INSERT, 1, [Set if DB batch insert code enabled])
1849 fi
1850
1851 AC_DEFINE(PROTOTYPES)
1852
1853 dnl --------------------------------------------------------------------------
1854 dnl Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
1855 dnl
1856 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
1857    if test -z "$CCOPTS"; then
1858       CCOPTS='-g -O2 -Wall'
1859    fi
1860    CFLAGS="$CCOPTS"
1861 fi
1862
1863 dnl A few others 
1864 AC_EXEEXT
1865
1866 dnl See if we can use 64 bit file addresses
1867 largefile_support="no"
1868 AC_BAC_LARGEFILE
1869
1870 AC_PATH_XTRA
1871
1872 dnl --------------------------------------------------------------------------
1873 dnl CHECKING FOR HEADER FILES
1874 dnl --------------------------------------------------------------------------
1875 AC_CHECK_HEADERS( \
1876    assert.h \
1877    fcntl.h \
1878    grp.h \
1879    pwd.h \
1880    libc.h \
1881    limits.h \
1882    stdarg.h \
1883    stdlib.h \
1884    stdint.h \
1885    string.h \
1886    strings.h \
1887    termios.h \
1888    termcap.h \
1889    term.h \
1890    unistd.h \
1891    sys/bitypes.h \
1892    sys/byteorder.h \
1893    sys/ioctl.h \
1894    sys/select.h \
1895    sys/socket.h \
1896    sys/sockio.h \
1897    sys/stat.h \
1898    sys/time.h \
1899    sys/types.h \
1900    arpa/nameser.h \
1901    mtio.h \
1902    sys/mtio.h \
1903    sys/tape.h \
1904    regex.h \
1905 )
1906 AC_HEADER_STDC
1907 AC_HEADER_MAJOR
1908 AC_HEADER_DIRENT
1909 AC_HEADER_STAT
1910 AC_HEADER_SYS_WAIT
1911 AC_HEADER_TIME
1912 AC_STRUCT_ST_BLKSIZE
1913 AC_STRUCT_ST_BLOCKS
1914 AC_STRUCT_TIMEZONE
1915
1916 dnl --------------------------------------------------------------------------
1917 dnl Check for utime.h structure 
1918 dnl --------------------------------------------------------------------------
1919 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
1920    [
1921        AC_TRY_COMPILE(
1922           [
1923               #include <sys/types.h>
1924               #include <utime.h>
1925           ], [
1926               struct utimbuf foo
1927           ], [
1928               ba_cv_header_utime_h=yes
1929           ], [
1930               ba_cv_header_utime_h=no
1931           ]
1932        )
1933    ]
1934 )
1935 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H, 1, [Set if utime.h exists])
1936
1937 dnl --------------------------------------------------------------------------
1938 dnl Check for socklen_t
1939 dnl --------------------------------------------------------------------------
1940 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1941    [
1942        AC_TRY_COMPILE(
1943           [
1944               #include <sys/types.h>
1945               #include <sys/socket.h>
1946           ], [
1947               socklen_t x
1948           ], [
1949              ba_cv_header_socklen_t=yes
1950           ], [
1951              ba_cv_header_socklen_t=no
1952           ]
1953        )
1954    ]
1955 )
1956 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T, 1, [Set if socklen_t exists])
1957
1958 dnl --------------------------------------------------------------------------
1959 dnl Check for ioctl request type
1960 dnl --------------------------------------------------------------------------
1961 AC_LANG(C++)
1962 AC_CACHE_CHECK(for ioctl_req_t, ba_cv_header_ioctl_req_t,
1963    [
1964        AC_TRY_COMPILE(
1965           [
1966               #include <unistd.h>
1967               #include <sys/types.h>
1968               #include <sys/ioctl.h>
1969           ], [
1970               int (*d_ioctl)(int fd, unsigned long int request, ...);
1971               d_ioctl = ::ioctl;
1972           ], [
1973              ba_cv_header_ioctl_req_t=yes
1974           ], [
1975              ba_cv_header_ioctl_req_t=no
1976           ]
1977        )
1978    ]
1979 )
1980 test $ba_cv_header_ioctl_req_t = yes && AC_DEFINE(HAVE_IOCTL_ULINT_REQUEST, 1, [Set if ioctl request is unsigned long int])
1981
1982 dnl Note: it is more correct to use AC_LANG(C++) but some of the older
1983 dnl   *BSD systems still use old style C prototypes, which are wrong with
1984 dnl   compiled with a C++ compiler. 
1985 AC_LANG(C)
1986
1987 dnl --------------------------------------------------------------------------
1988 dnl Check for typeof()
1989 dnl --------------------------------------------------------------------------
1990 AC_LANG_PUSH(C++)
1991 AC_CACHE_CHECK(for typeof, ba_cv_have_typeof,
1992    [
1993        AC_TRY_RUN(
1994           [
1995               main(){char *a = 0; a = (typeof a)a;}
1996           ], [
1997               ba_cv_have_typeof=yes
1998           ], [
1999               ba_cv_have_typeof=no
2000           ], [
2001               ba_cv_have_typeof=no
2002           ]
2003        )
2004    ]
2005 )
2006 test $ba_cv_have_typeof = yes && AC_DEFINE([HAVE_TYPEOF], 1, [Defind to 1 if compiler has typeof])
2007 AC_LANG_POP(C++)
2008
2009 AC_C_CONST
2010
2011 AC_C_BIGENDIAN([AC_DEFINE([HAVE_BIG_ENDIAN], [1], [Big Endian])], [AC_DEFINE([HAVE_LITTLE_ENDIAN], [1], [Little Endian])])
2012
2013 dnl --------------------------------------------------------------------------
2014 dnl CHECKING FOR FILESYSTEM TYPE
2015 dnl --------------------------------------------------------------------------
2016 AC_MSG_CHECKING(how to get filesystem type)
2017 fstype=no
2018 # The order of these tests is important.
2019 AC_TRY_CPP(
2020    [
2021        #include <sys/statvfs.h>
2022        #include <sys/fstyp.h>
2023    ],
2024    AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4
2025 )
2026 if test $fstype = no; then
2027    AC_TRY_CPP(
2028       [
2029           #include <sys/statfs.h>
2030           #include <sys/fstyp.h>
2031       ],
2032       AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3
2033    )
2034 fi
2035 if test $fstype = no; then
2036    AC_TRY_CPP(
2037       [
2038           #include <sys/statfs.h>
2039           #include <sys/vmount.h>
2040       ],
2041       AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX
2042    )
2043 fi
2044 if test $fstype = no; then  
2045    AC_TRY_CPP(
2046       [
2047           #include <mntent.h>
2048       ],
2049       AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD
2050    )
2051 fi
2052 if test $fstype = no; then  
2053    AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
2054 fi
2055 if test $fstype = no; then  
2056    AC_TRY_CPP(
2057       [
2058           #include <sys/mount.h>
2059           #include <sys/fs_types.h>
2060       ],
2061       AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix
2062    )
2063 fi
2064 AC_MSG_RESULT($fstype)
2065
2066 AC_CHECK_HEADER(sys/statvfs.h, [ AC_DEFINE(HAVE_SYS_STATVFS_H,1,[Defines if your system have the sys/statvfs.h header file])] , )
2067
2068 dnl --------------------------------------------------------------------------
2069 dnl CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
2070 dnl --------------------------------------------------------------------------
2071 AC_TYPE_SIGNAL
2072 SIGNAL_CHECK
2073 AC_TYPE_MODE_T
2074 AC_TYPE_UID_T
2075 AC_TYPE_SIZE_T
2076 AC_TYPE_PID_T
2077 AC_TYPE_OFF_T
2078 AC_TYPE_INTPTR_T
2079 AC_TYPE_UINTPTR_T
2080 AC_CHECK_TYPE(ino_t, unsigned long)
2081 AC_CHECK_TYPE(dev_t, unsigned long)
2082 AC_CHECK_TYPE(daddr_t, long)
2083 AC_CHECK_TYPE(major_t, int)
2084 AC_CHECK_TYPE(minor_t, int)
2085 AC_CHECK_TYPE(ssize_t, int)
2086 AC_STRUCT_ST_BLOCKS
2087 AC_STRUCT_ST_RDEV
2088 AC_STRUCT_TM
2089 AC_C_CONST
2090
2091 AC_CHECK_SIZEOF(char, 1)
2092 AC_CHECK_SIZEOF(short int, 2)
2093 AC_CHECK_SIZEOF(int, 4)
2094 AC_CHECK_SIZEOF(long int, 4)
2095 AC_CHECK_SIZEOF(long long int, 8)
2096 AC_CHECK_SIZEOF(int *, 4)
2097
2098 dnl Check for sys/types.h types
2099 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int,
2100    [
2101        AC_TRY_COMPILE(
2102           [
2103               #include <sys/types.h>
2104           ], [
2105               u_int a; a = 1;
2106           ], [
2107               ac_cv_have_u_int="yes"
2108           ], [
2109               ac_cv_have_u_int="no"
2110           ]
2111        )
2112    ]
2113 )
2114 if test "x$ac_cv_have_u_int" = "xyes" ; then
2115    AC_DEFINE(HAVE_U_INT)
2116    have_u_int=1
2117 fi
2118
2119 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t,
2120    [
2121        AC_TRY_COMPILE(
2122           [
2123               #include <sys/types.h>
2124           ], [
2125               intmax_t a; a = 1;
2126           ], [
2127               ac_cv_have_intmax_t="yes"
2128           ], [ 
2129               AC_TRY_COMPILE(
2130                  [
2131                      #include <stdint.h>
2132                  ], [
2133                      intmax_t a; a = 1;
2134                  ], [
2135                      ac_cv_have_intmax_t="yes"
2136                  ], [
2137                      ac_cv_have_intmax_t="no"
2138                  ]
2139               )
2140           ]
2141        )       
2142    ]
2143 )
2144 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
2145    AC_DEFINE(HAVE_INTMAX_T)
2146    have_intmax_t=1
2147 fi
2148
2149 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t,
2150    [
2151        AC_TRY_COMPILE(
2152           [
2153               #include <sys/types.h>
2154           ], [
2155               u_intmax_t a; a = 1;
2156           ], [
2157               ac_cv_have_u_intmax_t="yes"
2158           ], [ 
2159               AC_TRY_COMPILE(
2160                  [
2161                      #include <stdint.h>
2162                  ], [
2163                     u_intmax_t a; a = 1;
2164                  ], [
2165                     ac_cv_have_u_intmax_t="yes"
2166                  ], [
2167                     ac_cv_have_u_intmax_t="no"
2168                  ]
2169               )
2170           ]
2171        )
2172    ]
2173 )
2174 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
2175    AC_DEFINE(HAVE_U_INTMAX_T)
2176    have_u_intmax_t=1
2177 fi
2178
2179 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t,
2180    [
2181        AC_TRY_COMPILE(
2182           [
2183               #include <sys/types.h>
2184           ], [
2185               int8_t a; int16_t b; int32_t c; a = b = c = 1;
2186           ], [
2187               ac_cv_have_intxx_t="yes"
2188           ], [
2189               ac_cv_have_intxx_t="no"
2190           ]
2191        )
2192    ]
2193 )
2194 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
2195    AC_DEFINE(HAVE_INTXX_T)
2196    have_intxx_t=1
2197 fi
2198    
2199 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t,
2200    [
2201        AC_TRY_COMPILE(
2202           [
2203               #include <sys/types.h>
2204           ], [
2205               int64_t a; a = 1;
2206           ], [
2207               ac_cv_have_int64_t="yes"
2208           ], [
2209               ac_cv_have_int64_t="no"
2210           ]
2211        )
2212    ]
2213 )
2214 if test "x$ac_cv_have_int64_t" = "xyes" ; then
2215    AC_DEFINE(HAVE_INT64_T)
2216    have_int64_t=1
2217 fi
2218    
2219 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t,
2220    [
2221        AC_TRY_COMPILE(
2222           [
2223               #include <sys/types.h>
2224           ], [
2225               u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
2226           ], [
2227              ac_cv_have_u_intxx_t="yes"
2228           ], [
2229              ac_cv_have_u_intxx_t="no"
2230           ]
2231        )
2232    ]
2233 )
2234 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
2235    AC_DEFINE(HAVE_U_INTXX_T)
2236    have_u_intxx_t=1
2237 fi
2238
2239 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t,
2240    [
2241        AC_TRY_COMPILE(
2242           [
2243               #include <sys/types.h>
2244           ], [
2245               u_int64_t a; a = 1;
2246           ], [
2247              ac_cv_have_u_int64_t="yes"
2248           ], [
2249              ac_cv_have_u_int64_t="no"
2250           ]
2251        )
2252    ]
2253 )
2254 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
2255    AC_DEFINE(HAVE_U_INT64_T)
2256    have_u_int64_t=1
2257 fi
2258
2259 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
2260     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2261 then
2262    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2263    AC_TRY_COMPILE(
2264       [
2265           #include <sys/bitypes.h>
2266       ], [
2267           int8_t a; int16_t b; int32_t c;
2268           u_int8_t e; u_int16_t f; u_int32_t g;
2269           a = b = c = e = f = g = 1;
2270       ], [
2271           AC_DEFINE(HAVE_U_INTXX_T)
2272           AC_DEFINE(HAVE_INTXX_T)
2273           AC_DEFINE(HAVE_SYS_BITYPES_H)
2274           AC_MSG_RESULT(yes)
2275       ], [
2276           AC_MSG_RESULT(no)
2277       ]
2278    ) 
2279 fi
2280
2281 if test -z "$have_u_intxx_t" ; then
2282    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t,
2283       [
2284           AC_TRY_COMPILE(
2285              [
2286                  #include <sys/types.h>
2287              ], [
2288                  uint8_t a; uint16_t b; 
2289                  uint32_t c; a = b = c = 1;
2290              ], [
2291                 ac_cv_have_uintxx_t="yes"
2292              ], [
2293                 ac_cv_have_uintxx_t="no"
2294              ]
2295           )
2296       ]
2297    )
2298    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
2299       AC_DEFINE(HAVE_UINTXX_T)
2300    fi
2301 fi
2302
2303 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
2304     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2305 then
2306    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
2307    AC_TRY_COMPILE(
2308       [
2309           #include <sys/bitypes.h>
2310       ], [
2311           int64_t a; u_int64_t b; 
2312           a = b = 1;
2313       ], [
2314           AC_DEFINE(HAVE_U_INT64_T)
2315           AC_DEFINE(HAVE_INT64_T)
2316           AC_MSG_RESULT(yes)
2317       ], [
2318           AC_MSG_RESULT(no)
2319       ]
2320    ) 
2321 fi
2322
2323 if (test -z "$have_uintxx_t" && \
2324     test "x$ac_cv_header_sys_bitypes_h" = "xyes")
2325 then
2326    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
2327    AC_TRY_COMPILE(
2328       [
2329           #include <sys/bitypes.h>
2330       ], [
2331           uint8_t a; uint16_t b; 
2332           uint32_t c; a = b = c = 1;
2333       ], [
2334           AC_DEFINE(HAVE_UINTXX_T)
2335           AC_MSG_RESULT(yes)
2336       ], [
2337           AC_MSG_RESULT(no)
2338       ]
2339    ) 
2340 fi
2341
2342 dnl --------------------------------------------------------------------------
2343 dnl CHECKING FOR REQUIRED LIBRARY FUNCTIONS
2344 dnl --------------------------------------------------------------------------
2345 AC_CHECK_FUNCS( \
2346    fork \
2347    getcwd \
2348    gethostname \
2349    getpid \
2350    gettimeofday \
2351    setpgid \
2352    setpgrp \
2353    setsid \
2354    signal \
2355    strerror \
2356    strncmp \
2357    strncpy \
2358    vfprintf \
2359    ,,
2360    [echo 'configure: cannot find needed function.'; exit 1]
2361 )
2362
2363 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
2364 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
2365 AC_CHECK_FUNCS(posix_fadvise)
2366 AC_CHECK_FUNCS(fdatasync)
2367
2368 AC_CHECK_FUNCS(chflags) 
2369
2370 AC_CHECK_FUNCS(snprintf vsnprintf gethostid fseeko)
2371
2372 AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
2373    [
2374        AC_TRY_LINK(
2375           [
2376               #include <stdarg.h>
2377               void use_va_copy(va_list args){va_list args2; va_copy(args2,args); va_end(args2);}
2378               void call_use_va_copy(int junk,...){va_list args; va_start(args,junk); use_va_copy(args); va_end(args);}
2379           ], [
2380               call_use_va_copy(1,2,3)
2381           ], [
2382               ba_cv_va_copy=yes,
2383           ], [
2384               ba_cv_va_copy=no
2385           ]
2386        )
2387    ]
2388 )
2389 test $ba_cv_va_copy = yes && AC_DEFINE(HAVE_VA_COPY, 1, [Set if va_copy exists])
2390
2391 dnl --------------------------------------------------------------------------
2392 dnl CHECKING FOR THREAD SAFE FUNCTIONS
2393 dnl --------------------------------------------------------------------------
2394 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
2395
2396 # If resolver functions are not in libc check for -lnsl or -lresolv.
2397 AC_CHECK_FUNC(gethostbyname_r,
2398     AC_MSG_RESULT(using libc's resolver),
2399     AC_CHECK_LIB(nsl,gethostbyname_r)
2400     AC_CHECK_LIB(resolv,gethostbyname_r))
2401
2402 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
2403 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
2404 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
2405
2406 dnl ----------------------------
2407 dnl check sa_len of sockaddr
2408 dnl ----------------------------
2409 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
2410    [
2411        AC_TRY_COMPILE(
2412           [
2413               #include <sys/socket.h>
2414           ], [
2415               struct sockaddr s; s.sa_len;
2416           ], [
2417              ac_cv_struct_sockaddr_sa_len=yes
2418           ], [ac_cv_struct_sockaddr_sa_len=no
2419           ]
2420        )
2421    ]
2422 )
2423
2424 if test $ac_cv_struct_sockaddr_sa_len = yes; then
2425   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
2426 fi
2427
2428 AC_FUNC_STRFTIME
2429 AC_FUNC_VPRINTF
2430 AC_FUNC_ALLOCA
2431 AC_FUNC_GETMNTENT
2432 AC_CHECK_FUNCS(getmntinfo, [AC_DEFINE(HAVE_GETMNTINFO)])
2433 AC_FUNC_CLOSEDIR_VOID
2434 AC_FUNC_SETPGRP             dnl check for BSD setpgrp.
2435 # AC_FUNC_FNMATCH    dnl use local version
2436
2437 AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"])
2438
2439 AC_CHECK_LIB(sun, getpwnam)
2440
2441 AC_CHECK_HEADERS(zlib.h)
2442 AC_CHECK_LIB(z, deflate, [ZLIBS="-lz"])
2443 have_zlib=no
2444 if test x$ZLIBS = x-lz; then
2445    AC_DEFINE(HAVE_LIBZ)
2446    have_zlib=yes
2447 fi
2448 AC_SUBST(ZLIBS)
2449
2450 dnl
2451 dnl Check if we have AFS on this system
2452 dnl
2453 AFS_CFLAGS=""
2454 AFS_LIBS=""
2455 support_afs=auto
2456 AC_ARG_ENABLE(afs,
2457    AC_HELP_STRING([--disable-afs], [disable afs support @<:@default=auto@:>@]),
2458    [
2459        if test x$enableval = xyes; then
2460           support_afs=yes
2461        elif test x$enableval = xno; then
2462           support_afs=no
2463        fi
2464    ]
2465 )
2466
2467 have_afs=no
2468 if test x$support_afs = xyes -o x$support_afs = xauto; then
2469    AC_ARG_WITH(afsdir,
2470       AC_HELP_STRING([--with-afsdir@<:@=DIR@:>@], [Directory holding AFS includes/libs]),
2471       with_afsdir=$withval
2472    )
2473
2474    dnl
2475    dnl Search in standard places, or --with-afsdir not specified
2476    dnl
2477    if test x$with_afsdir = x; then
2478       for root in /usr /usr/local; do
2479          if test -d ${root}/include/afs/ ; then
2480             with_afsdir=${root}
2481             break
2482          fi
2483       done
2484    fi
2485
2486    AFS_CFLAGS="-I${with_afsdir}/include"
2487
2488    saved_CFLAGS="${CFLAGS}"
2489    CFLAGS="${AFS_CFLAGS} ${saved_CFLAGS}"
2490
2491    AC_CHECK_HEADERS(afs/stds.h)
2492
2493    CFLAGS="${saved_CFLAGS}"
2494
2495    dnl
2496    dnl See if we can find a libsys with the pioctl symbol in there
2497    dnl
2498    for dir in ${with_afsdir}/lib ${with_afsdir}/lib/afs
2499    do
2500       for arch_type in .a .so
2501       do
2502          A=`test -f ${dir}/libsys${arch_type} && nm ${dir}/libsys${arch_type} | grep pioctl`
2503          pkg=$?
2504          if test $pkg = 0; then
2505             have_afs=yes
2506             AFS_LIBS="-L${dir} -lsys -lrx -llwp ${dir}/util.a"
2507             break
2508          fi
2509       done
2510    done
2511
2512    if test x$support_afs = xyes -a $have_afs != yes; then
2513       AC_MSG_ERROR([afs support explicitly enabled but no supported afs implementation found, 
2514   please either load the afs libraries or rerun configure without --enable-afs])
2515    else
2516       if test $have_afs = yes; then
2517          AC_DEFINE([HAVE_AFS],1,[Defines if your system has AFS support])
2518          AC_DEFINE([HAVE_AFS_ACL],1,[Andrew FileSystem ACL support])
2519       fi
2520    fi
2521 fi
2522
2523 AC_SUBST(AFS_CFLAGS)
2524 AC_SUBST(AFS_LIBS)
2525
2526 dnl
2527 dnl Check for ACL support and libraries
2528 dnl
2529 support_acl=auto
2530 AC_ARG_ENABLE(acl,
2531    AC_HELP_STRING([--disable-acl], [disable acl support @<:@default=auto@:>@]),
2532    [
2533        if test x$enableval = xyes; then
2534           support_acl=yes
2535        elif test x$enableval = xno; then
2536           support_acl=no
2537        fi
2538    ]
2539 )
2540
2541 have_acl=no
2542 have_extended_acl=no
2543 if test x$support_acl = xyes -o x$support_acl = xauto; then
2544    AC_CHECK_HEADER(sys/acl.h, [ AC_DEFINE(HAVE_SYS_ACL_H,1,[Defines if your system have the sys/acl.h header file])] , )
2545
2546    dnl
2547    dnl First check for acl_get_file in libc
2548    dnl
2549    AC_CHECK_FUNC(acl_get_file,
2550       [
2551           have_acl=yes
2552       ]
2553    )
2554
2555    dnl
2556    dnl Check for acl_get_file in libacl (Linux)
2557    dnl
2558    if test $have_acl = no; then
2559       AC_CHECK_LIB(acl, acl_get_file,
2560          [
2561              have_acl=yes
2562              if test $have_afs = yes; then
2563                 dnl
2564                 dnl Because of possible naming conflict with AFS libacl make sure we use the one in /usr/lib64 or /usr/lib !!!
2565                 dnl
2566                 if test -d /usr/lib64/; then
2567                    FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
2568                 else
2569                    FDLIBS="-L/usr/lib -lacl $FDLIBS"
2570                 fi
2571              else
2572                 FDLIBS="-lacl $FDLIBS"
2573              fi
2574          ]
2575       )
2576    fi
2577
2578    dnl
2579    dnl Check for acl_get_file in libpacl (OSF1)
2580    dnl
2581    if test $have_acl = no; then
2582       AC_CHECK_LIB(pacl, acl_get_file,
2583          [
2584              have_acl=yes
2585              FDLIBS="-lpacl $FDLIBS"
2586          ]
2587       )
2588    fi
2589
2590    dnl
2591    dnl Check for acltotext and acl_totext (Solaris)
2592    dnl
2593    if test $have_acl = no -a \
2594            x${HAVE_SUN_OS}_TRUE = x; then
2595       AC_CHECK_LIB(sec, acltotext,
2596          [
2597              have_acl=yes
2598              FDLIBS="-lsec $FDLIBS"
2599
2600              AC_CHECK_LIB(sec, acl_totext,
2601                 [
2602                     have_extended_acl=yes
2603                 ]
2604              )
2605          ]
2606       )
2607    fi
2608
2609    dnl
2610    dnl Check for acl_get and aclx_get (AIX)
2611    dnl
2612    if test $have_acl = no -a \
2613            x${HAVE_AIX_OS}_TRUE = x; then
2614       AC_CHECK_FUNC(acl_get,
2615          [
2616              have_acl=yes
2617
2618              AC_CHECK_FUNC(aclx_get,
2619                 [
2620                     have_extended_acl=yes
2621                 ]
2622              )
2623          ]
2624       )
2625    fi
2626
2627    if test x$support_acl = xyes -a $have_acl != yes; then
2628       AC_MSG_ERROR([acl support explicitly enabled but no supported acl implementation found, 
2629   please either load the acl libraries or rerun configure without --enable-acl])
2630    else
2631       if test $have_acl = yes; then
2632          AC_DEFINE([HAVE_ACL],1,[Normal acl support])
2633       fi
2634
2635       if test $have_extended_acl = yes; then
2636          AC_DEFINE([HAVE_EXTENDED_ACL],1,[Extended acl support])
2637       fi
2638    fi
2639 fi
2640
2641 dnl
2642 dnl Check for XATTR support
2643 dnl
2644 support_xattr=auto
2645 AC_ARG_ENABLE(xattr,
2646    AC_HELP_STRING([--disable-xattr], [disable xattr support @<:@default=auto@:>@]),
2647    [
2648        if test x$enableval = xyes; then
2649           support_xattr=yes
2650        elif test x$enableval = xno; then
2651           support_xattr=no
2652        fi
2653    ]
2654 )
2655
2656 have_xattr=no
2657 if test x$support_xattr = xyes -o x$support_xattr = xauto; then
2658    dnl
2659    dnl First check for *BSD support
2660    dnl When running on a BSD variant
2661    dnl
2662    if test x${HAVE_FREEBSD_OS}_TRUE = x -o \
2663            x${HAVE_NETBSD_OS}_TRUE = x -o \
2664            x${HAVE_OPENBSD_OS}_TRUE = x; then
2665       AC_CHECK_HEADER(sys/extattr.h, [ AC_DEFINE(HAVE_SYS_EXTATTR_H,1,[Defines if your system have the sys/extattr.h header file])] , )
2666       AC_CHECK_HEADER(libutil.h, [ AC_DEFINE(HAVE_LIBUTIL_H,1,[Defines if your system have the libutil.h header file])] , )
2667       AC_CHECK_FUNCS(extattr_get_link extattr_set_link extattr_list_link,
2668          [
2669              have_xattr=yes
2670              AC_DEFINE([HAVE_EXTATTR_GET_LINK],1,[Define to 1 if you have the 'extattr_get_link' function.])
2671              AC_DEFINE([HAVE_EXTATTR_SET_LINK],1,[Define to 1 if you have the 'extattr_set_link' function.])
2672              AC_DEFINE([HAVE_EXTATTR_LIST_LINK],1,[Define to 1 if you have the 'extattr_list_link' function.])
2673          ]
2674       )
2675    
2676       if test $have_xattr = no; then
2677          AC_CHECK_FUNCS(extattr_get_file extattr_set_file extattr_list_file,
2678             [
2679                 have_xattr=yes
2680                 AC_DEFINE([HAVE_EXTATTR_GET_FILE],1,[Define to 1 if you have the 'extattr_get_file' function.])
2681                 AC_DEFINE([HAVE_EXTATTR_SET_FILE],1,[Define to 1 if you have the 'extattr_set_file' function.])
2682                 AC_DEFINE([HAVE_EXTATTR_LIST_FILE],1,[Define to 1 if you have the 'extattr_list_file' function.])
2683             ]
2684          )
2685       fi
2686    
2687       if test $have_xattr = yes; then
2688          have_extattr_string_in_libc=no
2689          AC_CHECK_FUNCS(extattr_namespace_to_string extattr_string_to_namespace,
2690             [
2691                 have_extattr_string_in_libc=yes
2692                 AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2693                 AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2694             ]
2695          )
2696
2697          dnl
2698          dnl If extattr_namespace_to_string and extattr_string_to_namespace are not in libc see if they are in libutil
2699          dnl
2700          if test $have_extattr_string_in_libc = no; then
2701             AC_CHECK_LIB(util, extattr_namespace_to_string extattr_string_to_namespace,
2702                [
2703                    AC_DEFINE([HAVE_EXTATTR_NAMESPACE_TO_STRING],1,[Define to 1 if you have the 'extattr_namespace_to_string' function.])
2704                    AC_DEFINE([HAVE_EXTATTR_STRING_TO_NAMESPACE],1,[Define to 1 if you have the 'extattr_string_to_namespace' function.])
2705                    FDLIBS="-lutil $FDLIBS"
2706                ]
2707             )
2708          fi
2709       fi
2710    fi
2711
2712    dnl
2713    dnl If we failed to find *BSD support try the AIX implementation of extented attributes (EA)
2714    dnl When running on AIX
2715    dnl
2716    if test $have_xattr = no -a \
2717            x${HAVE_AIX_OS}_TRUE = x; then
2718       AC_CHECK_HEADER(sys/ea.h, [ AC_DEFINE(HAVE_SYS_EA_H,1,[Defines if your system have the sys/ea.h header file])] , )
2719       AC_CHECK_FUNCS(llistea lgetea lsetea,
2720          [
2721              have_xattr=yes
2722              AC_DEFINE([HAVE_LLISTEA],1,[Define to 1 if you have the 'llistea' function.])
2723              AC_DEFINE([HAVE_LGETEA],1,[Define to 1 if you have the 'lgetea' function.])
2724              AC_DEFINE([HAVE_LSETEA],1,[Define to 1 if you have the 'lsetea' function.])
2725          ]
2726       )
2727
2728       if test $have_xattr = no; then
2729          AC_CHECK_FUNCS(listea getea setea,
2730             [
2731                 have_xattr=yes
2732                 AC_DEFINE([HAVE_LISTEA],1,[Define to 1 if you have the 'listea' function.])
2733                 AC_DEFINE([HAVE_GETEA],1,[Define to 1 if you have the 'getea' function.])
2734                 AC_DEFINE([HAVE_SETEA],1,[Define to 1 if you have the 'setea' function.])
2735             ]
2736          )
2737       fi
2738    fi
2739
2740    dnl
2741    dnl If we failed to find AIX support try the TRU64 implementation of extented attributes
2742    dnl when running on a TRU64 OS.
2743    dnl
2744    if test $have_xattr = no -a \
2745            x${HAVE_TRU64_OS}_TRUE = x; then
2746       AC_CHECK_HEADER(sys/proplist.h, [ AC_DEFINE(HAVE_SYS_PROPLIST_H,1,[Defines if your system have the sys/proplist.h header file])] , )
2747       AC_CHECK_FUNCS(getproplist get_proplist_entry sizeof_proplist_entry add_proplist_entry setproplist,
2748          [
2749              have_xattr=yes
2750              AC_DEFINE([HAVE_GETPROPLIST],1,[Define to 1 if you have the 'getproplist' function.])
2751              AC_DEFINE([HAVE_GET_PROPLIST_ENTRY],1,[Define to 1 if you have the 'get_proplist_entry' function.])
2752              AC_DEFINE([HAVE_SIZEOF_PROPLIST_ENTRY],1,[Define to 1 if you have the 'sizeof_proplist_entry' function.])
2753              AC_DEFINE([HAVE_ADD_PROPLIST_ENTRY],1,[Define to 1 if you have the 'add_proplist_entry' function.])
2754              AC_DEFINE([HAVE_SETPROPLIST],1,[Define to 1 if you have the 'setproplist' function.])
2755          ]
2756       )
2757    fi
2758
2759    dnl
2760    dnl If we failed to find TRU64 support try the SOLARIS implementation of extented and extensible attributes
2761    dnl when running on a Solaris.
2762    dnl
2763    if test $have_xattr = no -a \
2764            x${HAVE_SUN_OS}_TRUE = x; then
2765       AC_CHECK_HEADER(sys/attr.h, [ AC_DEFINE(HAVE_SYS_ATTR_H,1,[Defines if your system have the sys/attr.h header file])] , )
2766       AC_CHECK_HEADER(sys/nvpair.h, [ AC_DEFINE(HAVE_SYS_NVPAIR_H,1,[Defines if your system have the sys/nvpair.h header file])] , )
2767       AC_CHECK_HEADER(attr.h, [ AC_DEFINE(HAVE_ATTR_H,1,[Defines if your system have the attr.h header file])] , )
2768
2769       AC_CHECK_FUNCS(openat fstatat unlinkat fchownat futimesat,
2770          [
2771              have_xattr=yes
2772              AC_DEFINE([HAVE_OPENAT],1,[Define to 1 if you have the 'openat' function.])
2773              AC_DEFINE([HAVE_FSTATAT],1,[Define to 1 if you have the 'fstatat' function.])
2774              AC_DEFINE([HAVE_UNLINKAT],1,[Define to 1 if you have the 'unlinkat' function.])
2775              AC_DEFINE([HAVE_FCHOWNAT],1,[Define to 1 if you have the 'fchownat' function.])
2776              AC_DEFINE([HAVE_FUTIMESAT],1,[Define to 1 if you have the 'futimesat' function.])
2777          ]
2778       )
2779
2780       if test $have_xattr = yes; then
2781          AC_CHECK_LIB(nvpair, nvlist_next_nvpair,
2782             [
2783                 AC_DEFINE([HAVE_NVLIST_NEXT_NVPAIR],1,[Define to 1 if you have the 'nvlist_next_nvpair' function.])
2784                 FDLIBS="-lnvpair $FDLIBS"
2785             ]
2786          )
2787       fi
2788    fi
2789
2790    dnl
2791    dnl If we failed to find Solaris support try the generic xattr support code
2792    dnl
2793    if test $have_xattr = no; then
2794       AC_CHECK_HEADER(sys/xattr.h, [ AC_DEFINE(HAVE_SYS_XATTR_H,1,[Defines if your system have the sys/xattr.h header file])] , )
2795       AC_CHECK_FUNCS(llistxattr lgetxattr lsetxattr,
2796          [
2797              have_xattr=yes
2798              AC_DEFINE([HAVE_LLISTXATTR],1,[Define to 1 if you have the 'llistxattr' function.])
2799              AC_DEFINE([HAVE_LGETXATTR],1,[Define to 1 if you have the 'lgetxattr' function.])
2800              AC_DEFINE([HAVE_LSETXATTR],1,[Define to 1 if you have the 'lsetxattr' function.])
2801          ]
2802       )
2803
2804       if test $have_xattr = no; then
2805          AC_CHECK_FUNCS(listxattr getxattr setxattr,
2806             [
2807                 have_xattr=yes
2808                 AC_DEFINE([HAVE_LISTXATTR],1,[Define to 1 if you have the 'listxattr' function.])
2809                 AC_DEFINE([HAVE_GETXATTR],1,[Define to 1 if you have the 'getxattr' function.])
2810                 AC_DEFINE([HAVE_SETXATTR],1,[Define to 1 if you have the 'setxattr' function.])
2811             ]
2812          )
2813       fi
2814    fi
2815
2816    if test x$support_xattr = xyes -a $have_xattr != yes; then
2817       AC_MSG_ERROR([xattr support explicitly enabled but no supported xattr implementation found, 
2818   please either load the xattr libraries or rerun configure without --enable-xattr])
2819    else
2820       if test $have_xattr = yes; then
2821          AC_DEFINE([HAVE_XATTR],1,[Extended Attributes support])
2822       fi
2823    fi
2824 fi
2825
2826 dnl
2827 dnl Check for pthread libraries
2828 dnl
2829 PTHREAD_LIB=""
2830 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
2831    [
2832        AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
2833           [
2834               AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
2835                  [
2836                      AC_CHECK_FUNC(pthread_create)
2837                  ]
2838               )
2839           ]
2840        )
2841    ]
2842 )
2843
2844 dnl
2845 dnl Check for headers, functions and libraries required to support
2846 dnl keeping readall capabilities
2847 dnl
2848 AC_CHECK_HEADERS(sys/prctl.h sys/capability.h)
2849 AC_CHECK_FUNCS(prctl setreuid)
2850 AC_CHECK_LIB([cap], [cap_set_proc], [CAP_LIBS="-lcap"], [CAP_LIBS=])
2851 if test x$CAP_LIBS = x-lcap; then
2852    AC_DEFINE(HAVE_LIBCAP, 1, [Define if you have libcap])
2853 fi
2854 AC_SUBST(CAP_LIBS)
2855
2856 AC_SUBST(FDLIBS)
2857 AC_DEFINE(FDLIBS)
2858
2859 CFLAGS=${CFLAGS--O}
2860
2861 if test x$have_gcc = xyes ; then
2862    CPPFLAGS="$CPPFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2863    CFLAGS="$CFLAGS -fno-strict-aliasing -fno-exceptions -fno-rtti"
2864 fi
2865 LDFLAGS=${LDFLAGS--O}
2866 DB_LIBS="${SQL_LFLAGS}"
2867 CPPFLAGS="$CPPFLAGS"
2868 CFLAGS="$CFLAGS"
2869 AC_SUBST(DEBUG)
2870 AC_SUBST(DINCLUDE)
2871 AC_SUBST(CFLAGS)
2872 AC_SUBST(CPPFLAGS)
2873 AC_SUBST(LDFLAGS)
2874 AC_SUBST(X_CFLAGS)
2875 AC_SUBST(DEFS)
2876 AC_SUBST(LIBS)
2877 AC_SUBST(DLIB)
2878 AC_SUBST(DB_LIBS)
2879 AC_SUBST(X_LIBS)
2880 AC_SUBST(X_EXTRA_LIBS)
2881 AC_SUBST(WCFLAGS)
2882 AC_SUBST(WLDFLAGS)
2883 AC_SUBST(WRAPLIBS)
2884
2885 dnl extra configurable objects
2886 OBJLIST=
2887 AC_SUBST(OBJLIST)
2888
2889 lld="lld"
2890 llu="llu"
2891
2892 WCFLAGS=
2893 WLDFLAGS=
2894
2895 dnl
2896 dnl Finally we set appropriate distribution specific
2897 dnl  variables and defaults
2898 dnl
2899 dnl PFILES are platform specific files
2900 PFILES="platforms/Makefile"
2901 PSCMD="ps -e"
2902 WIN32=
2903 MACOSX=
2904
2905 hostname=`uname -n | cut -d '.' -f 1`
2906 if test x${hostname} = x ; then
2907    hostname="localhost"
2908 fi
2909 dnl Make sure hostname is resolved
2910 ping -c 1 $hostname 2>/dev/null 1>/dev/null
2911 if test ! $? = 0; then
2912   hostname="localhost"
2913 fi
2914
2915 case "$DISTNAME" in
2916 aix)
2917    DISTVER=`uname -r`
2918    PSCMD="ps -e -o pid,comm"
2919    PFILES="${PFILES} \
2920       platforms/aix/Makefile"
2921    TAPEDRIVE="/dev/rmt0.1" 
2922   ;;     
2923 alpha)
2924    DISTVER=`uname -r`
2925    PTHREAD_LIB="-lpthread -lexc"
2926    if test "${CC}" = "gcc" ; then
2927       lld="lld"
2928       llu="llu"
2929    else
2930       lld="ld"
2931       llu="lu"
2932    fi
2933    TAPEDRIVE="/dev/nrmt0"
2934   ;;
2935 bsdi)
2936    DISTVER=`uname -a |awk '{print $3}'`
2937    TAPEDRIVE="/dev/nrmt0"
2938    PTHREAD_LIB="-pthread"
2939    CFLAGS="${CFLAGS} -pthread"
2940    PSCMD="ps -ax -o pid,command"
2941    lld="qd"
2942    llu="qu"
2943    PFILES="${PFILES} \
2944        platforms/bsdi/Makefile \
2945        platforms/bsdi/bacula-fd \
2946        platforms/bsdi/bacula-sd \
2947        platforms/bsdi/bacula-dir"
2948    largefile_support="yes"
2949   ;;
2950 cygwin)
2951    DISTVER=`uname -a |awk '{print $3}'`
2952    TAPEDRIVE="/dev/nrst0"
2953    WIN32=win32
2954    WCFLAGS="-mwindows"
2955    WLDFLAGS="-mwindows"
2956   ;;
2957 darwin)
2958    DISTVER=`uname -r`
2959    TAPEDRIVE="/dev/nst0"
2960    PSCMD="ps -e -o pid,command"
2961    MACOSX=macosx
2962    PFILES="${PFILES} \
2963       platforms/darwin/Makefile"
2964   ;;
2965 osx)
2966    DISTVER=`uname -r`
2967    TAPEDRIVE="/dev/nst0"
2968    PSCMD="ps -e -o pid,command"
2969    MACOSX=macosx
2970    PFILES="${PFILES} \
2971       platforms/osx/Makefile"
2972   ;;
2973 debian)
2974    if `test -f /etc/apt/sources.list && grep -q ubuntu /etc/apt/sources.list`; then
2975       DISTNAME="ubuntu"
2976    fi
2977    DISTVER=`cat /etc/debian_version`
2978    if test -f /etc/lsb-release ; then
2979       . /etc/lsb-release
2980       if test "x$DISTRIB_ID" != "x" ; then
2981          DISTNAME=$DISTRIB_ID
2982       fi
2983       if test "x$DISTRIB_RELEASE" != "x" ; then
2984          DISTVER=$DISTRIB_RELEASE
2985       fi
2986    fi
2987    if test "$DISTNAME" = "Ubuntu" ; then
2988       DISTNAME="ubuntu"
2989    fi
2990    TAPEDRIVE="/dev/nst0"
2991    PSCMD="ps -e -o pid,command"
2992    if test "$DISTNAME" = "ubuntu" ; then
2993       PFILES="${PFILES} \
2994          platforms/ubuntu/Makefile \
2995          platforms/ubuntu/bacula-fd \
2996          platforms/ubuntu/bacula-sd \
2997          platforms/ubuntu/bacula-dir"
2998    else 
2999       PFILES="${PFILES} \
3000          platforms/debian/Makefile \
3001          platforms/debian/bacula-fd \
3002          platforms/debian/bacula-sd \
3003          platforms/debian/bacula-dir"
3004    fi
3005   ;;
3006 freebsd)
3007    DISTVER=`uname -a |awk '{print $3}'`
3008    VER=`echo $DISTVER | cut -c 1`
3009    if test x$VER = x4 ; then
3010       PTHREAD_LIB="${PTHREAD_LIBS:--pthread}"
3011       CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS:--pthread}"
3012    fi
3013    lld="qd"
3014    llu="qu"
3015    TAPEDRIVE="/dev/nrsa0"
3016    PSCMD="ps -ax -o pid,command"
3017    PFILES="${PFILES} \
3018        platforms/freebsd/Makefile \
3019        platforms/freebsd/bacula-fd \
3020        platforms/freebsd/bacula-sd \
3021        platforms/freebsd/bacula-dir"
3022    largefile_support="yes"
3023   ;;
3024 hpux)
3025    PSCMD="UNIX95=1; ps -e -o pid,comm"
3026    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
3027    DISTVER=`uname -r`
3028    TAPEDRIVE="/dev/rmt/0hnb"
3029    PTHREAD_LIB="-lpthread"
3030    AC_DEFINE([_INCLUDE_LONGLONG])
3031   ;;
3032 irix)
3033    DISTVER=`uname -r`
3034    TAPEDRIVE="/dev/rmt/0cbn"
3035    PSCMD="ps -e -o pid,comm"
3036    PFILES="${PFILES} \
3037        platforms/irix/Makefile \
3038        platforms/irix/bacula-fd \
3039        platforms/irix/bacula-sd \
3040        platforms/irix/bacula-dir"
3041   ;;
3042 netbsd)
3043    DISTVER=`uname -a |awk '{print $3}'`
3044    lld="qd"
3045    llu="qu"
3046    TAPEDRIVE="/dev/nrst0"
3047    PSCMD="ps -ax -o pid,command"
3048    PTHREAD_LIB="-pthread"
3049    CFLAGS="${CFLAGS} -pthread"
3050   ;;
3051 openbsd)
3052    DISTVER=`uname -a |awk '{print $3}'`
3053    lld="qd"
3054    llu="qu"
3055    TAPEDRIVE="/dev/nrst0"
3056    PSCMD="ps -ax -o pid,command"
3057    PTHREAD_LIB="-pthread"
3058    CFLAGS="${CFLAGS} -pthread"
3059    PFILES="${PFILES} \
3060        platforms/openbsd/Makefile \
3061        platforms/openbsd/bacula-fd \
3062        platforms/openbsd/bacula-sd \
3063        platforms/openbsd/bacula-dir"
3064   ;;
3065 redhat)
3066    if test -f /etc/whitebox-release ; then
3067       f=/etc/whitebox-release
3068    else
3069       f=/etc/redhat-release
3070    fi
3071    if test `cat $f | grep release |\
3072          cut -f 3 -d ' '`x = "Enterprise"x ; then
3073       DISTVER="Enterprise "`cat $f | grep release |\
3074           cut -f 6 -d ' '`
3075    else
3076        DISTVER=`cat /etc/redhat-release | grep release |\
3077            cut -f 5 -d ' '`
3078    fi
3079    TAPEDRIVE="/dev/nst0"
3080    PSCMD="ps -e -o pid,command"
3081    PFILES="${PFILES} \
3082        platforms/redhat/Makefile \
3083        platforms/redhat/bacula-fd \
3084        platforms/redhat/bacula-sd \
3085        platforms/redhat/bacula-dir
3086        "
3087   ;;
3088 mandrake)
3089    DISTVER=`cat /etc/mandrake-release | grep release |\
3090       cut -f 5 -d ' '`
3091    TAPEDRIVE="/dev/nst0"
3092    PSCMD="ps -e -o pid,command"
3093    PFILES="${PFILES} \
3094        platforms/mandrake/Makefile \
3095        platforms/mandrake/bacula-fd \
3096        platforms/mandrake/bacula-sd \
3097        platforms/mandrake/bacula-dir \
3098        "
3099   ;;
3100 gentoo)
3101    DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
3102    TAPEDRIVE="/dev/nst0"
3103    PSCMD="ps -e -o pid,command"
3104    PFILES="${PFILES} \
3105        platforms/gentoo/Makefile \
3106     platforms/gentoo/bacula-init \
3107        platforms/gentoo/bacula-fd \
3108        platforms/gentoo/bacula-sd \
3109        platforms/gentoo/bacula-dir"
3110   ;;
3111 slackware)
3112    DISTVER=`cat /etc/slackware-version`
3113    TAPEDRIVE="/dev/nst0"
3114    PSCMD="ps -e -o pid,command"
3115    PFILES="${PFILES} \
3116        platforms/slackware/Makefile \
3117        platforms/slackware/rc.bacula-fd \
3118        platforms/slackware/rc.bacula-sd \
3119        platforms/slackware/rc.bacula-dir\
3120        platforms/slackware/functions.bacula"
3121   ;;
3122 solaris)
3123    DISTVER=`uname -r`
3124    TAPEDRIVE="/dev/rmt/0cbn"
3125    PSCMD="ps -e -o pid,comm"
3126    PFILES="${PFILES} \
3127        platforms/solaris/Makefile \
3128        platforms/solaris/bacula-fd \
3129        platforms/solaris/bacula-sd \
3130        platforms/solaris/bacula-dir"
3131    if test x$DISTVER = x5.6 ; then
3132        AC_DEFINE(HAVE_OLD_SOCKOPT)
3133    fi
3134    LIBS="$LIBS -lresolv -lrt"
3135   ;;
3136 suse)
3137    DISTVER=`cat /etc/SuSE-release |grep VERSION|\
3138        cut -f 3 -d ' '`
3139    TAPEDRIVE="/dev/nst0"
3140    PSCMD="ps -e -o pid,command"
3141    PFILES="${PFILES} \
3142        platforms/suse/Makefile \
3143        platforms/suse/bacula-fd \
3144        platforms/suse/bacula-sd \
3145        platforms/suse/bacula-dir \
3146        platforms/suse/bacula"
3147   ;;
3148 suse5)
3149    DISTNAME=suse
3150    DISTVER=5.x
3151    TAPEDRIVE="/dev/nst0"
3152    PSCMD="ps -e -o pid,command"
3153    PFILES="${PFILES} \
3154        platforms/suse/Makefile \
3155        platforms/suse/bacula-fd \
3156        platforms/suse/bacula-sd \
3157        platforms/suse/bacula-dir"
3158   ;;
3159 unknown)
3160    DISTVER=unknown
3161    TAPEDRIVE="/dev/nst0"
3162   ;;
3163 *)
3164   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
3165   ;;
3166 esac  
3167
3168 AC_SUBST(hostname)
3169
3170 LIBS="$PTHREAD_LIB $LIBS"
3171
3172 AC_DEFINE_UNQUOTED(lld, "$lld")
3173 AC_DEFINE_UNQUOTED(llu, "$llu")
3174 AC_SUBST(TAPEDRIVE)
3175 AC_SUBST(PSCMD)
3176 AC_SUBST(WIN32)
3177 AC_SUBST(MACOSX)
3178 AC_SUBST(DISTNAME)
3179 AC_SUBST(DISTVER)
3180
3181 dnl common parts of the Makefile
3182 MCOMMON=./autoconf/Make.common
3183 AC_SUBST_FILE(MCOMMON)
3184
3185 dnl Insanity check
3186 if test "x${subsysdir}" = "x${sbindir}" ; then
3187    echo " "
3188    echo " "
3189    echo "You have set both --sbindir and --with-subsys-dir"
3190    echo "  equal to: ${subsysdir} "
3191    echo "This is not permitted. Please reconfigure."
3192    echo " "
3193    echo "Aborting configuration ..."
3194    echo " "
3195    echo " "
3196    exit 1
3197 fi 
3198
3199 AC_OUTPUT([autoconf/Make.common \
3200            Makefile \
3201            manpages/Makefile \
3202            scripts/startmysql \
3203            scripts/stopmysql \
3204            scripts/btraceback \
3205            scripts/startit \
3206            scripts/stopit \
3207            scripts/bconsole \
3208            scripts/gconsole \
3209            scripts/bacula \
3210            scripts/bacula-ctl-dir \
3211            scripts/bacula-ctl-fd \
3212            scripts/bacula-ctl-sd \
3213            scripts/devel_bacula \
3214            scripts/Makefile \
3215            scripts/logrotate \
3216            scripts/bacula.desktop.gnome1 \
3217            scripts/bacula.desktop.gnome2 \
3218            scripts/bacula.desktop.gnome1.consolehelper \
3219            scripts/bacula.desktop.gnome2.consolehelper \
3220            scripts/bacula.desktop.gnome1.xsu \
3221            scripts/bacula.desktop.gnome2.xsu \
3222            scripts/bgnome-console.console_apps \
3223            scripts/mtx-changer \
3224            scripts/disk-changer \
3225            scripts/dvd-handler \
3226            scripts/dvd-simulator \
3227            scripts/bacula-tray-monitor.desktop \
3228            scripts/logwatch/Makefile \
3229            scripts/logwatch/logfile.bacula.conf \
3230            scripts/wxconsole.console_apps \
3231            scripts/wxconsole.desktop.consolehelper \
3232            scripts/wxconsole.desktop.xsu \
3233            scripts/bat.desktop \
3234            scripts/bat.desktop.xsu \
3235            scripts/bat.desktop.consolehelper \
3236            scripts/bat.console_apps \
3237            src/Makefile \
3238            src/host.h \
3239            src/console/Makefile \
3240            src/console/bconsole.conf \
3241            src/qt-console/bat.conf \
3242            src/qt-console/bat.pro \
3243            src/qt-console/bat.pro.mingw32 \
3244            src/qt-console/install_conf_file \
3245            src/wx-console/Makefile \
3246            src/wx-console/bwx-console.conf \
3247            src/tray-monitor/Makefile \
3248            src/tray-monitor/tray-monitor.conf \
3249            src/dird/Makefile \
3250            src/dird/bacula-dir.conf \
3251            src/lib/Makefile \
3252            src/stored/Makefile \
3253            src/stored/bacula-sd.conf \
3254            src/filed/Makefile \
3255            src/filed/bacula-fd.conf \
3256            src/cats/Makefile \
3257            src/cats/make_catalog_backup.pl \
3258            src/cats/make_catalog_backup \
3259            src/cats/delete_catalog_backup \
3260            src/cats/create_postgresql_database \
3261            src/cats/update_postgresql_tables \
3262            src/cats/make_postgresql_tables \
3263            src/cats/grant_postgresql_privileges \
3264            src/cats/drop_postgresql_tables \
3265            src/cats/drop_postgresql_database \
3266            src/cats/create_mysql_database \
3267            src/cats/update_mysql_tables \
3268            src/cats/make_mysql_tables \
3269            src/cats/grant_mysql_privileges \
3270            src/cats/drop_mysql_tables \
3271            src/cats/drop_mysql_database \
3272            src/cats/create_sqlite3_database \
3273            src/cats/update_sqlite3_tables \
3274            src/cats/make_sqlite3_tables \
3275            src/cats/grant_sqlite3_privileges \
3276            src/cats/drop_sqlite3_tables \
3277            src/cats/drop_sqlite3_database \
3278            src/cats/create_ingres_database \
3279            src/cats/update_ingres_tables \
3280            src/cats/make_ingres_tables \
3281            src/cats/grant_ingres_privileges \
3282            src/cats/drop_ingres_tables \
3283            src/cats/drop_ingres_database \
3284            src/cats/sqlite \
3285            src/cats/mysql \
3286            src/cats/create_bacula_database \
3287            src/cats/update_bacula_tables \
3288            src/cats/grant_bacula_privileges \
3289            src/cats/make_bacula_tables \
3290            src/cats/drop_bacula_tables \
3291            src/cats/drop_bacula_database \
3292            src/findlib/Makefile \
3293            src/tools/Makefile \
3294            src/plugins/fd/Makefile \
3295            src/plugins/sd/Makefile \
3296            src/plugins/dir/Makefile \
3297            src/win32/Makefile.inc \
3298            po/Makefile.in \
3299            updatedb/update_mysql_tables_9_to_10 \
3300            updatedb/update_sqlite3_tables_9_to_10 \
3301            updatedb/update_postgresql_tables_9_to_10 \
3302            updatedb/update_mysql_tables_10_to_11 \
3303            updatedb/update_sqlite3_tables_10_to_11 \
3304            updatedb/update_postgresql_tables_10_to_11 \
3305            updatedb/update_mysql_tables_11_to_12 \
3306            updatedb/update_sqlite3_tables_11_to_12 \
3307            updatedb/update_postgresql_tables_11_to_12 \
3308            examples/nagios/check_bacula/Makefile \
3309            $PFILES ],  
3310      [ ]
3311 )
3312
3313 if test "${support_bat}" = "yes" ; then
3314    if test "x$QMAKE" = "xnone"; then
3315       AC_MSG_ERROR([Could not find qmake $PATH. Check your Qt installation])
3316    fi
3317
3318    QMAKEBIN="qmake"
3319    cd src/qt-console
3320    echo "Creating bat Makefile"
3321    touch bat
3322    chmod 755 bat
3323    rm -f Makefile
3324    $QMAKEBIN
3325    ${MAKE:-make} clean
3326    cd ${BUILD_DIR}
3327 fi
3328
3329 dnl
3330 dnl if CC is gcc, we can rebuild the dependencies (since the depend rule
3331 dnl requires gcc).  If it's not, don't rebuild dependencies
3332 dnl
3333 if test X"$GCC" = "Xyes" ; then
3334   echo "Doing make of dependencies"
3335   ${MAKE:-make} depend
3336 fi
3337
3338 cd src/qt-console
3339 chmod 755 install_conf_file build-depkgs-qt-console
3340 cd ${BUILD_DIR}
3341
3342 cd scripts
3343 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
3344 chmod 755 dvd-handler dvd-simulator
3345 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
3346 cd ..
3347
3348 c=updatedb
3349 chmod 755 $c/update_mysql_tables_10_to_11   $c/update_sqlite3_tables_10_to_11
3350 chmod 755 $c/update_postgresql_tables_10_to_11
3351 chmod 755 $c/update_mysql_tables_11_to_12   $c/update_sqlite3_tables_11_to_12
3352 chmod 755 $c/update_postgresql_tables_11_to_12
3353
3354
3355 c=src/cats
3356
3357 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
3358 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
3359
3360 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
3361 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
3362
3363 chmod 755 $c/create_sqlite3_database   $c/update_sqlite3_tables  $c/make_sqlite3_tables
3364 chmod 755 $c/grant_sqlite3_privileges  $c/drop_sqlite3_tables    $c/drop_sqlite3_database
3365
3366 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
3367 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
3368
3369 chmod 755 $c/create_ingres_database  $c/update_ingres_tables $c/make_ingres_tables
3370 chmod 755 $c/grant_ingres_privileges $c/drop_ingres_tables   $c/drop_ingres_database
3371
3372
3373 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup  $c/make_catalog_backup.pl
3374 chmod 755 $c/sqlite
3375 chmod 755 $c/mysql
3376
3377 chmod 755 src/win32/build-depkgs-mingw32
3378
3379 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
3380    largefile_support="yes"
3381 fi
3382
3383 dnl Only try to find out the version number of the compiler when we know its some kind of GCC compiler
3384 if test X"$GCC" = "Xyes" ; then
3385    dnl
3386    dnl A whole lot of hand springs to get the compiler version.
3387    dnl  This is because gcc changed the output in version 3.0
3388    dnl
3389    CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3390    if test "x${CCVERSION}" = "x" ; then
3391       CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3392    fi
3393    CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
3394    if test x"${CXXVERSION}" = x ; then
3395       CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
3396    fi
3397 fi
3398
3399 # clean up any old junk
3400 echo " "
3401 echo "Cleaning up"
3402 echo " "
3403 ${MAKE:-make} clean
3404
3405 if test "x${db_type}" = "xInternal" ; then
3406    echo " "
3407    echo " "
3408    echo "You have not specified either --enable-client-only or one of the"
3409    echo "  supported databases: MySQL, PostgreSQL, Ingres, SQLite3 or DBI."
3410    echo "  This is not permitted. Please reconfigure."
3411    echo " "
3412    echo "Aborting the configuration ..."
3413    echo " "
3414    echo " "
3415    exit 1
3416 fi
3417
3418 echo "
3419 Configuration on `date`:
3420
3421    Host:                    ${host}${post_host} -- ${DISTNAME} ${DISTVER}
3422    Bacula version:          ${BACULA} ${VERSION} (${DATE})
3423    Source code location:    ${srcdir}
3424    Install binaries:        ${sbindir}
3425    Install libraries:       ${libdir}
3426    Install config files:    ${sysconfdir}
3427    Scripts directory:       ${scriptdir}
3428    Archive directory:       ${archivedir}
3429    Working directory:       ${working_dir}
3430    PID directory:           ${piddir}
3431    Subsys directory:        ${subsysdir}
3432    Man directory:           ${mandir}
3433    Data directory:          ${datarootdir}
3434    Plugin directory:        ${plugindir}
3435    C Compiler:              ${CC} ${CCVERSION}
3436    C++ Compiler:            ${CXX} ${CXXVERSION}
3437    Compiler flags:          ${WCFLAGS} ${CFLAGS} 
3438    Linker flags:            ${WLDFLAGS} ${LDFLAGS}
3439    Libraries:               ${LIBS}
3440    Statically Linked Tools: ${support_static_tools}
3441    Statically Linked FD:    ${support_static_fd}
3442    Statically Linked SD:    ${support_static_sd}
3443    Statically Linked DIR:   ${support_static_dir}
3444    Statically Linked CONS:  ${support_static_cons}
3445    Database type:           ${db_type}
3446    Database port:           ${db_port}
3447    Database lib:            ${DB_LIBS}
3448    Database name:           ${db_name}
3449    Database user:           ${db_user}
3450  
3451    Job Output Email:        ${job_email}
3452    Traceback Email:         ${dump_email}
3453    SMTP Host Address:       ${smtp_host}
3454  
3455    Director Port:           ${dir_port}
3456    File daemon Port:        ${fd_port}
3457    Storage daemon Port:     ${sd_port}
3458  
3459    Director User:           ${dir_user}
3460    Director Group:          ${dir_group}
3461    Storage Daemon User:     ${sd_user}
3462    Storage DaemonGroup:     ${sd_group}
3463    File Daemon User:        ${fd_user}
3464    File Daemon Group:       ${fd_group}
3465  
3466    SQL binaries Directory   ${SQL_BINDIR}
3467  
3468    Large file support:      $largefile_support
3469    Bacula conio support:    ${got_conio} ${CONS_LIBS}
3470    readline support:        ${got_readline} ${PRTREADLINE_SRC}
3471    TCP Wrappers support:    ${TCPW_MSG} ${WRAPLIBS}
3472    TLS support:             ${support_tls}
3473    Encryption support:      ${support_crypto} 
3474    ZLIB support:            ${have_zlib}
3475    enable-smartalloc:       ${support_smartalloc} 
3476    enable-lockmgr:          ${support_lockmgr}
3477    bat support:             ${support_bat}
3478    enable-gnome:            ${support_gnome} ${gnome_version}
3479    enable-bwx-console:      ${support_wx_console} ${wx_version}
3480    enable-tray-monitor:     ${support_tray_monitor}
3481    client-only:             ${build_client_only}
3482    build-dird:              ${build_dird}
3483    build-stored:            ${build_stored}
3484    Plugin support:          ${have_plugins}
3485    AFS support:             ${have_afs}
3486    ACL support:             ${have_acl}
3487    XATTR support:           ${have_xattr}
3488    Python support:          ${support_python} ${PYTHON_LIBS}
3489    Batch insert enabled:    ${support_batch_insert}
3490
3491   " > config.out
3492
3493 # create a small shell script useful for support with
3494 # configure options and config.out info
3495 cat > scripts/bacula_config << EOF
3496 #!/bin/sh
3497 cat << __EOC__
3498 $ $0 $ac_configure_args
3499 EOF
3500 cat config.out >> scripts/bacula_config
3501 echo __EOC__ >> scripts/bacula_config
3502 chmod 755 scripts/bacula_config
3503
3504 cat config.out
3505
3506 # Display a warning message if postgresql client lib is <= 8.1
3507 if test x$DB_TYPE = xpostgresql -a x$ac_cv_lib_pq_PQisthreadsafe != xyes \
3508         -a x$support_batch_insert = xyes
3509 then
3510         echo "WARNING: Your PostgreSQL client library is too old to detect "
3511         echo " if it was compiled with --enable-thread-safety, consider to"
3512         echo " upgrade it in order to avoid problems with Batch insert mode"
3513         echo
3514 fi