added CREDITS file, bumped software version, added ChangeLog files
[fwknop.git] / configure.ac
1 dnl Fwknop AutoConf script...
2 dnl =========================
3 dnl
4 dnl Created by Damien Stuart
5 dnl
6 dnl Inspiration from RRDtool configure.ac, the AutoConf Archive
7 dnl (http://www.nongnu.org/autoconf-archive/), and other examples.
8
9 dnl Minimum Autoconf version required.
10 AC_PREREQ(2.62)
11
12 dnl Define our name, version and email.
13 m4_define(my_package,   [fwknop])
14 m4_define(my_version,   [2.0rc5])
15 m4_define(my_bug_email, [dstuart@dstuart.org])
16
17 AC_INIT(my_package, my_version, my_bug_email)
18
19 AC_CONFIG_AUX_DIR(config)
20
21 AC_CANONICAL_TARGET
22
23 AM_INIT_AUTOMAKE([tar-ustar -Wall -Werror foreign])
24
25 dnl AM_MAINTAINER_MODE
26
27 AC_CONFIG_HEADERS([config.h])
28
29 dnl The top of our header
30 dnl
31 AH_TOP([
32 #ifndef FWKNOP_CONFIG_H
33 #define FWKNOP_CONFIG_H
34 ])
35
36 dnl The bottom of our header file
37 dnl
38 AH_BOTTOM([
39 #endif /* FWKNOP_CONFIG_H */
40 ])
41
42 dnl Decide whether or not to build the client
43 dnl
44 want_client=yes
45 AC_ARG_ENABLE([client],
46   [AS_HELP_STRING([--disable-client],
47     [Do not build the fwknop client @<:@default is to build@:>@])],
48   [want_client=$enableval],
49   [])
50 AM_CONDITIONAL([WANT_CLIENT], [test "$want_client" = yes])
51
52 dnl Decide whether or not to build the server
53 dnl
54 want_server=yes
55 AC_ARG_ENABLE([server],
56   [AS_HELP_STRING([--disable-server],
57     [Do not build the fwknop server @<:@default is to build@:>@])],
58   [want_server=$enableval],
59   [])
60 AM_CONDITIONAL([WANT_SERVER], [test "$want_server" = yes])
61
62 dnl Decide whether or not to enable the digest-cache
63 dnl
64 want_digest_cache=yes
65 AC_ARG_ENABLE([digest-cache],
66   [AS_HELP_STRING([--disable-digest-cache],
67     [Do not enable the fwknopd digest-cache @<:@default is to build@:>@])],
68   [want_digest_cache=$enableval],
69   [])
70 dnl AM_CONDITIONAL([WANT_DIGEST_CACHE], [test "$want_digest_cache" = yes])
71
72 dnl Decide whether or not to try to look for gdbm/ndbm (default to just
73 dnl use a file-based solution - reduces dependencies)
74 dnl
75 want_file_cache=yes
76 AC_ARG_ENABLE([file-cache],
77   [AS_HELP_STRING([--disable-file-cache],
78     [Replace file cache with gdbm/ndbm @<:@default on@:>@])],
79   [want_file_cache=$enableval],
80   [])
81 AS_IF([test "$want_file_cache" = yes], [
82     AC_DEFINE([USE_FILE_CACHE], [1], [Define this to enable non-gdbm/ndbm digest storing (eliminates gdbm/ndbm dependency).])
83 ])
84
85 dnl Decide whether or not to enable all warnings with -Wall
86 dnl
87 use_wall=yes
88 AC_ARG_ENABLE([wall],
89   [AS_HELP_STRING([--disable-wall],
90     [Do not enable all warnings via -Wall @<:@default is on@:>@])],
91   [use_wall=$enableval],
92   [])
93
94
95 dnl Decide whether or not to enable -fstack-protector
96 dnl
97 use_stack_protector=yes
98 AC_ARG_ENABLE([stack-protector],
99   [AS_HELP_STRING([--disable-stack-protector],
100     [Do not enable -fstack-protector @<:@default is on@:>@])],
101   [use_stack_protector=$enableval],
102   [])
103
104 dnl Decide whether or not to enable Position Independent Executable (PIE)
105 dnl support
106 dnl
107 use_pie=yes
108 AC_ARG_ENABLE([pie],
109   [AS_HELP_STRING([--disable-pie],
110     [Do not enable Position Independent Executable support @<:@default is on@:>@])],
111   [use_pie=$enableval],
112   [])
113
114 dnl Decide whether or not to enable -D_FORTIFY_SOURCE support
115 dnl
116 use_fortify_source=yes
117 AC_ARG_ENABLE([fortify-source],
118   [AS_HELP_STRING([--disable-fortify-source],
119     [Do not enable -D_FORTIFY_SOURCE support @<:@default is on@:>@])],
120   [use_fortify_source=$enableval],
121   [])
122
123 dnl Decide whether or not to use read-only relocations protection
124 dnl
125 use_ro_relocations=yes
126 AC_ARG_ENABLE([ro-relocations],
127   [AS_HELP_STRING([--disable-ro-relocations],
128     [Do not enable read-only relocations protection @<:@default is on@:>@])],
129   [use_ro_relocations=$enableval],
130   [])
131
132 dnl Decide whether or not to use immediate binding protection
133 dnl
134 use_immediate_binding=yes
135 AC_ARG_ENABLE([immediate-binding],
136   [AS_HELP_STRING([--disable-immediate-binding],
137     [Do not enable immediate binding protection @<:@default is on@:>@])],
138   [use_immediate_binding=$enableval],
139   [])
140
141 AC_GNU_SOURCE
142
143 AC_PROG_CC
144 AM_PROG_CC_C_O
145 AC_PROG_CPP
146 AC_PROG_AWK
147 AC_PROG_SED
148 AC_PROG_GREP
149 AC_PROG_INSTALL
150 AC_PROG_LN_S
151 AC_PROG_MAKE_SET
152 AC_PROG_RANLIB
153 AC_PROG_LIBTOOL
154
155 case "$host" in
156 *-*-linux*)
157     ;;
158 *-*-openbsd*)
159     AC_DEFINE_UNQUOTED([PLATFORM_OPENBSD], [1], [Define if you are running on OpenBSD])
160     ;;
161 esac
162
163 # Checks for header files.
164 #
165 AC_HEADER_STDC
166 AC_HEADER_TIME
167 AC_HEADER_RESOLV
168
169 AC_CHECK_HEADERS([arpa/inet.h ctype.h endian.h errno.h locale.h netdb.h net/ethernet.h netinet/in.h stdint.h stdlib.h string.h strings.h sys/byteorder.h sys/endian.h sys/ethernet.h sys/socket.h sys/stat.h sys/time.h sys/wait.h termios.h time.h unistd.h])
170
171 # Type checks.
172 #
173 AC_C_CONST
174 AC_TYPE_INT8_T
175 AC_TYPE_INT16_T
176 AC_TYPE_INT32_T
177 AC_TYPE_INT64_T
178 AC_TYPE_UINT8_T
179 AC_TYPE_UINT16_T
180 AC_TYPE_UINT32_T
181 AC_TYPE_UINT64_T
182 AC_TYPE_OFF_T
183 AC_TYPE_PID_T
184 AC_TYPE_SIZE_T
185 AC_TYPE_SSIZE_T
186
187 AC_CHECK_SIZEOF(unsigned int)
188 dnl AC_CHECK_TYPES([uint8_t, uint32_t])
189
190 AC_C_BIGENDIAN
191
192 AC_SYS_LARGEFILE
193
194 # Checks for library functions.
195 #
196 AC_FUNC_MALLOC
197 AC_FUNC_REALLOC
198 AC_FUNC_STAT
199
200 AC_CHECK_FUNCS([bzero gettimeofday memmove memset socket strchr strcspn strdup strncasecmp strndup strrchr strspn])
201
202 AC_SEARCH_LIBS([socket], [socket])
203 AC_SEARCH_LIBS([inet_addr], [nsl])
204
205 # Add -Wall
206 #
207 if test "x$use_wall" = "xyes"; then
208     for t in -Wall; do
209         AC_MSG_CHECKING(if $CC supports $t)
210         saved_CFLAGS="$CFLAGS"
211         saved_LDFLAGS="$LDFLAGS"
212         CFLAGS="$CFLAGS $t -Werror"
213         LDFLAGS="$LDFLAGS $t -Werror"
214         AC_LINK_IFELSE(
215             [AC_LANG_SOURCE([
216 #include <stdio.h>
217 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
218              ])],
219             [ AC_MSG_RESULT(yes)
220               CFLAGS="$saved_CFLAGS $t"
221               LDFLAGS="$saved_LDFLAGS $t"
222               AC_MSG_CHECKING(if $t works)
223               AC_RUN_IFELSE(
224                 [AC_LANG_SOURCE([
225 #include <stdio.h>
226 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
227             ])],
228             [ AC_MSG_RESULT(yes)
229               break ],
230             [ AC_MSG_RESULT(no) ],
231             [ AC_MSG_WARN([cross compiling: cannot test])
232               break ]
233               )
234             ],
235             [ AC_MSG_RESULT(no) ]
236         )
237         CFLAGS="$saved_CFLAGS"
238         LDFLAGS="$saved_LDFLAGS"
239     done
240 fi
241
242 # Check for security features offered by the compiler
243 #
244
245 # Adapted from OpenSSH:
246 # -fstack-protector-all doesn't always work for some GCC versions
247 # and/or platforms, so we test if we can.  If it's not supported
248 # on a given platform gcc will emit a warning so we use -Werror.
249 if test "x$use_stack_protector" = "xyes"; then
250     for t in -fstack-protector-all -fstack-protector; do
251         AC_MSG_CHECKING(if $CC supports $t)
252         saved_CFLAGS="$CFLAGS"
253         saved_LDFLAGS="$LDFLAGS"
254         CFLAGS="$CFLAGS $t -Werror"
255         LDFLAGS="$LDFLAGS $t -Werror"
256         AC_LINK_IFELSE(
257             [AC_LANG_SOURCE([
258 #include <stdio.h>
259 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
260              ])],
261             [ AC_MSG_RESULT(yes)
262               CFLAGS="$saved_CFLAGS $t"
263               LDFLAGS="$saved_LDFLAGS $t"
264               AC_MSG_CHECKING(if $t works)
265               AC_RUN_IFELSE(
266                 [AC_LANG_SOURCE([
267 #include <stdio.h>
268 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
269             ])],
270             [ AC_MSG_RESULT(yes)
271               break ],
272             [ AC_MSG_RESULT(no) ],
273             [ AC_MSG_WARN([cross compiling: cannot test])
274               break ]
275               )
276             ],
277             [ AC_MSG_RESULT(no) ]
278         )
279         CFLAGS="$saved_CFLAGS"
280         LDFLAGS="$saved_LDFLAGS"
281     done
282 fi
283
284 if test "x$use_pie" = "xyes"; then
285     for t in "-fPIE -pie"; do
286         AC_MSG_CHECKING(if $CC supports $t)
287         saved_CFLAGS="$CFLAGS"
288         saved_LDFLAGS="$LDFLAGS"
289         CFLAGS="$CFLAGS $t -Werror"
290         LDFLAGS="$LDFLAGS $t -Werror"
291         AC_LINK_IFELSE(
292             [AC_LANG_SOURCE([
293 #include <stdio.h>
294 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
295              ])],
296             [ AC_MSG_RESULT(yes)
297               CFLAGS="$saved_CFLAGS $t"
298               LDFLAGS="$saved_LDFLAGS $t"
299               AC_MSG_CHECKING(if $t works)
300               AC_RUN_IFELSE(
301                 [AC_LANG_SOURCE([
302 #include <stdio.h>
303 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
304             ])],
305             [ AC_MSG_RESULT(yes)
306               break ],
307             [ AC_MSG_RESULT(no) ],
308             [ AC_MSG_WARN([cross compiling: cannot test])
309               break ]
310               )
311             ],
312             [ AC_MSG_RESULT(no) ]
313         )
314         CFLAGS="$saved_CFLAGS"
315         LDFLAGS="$saved_LDFLAGS"
316     done
317 fi
318
319 if test "x$use_fortify_source" = "xyes"; then
320     for t in "-D_FORTIFY_SOURCE=2"; do
321         AC_MSG_CHECKING(if $CC supports $t)
322         saved_CFLAGS="$CFLAGS"
323         saved_LDFLAGS="$LDFLAGS"
324         CFLAGS="$CFLAGS $t -Werror"
325         LDFLAGS="$LDFLAGS $t -Werror"
326         AC_LINK_IFELSE(
327             [AC_LANG_SOURCE([
328 #include <stdio.h>
329 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
330              ])],
331             [ AC_MSG_RESULT(yes)
332               CFLAGS="$saved_CFLAGS $t"
333               LDFLAGS="$saved_LDFLAGS $t"
334               AC_MSG_CHECKING(if $t works)
335               AC_RUN_IFELSE(
336                 [AC_LANG_SOURCE([
337 #include <stdio.h>
338 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
339             ])],
340             [ AC_MSG_RESULT(yes)
341               break ],
342             [ AC_MSG_RESULT(no) ],
343             [ AC_MSG_WARN([cross compiling: cannot test])
344               break ]
345               )
346             ],
347             [ AC_MSG_RESULT(no) ]
348         )
349         CFLAGS="$saved_CFLAGS"
350         LDFLAGS="$saved_LDFLAGS"
351     done
352 fi
353
354 if test "x$use_ro_relocations" = "xyes"; then
355     for t in "-Wl,-z,relro"; do
356         AC_MSG_CHECKING(if $CC supports $t)
357         saved_LDFLAGS="$LDFLAGS"
358         LDFLAGS="$LDFLAGS $t -Werror"
359         AC_LINK_IFELSE(
360             [AC_LANG_SOURCE([
361 #include <stdio.h>
362 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
363              ])],
364             [ AC_MSG_RESULT(yes)
365               LDFLAGS="$saved_LDFLAGS $t"
366               AC_MSG_CHECKING(if $t works)
367               AC_RUN_IFELSE(
368                 [AC_LANG_SOURCE([
369 #include <stdio.h>
370 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
371             ])],
372             [ AC_MSG_RESULT(yes)
373               break ],
374             [ AC_MSG_RESULT(no) ],
375             [ AC_MSG_WARN([cross compiling: cannot test])
376               break ]
377               )
378             ],
379             [ AC_MSG_RESULT(no) ]
380         )
381         LDFLAGS="$saved_LDFLAGS"
382     done
383 fi
384
385 if test "x$use_immediate_binding" = "xyes"; then
386     for t in "-Wl,-z,now"; do
387         AC_MSG_CHECKING(if $CC supports $t)
388         saved_LDFLAGS="$LDFLAGS"
389         LDFLAGS="$LDFLAGS $t -Werror"
390         AC_LINK_IFELSE(
391             [AC_LANG_SOURCE([
392 #include <stdio.h>
393 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
394              ])],
395             [ AC_MSG_RESULT(yes)
396               LDFLAGS="$saved_LDFLAGS $t"
397               AC_MSG_CHECKING(if $t works)
398               AC_RUN_IFELSE(
399                 [AC_LANG_SOURCE([
400 #include <stdio.h>
401 int main(void){char x[[256]]; snprintf(x, sizeof(x), "NNN"); return 0;}
402             ])],
403             [ AC_MSG_RESULT(yes)
404               break ],
405             [ AC_MSG_RESULT(no) ],
406             [ AC_MSG_WARN([cross compiling: cannot test])
407               break ]
408               )
409             ],
410             [ AC_MSG_RESULT(no) ]
411         )
412         LDFLAGS="$saved_LDFLAGS"
413     done
414 fi
415
416 # Check for 3rd-party libs
417 #
418 AC_ARG_WITH([gpgme],
419   [AS_HELP_STRING([--with-gpgme],
420     [support for gpg encryption using libgpgme @<:@default=check@:>@])],
421   [],
422   [with_gpgme=check])
423
424 have_gpgme=yes
425 AS_IF([test "x$with_gpgme" != xno],
426   [AM_PATH_GPGME([],
427     [AC_DEFINE([HAVE_LIBGPGME], [1], [Define if you have libgpgme])],
428     [if test "x$with_gpgme" != xcheck; then
429        AC_MSG_FAILURE(
430          [--with-gpgme was given, but test for gpgme failed])
431      else
432        have_gpgme=no
433      fi
434     ], [have_gpgme=no])], [have_gpgme=no])
435
436 dnl Add various common way to sbin dir to the path (just in case)
437   APP_PATH=$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/usr/local/sbin
438
439 dnl Check for gpg (not gpg2)
440 dnl
441 AC_ARG_WITH([gpg],
442   [AS_HELP_STRING([--with-gpg=/path/to/gpg],
443     [Specify path to the gpg executable that gpgme will use @<:@default=check path@:>@])],
444   [
445       AS_IF([ test "x$withval" = x -o "x$withval" = xyes -o "x$withval" = xno ],
446         [AC_MSG_ERROR([--with-gpg requires an argument specifying a path to gpg])],
447         [ GPG_EXE=$withval ]
448       )
449   ],
450   [
451       AC_PATH_PROG(GPG_EXE, [gpg], [], [$APP_PATH])
452   ]
453 )
454 AS_IF([test "x$GPG_EXE" != x],
455   [
456     AC_DEFINE_UNQUOTED([GPG_EXE], ["$GPG_EXE"], [Path to gpg executable])
457     gpg_exe=$GPG_EXE
458   ], [ gpg_exe="(not found)"]
459 )
460
461 if [test "$have_gpgme" = "yes" ]; then
462 case "$host" in
463 *-*-linux*)
464     ;;
465 *-*-freebsd*)
466     if [ test "x$CPPFLAGS" = "x" ] ; then
467         CPPFLAGS="-I/usr/local/include -I/usr/local/include/gpgme"
468     fi
469     if [ test "x$LDFLAGS" = "x" ] ; then
470         LDFLAGS="-L/usr/local/lib"
471     fi
472     ;;
473 esac
474 fi
475
476 dnl Check for libpcap, gdbm (or ndbm) if we are building the server component
477 dnl
478 AS_IF([test "$want_server" = yes], [
479     # Looking for libpcap
480     #
481     AC_CHECK_LIB([pcap],[pcap_open_live],
482       [ AC_DEFINE([HAVE_LIBPCAP], [1], [Define if you have libpcap]) ],
483       [ AC_MSG_ERROR([fwknopd needs libpcap])]
484     )
485
486   AS_IF([test "$want_digest_cache" = yes], [
487     use_ndbm=no
488     have_digest_cache=yes
489
490     AS_IF([test "$want_file_cache" = no], [
491
492       # Looking for gdbm or fallback to ndbm or bail
493       #
494       AC_CHECK_LIB([gdbm],[gdbm_open],
495           [
496               AC_DEFINE([HAVE_LIBGDBM], [1], [Define if you have libgdbm])
497           ],
498           [ AC_CHECK_LIB([ndbm],[dbm_open],
499               [
500                   AC_DEFINE([HAVE_LIBNDBM], [1], [Define if you have libndbm])
501                   use_ndbm=yes
502               ],
503               [ AC_CHECK_HEADER([ndbm.h],
504                   [ AC_CHECK_FUNC([dbm_open],
505                       [ AC_DEFINE([HAVE_LIBNDBM], [1], [Define if you have libndbm])],
506                       [
507                           AC_DEFINE([NO_DIGEST_CACHE], [1], [Define this to disable the digest cache for replay detection - not recommended.])
508                           AC_MSG_WARN([No DBM implementation found. Replay detection will be disabled.])
509                           have_digest_cache=no
510                       ]
511                   )]
512               )]
513           )]
514       )]
515     )],
516     [
517         AC_DEFINE([NO_DIGEST_CACHE], [1], [Define this to disable the digest cache for replay detection - not recommended.])
518         have_digest_cache=no
519     ]
520   )
521
522   AM_CONDITIONAL([USE_NDBM], [test x$use_ndbm = xyes])
523   AM_CONDITIONAL([CONFIG_FILE_CACHE], [test x$want_file_cache = xyes])
524
525 dnl Check for iptables
526 dnl
527   AC_ARG_WITH([iptables],
528     [AS_HELP_STRING([--with-iptables=/path/to/iptables],
529       [Specify path to the iptables executable @<:@default=check path@:>@])],
530     [
531       AS_IF([ test "x$withval" = xno ], [],
532         AS_IF([ test "x$withval" = x -o "x$withval" = xyes ],
533           [AC_MSG_ERROR([--with-iptables requires an argument specifying a path to iptables])],
534           [ IPTABLES_EXE=$withval ]
535         )
536       )
537     ],
538     [
539       AC_PATH_PROG(IPTABLES_EXE, [iptables], [], [$APP_PATH])
540     ]
541   )
542
543 dnl Check for ipfw
544 dnl
545   AC_ARG_WITH([ipfw],
546     [AS_HELP_STRING([--with-ipfw=/path/to/ipfw],
547       [Specify path to the ipfw executable @<:@default=check path@:>@])],
548     [
549       AS_IF([ test "x$withval" = xno ], [],
550         AS_IF([ test "x$withval" = x -o "x$withval" = xyes ],
551           [AC_MSG_ERROR([--with-ipfw requires an argument specifying a path to ipfw])],
552           [ IPFW_EXE=$withval ]
553         )
554       )
555     ],
556     [
557       AC_PATH_PROG(IPFW_EXE, [ipfw], [], [$APP_PATH])
558     ]
559   )
560
561 dnl Check for pf from OpenBSD
562 dnl
563   AC_ARG_WITH([pf],
564     [AS_HELP_STRING([--with-pf=/path/to/pfctl],
565       [Specify path to the pf executable @<:@default=check path@:>@])],
566     [
567       AS_IF([ test "x$withval" = xno ], [],
568         AS_IF([ test "x$withval" = x -o "x$withval" = xyes ],
569           [AC_MSG_ERROR([--with-pf requires an argument specifying a path to pf])],
570           [ PF_EXE=$withval ]
571         )
572       )
573     ],
574     [
575       AC_PATH_PROG(PF_EXE, [pfctl], [], [$APP_PATH])
576     ]
577   )
578
579 dnl Check for ipf (ipfilter)
580 dnl
581   AC_ARG_WITH([ipf],
582     [AS_HELP_STRING([--with-ipf=/path/to/ipf],
583       [Specify path to the ipf executable @<:@default=check path@:>@])],
584     [
585       AS_IF([ test "x$withval" = xno ], [],
586         AS_IF([ test "x$withval" = x -o "x$withval" = xyes ],
587           [AC_MSG_ERROR([--with-ipf requires an argument specifying a path to ipf])],
588           [ IPF_EXE=$withval ]
589         )
590       )
591     ],
592     [
593       AC_PATH_PROG(IPF_EXE, [ipf], [], [$APP_PATH])
594     ]
595   )
596
597 dnl Determine which firewall exe we use (if we have one).
598 dnl If iptables was found or specified, it wins, then we fallback to ipfw,
599 dnl then pf, and otherwise we try ipf.
600 dnl
601   AS_IF([test "x$IPTABLES_EXE" != x], [
602       FW_DEF="FW_IPTABLES"
603       FIREWALL_TYPE="iptables" 
604       FIREWALL_EXE=$IPTABLES_EXE
605       AC_DEFINE_UNQUOTED([FIREWALL_IPTABLES], [1], [The firewall type: iptables.])
606   ],[
607     AS_IF([test "x$IPFW_EXE" != x], [
608         FW_DEF="FW_IPFW"
609         FIREWALL_TYPE="ipfw" 
610         FIREWALL_EXE=$IPFW_EXE
611         AC_DEFINE_UNQUOTED([FIREWALL_IPFW], [1], [The firewall type: ipfw.])
612     ],[
613         AS_IF([test "x$PF_EXE" != x], [
614             FW_DEF="FW_PF"
615             FIREWALL_TYPE="pf"
616             FIREWALL_EXE=$PF_EXE
617             AC_DEFINE_UNQUOTED([FIREWALL_PF], [1], [The firewall type: pf.])
618         ],[
619             AS_IF([test "x$IPF_EXE" != x], [
620               AC_MSG_ERROR([Sorry - ipf was specified or the only one found, however, it is not supported yet.])
621               FIREWALL_TYPE="ipf" 
622               FIREWALL_EXE=$IPF_EXE
623               AC_DEFINE_UNQUOTED([FIREWALL_IPF], [1], [The firewall type: ipf.])
624           ], [AC_MSG_ERROR([No firewall program was found or specified.]) ]
625         ]
626     ]
627   ]
628   ))))
629
630   AC_DEFINE_UNQUOTED([FIREWALL_EXE], ["$FIREWALL_EXE"],
631     [Path to firewall command executable (it should match the firewall type).])
632
633   ],
634   [test "$want_server" = no], [
635     use_ndbm=no
636     AM_CONDITIONAL([USE_NDBM], [test x$use_ndbm = xno])
637     AM_CONDITIONAL([CONFIG_FILE_CACHE], [test x$use_ndbm = xno])
638   ]
639 )
640
641 AC_CONFIG_FILES([Makefile
642                  lib/Makefile
643                  client/Makefile
644                  server/Makefile
645                  common/Makefile
646                  doc/Makefile])
647
648 AC_OUTPUT
649
650 if [test "$have_gpgme" = "yes" ]; then
651     have_gpgme="$have_gpgme
652                   Gpgme engine:     $GPG_EXE"
653 fi
654
655 echo "
656     $PACKAGE_NAME-$PACKAGE_VERSION configuration.
657     ==========================================================
658         Client build:               $want_client
659         Server build:               $want_server
660         GPG encryption support:     $have_gpgme
661
662         Installation prefix:        $prefix
663 "
664 if [test "$want_server" = "yes" ]; then
665   echo "    Server support:
666         firewall type:              $FIREWALL_TYPE
667         firewall program path:      $FIREWALL_EXE
668 "
669
670     if [test "$want_digest_cache" = "no" ]; then
671         echo "    *WARNING*
672         The digest-cache functionality is not enabled.  This
673         could leave the fwknopd server open to replay attacks!
674 "
675     fi
676 fi