]> git.sur5r.net Git - bacula/bacula/blob - bacula/autoconf/configure.in
Undo a few changes in address_conf.h and
[bacula/bacula] / bacula / autoconf / configure.in
1 lal#
2 dnl#
3 dnl# Process this file with autoconf to produce a configure script.
4 dnl#
5 AC_INIT(src/version.h)
6 BUILD_DIR=`pwd`
7 cd ..
8 TOP_DIR=`pwd`
9 cd ${BUILD_DIR}
10 AC_SUBST(BUILD_DIR)
11 AC_CONFIG_AUX_DIR(${BUILD_DIR}/autoconf)
12 AC_CONFIG_HEADER(src/config.h:autoconf/config.h.in)
13
14 dnl require a recent autoconf
15 AC_PREREQ(2.13)
16
17
18 dnl search for true and false programs.
19 AC_PATH_PROGS(TRUEPRG, true, :)
20 AC_PATH_PROGS(FALSEPRG, false, :)
21
22 #AC_CANONICAL_HOST
23
24 dnl bacula version
25 VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
26 DATE=`sed -n -e 's/^.*[ \t]*BDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
27 LSMDATE=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
28 AC_SUBST(VERSION)dnl 
29 AC_SUBST(DATE)dnl 
30 AC_SUBST(LSMDATE)dnl 
31 echo "configuring for bacula $VERSION ($DATE)"
32
33
34 dnl -------------------------------------------------------
35 dnl# Check for compiler.
36 dnl ------------------------------------------------------
37
38 AC_PROG_CC
39 AC_PROG_CXX
40 AC_PROG_CC_C_O                  dnl Determine if C compiler support -c -o.
41 AC_PROG_GCC_TRADITIONAL         dnl Determine if ioctl() need -traditional.
42
43 if test x$CC = xgcc
44 then
45    AC_DEFINE(HAVE_GCC)
46 fi
47
48 dnl -------------------------------------------------------
49 dnl# Check for programs.
50 dnl ------------------------------------------------------
51 AC_PROG_INSTALL
52 AC_PROG_RANLIB
53 AC_PATH_PROG(MV, mv, mv)
54 AC_PATH_PROG(RM, rm, rm)
55 AC_PATH_PROG(CP, cp, cp)
56 AC_PATH_PROG(SED, sed, sed)
57 AC_PATH_PROG(AWK, awk, awk)
58 AC_PATH_PROG(ECHO, echo, echo)
59 AC_PATH_PROG(CMP, cmp, cmp)
60 AC_PATH_PROG(TBL, tbl, tbl)
61 AC_PATH_PROG(AR, ar, ar)
62 dnl AC_PATH_PROG(RANLIB, ranlib, ranlib)
63 AC_PATH_PROG(OPENSSL, openssl, none)
64 AC_PATH_PROG(MTX, mtx, mtx)
65 AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config)
66 AC_PATH_PROG(WXCONFIG, wx-config, wx-config)
67
68 test -n "$ARFLAG" || ARFLAGS="cr"
69 AC_SUBST(ARFLAGS)
70
71 MAKE_SHELL=/bin/sh
72 AC_SUBST(MAKE_SHELL)
73
74 AC_SUBST(LOCAL_LIBS)
75 AC_SUBST(LOCAL_CFLAGS)
76 AC_SUBST(LOCAL_LDFLAGS)
77 AC_SUBST(LOCAL_DEFS)
78
79
80
81 dnl --------------------------------------------------
82 dnl Bacula OP Sys determination (see aclocal.m4)
83 dnl --------------------------------------------------
84 BA_CHECK_OPSYS
85
86 # -----------------------------------------------------------
87 dnl Bacula OPSys Distribution determination (see aclocal.m4)
88 # ----------------------------------------------------------
89 BA_CHECK_OPSYS_DISTNAME
90
91 # -----------------------------------------------------------
92 dnl Check for gnome stuff for gnome-console
93 # ----------------------------------------------------------
94 AM_ACLOCAL_INCLUDE(gnome-macros)
95
96 # ------------------------------------------------------------------
97 #  If the user has not set --prefix, we set our default to nothing.
98 #  In this case, if the user has not set --sysconfdir, we set it
99 #  to the package default of /etc/bacula.  If either --prefix or
100 #  --sysconfdir is set, we leave sysconfdir alone except to eval it.
101 # ------------------------------------------------------------------
102 if test x${prefix} = xNONE ; then
103     if test `eval echo ${sysconfdir}` = NONE/etc ; then
104         sysconfdir=/etc/bacula
105     fi
106     prefix=
107 fi
108 sysconfdir=`eval echo ${sysconfdir}`
109
110 # -------------------------------------------------------------------------
111 #  If the user has not set --exec-prefix, we default to ${prefix}
112 # -------------------------------------------------------------------------
113 if test x${exec_prefix} = xNONE ; then
114     exec_prefix=${prefix}
115 fi
116
117 # ------------------------------------------------------------------
118 # If the user has not set --sbindir, we set our default as /sbin
119 # ------------------------------------------------------------------
120 if test x$sbindir = x'${exec_prefix}/sbin' ; then
121     sbindir=${exec_prefix}/sbin
122 fi
123 sbindir=`eval echo ${sbindir}`
124                       
125 # ------------------------------------------------------------------
126 # All list of languages for which a translation exist. Each
127 #  language is separated by a space.
128 # ------------------------------------------------------------------
129 ALL_LINGUAS=""
130
131 AC_PATH_PROGS(MSGFMT, msgfmt, no)
132 if test "$MSGFMT" = "no"
133 then
134    echo 'msgfmt program not found, disabling NLS !'
135    USE_NLS=no
136    USE_INCLUDED_LIBINTL=no
137 #else
138 #   AM_GNU_GETTEXT
139 fi
140
141
142 support_mysql=no
143 support_sqlite=no
144 support_postgresql=no
145 support_smartalloc=yes
146 support_readline=yes
147 support_conio=yes
148 support_gnome=no
149 support_wx_console=no
150 gnome_version=
151 support_static_tools=no
152 support_static_fd=no
153 support_static_sd=no
154 support_static_dir=no
155 support_static_cons=no
156 build_client_only=no
157 cats=
158 db_name=Internal
159 DB_NAME=bdb
160
161 dnl# --------------------------------------------------------------------------
162 dnl# CHECKING COMMAND LINE OPTIONS
163 dnl# --------------------------------------------------------------------------
164
165 # -------------------------------------------
166 # gnome (default off)
167 # -------------------------------------------
168 AC_ARG_ENABLE(gnome,
169   [  --enable-gnome       enable build of gnome-console GUI [disabled]],
170   [if test x$enableval = xyes; then
171     support_gnome=yes
172   fi])
173
174 GNOME_DIR=
175 if test x$support_gnome = xyes; then
176   abc=`$PKGCONFIG --exists libgnomeui-2.0`
177   pkg=$?
178   if test $pkg = 0; then
179      GNOME_INCLUDEDIR=`$PKGCONFIG --cflags-only-I libgnomeui-2.0`
180      GNOMEUI_LIBS=`$PKGCONFIG --libs-only-l libgnomeui-2.0`
181      GNOME_LIBDIR=`$PKGCONFIG --libs libgnomeui-2.0`
182      GNOME_LIBS=`$PKGCONFIG --libs-only-l libgnomeui-2.0`
183      AC_SUBST(GNOME_INCLUDEDIR)
184      AC_SUBST(GNOMEUI_LIBS)
185      AC_SUBST(GNOME_LIBDIR)
186      AC_SUBST(GNOME_LIBS)
187      GNOME_DIR=src/gnome2-console
188      gnome_version="Version 2.x"
189   else
190 dnl do 1.4 stuff
191      GNOME_INIT
192      GNOME_DIR=src/gnome-console
193      gnome_version="Version 1.4"
194   fi
195 fi
196 AC_SUBST(GNOME_DIR)
197
198
199 # -------------------------------------------
200 # wx-console (default off)
201 # -------------------------------------------
202 AC_ARG_ENABLE(wx-console,
203   [  --enable-wx-console      enable build of wxWidgets console [disabled]],
204   [if test x$enableval = xyes; then
205     support_wx_console=yes
206   fi])
207
208 WX_DIR=
209 if test x$support_wx_console = xyes; then
210   abc=`$WXCONFIG --cppflags`
211   pkg=$?
212   if test $pkg = 0; then
213      WXCONS_CPPFLAGS=`$WXCONFIG --cppflags`
214      WXCONS_LDFLAGS=`$WXCONFIG --libs`
215      AC_SUBST(WXCONS_CPPFLAGS)
216      AC_SUBST(WXCONS_LDFLAGS)
217      WX_DIR=src/wx-console
218   else
219      echo " "
220      echo "wx-config program not found. wx-console disabled."
221      echo " "
222      support_wx_console=no
223   fi
224 fi
225 AC_SUBST(WX_DIR)
226
227
228
229 # -------------------------------------------
230 # smartalloc (default off)
231 # -------------------------------------------
232 AC_ARG_ENABLE(smartalloc,
233   [  --enable-smartalloc     enable smartalloc debugging support [disabled]],
234   [if test x$enableval = xno; then
235     support_smartalloc=no
236   fi])
237
238 if test x$support_smartalloc = xyes; then
239    AC_DEFINE(SMARTALLOC)
240 fi
241
242 # -------------------------------------------
243 # static-tools (default off)
244 # -------------------------------------------
245 AC_ARG_ENABLE(static-tools,
246    [  --enable-static-tools   enable static tape tools [disabled]],
247    [if test x$enableval = xyes; then
248      support_static_tools=yes
249    fi])
250
251 TTOOL_LDFLAGS=
252 if test x$support_static_tools = xyes; then
253    TTOOL_LDFLAGS="-static"
254 fi
255 AC_SUBST(TTOOL_LDFLAGS)
256
257 # -------------------------------------------
258 # static-fd    (default off)
259 # -------------------------------------------
260 AC_ARG_ENABLE(static-fd,
261    [  --enable-static-fd      enable static File daemon [disabled]],
262    [if test x$enableval = xyes; then
263      support_static_fd=yes
264    fi])
265
266 STATIC_FD=
267 if test x$support_static_fd = xyes; then
268    STATIC_FD="static-bacula-fd"
269 fi
270 AC_SUBST(STATIC_FD)
271
272 # -------------------------------------------
273 # static-sd    (default off)
274 # -------------------------------------------
275 AC_ARG_ENABLE(static-sd,
276    [  --enable-static-sd      enable static Storage daemon [disabled]],
277    [if test x$enableval = xyes; then
278      support_static_sd=yes
279    fi])
280
281 STATIC_SD=
282 if test x$support_static_sd = xyes; then
283    STATIC_SD="static-bacula-sd"
284 fi
285 AC_SUBST(STATIC_SD)
286
287 # -------------------------------------------
288 # static-dir   (default off)
289 # -------------------------------------------
290 AC_ARG_ENABLE(static-dir,
291    [  --enable-static-dir     enable static Director [disabled]],
292    [if test x$enableval = xyes; then
293      support_static_dir=yes
294    fi])
295
296 STATIC_DIR=
297 if test x$support_static_dir = xyes; then
298    STATIC_DIR="static-bacula-dir"
299 fi
300 AC_SUBST(STATIC_DIR)
301
302 # -------------------------------------------
303 # static-cons  (default off)
304 # -------------------------------------------
305 AC_ARG_ENABLE(static-cons,
306    [  --enable-static-cons    enable static Console [disabled]],
307    [if test x$enableval = xyes; then
308      support_static_cons=yes
309    fi])
310
311 STATIC_CONS=
312 STATIC_GNOME_CONS=
313 STATIC_WX_CONS=
314 if test x$support_static_cons = xyes; then
315    STATIC_CONS="static-bconsole"
316    STATIC_GNOME_CONS="static-gnome-console"
317    STATIC_WX_CONS="static-wx-console"
318 fi
319 AC_SUBST(STATIC_CONS)
320 AC_SUBST(STATIC_GNOME_CONS)
321 AC_SUBST(STATIC_WX_CONS)
322
323 # -------------------------------------------
324 # client_only  (default off)
325 # -------------------------------------------
326 AC_ARG_ENABLE(client-only,
327    [  --enable-client-only    build client (File daemon) only [disabled]],
328    [if test x$enableval = xyes; then
329      build_client_only=yes
330     db_name=None
331     DB_NAME=none
332    fi])
333 if test x$build_client_only = xno; then
334    ALL_DIRS="subdirs"
335 else
336    ALL_DIRS=""
337 fi
338 AC_SUBST(ALL_DIRS)
339
340 # ---------------------------------------------------
341 # Check for conio (Bacula readline substitute)(
342 # ---------------------------------------------------
343 # this allows you to turn it completely off
344 AC_ARG_ENABLE(conio,   
345   [  --disable-conio         disable conio support [enabled]
346                                                       ],
347   [if test x$enableval = xno; then
348     support_conio=no
349   fi])
350
351 got_conio="no"
352 if test x$support_conio = xyes; then
353    AC_CHECK_HEADER(termcap.h, 
354      [ AC_CHECK_LIB(termcap, tgetent, 
355        [ CONS_LIBS="-ltermcap"
356          CONS_OBJ="conio.o"
357          CONS_SRC="conio.c"
358          got_conio="yes"
359          support_readline=no
360          AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled]) 
361        ],   
362        [ AC_CHECK_LIB(ncurses, tgetent,
363          [ CONS_LIBS="-lncurses"
364            CONS_OBJ="conio.o"
365            CONS_SRC="conio.c"
366            got_conio="yes"
367            support_readline=no
368            AC_DEFINE(HAVE_CONIO, 1, [Set if Bacula conio support enabled]) 
369          ],   
370          [ echo " "; echo "Neither termcap nor ncurses library found. CONIO turned off ..."; echo " "])
371        ])
372     ],[echo " "; echo "termcap.h not found. CONIO turned off ..."; echo " "])
373 fi
374
375
376 # ---------------------------------------------------
377 # Check for readline support/directory (default off)
378 # ---------------------------------------------------
379 # this allows you to turn it completely off
380 AC_ARG_ENABLE(readline,
381   [  --disable-readline      disable readline support [disable]
382                                                       ],
383   [if test x$enableval = xno; then
384     support_readline=no
385   fi])
386
387 got_readline="no"
388 READLINE_SRC=
389 if test x$support_readline = xyes; then
390    AC_ARG_WITH(readline,
391      [ --with-readline=DIR               specify readline library directory],
392      [
393         case "$with_readline" in
394         no) : ;;
395         yes|*)
396           if test "$with_readline" != "yes"; then
397             CONS_INC="-I${with_readline}"
398             CONS_LDFLAGS="-L$with_readline"
399           else
400              with_readline="/usr/include/readline" 
401           fi
402           AC_CHECK_HEADER(${with_readline}/readline.h, 
403              [ AC_DEFINE(HAVE_READLINE) 
404                CONS_LIBS="-lreadline -ltermcap"
405                got_readline="yes"   
406              ],
407              [ echo " "
408                echo "readline.h not found. readline turned off ..."
409                echo " "
410              ]
411           )
412           ;;
413         esac
414      ],[
415        # check for standard readline library
416        AC_CHECK_HEADER(/usr/include/readline/readline.h, 
417          [ AC_DEFINE(HAVE_READLINE)
418            got_readline="yes"
419            CONS_INC="-I/usr/include/readline"
420            CONS_LIBS="-lreadline -ltermcap"
421          ], [
422            # Did not find standard library, so try Bacula's default
423             AC_CHECK_HEADER(${TOP_DIR}/depkgs/readline/readline.h, 
424               [ AC_DEFINE(HAVE_READLINE) 
425                  got_readline="yes"   
426                  CONS_INC="-I${TOP_DIR}/depkgs/readline"
427                  CONS_LIBS="-lreadline -lhistory -ltermcap"
428                  CONS_LDFLAGS="-L${TOP_DIR}/depkgs/readline"
429                  PRTREADLINE_SRC="${TOP_DIR}/depkgs/readline"
430               ],
431               [ echo " "
432                 echo "readline.h not found. readline turned off ..."
433                 echo " "
434               ]
435             )
436          ]
437        )
438      ]   
439    )
440 fi
441
442
443
444 AC_SUBST(CONS_INC)
445 AC_SUBST(CONS_OBJ)
446 AC_SUBST(CONS_SRC)
447 AC_SUBST(CONS_LIBS)
448 AC_SUBST(CONS_LDFLAGS)
449 AC_SUBST(READLINE_SRC)
450
451 # Minimal stuff for readline Makefile configuration
452 MAKE_SHELL=/bin/sh
453 AC_SUBST(MAKE_SHELL)
454 AC_HEADER_STAT
455 AC_HEADER_DIRENT
456 AC_CHECK_FUNCS(strcasecmp select setenv putenv tcgetattr setlocale lstat lchown)
457 AC_CHECK_FUNCS(nanosleep nl_langinfo)
458 AC_CHECK_HEADERS(varargs.h)
459
460 # End of readline/conio stuff
461 # -----------------------------------------------------------------------
462
463
464 # ---------------------------------------------------
465 # Check for GMP support/directory
466 # ---------------------------------------------------
467 #GMP_SRC=
468 #local_gmp="no"
469 #AC_ARG_WITH(gmp,
470 #  [  --with-gmp[=DIR]   Specify gmp library directory],
471 #  [
472 #     case "$with_gmp" in
473 #     no) : ;;
474 #     yes|*)
475 #       if test "$with_gmp" != "yes"; then
476 #         GMP_INC="-I$with_gmp"
477 #         GMP_LIBS="-lgmp"
478 #         GMP_LDFLAGS="-L$with_gmp"
479 #       else
480 #          with_gmp="/usr/include" 
481 #       fi
482 #       AC_CHECK_HEADER($with_gmp/gmp.h, 
483 #          [ AC_MSG_RESULT(yes)
484 #            AC_DEFINE(HAVE_GMP) 
485 #            GMP_LIBS="-lgmp"
486 #            got_gmp="yes"   
487 #          ],
488 #          [ AC_MSG_ERROR([*** gmp library missing]) 
489 #          ]
490 #       )
491 #       ;;
492 #     esac
493 #  ],[
494 #    # check for standard gmp library
495 #    AC_CHECK_HEADER(/usr/include/gmp.h,
496 #    [ AC_MSG_RESULT(yes)
497 #      AC_DEFINE(HAVE_GMP)
498 #      got_gmp="yes"
499 #      GMP_INC=
500 #      GMP_LIBS="-lgmp"
501 #    ], [
502 #      # Did not find standard library, so use our own
503 #      AC_MSG_RESULT(yes)
504 #      AC_DEFINE(HAVE_GMP)
505 #      got_gmp="yes"
506 #      local_gmp="yes"
507 #      GMP_INC="-I${TOP_DIR}/depkgs/gmp"
508 #      GMP_LIBS="-lgmp"
509 #      GMP_LDFLAGS="-L${TOP_DIR}/depkgs/gmp"
510 #      GMP_SRC="${TOP_DIR}/depkgs/gmp"
511 #    ])
512 #  ]   
513 #)
514 #AC_SUBST(GMP_INC)
515 #AC_SUBST(GMP_LIBS)
516 #AC_SUBST(GMP_LDFLAGS)
517 #AC_SUBST(GMP_SRC)
518
519 # End of GMP stuff
520 # -----------------------------------------------------------------------
521
522
523 # ---------------------------------------------------
524 # Check for CWEB support/directory
525 # ---------------------------------------------------
526 #CWEB_SRC=
527 #CWEB=/bin
528 #local_cweb="no"
529 #AC_ARG_WITH(cweb,
530 #  [  --with-cweb[=DIR]   Specify cweb library directory],
531 #  [
532 #     case "$with_cweb" in
533 #     no) : ;;
534 #     yes|*)
535 #       if test "$with_cweb" != "yes"; then
536 #         CWEB_INC="-I$with_cweb"
537 #         CWEB_LIBS="-lcweb"
538 #         CWEB_LDFLAGS="-L$with_cweb"
539 #       else
540 #          with_cweb="/usr/include" 
541 #       fi
542 #       AC_CHECK_HEADER($with_cweb/cweb.h, 
543 #          [ AC_MSG_RESULT(yes)
544 #            AC_DEFINE(HAVE_CWEB) 
545 #            CWEB_LIBS="-lcweb"
546 #            got_cweb="yes"   
547 #          ],
548 #          [ AC_MSG_ERROR([*** cweb library missing]) 
549 #          ]
550 #       )
551 #       ;;
552 #     esac
553 #  ],[
554 #    # check for standard cweb library
555 #    AC_CHECK_HEADER(/usr/include/cweb.h,
556 #    [ AC_MSG_RESULT(yes)
557 #      AC_DEFINE(HAVE_CWEB)
558 #      got_cweb="yes"
559 #      CWEB_INC=
560 #      CWEB_LIBS="-lcweb"
561 #    ], [
562 #      # Did not find starndard library, so use our own
563 #      AC_MSG_RESULT(yes)
564 #      AC_DEFINE(HAVE_CWEB)
565 #      got_cweb="yes"
566 #      local_cweb="yes"
567 #      CWEB=${TOP_DIR}/depkgs/cweb
568 #      CWEB_INC="-I${TOP_DIR}/depkgs/cweb"
569 #      CWEB_LIBS="-lcweb"
570 #      CWEB_LDFLAGS="-L${TOP_DIR}/depkgs/cweb"
571 #      CWEB_SRC="${TOP_DIR}/depkgs/cweb"
572 #    ])
573 #  ]   
574 #)
575 #AC_SUBST(CWEB)
576 #AC_SUBST(CWEB_INC)
577 #AC_SUBST(CWEB_LIBS)
578 #AC_SUBST(CWEB_LDFLAGS)
579 #AC_SUBST(CWEB_SRC)
580
581 # End of CWEB stuff
582 # -----------------------------------------------------------------------
583
584
585
586 # -----------------------------------------------------------
587 # Check whether user wants TCP wrappers support (default off)
588 # -----------------------------------------------------------
589 TCPW_MSG="no" 
590 AC_ARG_WITH(tcp-wrappers,
591   [  --with-tcp-wrappers=DIR     enable tcpwrappers support],
592   [
593     if test "x$withval" != "xno" ; then
594        saved_LIBS="$LIBS"
595        LIBS="$saved_LIBS -lwrap"
596        AC_MSG_CHECKING(for libwrap)
597        AC_TRY_LINK(
598           [ #include <tcpd.h>
599              int deny_severity = 0;
600              int allow_severity = 0;
601              struct request_info *req; ],
602           [ hosts_access(req); ],
603           [
604             AC_MSG_RESULT(yes)
605             AC_DEFINE(HAVE_LIBWRAP)
606             TCPW_MSG="yes" 
607           ], [
608             LIBS="$saved_LIBS -lwrap -lnsl"
609             AC_TRY_LINK(
610               [ #include <tcpd.h>
611                  int deny_severity = 0;
612                  int allow_severity = 0;
613                  struct request_info *req; ],
614               [ hosts_access(req); ],
615               [
616                  AC_MSG_RESULT(yes)
617                  AC_DEFINE(HAVE_LIBWRAP)
618                  TCPW_MSG="yes" 
619               ],
620               [AC_MSG_ERROR([*** libwrap missing]) ] ]
621             )
622        )
623     fi
624   ]
625 )
626
627 # ------------------------------------------
628 # Where to place working dir
629 # ------------------------------------------
630 working_dir=`eval echo ${prefix}/var/bacula/working`
631 AC_ARG_WITH(working-dir,
632    [  --with-working-dir=PATH    specify path of Bacula working directory],
633    [
634        if test "x$withval" != "xno" ; then     
635               working_dir=$withval
636        fi
637    ]
638 )
639
640 AC_SUBST(working_dir)
641
642
643 # ------------------------------------------
644 # Where to place scriptdir (script files)
645 # ------------------------------------------
646 scriptdir=`eval echo ${sysconfdir}`
647 AC_ARG_WITH(scriptdir,
648    [  --with-scriptdir=PATH    specify path of Bacula scripts directory],
649    [
650        if test "x$withval" != "xno" ; then     
651               scriptdir=$withval
652        fi
653    ]
654 )
655
656 AC_SUBST(scriptdir)
657
658
659 # ------------------------------------------
660 # Where to send dump email
661 # ------------------------------------------
662 dump_email=root@localhost
663 AC_ARG_WITH(dump-email,
664    [  --with-dump-email=EMAIL    dump email address],
665    [
666        if test "x$withval" != "xno" ; then     
667               dump_email=$withval
668        fi
669    ]
670 )
671
672 AC_SUBST(dump_email)
673
674 # ------------------------------------------
675 # Where to send job email
676 # ------------------------------------------
677 job_email=root@localhost
678 AC_ARG_WITH(job-email,
679    [  --with-job-email=EMAIL     job output email address],
680    [
681        if test "x$withval" != "xno" ; then     
682               job_email=$withval
683        fi
684    ]
685 )
686
687 AC_SUBST(job_email)
688
689 # ------------------------------------------
690 # Where to find smtp host
691 # ------------------------------------------
692 smtp_host=localhost
693 AC_ARG_WITH(smtp_host,
694    [  --with-smtp-host=HOST              SMTP mail host address],
695    [
696        if test "x$withval" != "xno" ; then     
697               smtp_host=$withval
698        fi
699    ]
700 )
701
702 AC_SUBST(smtp_host)
703
704
705 # ------------------------------------
706 # Where to place pid files
707 # ------------------------------------
708 piddir=/var/run
709 AC_ARG_WITH(pid-dir,
710     [  --with-pid-dir=PATH               specify location of Bacula pid files],
711     [
712         if test "x$withval" != "xno" ; then     
713             piddir=$withval
714         fi
715     ]
716 )
717
718 AC_DEFINE_UNQUOTED(_PATH_BACULA_PIDDIR, "$piddir")
719 AC_SUBST(piddir)
720
721
722 # ------------------------------------
723 # Where to place subsys "lock file"
724 # ------------------------------------
725 subsysdir=/var/run/subsys
726 AC_ARG_WITH(subsys-dir,
727     [  --with-subsys-dir=PATH    specify location of Bacula subsys file],
728     [
729         if test "x$withval" != "xno" ; then     
730             subsysdir=$withval
731         fi
732     ]
733 )
734
735 AC_SUBST(subsysdir)
736
737
738
739 # ------------------------------------
740 # Where to start assigning ports
741 # ------------------------------------
742 baseport=9101
743 AC_ARG_WITH(baseport,
744     [  --with-baseport=PORT              specify base port address for daemons],
745     [
746         if test "x$withval" != "xno" ; then     
747              baseport=$withval
748         fi
749     ]
750 )
751
752 AC_SUBST(baseport)
753 dir_port=`expr $baseport`
754 fd_port=`expr $baseport + 1`
755 sd_port=`expr $fd_port + 1`
756
757 AC_SUBST(dir_port)
758 AC_SUBST(fd_port)
759 AC_SUBST(sd_port)
760
761
762 # ------------------------------------------
763 # Generate passwords
764 # ------------------------------------------
765 dir_password=
766 AC_ARG_WITH(dir-password,
767    [  --with-dir-password=PASSWORD   specify Director's password],
768    [
769        if test "x$withval" != "xno" ; then     
770            dir_password=$withval
771        fi
772    ]
773 )
774
775 if test "x$dir_password" = "x" ; then
776    if test "x$OPENSSL" = "xnone" ; then
777 #     key=`date | uuencode /dev/stdout | tr "\"@\\\`\\ \\=\\,\\(\\)\\#\\.\\!\\-$'" abcdefghijklmnopqrst | awk '{getline} {print} {exit}'`
778       key=`autoconf/randpass 33`
779    else
780       key=`openssl rand -base64 33`
781    fi
782    dir_password=$key
783 fi
784
785 fd_password=
786 AC_ARG_WITH(fd-password,
787    [  --with-fd-password=PASSWORD    specify Client's password],
788    [
789        if test "x$withval" != "xno" ; then     
790            fd_password=$withval
791        fi
792    ]
793 )
794
795 if test "x$fd_password" = "x" ; then
796    if test "x$OPENSSL" = "xnone" ; then
797 #     key=`date | uuencode /dev/stdout | tr "\"@\\\`\\ \\=\\,\\(\\)\\#\\.\\!\\-$'" tsrqponmlkjihgfedcba | awk '{getline} {print} {exit}'`
798       key=`autoconf/randpass 37`
799    else
800       key=`openssl rand -base64 33`
801    fi
802    fd_password=$key
803 fi
804
805 sd_password=
806 AC_ARG_WITH(sd-password,
807    [  --with-sd-password=PASSWORD    specify Storage daemon's password],
808    [
809        if test "x$withval" != "xno" ; then     
810            sd_password=$withval
811        fi
812    ]
813 )
814
815 if test "x$sd_password" = "x" ; then
816    if test "x$OPENSSL" = "xnone" ; then
817 #     key=`date | uuencode /dev/stdout | tr "\"@\\\`\\ \\=\\,\\(\\)\\#\\.\\!\\-$'" 123456789uvwxyzabcdef | awk '{getline} {print} {exit}'`
818       key=`autoconf/randpass 41`
819    else
820       key=`openssl rand -base64 33`
821    fi
822    sd_password=$key
823 fi
824
825
826 AC_SUBST(dir_password)
827 AC_SUBST(fd_password)
828 AC_SUBST(sd_password)
829
830
831 #
832 # Handle users and groups for each daemon
833 #
834 dir_user=
835 AC_ARG_WITH(dir_user,
836     [  --with-dir-user=USER              specify user for Director daemon],
837     [
838         if test "x$withval" != "x" ; then       
839              dir_user=$withval
840         fi
841     ]
842 )
843
844 dir_group=
845 AC_ARG_WITH(dir_group,
846     [  --with-dir-group=GROUP            specify group for Director daemon],
847     [
848         if test "x$withval" != "x" ; then       
849              dir_group=$withval
850         fi
851     ]
852 )
853
854 sd_user=
855 AC_ARG_WITH(sd_user,
856     [  --with-sd-user=USER               specify user for Storage daemon],
857     [
858         if test "x$withval" != "x" ; then       
859              sd_user=$withval
860         fi
861     ]
862 )
863
864 sd_group=
865 AC_ARG_WITH(sd_group,
866     [  --with-sd-group=GROUP             specify group for Storage daemon],
867     [
868         if test "x$withval" != "x" ; then       
869              sd_group=$withval
870         fi
871     ]
872 )
873
874 fd_user=
875 AC_ARG_WITH(fd_user,
876     [  --with-fd-user=USER               specify user for File daemon],
877     [
878         if test "x$withval" != "x" ; then       
879              fd_user=$withval
880         fi
881     ]
882 )
883
884 fd_group=
885 AC_ARG_WITH(fd_group,
886     [  --with-fd-group=GROUP             specify group for File daemon],
887     [
888         if test "x$withval" != "x" ; then       
889              fd_group=$withval
890         fi
891     ]
892 )
893
894
895
896
897 AC_SUBST(dir_user)
898 AC_SUBST(dir_group)
899 AC_SUBST(sd_user)
900 AC_SUBST(sd_group)
901 AC_SUBST(fd_user)
902 AC_SUBST(fd_group)
903
904 #
905 # allow setting default executable permissions
906 #
907 SBINPERM=0754
908 AC_ARG_WITH(sbin-perm,
909     [  --with-sbin-perm=MODE             specify permissions for sbin binaries (0754)],
910     [
911         if test "x$withval" != "x" ; then       
912             SBINPERM=$withval
913         fi
914     ]
915 )
916
917 AC_SUBST(SBINPERM)
918
919 # ------------------------------------------------
920 # Bacula check for various SQL database engines
921 # ------------------------------------------------
922 BA_CHECK_POSTGRESQL_DB
923
924 BA_CHECK_MYSQL_DB
925
926 BA_CHECK_SQLITE_DB
927
928 AC_SUBST(cats)
929 AC_SUBST(DB_NAME)
930
931 AC_DEFINE(PROTOTYPES)
932
933 dnl# --------------------------------------------------------------------------
934 dnl# Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
935 dnl#
936 if test -z "$CFLAGS" -o "$CFLAGS" = "-g -O2"; then
937     if test -z "$CCOPTS"; then
938         CCOPTS='-g -O2 -Wall'
939     fi
940     CFLAGS="$CCOPTS"
941 fi
942
943
944 dnl A few others 
945 AC_EXEEXT
946
947 dnl See if we can use 64 bit file addresses
948 largefile_support="no"
949 AC_BAC_LARGEFILE
950
951
952 AC_PATH_XTRA
953
954 dnl# --------------------------------------------------------------------------
955 dnl# CHECKING FOR HEADER FILES
956 dnl# --------------------------------------------------------------------------
957 AC_CHECK_HEADERS( \
958         assert.h \
959         fcntl.h \
960         grp.h \
961         pwd.h \
962         libc.h \
963         limits.h \
964         stdarg.h \
965         stdlib.h \
966         stdint.h \
967         string.h \
968         termios.h \
969         unistd.h \
970         sys/bitypes.h \
971         sys/byteorder.h \
972         sys/ioctl.h \
973         sys/select.h \
974         sys/sockio.h \
975         sys/time.h \
976         sys/socket.h \
977         arpa/nameser.h \
978         resolv.h \
979         mtio.h \
980         sys/mtio.h \
981         sys/tape.h \
982         regex.h \
983 )
984 AC_HEADER_STDC
985 AC_HEADER_MAJOR
986 AC_HEADER_DIRENT
987 AC_HEADER_STAT
988 AC_HEADER_SYS_WAIT
989 AC_HEADER_TIME
990 AC_STRUCT_ST_BLKSIZE
991 AC_STRUCT_ST_BLOCKS
992 AC_STRUCT_TIMEZONE
993
994 dnl# --------------------------------------------------------------------------
995 dnl# Check for utime.h structure 
996 dnl# --------------------------------------------------------------------------
997 AC_CACHE_CHECK(for utime.h, ba_cv_header_utime_h,
998   [AC_TRY_COMPILE([
999 #include <sys/types.h>
1000 #include <utime.h>], [struct utimbuf foo],
1001   ba_cv_header_utime_h=yes, ba_cv_header_utime_h=no)])
1002 test $ba_cv_header_utime_h = yes && AC_DEFINE(HAVE_UTIME_H)
1003
1004 dnl# --------------------------------------------------------------------------
1005 dnl# Check for socklen_t
1006 dnl# --------------------------------------------------------------------------
1007 AC_CACHE_CHECK(for socklen_t, ba_cv_header_socklen_t,
1008   [AC_TRY_COMPILE([
1009 #include <sys/types.h>
1010 #include <sys/socket.h>],
1011   [socklen_t x],
1012   ba_cv_header_socklen_t=yes, ba_cv_header_socklen_t=no)])
1013 test $ba_cv_header_socklen_t = yes && AC_DEFINE(HAVE_SOCKLEN_T)
1014
1015 dnl# --------------------------------------------------------------------------
1016 dnl# Check for bigendian
1017 dnl# --------------------------------------------------------------------------
1018 AC_CACHE_CHECK([for bigendian], ba_cv_bigendian,
1019   [AC_TRY_RUN(
1020     [main(){long a=1L; char *p=(char *)&a; exit(*p);}],
1021     [ba_cv_bigendian=yes], 
1022     [ba_cv_bigendian=no], 
1023     [ba_cv_bigendian=no])])
1024 test $ba_cv_bigendian = yes && AC_DEFINE(HAVE_BIGENDIAN)
1025
1026
1027 AC_C_CONST
1028
1029
1030 dnl# --------------------------------------------------------------------------
1031 dnl# CHECKING FOR FILESYSTEM TYPE
1032 dnl# --------------------------------------------------------------------------
1033 AC_MSG_CHECKING(how to get filesystem type)
1034 fstype=no
1035 # The order of these tests is important.
1036 AC_TRY_CPP([#include <sys/statvfs.h>
1037 #include <sys/fstyp.h>], AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4)
1038 if test $fstype = no; then
1039 AC_TRY_CPP([#include <sys/statfs.h>
1040 #include <sys/fstyp.h>], AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3)
1041 fi
1042 if test $fstype = no; then
1043 AC_TRY_CPP([#include <sys/statfs.h>
1044 #include <sys/vmount.h>], AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX)
1045 fi
1046 if test $fstype = no; then  
1047 AC_TRY_CPP([#include <mntent.h>], AC_DEFINE(FSTYPE_MNTENT) fstype=4.3BSD)
1048 fi
1049 if test $fstype = no; then  
1050 AC_EGREP_HEADER(f_type;, sys/mount.h, AC_DEFINE(FSTYPE_STATFS) fstype=4.4BSD/OSF1)
1051 fi
1052 if test $fstype = no; then  
1053 AC_TRY_CPP([#include <sys/mount.h>
1054 #include <sys/fs_types.h>], AC_DEFINE(FSTYPE_GETMNT) fstype=Ultrix)
1055 fi
1056 AC_MSG_RESULT($fstype)
1057
1058 dnl# --------------------------------------------------------------------------
1059 dnl# CHECKING FOR TYPEDEFS, STRUCTURES, AND COMPILER CHARACTERISTICS.
1060 dnl# --------------------------------------------------------------------------
1061 AC_TYPE_SIGNAL
1062 SIGNAL_CHECK
1063 AC_TYPE_MODE_T
1064 AC_TYPE_UID_T
1065 AC_TYPE_SIZE_T
1066 AC_TYPE_PID_T
1067 AC_TYPE_OFF_T
1068 AC_CHECK_TYPE(ino_t, unsigned long)
1069 AC_CHECK_TYPE(dev_t, unsigned long)
1070 AC_CHECK_TYPE(daddr_t, long)
1071 AC_CHECK_TYPE(major_t, int)
1072 AC_CHECK_TYPE(minor_t, int)
1073 AC_CHECK_TYPE(ssize_t, int)
1074 AC_STRUCT_ST_BLOCKS
1075 AC_STRUCT_ST_RDEV
1076 AC_STRUCT_TM
1077 AC_C_CONST
1078
1079
1080 AC_CHECK_SIZEOF(char, 1)
1081 AC_CHECK_SIZEOF(short int, 2)
1082 AC_CHECK_SIZEOF(int, 4)
1083 AC_CHECK_SIZEOF(long int, 4)
1084 AC_CHECK_SIZEOF(long long int, 8)
1085 AC_CHECK_SIZEOF(int *, 4)
1086
1087 # Check for sys/types.h types
1088 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
1089     AC_TRY_COMPILE(
1090         [ #include <sys/types.h> ], 
1091         [ u_int a; a = 1;], 
1092         [ ac_cv_have_u_int="yes" ],
1093         [ ac_cv_have_u_int="no" ]
1094     )
1095 ])
1096 if test "x$ac_cv_have_u_int" = "xyes" ; then
1097    AC_DEFINE(HAVE_U_INT)
1098    have_u_int=1
1099 fi
1100
1101 AC_CACHE_CHECK([for intmax_t type], ac_cv_have_intmax_t, [
1102    AC_TRY_COMPILE(
1103       [ #include <sys/types.h> ], 
1104       [ intmax_t a; a = 1;], 
1105       [ ac_cv_have_intmax_t="yes" ],
1106       [ 
1107          AC_TRY_COMPILE(
1108             [ #include <stdint.h> ], 
1109             [ intmax_t a; a = 1;], 
1110             [ ac_cv_have_intmax_t="yes" ],
1111             [ ac_cv_have_intmax_t="no" ]
1112          )
1113       ]
1114    )        
1115
1116 ])
1117 if test "x$ac_cv_have_intmax_t" = "xyes" ; then
1118    AC_DEFINE(HAVE_INTMAX_T)
1119    have_intmax_t=1
1120 fi
1121
1122
1123 AC_CACHE_CHECK([for u_intmax_t type], ac_cv_have_u_intmax_t, [
1124    AC_TRY_COMPILE(
1125       [ #include <sys/types.h> ], 
1126       [ u_intmax_t a; a = 1;], 
1127       [ ac_cv_have_u_intmax_t="yes" ],
1128       [ 
1129          AC_TRY_COMPILE(
1130             [ #include <stdint.h> ], 
1131             [ u_intmax_t a; a = 1;], 
1132             [ ac_cv_have_u_intmax_t="yes" ],
1133             [ ac_cv_have_u_intmax_t="no" ]
1134          )
1135       ]
1136    )
1137 ])
1138 if test "x$ac_cv_have_u_intmax_t" = "xyes" ; then
1139    AC_DEFINE(HAVE_U_INTMAX_T)
1140    have_u_intmax_t=1
1141 fi
1142
1143
1144 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
1145    AC_TRY_COMPILE(
1146       [ #include <sys/types.h> ], 
1147       [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], 
1148       [ ac_cv_have_intxx_t="yes" ],
1149       [ ac_cv_have_intxx_t="no" ]
1150    )
1151 ])
1152 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
1153    AC_DEFINE(HAVE_INTXX_T)
1154    have_intxx_t=1
1155 fi
1156         
1157 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
1158    AC_TRY_COMPILE(
1159       [ #include <sys/types.h> ], 
1160       [ int64_t a; a = 1;], 
1161       [ ac_cv_have_int64_t="yes" ],
1162       [ ac_cv_have_int64_t="no" ]
1163    )
1164 ])
1165 if test "x$ac_cv_have_int64_t" = "xyes" ; then
1166    AC_DEFINE(HAVE_INT64_T)
1167    have_int64_t=1
1168 fi
1169         
1170 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
1171    AC_TRY_COMPILE(
1172       [ #include <sys/types.h> ], 
1173       [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], 
1174       [ ac_cv_have_u_intxx_t="yes" ],
1175       [ ac_cv_have_u_intxx_t="no" ]
1176    )
1177 ])
1178 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
1179    AC_DEFINE(HAVE_U_INTXX_T)
1180    have_u_intxx_t=1
1181 fi
1182
1183 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
1184    AC_TRY_COMPILE(
1185       [ #include <sys/types.h> ], 
1186       [ u_int64_t a; a = 1;], 
1187       [ ac_cv_have_u_int64_t="yes" ],
1188       [ ac_cv_have_u_int64_t="no" ]
1189    )
1190 ])
1191 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
1192    AC_DEFINE(HAVE_U_INT64_T)
1193    have_u_int64_t=1
1194 fi
1195
1196 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
1197            test "x$ac_cv_header_sys_bitypes_h" = "xyes")
1198 then
1199    AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
1200    AC_TRY_COMPILE(
1201       [ #include <sys/bitypes.h>  ], 
1202       [ int8_t a; int16_t b; int32_t c;
1203         u_int8_t e; u_int16_t f; u_int32_t g;
1204         a = b = c = e = f = g = 1;  ], 
1205       [ AC_DEFINE(HAVE_U_INTXX_T)
1206         AC_DEFINE(HAVE_INTXX_T)
1207         AC_DEFINE(HAVE_SYS_BITYPES_H)
1208         AC_MSG_RESULT(yes) ],
1209       [ AC_MSG_RESULT(no)]
1210    ) 
1211 fi
1212
1213 if test -z "$have_u_intxx_t" ; then
1214    AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
1215       AC_TRY_COMPILE(
1216          [ #include <sys/types.h> ], 
1217          [ uint8_t a; uint16_t b; 
1218            uint32_t c; a = b = c = 1; ], 
1219          [ ac_cv_have_uintxx_t="yes" ],
1220          [ ac_cv_have_uintxx_t="no" ]
1221       )
1222    ])
1223    if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
1224       AC_DEFINE(HAVE_UINTXX_T)
1225    fi
1226 fi
1227
1228 if (test -z "$have_u_int64_t" || test -z "$have_int64_t" && \
1229           test "x$ac_cv_header_sys_bitypes_h" = "xyes")
1230 then
1231    AC_MSG_CHECKING([for int64_t and u_int64_t types in sys/bitypes.h])
1232    AC_TRY_COMPILE(
1233       [ #include <sys/bitypes.h>  ], 
1234       [ int64_t a; u_int64_t b; 
1235        a = b = 1;  ], 
1236       [ AC_DEFINE(HAVE_U_INT64_T)
1237        AC_DEFINE(HAVE_INT64_T)
1238        AC_MSG_RESULT(yes) ],
1239       [ AC_MSG_RESULT(no)]
1240    ) 
1241 fi
1242
1243 if (test -z "$have_uintxx_t" && \
1244           test "x$ac_cv_header_sys_bitypes_h" = "xyes")
1245 then
1246    AC_MSG_CHECKING([for uintXX_t types in sys/bitypes.h])
1247    AC_TRY_COMPILE(
1248       [ #include <sys/bitypes.h>  ], 
1249         [ uint8_t a; uint16_t b; 
1250           uint32_t c; a = b = c = 1; ], 
1251       [ AC_DEFINE(HAVE_UINTXX_T)
1252        AC_MSG_RESULT(yes) ],
1253       [ AC_MSG_RESULT(no)]
1254    ) 
1255
1256 fi
1257
1258
1259
1260
1261 dnl# --------------------------------------------------------------------------
1262 dnl# CHECKING FOR REQUIRED LIBRARY FUNCTIONS
1263 dnl# --------------------------------------------------------------------------
1264 AC_CHECK_FUNCS( \
1265         fork \
1266         getcwd \
1267         gethostname \
1268         getpid \
1269         gettimeofday \
1270         setpgid \
1271         setpgrp \
1272         setsid \
1273         signal \
1274         strerror \
1275         strncmp \
1276         strncpy \
1277         vfprintf \
1278         ,,
1279         [echo 'configure: cannot find needed function.'; exit 1]
1280 )
1281
1282 AC_CHECK_FUNCS(fchdir, [AC_DEFINE(HAVE_FCHDIR)])
1283 AC_CHECK_FUNCS(strtoll, [AC_DEFINE(HAVE_STRTOLL)])
1284
1285 AC_CHECK_FUNCS(chflags) 
1286
1287 AC_CHECK_FUNCS(snprintf vsnprintf gethostid getdomainname)
1288
1289 dnl# --------------------------------------------------------------------------
1290 dnl# CHECKING FOR THREAD SAFE FUNCTIONS
1291 dnl# --------------------------------------------------------------------------
1292 AC_CHECK_FUNCS(localtime_r readdir_r strerror_r gethostbyname_r)
1293
1294 # If resolver functions are not in libc check for -lnsl or -lresolv.
1295 AC_CHECK_FUNC(gethostbyname_r,
1296     AC_MSG_RESULT(using libc's resolver),
1297     AC_CHECK_LIB(nsl,gethostbyname_r)
1298     AC_CHECK_LIB(resolv,gethostbyname_r))
1299
1300
1301 # Find where sockets are (especially for Solaris)
1302 AC_CHECK_FUNC(socket,
1303     AC_MSG_RESULT(using libc's socket),
1304     AC_CHECK_LIB(xnet,socket)
1305     AC_CHECK_LIB(socket,socket)
1306     AC_CHECK_LIB(inet,socket))
1307
1308 AC_CHECK_FUNCS(inet_pton, [AC_DEFINE(HAVE_INET_PTON)])
1309 AC_CHECK_FUNCS(inet_ntop, [AC_DEFINE(HAVE_INET_NTOP)])
1310 AC_CHECK_FUNCS(gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2)])
1311
1312 dnl ----------------------------
1313 dnl check sa_len of sockaddr
1314 dnl ----------------------------
1315 AC_CACHE_CHECK(for struct sockaddr has a sa_len field, ac_cv_struct_sockaddr_sa_len,
1316   [AC_TRY_COMPILE([#include <sys/socket.h>], [struct sockaddr s; s.sa_len;],
1317   ac_cv_struct_sockaddr_sa_len=yes, ac_cv_struct_sockaddr_sa_len=no)])
1318
1319  if test $ac_cv_struct_sockaddr_sa_len = yes; then
1320   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
1321  fi
1322
1323
1324 dnl Check for IPv6 support
1325 AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
1326 [AC_TRY_LINK([ #include <sys/types.h>
1327 #include <sys/socket.h>
1328 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] =
1329  0;],
1330   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
1331
1332 if test "$ac_cv_ipv6_support" = yes; then
1333   AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
1334 fi
1335
1336
1337
1338 AC_FUNC_STRFTIME
1339 AC_FUNC_VPRINTF
1340 AC_FUNC_ALLOCA
1341 AC_FUNC_GETMNTENT
1342 AC_FUNC_CLOSEDIR_VOID
1343 AC_FUNC_SETPGRP                       dnl check for BSD setpgrp.
1344 AC_FUNC_FNMATCH
1345
1346
1347 dnl# FreeBSD needs to link libxpg4
1348 AC_CHECK_LIB(xpg4, setlocale, [LIBS="$LIBS -lxpg4"])
1349
1350
1351 AC_CHECK_LIB(sun, getpwnam)
1352
1353 AC_CHECK_HEADERS(zlib.h)
1354 AC_CHECK_LIB(z, deflate, [FDLIBS="-lz"])
1355 have_zlib=no
1356 if test x$FDLIBS = x-lz; then
1357   AC_DEFINE(HAVE_LIBZ)
1358   have_zlib=yes
1359 fi
1360
1361 AC_CHECK_HEADER(sys/acl.h)
1362 AC_CHECK_LIB(acl, acl_get_file, [FDLIBS="-lacl $FDLIBS"])
1363 have_acl=no
1364 if test $ac_cv_lib_acl_acl_get_file = yes; then
1365    AC_DEFINE(HAVE_ACL)
1366    have_acl=yes
1367 fi
1368
1369 dnl Check for pthread libraries
1370 PTHREAD_LIB=""
1371 AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread",
1372         [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads",
1373             [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r",
1374                 [AC_CHECK_FUNC(pthread_create)]
1375             )]
1376         )]
1377 )
1378
1379 AC_SUBST(FDLIBS)
1380 AC_DEFINE(FDLIBS)
1381
1382
1383 CFLAGS=${CFLAGS--O}
1384 LDFLAGS=${LDFLAGS--O}
1385 DB_LIBS="${SQL_LFLAGS}"
1386
1387 CPPFLAGS="$CPPFLAGS"
1388 AC_SUBST(DEBUG)
1389 AC_SUBST(DINCLUDE)
1390 AC_SUBST(CFLAGS)
1391 AC_SUBST(CPPFLAGS)
1392 AC_SUBST(LDFLAGS)
1393 AC_SUBST(X_CFLAGS)
1394 AC_SUBST(LIBS)
1395 AC_SUBST(DLIB)
1396 AC_SUBST(DB_LIBS)
1397 AC_SUBST(X_LIBS)
1398 AC_SUBST(X_EXTRA_LIBS)
1399 AC_SUBST(WCFLAGS)
1400 AC_SUBST(WLDFLAGS)
1401
1402 dnl# extra configurable objects
1403 OBJLIST=
1404 AC_SUBST(OBJLIST)
1405
1406 lld="lld"
1407 llu="llu"
1408
1409 WCFLAGS=
1410 WLDFLAGS=
1411
1412 #
1413 # Finally we set appropriate distribution specific
1414 #  variables and defaults
1415 #
1416 # PFILES are platform specific files
1417 PFILES="platforms/Makefile"
1418 PSCMD="ps -e"
1419 WIN32=
1420 MACOSX=
1421 hostname=`uname -n | cut -d '.' -f 1`
1422 case "$DISTNAME" in
1423 aix)
1424         DISTVER=`uname -r`
1425         PSCMD="ps -e -o pid,comm"
1426         PFILES="${PFILES} \
1427            platforms/aix/Makefile"
1428         TAPEDRIVE="/dev/rmt0.1" 
1429   ;;      
1430 alpha)
1431         DISTVER=`uname -r`
1432         PTHREAD_LIB="-lpthread -lexc"
1433         if test "${CC}" = "gcc" ; then
1434            lld="lld"
1435            llu="llu"
1436         else
1437            lld="ld"
1438            llu="lu"
1439         fi
1440         TAPEDRIVE="/dev/nrmt0"
1441   ;;
1442 bsdi)
1443         DISTVER=`uname -a |awk '{print $3}'`
1444         TAPEDRIVE="/dev/nrmt0"
1445         PTHREAD_LIB="-pthread"
1446         CFLAGS="${CFLAGS} -pthread"
1447         PSCMD="ps -x -o pid,command"
1448         lld="qd"
1449         llu="qu"
1450         PFILES="${PFILES} \
1451             platforms/bsdi/Makefile \
1452             platforms/bsdi/bacula-fd \
1453             platforms/bsdi/bacula-sd \
1454             platforms/bsdi/bacula-dir"
1455         largefile_support="yes"
1456   ;;
1457 cygwin)
1458         DISTVER=`uname -a |awk '{print $3}'`
1459         TAPEDRIVE="/dev/nrst0"
1460         WIN32=win32
1461         WCFLAGS="-mwindows"
1462         WLDFLAGS="-mwindows"
1463   ;;
1464 darwin)
1465         DISTVER=`uname -r`
1466         TAPEDRIVE="/dev/nst0"
1467         PSCMD="ps -e -o pid,command"
1468         MACOSX=macosx
1469         PFILES="${PFILES} \
1470            platforms/darwin/Makefile"
1471   ;;
1472 debian)
1473         DISTVER=`cat /etc/debian_version`
1474         TAPEDRIVE="/dev/nrst0"
1475         PSCMD="ps -e -o pid,command"
1476   ;;
1477 freebsd)
1478         DISTVER=`uname -a |awk '{print $3}'`
1479         VER=`echo $DISTVER | cut -c 1`
1480         if test x$VER = x4 ; then
1481            PTHREAD_LIB="-pthread"
1482            CFLAGS="${CFLAGS} -pthread"
1483         fi
1484         lld="qd"
1485         llu="qu"
1486         TAPEDRIVE="/dev/nrsa0"
1487         PSCMD="ps -x -o pid,command"
1488         PFILES="${PFILES} \
1489             platforms/freebsd/Makefile \
1490             platforms/freebsd/bacula-fd \
1491             platforms/freebsd/bacula-sd \
1492             platforms/freebsd/bacula-dir"
1493         largefile_support="yes"
1494   ;;
1495 hpux)
1496         PSCMD="UNIX95=1 ps -e -o pid,comm"
1497         CFLAGS="$(CFLAGS) -D_XOPEN_SOURCE_EXTENDED=1"
1498         DISTVER=`uname -r`
1499         TAPEDRIVE="/dev/rmt/0hnb"
1500   ;;
1501 irix)
1502         DISTVER=`uname -r`
1503         TAPEDRIVE="/dev/rmt/0cbn"
1504         PSCMD="ps -e -o pid,comm"
1505         PFILES="${PFILES} \
1506             platforms/irix/Makefile \
1507             platforms/irix/bacula-fd \
1508             platforms/irix/bacula-sd \
1509             platforms/irix/bacula-dir"
1510   ;;
1511 netbsd)
1512         DISTVER=`uname -a |awk '{print $3}'`
1513         lld="qd"
1514         llu="qu"
1515         TAPEDRIVE="/dev/nrst0"
1516         PSCMD="ps -a -o pid,command"
1517         PTHREAD_LIB="-pthread"
1518         CFLAGS="${CFLAGS} -pthread"
1519   ;;
1520 openbsd)
1521         DISTVER=`uname -a |awk '{print $3}'`
1522         lld="qd"
1523         llu="qu"
1524         TAPEDRIVE="/dev/nrst0"
1525         PSCMD="ps -a -o pid,command"
1526         PTHREAD_LIB="-pthread"
1527         CFLAGS="${CFLAGS} -pthread"
1528         PFILES="${PFILES} \
1529             platforms/openbsd/Makefile \
1530             platforms/openbsd/bacula-fd \
1531             platforms/openbsd/bacula-sd \
1532             platforms/openbsd/bacula-dir"
1533   ;;
1534 redhat)
1535         if test -f /etc/whitebox-release ; then
1536            f=/etc/whitebox-release
1537         else
1538            f=/etc/redhat-release
1539         fi
1540         if test `cat $f | grep release |\
1541                    cut -f 3 -d ' '`x = "Enterprise"x ; then
1542            DISTVER="Enterprise "`cat $f | grep release |\
1543                     cut -f 6 -d ' '`
1544         else
1545             DISTVER=`cat /etc/redhat-release | grep release |\
1546                      cut -f 5 -d ' '`
1547         fi
1548         TAPEDRIVE="/dev/nst0"
1549         PSCMD="ps -e -o pid,command"
1550         PFILES="${PFILES} \
1551             platforms/redhat/Makefile \
1552             platforms/redhat/bacula-fd \
1553             platforms/redhat/bacula-sd \
1554             platforms/redhat/bacula-dir \
1555             platforms/redhat/bacula.spec \
1556             "
1557         hostname=`hostname -s`
1558   ;;
1559 mandrake)
1560         DISTVER=`cat /etc/mandrake-release | grep release |\
1561            cut -f 5 -d ' '`
1562         TAPEDRIVE="/dev/nst0"
1563         PSCMD="ps -e -o pid,command"
1564         PFILES="${PFILES} \
1565             platforms/mandrake/Makefile \
1566             platforms/mandrake/bacula-fd \
1567             platforms/mandrake/bacula-sd \
1568             platforms/mandrake/bacula-dir \
1569             platforms/mandrake/bacula.spec \
1570             "
1571   ;;
1572 gentoo)
1573         DISTVER=`awk '/version / {print $5}' < /etc/gentoo-release`
1574         TAPEDRIVE="/dev/nst0"
1575         PSCMD="ps -e -o pid,command"
1576         PFILES="${PFILES} \
1577             platforms/gentoo/Makefile \
1578             platforms/gentoo/bacula-fd \
1579             platforms/gentoo/bacula-sd \
1580             platforms/gentoo/bacula-dir"
1581   ;;
1582 slackware)
1583         DISTVER=`cat /etc/slackware-version`
1584         TAPEDRIVE="/dev/nst0"
1585         PSCMD="ps -e -o pid,command"
1586         PFILES="${PFILES} \
1587             platforms/slackware/Makefile \
1588             platforms/slackware/rc.bacula-fd \
1589             platforms/slackware/rc.bacula-sd \
1590             platforms/slackware/rc.bacula-dir\
1591             platforms/slackware/functions.bacula"
1592   ;;
1593 solaris)
1594         DISTVER=`uname -r`
1595         TAPEDRIVE="/dev/rmt/0cbn"
1596         PSCMD="ps -e -o pid,comm"
1597         PFILES="${PFILES} \
1598             platforms/solaris/Makefile \
1599             platforms/solaris/bacula-fd \
1600             platforms/solaris/bacula-sd \
1601             platforms/solaris/bacula-dir"
1602         if test x$DISTVER = x5.6 ; then
1603             AC_DEFINE(HAVE_OLD_SOCKOPT)
1604         fi
1605   ;;
1606 suse)
1607         DISTVER=`cat /etc/SuSE-release |grep VERSION|\
1608             cut -f 3 -d ' '`
1609         TAPEDRIVE="/dev/nst0"
1610         PSCMD="ps -e -o pid,command"
1611         PFILES="${PFILES} \
1612             platforms/suse/Makefile \
1613             platforms/suse/bacula-fd \
1614             platforms/suse/bacula-sd \
1615             platforms/suse/bacula-dir \
1616             platforms/suse/bacula \
1617             platforms/suse/bacula.spec"
1618   ;;
1619 suse5)
1620         DISTNAME=suse
1621         DISTVER=5.x
1622         TAPEDRIVE="/dev/nst0"
1623         PSCMD="ps -e -o pid,command"
1624         PFILES="${PFILES} \
1625             platforms/suse/Makefile \
1626             platforms/suse/bacula-fd \
1627             platforms/suse/bacula-sd \
1628             platforms/suse/bacula-dir"
1629   ;;
1630 unknown)
1631         DISTVER=unknown
1632         TAPEDRIVE="/dev/nst0"
1633   ;;
1634 *)
1635   echo " === Something went wrong. Unknown DISTNAME $DISTNAME ==="
1636   ;;
1637 esac  
1638
1639 AC_SUBST(hostname)
1640
1641 LIBS="$PTHREAD_LIB $LIBS"
1642
1643 AC_DEFINE_UNQUOTED(lld, "$lld")
1644 AC_DEFINE_UNQUOTED(llu, "$llu")
1645 AC_SUBST(TAPEDRIVE)
1646 AC_SUBST(PSCMD)
1647 AC_SUBST(WIN32)
1648 AC_SUBST(MACOSX)
1649 AC_SUBST(DISTNAME)
1650 AC_SUBST(DISTVER)
1651
1652 dnl# common parts of the Makefile
1653 MCOMMON=./autoconf/Make.common
1654 AC_SUBST_FILE(MCOMMON)
1655
1656 dnl# Insanity check
1657 if test "x${subsysdir}" = "x${sbindir}" ; then
1658    echo " "
1659    echo " "
1660    echo "You have set both --sbindir and --with-subsys-dir"
1661    echo "  equal to: ${subsysdir} "
1662    echo "This is not permitted. Please reconfigure."
1663    echo " "
1664    echo "Aborting configuration ..."
1665    echo " "
1666    echo " "
1667    exit 1
1668 fi 
1669
1670 AC_OUTPUT([autoconf/Make.common \
1671            Makefile \
1672            rescue/Makefile \
1673            rescue/linux/Makefile \
1674            rescue/freebsd/Makefile \
1675            rescue/solaris/Makefile \
1676            scripts/startmysql \
1677            scripts/stopmysql \
1678            scripts/btraceback \
1679            scripts/startit \
1680            scripts/stopit \
1681            scripts/bconsole \
1682            scripts/gconsole \
1683            scripts/bacula \
1684            scripts/devel_bacula \
1685            scripts/Makefile \
1686            scripts/logrotate \
1687            scripts/bacula.desktop.gnome1 \
1688            scripts/bacula.desktop.gnome2 \
1689            scripts/bacula.desktop.gnome1.consolehelper \
1690            scripts/bacula.desktop.gnome2.consolehelper \
1691            scripts/bacula.desktop.gnome1.xsu \
1692            scripts/bacula.desktop.gnome2.xsu \
1693            scripts/gnome-console.console_apps \
1694            scripts/mtx-changer \
1695            doc/Makefile \
1696            src/Makefile \
1697            src/host.h \
1698            src/console/Makefile \
1699            src/console/bconsole.conf \
1700            src/gnome-console/Makefile \
1701            src/gnome-console/gnome-console.conf \
1702            src/gnome2-console/Makefile \
1703            src/gnome2-console/gnome-console.conf \
1704            src/wx-console/Makefile \
1705            src/wx-console/wx-console.conf \
1706            src/dird/Makefile \
1707            src/dird/bacula-dir.conf \
1708            src/lib/Makefile \
1709            src/stored/Makefile \
1710            src/stored/bacula-sd.conf \
1711            src/filed/Makefile \
1712            src/filed/bacula-fd.conf \
1713            src/filed/win32/Makefile \
1714            src/cats/Makefile \
1715            src/cats/make_catalog_backup \
1716            src/cats/delete_catalog_backup \
1717            src/cats/create_postgresql_database \
1718            src/cats/update_postgresql_tables \
1719            src/cats/make_postgresql_tables \
1720            src/cats/grant_postgresql_privileges \
1721            src/cats/drop_postgresql_tables \
1722            src/cats/drop_postgresql_database \
1723            src/cats/create_mysql_database \
1724            src/cats/update_mysql_tables \
1725            src/cats/make_mysql_tables \
1726            src/cats/grant_mysql_privileges \
1727            src/cats/drop_mysql_tables \
1728            src/cats/drop_mysql_database \
1729            src/cats/create_sqlite_database \
1730            src/cats/update_sqlite_tables \
1731            src/cats/make_sqlite_tables \
1732            src/cats/grant_sqlite_privileges \
1733            src/cats/drop_sqlite_tables \
1734            src/cats/drop_sqlite_database \
1735            src/cats/sqlite \
1736            src/cats/mysql \
1737            src/cats/create_bdb_database \
1738            src/cats/update_bdb_tables \
1739            src/cats/make_bdb_tables \
1740            src/cats/grant_bdb_privileges \
1741            src/cats/drop_bdb_tables \
1742            src/cats/drop_bdb_database \
1743            src/cats/create_bacula_database \
1744            src/cats/update_bacula_tables \
1745            src/cats/grant_bacula_privileges \
1746            src/cats/make_bacula_tables \
1747            src/cats/drop_bacula_tables \
1748            src/cats/drop_bacula_database \
1749            src/findlib/Makefile \
1750            src/tools/Makefile \
1751            src/win32/winbacula.nsi \
1752            src/win32/baculafd/bacula-fd.conf \
1753            src/win32/Makefile \
1754            src/win32/console/bconsole.conf \
1755            src/win32/wx-console/wx-console.conf \
1756            $PFILES ],  
1757           [(echo "Doing make of dependencies"; ${MAKE:-make} depend;) ]
1758 )
1759
1760 cd scripts
1761 chmod 755 startmysql stopmysql bacula startit stopit btraceback mtx-changer
1762 chmod 755 bconsole gconsole mtx-changer devel_bacula logrotate
1763 cd ..
1764
1765 c=src/cats
1766
1767 chmod 755 $c/create_bacula_database   $c/update_bacula_tables  $c/make_bacula_tables
1768 chmod 755 $c/grant_bacula_privileges  $c/drop_bacula_tables    $c/drop_bacula_database
1769
1770 chmod 755 $c/create_bdb_database      $c/update_bdb_tables     $c/make_bdb_tables
1771 chmod 755 $c/grant_bdb_privileges     $c/drop_bdb_tables       $c/drop_bdb_database
1772
1773 chmod 755 $c/create_mysql_database    $c/update_mysql_tables   $c/make_mysql_tables
1774 chmod 755 $c/grant_mysql_privileges   $c/drop_mysql_tables     $c/drop_mysql_database
1775
1776 chmod 755 $c/create_sqlite_database   $c/update_sqlite_tables  $c/make_sqlite_tables
1777 chmod 755 $c/grant_sqlite_privileges  $c/drop_sqlite_tables    $c/drop_sqlite_database
1778
1779 chmod 755 $c/create_postgresql_database  $c/update_postgresql_tables $c/make_postgresql_tables
1780 chmod 755 $c/grant_postgresql_privileges $c/drop_postgresql_tables   $c/drop_postgresql_database
1781
1782 chmod 755 $c/make_catalog_backup $c/delete_catalog_backup
1783 chmod 755 $c/sqlite
1784 chmod 755 $c/mysql
1785
1786 if test "x$ac_cv_sys_largefile_CFLAGS" != "xno" ; then
1787    largefile_support="yes"
1788 fi
1789
1790 #
1791 # A whole lot of hand springs to get the compiler version.
1792 #  This is because gcc changed the output in version 3.0
1793 #
1794 CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 3 -d ' '`
1795 if test "x${CCVERSION}" = "x" ; then
1796   CCVERSION=`${CC} --version | tr '\n' ' ' | cut -f 1 -d ' '`
1797 fi
1798 CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 3 -d ' '`
1799 if test x"${CXXVERSION}" = x ; then
1800   CXXVERSION=`${CXX} --version | tr '\n' ' ' | cut -f 1 -d ' '`
1801 fi
1802
1803 if test "x${subsysdir}" = "x${sbindir}" ; then
1804    echo " "
1805    echo " "
1806    echo "You have set --sbindir and --with-subsys-dir"
1807    echo "  both equal to: ${subsysdir} "
1808    echo "  This is not permitted. Please reconfigure."
1809    echo " "
1810    echo "Aborting configuration ..."
1811    echo " "
1812    echo " "
1813    exit 1
1814 fi 
1815
1816 if test "x${db_name}" = "xInternal" ; then
1817    echo " "
1818    echo " "
1819    echo "You have not specified either --enable-client-only or one of the"
1820    echo "  supported databases: MySQL, PostgreSQL, or SQLite".
1821    echo "  This is not permitted. Please reconfigure."
1822    echo " "
1823    echo "Aborting the configuration ..."
1824    echo " "
1825    echo " "
1826    exit 1
1827 fi
1828
1829 echo "
1830 Configuration on `date`:
1831
1832   Host:                       $host -- ${DISTNAME} ${DISTVER}
1833   Bacula version:             ${VERSION} (${DATE})
1834   Source code location:       ${srcdir}
1835   Install binaries:           ${sbindir}
1836   Install config files:       ${sysconfdir}
1837   Scripts directory:          ${scriptdir}
1838   Working directory:          ${working_dir}
1839   PID directory:              ${piddir}
1840   Subsys directory:           ${subsysdir}
1841   C Compiler:                 ${CC} ${CCVERSION}
1842   C++ Compiler:               ${CXX} ${CXXVERSION}
1843   Compiler flags:             ${WCFLAGS} ${CFLAGS} 
1844   Linker flags:               ${WLDFLAGS} ${LDFLAGS}
1845   Libraries:                  ${LIBS}
1846   Statically Linked Tools:    ${support_static_tools}
1847   Statically Linked FD:       ${support_static_fd}
1848   Statically Linked SD:       ${support_static_sd}
1849   Statically Linked DIR:      ${support_static_dir}
1850   Statically Linked CONS:     ${support_static_cons}
1851   Database type:              ${db_name}
1852   Database lib:               ${DB_LIBS}
1853
1854   Job Output Email:           ${job_email}
1855   Traceback Email:            ${dump_email}
1856   SMTP Host Address:          ${smtp_host}
1857
1858   Director Port:              ${dir_port}
1859   File daemon Port:           ${fd_port}
1860   Storage daemon Port:        ${sd_port}
1861
1862   Director User:              ${dir_user}
1863   Director Group:             ${dir_group}
1864   Storage Daemon User:        ${sd_user}
1865   Storage DaemonGroup:        ${sd_group}
1866   File Daemon User:           ${fd_user}
1867   File Daemon Group:          ${fd_group}
1868
1869   SQL binaries Directory      ${SQL_BINDIR}
1870
1871   Large file support:         $largefile_support
1872   Bacula conio support:       ${got_conio} ${CONS_LIBS}
1873   readline support:           ${got_readline} ${PRTREADLINE_SRC}
1874   TCP Wrappers support:       ${TCPW_MSG}
1875   ZLIB support:               ${have_zlib}
1876   enable-smartalloc:          ${support_smartalloc} 
1877   enable-gnome:               ${support_gnome} ${gnome_version}
1878   enable-wx-console:          ${support_wx_console}
1879   client-only:                ${build_client_only}
1880   ACL support:                ${have_acl}
1881
1882   " > config.out
1883
1884 cat config.out
1885
1886 # old stuff
1887 # cweb support:               ${got_cweb} ${CWEB_SRC}
1888   # gmp support:                      ${got_gmp} ${GMP_SRC}