ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libspf/configure.in
Revision: 1.1
Committed: Tue Nov 13 00:51:23 2007 UTC (16 years, 6 months ago) by root
Branch: MAIN
Log Message:
initial import of libspf-1.0.0-p5 from freebsd ports

File Contents

# Content
1 #
2 # File: configure.in
3 # Author: James Couzens <jcouzens@codeshare.ca>
4 # Date: June 15, 2004
5 #
6 # Info: 'AutoTools' framework for building a configure script
7 # for libSPF
8 #
9 #
10 # oooo o8o .o8 .oooooo..o ooooooooo. oooooooooooo
11 # `888 `"' "888 d8P' `Y8 `888 `Y88. `888' `8
12 # 888 oooo 888oooo. Y88bo. 888 .d88' 888
13 # 888 `888 d88' `88b `"Y8888o. 888ooo88P' 888oooo8
14 # 888 888 888 888 `"Y88b 888 888 "
15 # 888 888 888 888 oo .d8P 888 888
16 # o888o o888o `Y8bod8P' 8""88888P' o888o o888o
17 #
18 #-------------------------------------------------------------------------------
19 # An ANSI C Implementation of the Sender Policy Framework
20 #-------------------------------------------------------------------------------
21
22 AC_PREREQ(2.52)
23 AC_INIT(libspf,1.0.0-p5,jcouzens@codeshare.ca)
24 AC_CONFIG_AUX_DIR([build_tools])
25 AM_INIT_AUTOMAKE(libspf,1.0.0-p5,jcouzens@codeshare.ca)
26 PACKAGE=$PACKAGE_NAME
27 VERSION=$PACKAGE_VERSION
28
29
30 #-------------------------------------------------------------------------------
31 # Required programs
32 #-------------------------------------------------------------------------------
33
34 AM_CONFIG_HEADER([config.h])
35 #AC_CONFIG_SRCDIR([src/libspf/main.c])
36
37 AC_PROG_CC
38 AC_PROG_LN_S
39 AC_PROG_RANLIB
40 #AC_ARG_PROGRAM
41 AC_PROG_MAKE_SET
42 AC_PROG_CPP
43 AC_PROG_INSTALL
44 AM_CONDITIONAL(GCC, test x$GCC = xyes)
45
46 # Auto Make
47 #AM_MAINTAINER_MODE
48
49
50 #-------------------------------------------------------------------------------
51 # LIBTOOL
52 #-------------------------------------------------------------------------------
53
54 AC_PROG_LIBTOOL
55 AC_SUBST(enable_shared)
56 AC_SUBST(enable_static)
57 AC_SUBST(LIBTOOL_DEPS)
58
59 #
60 # Making releases:
61 # LIBSPF_MICRO_VERSION += 1;
62 # LIBSPF_INTERFACE_AGE += 1;
63 # LIBSPF_BINARY_AGE += 1;
64 # if any functions have been added, set LIBSPF_INTERFACE_AGE to 0.
65 # if backwards compatibility has been broken,
66 # set LIBSPF_BINARY_AGE _and_ LIBSPF_INTERFACE_AGE to 0.
67 #
68
69 LIBSPF_MAJOR_VERSION=1
70 LIBSPF_MINOR_VERSION=0
71 LIBSPF_MICRO_VERSION=0
72 LIBSPF_INTERFACE_AGE=1
73 LIBSPF_BINARY_AGE=1
74 LIBSPF_VERSION=$LIBSPF_MAJOR_VERSION.$LIBSPF_MINOR_VERSION.$LIBSPF_MICRO_VERSION
75
76 AC_SUBST(LIBSPF_MAJOR_VERSION)
77 AC_SUBST(LIBSPF_MINOR_VERSION)
78 AC_SUBST(LIBSPF_MICRO_VERSION)
79 AC_SUBST(LIBSPF_VERSION)
80 AC_SUBST(LIBSPF_INTERFACE_AGE)
81 AC_SUBST(LIBSPF_BINARY_AGE)
82
83 # -version-info "$(LT_CURRENT):$(LT_REVISION):$(LT_AGE)" \
84 # -release $(LT_RELEASE)
85 # libtool versioning
86
87 LT_CURRENT="0"
88 LT_REVISION="26"
89 LT_AGE="0"
90 LT_RELEASE="1.0"
91
92 echo ""
93 echo "--------------------------------------------------------------------------------"
94 echo ""
95 echo "LIBTOOL Version ........ ${LIBSPF_MAJOR_VERSION}.${LIBSPF_MINOR_VERSION}.${LIBSPF_MICRO_VERSION}"
96 echo "LIBTOOL Interface Age .. $LIBSPF_INTERFACE_AGE"
97 echo "LIBTOOL Binary Age ..... $LIBSPF_BINARY_AGE"
98 echo "LIBTOOL Current ........ $LT_CURRENT"
99 echo "LIBTOOL Revision ....... $LT_REVISION"
100 echo "LIBTOOL Age ............ $LT_AGE"
101 echo "LIBTOOL Release ........ $LT_RELEASE"
102 echo ""
103 echo "--------------------------------------------------------------------------------"
104 echo ""
105
106
107 #-------------------------------------------------------------------------------
108 # LIBTOOL relating substitutionssn
109 #-------------------------------------------------------------------------------
110
111 AC_SUBST(LT_RELEASE)
112 AC_SUBST(LT_CURRENT)
113 AC_SUBST(LT_REVISION)
114 AC_SUBST(LT_AGE)
115
116
117 #-------------------------------------------------------------------------------
118 # Check for some library functions
119 #-------------------------------------------------------------------------------
120
121 AC_CHECK_LIB([c], [exit])
122 AC_CHECK_LIB([nsl], [inet_pton])
123 AC_CHECK_LIB([socket], [socket])
124
125 AC_CHECK_LIB([spf2], [SPF_sanitize], LIBSPF2_POOPOO="true")
126 if test "$LIBSPF2_POOPOO" ; then
127 AC_MSG_WARN(["My word, what is that awful stench!? Oh its libspf2"])
128 AC_MSG_WARN(["Thanks to these trolls I have no second versioning"])
129 AC_MSG_WARN(["number... http://moscow.6o4.ca/ for more info"])
130 fi
131
132
133 #-------------------------------------------------------------------------------
134 # Check up on GCC
135 #-------------------------------------------------------------------------------
136
137 # We don't want gcc 2.7
138 AC_MSG_CHECKING([for a supported version of gcc])
139
140 gcc_version=`${CC} --version | head -n 1`
141 gcc_special_cflags=""
142 case "${gcc_version}" in
143 2.7.*)
144 AC_MSG_RESULT([no (${gcc_version})])
145 AC_MSG_ERROR([please use a recent (>= gcc-2.95) version of gcc])
146 ;;
147 2.95.*)
148 AC_MSG_RESULT([yes (${gcc_version}) using %d instead of %zu])
149 AC_SUBST(UNSIGNED_INT_ARG, "%d")
150 gcc_special_cflags="-mcpu=pentium -malign-loops=5 -malign-jumps=5 -malign-functions=5"
151 ;;
152 3.*)
153 AC_MSG_RESULT([yes (${gcc_version}) using -falign instead of -malign])
154 AC_SUBST(UNSIGNED_INT_ARG, "%zu")
155 gcc_special_cflags="-mcpu=pentium -falign-loops=5 -falign-jumps=5 -falign-functions=5"
156 ;;
157 4.*)
158 AC_MSG_RESULT([yes (${gcc_version}) using -falign instead of -malign])
159 AC_SUBST(UNSIGNED_INT_ARG, "%zu")
160 gcc_special_cflags="-mcpu=pentium -falign-loops=5 -falign-jumps=5 -falign-functions=5"
161 ;;
162 *)
163 AC_MSG_RESULT([ok (${gcc_version})])
164 AC_SUBST(UNSIGNED_INT_ARG, "%zu")
165 ;;
166 esac
167
168
169 #-------------------------------------------------------------------------------
170 # Define special resolver flags for various operating systems
171 #-------------------------------------------------------------------------------
172
173 case "$host" in
174 *-*-darwin*)
175 AC_DEFINE([_WITH_DARWINPPC],[],["Darwin/OSX"])
176 ;;
177 *-*-sunos4.1.1*)
178 LIBSPF_RESOLV_LIB="-lnsl -lsocket"
179 ;;
180 *-*-solaris*)
181 extralibflags="-R$libdir"
182 AC_MSG_WARN(Solaris install detected. Using extralibflags for linking: $extralibflags)
183 LIBSPF_RESOLV_LIB="-lnsl -lsocket"
184 ;;
185 *-*-sunos*)
186 LIBSPF_RESOLV_LIB="-lnsl -lsocket"
187 ;;
188 *-*-freebsd*)
189 AC_DEFINE([_WITH_FREEBSD],[],["FreeBSD"])
190 LIBSPF_RESOLV_LIB="-lc"
191 ;;
192 *-*-netbsd*)
193 ;;
194 *-*-openbsd*)
195 AC_DEFINE([_WITH_OPENBSD],[],["OpenBSD"])
196 ;;
197 *)
198 extralibflags=""
199 LIBSPF_RESOLV_LIB="-lresolv"
200 ;;
201 esac
202 #AC_DEFINE_UNQUOTED(LIBSPF_RESOLV_LIB,"$LIBSPF_RESOLV_LIB","")
203
204 #-------------------------------------------------------------------------------
205 # Checks for header files.
206 #-------------------------------------------------------------------------------
207
208 AC_HEADER_STDC
209 AC_CHECK_HEADERS([arpa/inet.h, netdb.h, netinet/in.h, stdlib.h, \
210 string.h, strings.h, sys/socket.h unistd.h, error.h, inttypes.h])
211
212
213 #-------------------------------------------------------------------------------
214 # Required Types, structures and other compiler requirements
215 #-------------------------------------------------------------------------------
216
217 AC_C_CONST
218 AC_C_INLINE
219 AC_TYPE_SIZE_T
220 AC_STRUCT_TM
221 AC_C_CHAR_UNSIGNED
222 AC_CHECK_TYPES([u_char, time_t])
223
224
225 #-------------------------------------------------------------------------------
226 # Required functions
227 #-------------------------------------------------------------------------------
228
229 AC_FUNC_MALLOC
230 AC_FUNC_REALLOC
231 AC_FUNC_STRFTIME
232 AC_CHECK_FUNCS([gethostbyname, inet_ntoa, memset, strcasecmp, \
233 localtime_r, strchr, strdup, strrchr, strstr, mkdir])
234
235
236 #-------------------------------------------------------------------------------
237 # __BEGIN_DECLS / __END_DECLS defined ?
238 #-------------------------------------------------------------------------------
239
240 AC_MSG_CHECKING([__BEGIN_DECLS])
241 AC_COMPILE_IFELSE([
242 #include <features.h>
243 __BEGIN_DECLS
244 extern int x;
245 __END_DECLS],
246 [AC_MSG_RESULT(yes)
247 AC_DEFINE(HAVE__BEGIN_DECLS,1,
248 [Define to 1 if declarations in headers are surrounded by __{BEGIN,END}_DECLS])
249 AC_SUBST(__BEGIN_DECLS,__BEGIN_DECLS)
250 AC_SUBST(__END_DECLS,__END_DECLS)],
251 [AC_MSG_RESULT(no)
252 AC_SUBST_FILE(__BEGIN_DECLS_INCL)
253 __BEGIN_DECLS_INCL=$srcdir/conf/begin_decls
254 AC_SUBST_FILE(__END_DECLS_INCL)
255 __END_DECLS_INCL=$srcdir/conf/end_decls]
256 )
257
258
259 #-------------------------------------------------------------------------------
260 # Unsigned int types
261 #-------------------------------------------------------------------------------
262
263 dnl AC_COMPILE_CHECK_SIZEOF (TYPE SUPPOSED-SIZE)
264 dnl abort if the given type does not have the supposed size
265 AC_DEFUN([AC_COMPILE_CHECK_SIZEOF],
266 [AC_MSG_CHECKING(that size of $1 is $2)
267 AC_TRY_COMPILE([],[switch (0) case 0: case (sizeof ($1) == $2):;],[],
268 [AC_MSG_ERROR([can not build a default inttypes.h])])
269 AC_MSG_RESULT([yes])])
270
271 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
272 dnl be printed with "%d", and avoids a warning for cross-compiling.
273
274 AC_MSG_CHECKING(size of int)
275 AC_CACHE_VAL(ac_cv_sizeof_int,
276 [AC_TRY_RUN([#include <stdio.h>
277 main()
278 {
279 FILE *f=fopen("conftestval", "w");
280 if (!f) exit(1);
281 fprintf(f, "%d\n", (int)sizeof(int));
282 exit(0);
283 }],
284 ac_cv_sizeof_int=`cat conftestval`,
285 ac_cv_sizeof_int=0,
286 AC_MSG_ERROR(failed to compile test program))])
287 AC_MSG_RESULT($ac_cv_sizeof_int)
288 AC_DEFINE_UNQUOTED(SIZEOF_INT, [$ac_cv_sizeof_int], [Check to fix sizeof bug that can't print %d])
289 #AC_DEFINE([SIZEOF_INT], [$ac_cv_sizeof_int], [Check to fix sizeof bug that can't print %d])
290
291 AC_DEFUN([AC_CREATE_STDINT_H],
292 [# ------ AC CREATE STDINT H -------------------------------------
293 AC_MSG_CHECKING([for stdint-types....])
294 ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)`
295 if test "$ac_stdint_h" = "stdint.h" ; then
296 AC_MSG_RESULT("(are you sure you want them in ./stdint.h?)")
297 elif test "$ac_stdint_h" = "inttypes.h" ; then
298 AC_MSG_RESULT("(are you sure you want them in ./inttypes.h?)")
299 else
300 AC_MSG_RESULT("(putting them into $ac_stdint_h)")
301 fi
302
303 inttype_headers=`echo inttypes.h sys/inttypes.h sys/inttypes.h $2 \
304 | sed -e 's/,/ /g'`
305
306 ac_cv_header_stdint_x="no-file"
307 ac_cv_header_stdint_o="no-file"
308 ac_cv_header_stdint_u="no-file"
309 for i in stdint.h $inttype_headers ; do
310 unset ac_cv_type_uintptr_t
311 unset ac_cv_type_uint64_t
312 _AC_CHECK_TYPE_NEW(uintptr_t,[ac_cv_header_stdint_x=$i],dnl
313 continue,[#include <$i>])
314 AC_CHECK_TYPE(uint64_t,[and64="(uint64_t too)"],[and64=""],[#include<$i>])
315 AC_MSG_RESULT(... seen our uintptr_t in $i $and64)
316 break;
317 done
318 if test "$ac_cv_header_stdint_x" = "no-file" ; then
319 for i in stdint.h $inttype_headers ; do
320 unset ac_cv_type_uint32_t
321 unset ac_cv_type_uint64_t
322 AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],dnl
323 continue,[#include <$i>])
324 AC_CHECK_TYPE(uint64_t,[and64="(uint64_t too)"],[and64=""],[#include<$i>])
325 AC_MSG_RESULT(... seen our uint32_t in $i $and64)
326 break;
327 done
328 if test "$ac_cv_header_stdint_o" = "no-file" ; then
329 for i in sys/types.h $inttype_headers ; do
330 unset ac_cv_type_u_int32_t
331 unset ac_cv_type_u_int64_t
332 AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],dnl
333 continue,[#include <$i>])
334 AC_CHECK_TYPE(uint64_t,[and64="(u_int64_t too)"],[and64=""],[#include<$i>])
335 AC_MSG_RESULT(... seen our u_int32_t in $i $and64)
336 break;
337 done
338 fi
339 fi
340
341 # ----------------- DONE inttypes.h checks MAYBE C basic types --------
342
343 if test "$ac_cv_header_stdint_x" = "no-file" ; then
344 AC_COMPILE_CHECK_SIZEOF(char)
345 AC_COMPILE_CHECK_SIZEOF(short)
346 AC_COMPILE_CHECK_SIZEOF(int)
347 AC_COMPILE_CHECK_SIZEOF(long)
348 AC_COMPILE_CHECK_SIZEOF(void*)
349 ac_cv_header_stdint_test="yes"
350 else
351 ac_cv_header_stdint_test="no"
352 fi
353
354 # ----------------- DONE inttypes.h checks START header -------------
355 _ac_stdint_h=AS_TR_CPP(_$ac_stdint_h)
356 AC_MSG_RESULT(creating $ac_stdint_h : $_ac_stdint_h)
357 echo "#ifndef" $_ac_stdint_h >$ac_stdint_h
358 echo "#define" $_ac_stdint_h "1" >>$ac_stdint_h
359 echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint_h
360 echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint_h
361 if test "$GCC" = "yes" ; then
362 echo "/* generated using a gnu compiler version" `$CC --version` "*/" \
363 >>$ac_stdint_h
364 else
365 echo "/* generated using $CC */" >>$ac_stdint_h
366 fi
367 echo "" >>$ac_stdint_h
368
369 if test "$ac_cv_header_stdint_x" != "no-file" ; then
370 ac_cv_header_stdint="$ac_cv_header_stdint_x"
371 elif test "$ac_cv_header_stdint_o" != "no-file" ; then
372 ac_cv_header_stdint="$ac_cv_header_stdint_o"
373 elif test "$ac_cv_header_stdint_u" != "no-file" ; then
374 ac_cv_header_stdint="$ac_cv_header_stdint_u"
375 else
376 ac_cv_header_stdint="stddef.h"
377 fi
378
379 # ----------------- See if int_least and int_fast types are present
380 unset ac_cv_type_int_least32_t
381 unset ac_cv_type_int_fast32_t
382 AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>])
383 AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>])
384
385 if test "$ac_cv_header_stdint" != "stddef.h" ; then
386 if test "$ac_cv_header_stdint" != "stdint.h" ; then
387 AC_MSG_RESULT(..adding include stddef.h)
388 echo "#include <stddef.h>" >>$ac_stdint_h
389 fi ; fi
390 AC_MSG_RESULT(..adding include $ac_cv_header_stdint)
391 echo "#include <$ac_cv_header_stdint>" >>$ac_stdint_h
392 echo "" >>$ac_stdint_h
393
394 # ----------------- DONE header START basic int types -------------
395 if test "$ac_cv_header_stdint_x" = "no-file" ; then
396 AC_MSG_RESULT(... need to look at C basic types)
397 dnl ac_cv_header_stdint_test="yes" # moved up before creating the file
398 else
399 AC_MSG_RESULT(... seen good stdint.h inttypes)
400 dnl ac_cv_header_stdint_test="no" # moved up before creating the file
401 fi
402
403 if test "$ac_cv_header_stdint_u" != "no-file" ; then
404 AC_MSG_RESULT(... seen bsd/sysv typedefs)
405 cat >>$ac_stdint_h <<EOF
406
407 /* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
408 typedef u_int8_t uint8_t;
409 typedef u_int16_t uint16_t;
410 typedef u_int32_t uint32_t;
411 EOF
412 cat >>$ac_stdint_h <<EOF
413
414 /* glibc compatibility */
415 #ifndef __int8_t_defined
416 #define __int8_t_defined
417 #endif
418 EOF
419 fi
420
421 ac_cv_sizeof_x="$ac_cv_sizeof_char:$ac_cv_sizeof_short"
422 ac_cv_sizeof_X="$ac_cv_sizeof_x:$ac_cv_sizeof_int"
423 ac_cv_sizeof_X="$ac_cv_sizeof_X:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long"
424 if test "$ac_cv_header_stdint" = "stddef.h" ; then
425 # we must guess all the basic types. Apart from byte-adressable system,
426 # there a few 32-bit-only dsp-systems. nibble-addressable systems are way off.
427 cat >>$ac_stdint_h <<EOF
428 /* ------------ BITSPECIFIC INTTYPES SECTION --------------- */
429 EOF
430 t="typedefs for a"
431 case "$ac_cv_sizeof_X" in
432 1:2:2:2:4) AC_MSG_RESULT(..adding $t normal 16-bit system)
433 cat >>$ac_stdint_h <<EOF
434 /* a normal 16-bit system */
435 typedef unsigned char uint8_t;
436 typedef unsigned short uint16_t;
437 typedef unsigned long uint32_t;
438 #ifndef __int8_t_defined
439 #define __int8_t_defined
440 typedef char int8_t;
441 typedef short int16_t;
442 typedef long int32_t;
443 #endif
444 EOF
445 ;;
446 1:2:2:4:4) AC_MSG_RESULT(..adding $t 32-bit system derived from a 16-bit)
447 cat >>$ac_stdint_h <<EOF
448 /* a 32-bit system derived from a 16-bit */
449 typedef unsigned char uint8_t;
450 typedef unsigned short uint16_t;
451 typedef unsigned int uint32_t;
452 #ifndef __int8_t_defined
453 #define __int8_t_defined
454 typedef char int8_t;
455 typedef short int16_t;
456 typedef int int32_t;
457 #endif
458 EOF
459 ;;
460 1:2:4:4:4) AC_MSG_RESULT(..adding $t normal 32-bit system)
461 cat >>$ac_stdint_h <<EOF
462 /* a normal 32-bit system */
463 typedef unsigned char uint8_t;
464 typedef unsigned short uint16_t;
465 typedef unsigned int uint32_t;
466 #ifndef __int8_t_defined
467 #define __int8_t_defined
468 typedef char int8_t;
469 typedef short int16_t;
470 typedef int int32_t;
471 #endif
472 EOF
473 ;;
474 1:2:4:4:8) AC_MSG_RESULT(..adding $t 32-bit system prepared for 64-bit)
475 cat >>$ac_stdint_h <<EOF
476
477 /* a 32-bit system prepared for 64-bit */
478 typedef unsigned char uint8_t;
479 typedef unsigned short uint16_t;
480 typedef unsigned int uint32_t;
481 #ifndef __int8_t_defined
482 #define __int8_t_defined
483 typedef char int8_t;
484 typedef short int16_t;
485 typedef int int32_t;
486 #endif
487 EOF
488 ;;
489 1:2:4:8:8) AC_MSG_RESULT(..adding $t normal 64-bit system)
490 cat >>$ac_stdint_h <<EOF
491
492 /* a normal 64-bit system */
493 typedef unsigned char uint8_t;
494 typedef unsigned short uint16_t;
495 typedef unsigned int uint32_t;
496 #ifndef __int8_t_defined
497 #define __int8_t_defined
498 typedef char int8_t;
499 typedef short int16_t;
500 typedef int int32_t;
501 #endif
502 EOF
503 ;;
504 1:2:4:8:4) AC_MSG_RESULT(..adding $t 64-bit system derived from a 32-bit)
505 cat >>$ac_stdint_h <<EOF
506
507 /* a 64-bit system derived from a 32-bit system */
508 typedef unsigned char uint8_t;
509 typedef unsigned short uint16_t;
510 typedef unsigned int uint32_t;
511 #ifndef __int8_t_defined
512 #define __int8_t_defined
513 typedef char int8_t;
514 typedef short int16_t;
515 typedef int int32_t;
516 #endif
517 EOF
518 ;;
519 *)
520 AC_MSG_ERROR([ $ac_cv_sizeof_X dnl
521 what is that a system? contact the author, quick! http://ac-archive.sf.net])
522 exit 1
523 ;;
524 esac
525 fi
526
527 # ------------- DONE basic int types START int64_t types ------------
528 if test "$ac_cv_type_uint64_t" = "yes"
529 then AC_MSG_RESULT(... seen good uint64_t)
530 cat >>$ac_stdint_h <<EOF
531
532 /* system headers have good uint64_t */
533 #ifndef _HAVE_UINT64_T
534 #define _HAVE_UINT64_T
535 #endif
536 EOF
537
538 elif test "$ac_cv_type_u_int64_t" = "yes"
539 then AC_MSG_RESULT(..adding typedef u_int64_t uint64_t)
540 cat >>$ac_stdint_h <<EOF
541
542 /* system headers have an u_int64_t */
543 #ifndef _HAVE_UINT64_T
544 #define _HAVE_UINT64_T
545 typedef u_int64_t uint64_t;
546 #endif
547 EOF
548 else AC_MSG_RESULT(..adding generic uint64_t runtime checks)
549 cat >>$ac_stdint_h <<EOF
550
551 /* -------------------- 64 BIT GENERIC SECTION -------------------- */
552 /* here are some common heuristics using compiler runtime specifics */
553 #if defined __STDC_VERSION__ && defined __STDC_VERSION__ > 199901L
554
555 #ifndef _HAVE_UINT64_T
556 #define _HAVE_UINT64_T
557 typedef long long int64_t;
558 typedef unsigned long long uint64_t;
559 #endif
560
561 #elif !defined __STRICT_ANSI__
562 #if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
563
564 #ifndef _HAVE_UINT64_T
565 #define _HAVE_UINT64_T
566 typedef __int64 int64_t;
567 typedef unsigned __int64 uint64_t;
568 #endif
569
570 #elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
571 dnl /* note: all ELF-systems seem to have loff-support which needs 64-bit */
572
573 #if !defined _NO_LONGLONG
574 #ifndef _HAVE_UINT64_T
575 #define _HAVE_UINT64_T
576 typedef long long int64_t;
577 typedef unsigned long long uint64_t;
578 #endif
579 #endif
580
581 #elif defined __alpha || (defined __mips && defined _ABIN32)
582
583 #if !defined _NO_LONGLONG
584 #ifndef _HAVE_UINT64_T
585 #define _HAVE_UINT64_T
586 typedef long int64_t;
587 typedef unsigned long uint64_t;
588 #endif
589 #endif
590 /* compiler/cpu type ... or just ISO C99 */
591 #endif
592 #endif
593 EOF
594
595 # plus a default 64-bit for systems that are likely to be 64-bit ready
596 case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp:$ac_cv_sizeof_long" in
597 1:2:8:8) AC_MSG_RESULT(..adding uint64_t default, normal 64-bit system)
598 cat >>$ac_stdint_h <<EOF
599 /* DEFAULT: */
600 /* seen normal 64-bit system, CC has sizeof(long and void*) == 8 bytes */
601 #ifndef _HAVE_UINT64_T
602 #define _HAVE_UINT64_T
603 typedef long int64_t;
604 typedef unsigned long uint64_t;
605 #endif
606 EOF
607 ;;
608 1:2:4:8) AC_MSG_RESULT(..adding uint64_t default, typedef to long)
609 cat >>$ac_stdint_h <<EOF
610 /* DEFAULT: */
611 /* seen 32-bit system prepared for 64-bit, CC has sizeof(long) == 8 bytes */
612 #ifndef _HAVE_UINT64_T
613 #define _HAVE_UINT64_T
614 typedef long int64_t;
615 typedef unsigned long uint64_t;
616 #endif
617 EOF
618 ;;
619 1:2:8:4) AC_MSG_RESULT(..adding uint64_t default, typedef long long)
620 cat >>$ac_stdint_h <<EOF
621 /* DEFAULT: */
622 /* seen 64-bit derived from a 32-bit, CC has sizeof(long) == 4 bytes */
623 #ifndef _HAVE_UINT64_T
624 #define _HAVE_UINT64_T
625 typedef long long int64_t;
626 typedef unsigned long long uint64_t;
627 #endif
628 EOF
629 ;;
630 *)
631 cat >>$ac_stdint_h <<EOF
632 /* NOTE: */
633 /* the configure-checks for the basic types did not make us believe */
634 /* that we could add a fallback to a 'long long' typedef to int64_t */
635 EOF
636 esac
637 fi
638
639 # ------------- DONE int64_t types START intptr types ------------
640 if test "$ac_cv_header_stdint_x" = "no-file" ; then
641 cat >>$ac_stdint_h <<EOF
642
643 /* -------------------------- INPTR SECTION --------------------------- */
644 EOF
645 case "$ac_cv_sizeof_x:$ac_cv_sizeof_voidp" in
646 1:2:2)
647 a="int16_t" ; cat >>$ac_stdint_h <<EOF
648 /* we tested sizeof(void*) to be of 2 chars, hence we declare it 16-bit */
649
650 typedef uint16_t uintptr_t;
651 typedef int16_t intptr_t;
652 EOF
653 ;;
654 1:2:4)
655 a="int32_t" ; cat >>$ac_stdint_h <<EOF
656 /* we tested sizeof(void*) to be of 4 chars, hence we declare it 32-bit */
657
658 typedef uint32_t uintptr_t;
659 typedef int32_t intptr_t;
660 EOF
661 ;;
662 1:2:8)
663 a="int64_t" ; cat >>$ac_stdint_h <<EOF
664 /* we tested sizeof(void*) to be of 8 chars, hence we declare it 64-bit */
665
666 typedef uint64_t uintptr_t;
667 typedef int64_t intptr_t;
668 EOF
669 ;;
670 *)
671 a="long" ; cat >>$ac_stdint_h <<EOF
672 /* we tested sizeof(void*) but got no guess, hence we declare it as if long */
673
674 typedef unsigned long uintptr_t;
675 typedef long intptr_t;
676 EOF
677 ;;
678 esac
679 AC_MSG_RESULT(..adding typedef $a intptr_t)
680 fi
681
682 # ------------- DONE intptr types START int_least types ------------
683 if test "$ac_cv_type_int_least32_t" = "no"; then
684 AC_MSG_RESULT(..adding generic int_least-types)
685 cat >>$ac_stdint_h <<EOF
686
687 /* --------------GENERIC INT_LEAST ------------------ */
688
689 typedef int8_t int_least8_t;
690 typedef int16_t int_least16_t;
691 typedef int32_t int_least32_t;
692 #ifdef _HAVE_UINT64_T
693 typedef int64_t int_least64_t;
694 #endif
695
696 typedef uint8_t uint_least8_t;
697 typedef uint16_t uint_least16_t;
698 typedef uint32_t uint_least32_t;
699 #ifdef _HAVE_UINT64_T
700 typedef uint64_t uint_least64_t;
701 #endif
702 EOF
703 fi
704
705 # ------------- DONE intptr types START int_least types ------------
706 if test "$ac_cv_type_int_fast32_t" = "no"; then
707 AC_MSG_RESULT(..adding generic int_fast-types)
708 cat >>$ac_stdint_h <<EOF
709
710 /* --------------GENERIC INT_FAST ------------------ */
711
712 typedef int8_t int_fast8_t;
713 typedef int32_t int_fast16_t;
714 typedef int32_t int_fast32_t;
715 #ifdef _HAVE_UINT64_T
716 typedef int64_t int_fast64_t;
717 #endif
718
719 typedef uint8_t uint_fast8_t;
720 typedef uint32_t uint_fast16_t;
721 typedef uint32_t uint_fast32_t;
722 #ifdef _HAVE_UINT64_T
723 typedef uint64_t uint_fast64_t;
724 #endif
725 EOF
726 fi
727
728 if test "$ac_cv_header_stdint_x" = "no-file" ; then
729 cat >>$ac_stdint_h <<EOF
730
731 #ifdef _HAVE_UINT64_T
732 typedef int64_t intmax_t;
733 typedef uint64_t uintmax_t;
734 #else
735 typedef long int intmax_t;
736 typedef unsigned long uintmax_t;
737 #endif
738 EOF
739 fi
740
741 AC_MSG_RESULT(... DONE $ac_stdint_h)
742 cat >>$ac_stdint_h <<EOF
743
744 /* once */
745 #endif
746 #endif
747 EOF
748 ])
749
750 AC_CREATE_STDINT_H(src/libspf/_stdint.h)
751
752 dnl quote from SunOS-5.8 sys/inttypes.h:
753 dnl Use at your own risk. As of February 1996, the committee is squarely
754 dnl behind the fixed sized types; the "least" and "fast" types are still being
755 dnl discussed. The probability that the "fast" types may be removed before
756 dnl the standard is finalized is high enough that they are not currently
757 dnl implemented.
758
759 #AC_CHECK_TYPE(u_int8_t, [uint="u_int8_t"
760 # AC_DEFINE(HAVE_U_INT8_T,1,[Define to 1 if type `u_int8_t' is defined])],
761 # AC_CHECK_TYPE(uint8_t, [uint="uint8_t"
762 # AC_DEFINE(HAVE_UINT8_T,1,[Define to 1 if type `uint8_t' is defined])],
763 # [uint="unsigned char"]))
764 #AC_SUBST(U_INT8_T,[$uint])
765
766 #AC_CHECK_TYPE(u_int16_t, [uint="u_int16_t"
767 # AC_DEFINE(HAVE_U_INT16_T,1,[Define to 1 if type `u_int16_t' is defined])],
768 # AC_CHECK_TYPE(uint16_t, [uint="uint16_t"
769 # AC_DEFINE(HAVE_UINT16_T,1,[Define to 1 if type `uint16_t' is defined])],
770 # [uint="unsigned short"]))
771 #AC_SUBST(U_INT16_T,[$uint])
772
773 #AC_CHECK_TYPE(u_int32_t, [uint="u_int32_t"
774 # AC_DEFINE(HAVE_U_INT32_T,1,[Define to 1 if type `u_int32_t' is defined])],
775 # AC_CHECK_TYPE(uint32_t, [uint="uint32_t"
776 # AC_DEFINE(HAVE_UINT32_T,1,[Define to 1 if type `uint32_t' is defined])],
777 # [uint="unsigned int"]))
778 #AC_SUBST(U_INT32_T,[$uint])
779
780 #AC_CHECK_TYPE(uintptr_t, [uint="uintptr_t"
781 # AC_DEFINE(HAVE_UINTPTR_T,1,[Define to 1 if type `uintptr_t' is defined])])
782 #AC_SUBST(UINTPTR_T,[$uint])
783
784
785 #-------------------------------------------------------------------------------
786 # __FUNCTION__
787 #-------------------------------------------------------------------------------
788
789 AC_MSG_CHECKING([__FUNCTION__])
790 func=none
791 AC_COMPILE_IFELSE(
792 [int x() { f(__FUNCTION__); }],
793 AC_MSG_RESULT([__FUNCTION__])
794 AC_DEFINE(HAVE___FUNCTION__, [], ["Define to 1 if __FUNCTION__ is defined"]),
795 AC_COMPILE_IFELSE(
796 [int x() { f(__func__); }],
797 AC_MSG_RESULT([__func__])
798 AC_DEFINE(HAVE___FUNC__, [], ["Define to 1 if __func__ is defined"])))
799
800
801 #-------------------------------------------------------------------------------
802 # Setup build directories
803 #-------------------------------------------------------------------------------
804
805 LIBSPF_BUILD_DIRS="libspf spfqtool"
806
807
808 #-------------------------------------------------------------------------------
809 # Warn people configuring as root....
810 #-------------------------------------------------------------------------------
811
812 idcommand="id -u"
813 if test `$idcommand` == "0"
814 then
815 AC_MSG_WARN(=== DO NOT EVER CONFIGURE AS ROOT ===)
816 AC_MSG_WARN(=== UNLESS EXPLICITLY EXPRESSED BY ===)
817 AC_MSG_WARN(=== SUPPLIED DOCUMENTATION FROM A ===)
818 AC_MSG_WARN(=== REPUTABLE AUTHOR! Baka! ===)
819 fi
820
821
822 #-------------------------------------------------------------------------------
823 # Check to see if we want to link libbind
824 #-------------------------------------------------------------------------------
825
826 AC_MSG_CHECKING(whether to link libbind is eanbled)
827 AC_ARG_ENABLE(libbind,
828 [ --enable-libbind Link libbind instead of libresolv (default=no)],
829 [case "${enableval}" in
830 yes)
831 libbind=true
832 AC_MSG_RESULT(yes)
833 ;;
834 no)
835 libbind=false
836 AC_MSG_RESULT(no)
837 ;;
838 *)
839 AC_MSG_ERROR(bad value ${enableval} for --enable-libbind)
840 ;;
841 esac],
842 [libbind=false] AC_MSG_RESULT(no))
843
844 if test "$libbind" = "true"; then
845 LIBSPF_RESOLV_LIB="-lbind"
846 fi
847
848 if test "$libresolv" = "false"; then
849 LIBSPF_RESOLV_LIB=""
850 else
851
852 #----------------------------------------------------------------------------
853 # Check to see if we want to link libresolv (default is yes)
854 #------------------------------------------------------------------
855
856 dnl res_query has been seen in libc, libbind and libresolv
857 AC_CHECK_FUNCS(res_query, res_search)
858
859 if test "x-$ac_cv_func_res_query" = "x-yes" ; then
860 have_res_query=yes
861 fi
862
863 if test "x-$ac_cv_func_res_search" = "x-yes" ; then
864 have_res_search=yes
865 fi
866
867 if test "x-$have_res_query" = "x-no" || test "x-$have_res_search" = "no" ; then
868 AC_CHECK_LIB(resolv, res_query)
869 if test "x-$ac_cv_lib_resolv_res_query" = "x-yes" ; then
870 have_res_query=yes
871 else
872 AC_CHECK_LIB(bind, res_query)
873 if test "x-$ac_cv_lib_bind_res_query" = "x-yes" ; then
874 have_res_query=yes
875 else
876 dnl some glibcs have res_query as a macro, so work around it
877 AC_MSG_CHECKING([for res_query in -lresolv (alternate version)])
878 save_libs="$LIBS"
879 libresolv=true
880 LIBS="-lresolv $LIBS"
881 LIBSPF_RESOLV_LIB="-lresolv"
882 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <resolv.h>]],
883 [[res_query(0,0,0,0,0)]])],
884 [AC_MSG_RESULT(yes)
885 have_res_query=yes],
886 [AC_MSG_RESULT(no)
887 libresolv=false
888 LIBS="$save_libs"])
889 fi
890 fi
891 fi
892
893 if test "x-$have_res_query" = "x-yes" ; then
894 AC_DEFINE(HAVE_RES_QUERY)
895 libresolv=true
896 dnl no res_query, do windows compat checks
897 else
898 dnl !!! implement these checks
899 AC_MSG_WARN([required function res_query not found])
900 libresolv=false
901 fi
902
903 fi
904
905 # Checks for libraries.
906 AC_CHECK_LIB([resolv], [res_search])
907 AC_SUBST(LIBSPF_RESOLV_LIB)
908
909
910 #-------------------------------------------------------------------------------
911 # Check to see if we want to enable debugging
912 #-------------------------------------------------------------------------------
913
914 AC_MSG_CHECKING(whether DEBUG is eanbled)
915 AC_ARG_ENABLE(debug,
916 [ --enable-debug Enables debug option (default=no)],
917 [case "${enableval}" in
918 yes)
919 debug=true
920 AC_MSG_RESULT(yes)
921 ;;
922 no)
923 debug=false
924 AC_MSG_RESULT(no)
925 ;;
926 *)
927 AC_MSG_ERROR(bad value ${enableval} for --enable-debug)
928 ;;
929 esac],
930 [debug=false] AC_MSG_RESULT(no))
931
932 CFLAGS=""
933 if test "$debug" = "true"; then
934 CFLAGS="-ggdb -O -D_SPF_DEBUG"
935 else
936 AC_MSG_RESULT(Enabling GCC optimisations)
937 CFLAGS="$CFLAGS -O3 -ffast-math -fomit-frame-pointer"
938
939 if [[ "x$GCC_VERSION" = "x3" ]]; then
940 AC_MSG_RESULT(Enabling GCC v3 optimizations)
941 CFLAGS="$CFLAGS -minline-all-stringops -fno-math-errno"
942 fi
943 fi
944
945 case "${host_cpu}" in
946 i?86)
947 AC_MSG_RESULT([CPU: ${host_cpu}; Enabling pentium optimisations])
948 # cannot do malign-double as we link to other libraries and it
949 # would break binary compatibility
950 CFLAGS="$CFLAGS ${gcc_special_cflags}"
951 ;;
952 *)
953 AC_MSG_RESULT(Please e-mail author optimizations for this cpu)
954 ;;
955 esac
956
957
958 #-------------------------------------------------------------------------------
959 # Check to see if we want to enable debugging output to logfile
960 #-------------------------------------------------------------------------------
961
962 if test "$debug" = "true"; then
963 AC_MSG_CHECKING(whether you want debug output to a logfile)
964 AC_ARG_ENABLE(debug_logfile,
965 [ --enable-debug-logfile Enables logging debug output (default=yes)],
966 [case "${enableval}" in
967 yes)
968 debug_logfile=true
969 AC_MSG_RESULT(yes)
970 ;;
971 no)
972 debug_logfile=false
973 AC_MSG_RESULT(no)
974 ;;
975 *)
976 AC_MSG_ERROR(bad value ${enableval} for --enable-debug-logfile)
977 ;;
978 esac],
979 [debug_logfile=true] AC_MSG_RESULT(no))
980
981 if test "$debug_logfile" = "true"; then
982 CFLAGS="-D_SPF_DEBUG_LOGFILE $CFLAGS"
983 fi
984 fi
985
986
987 #-------------------------------------------------------------------------------
988 # Check to see if we want to enable logfile statistics
989 #-------------------------------------------------------------------------------
990
991 logfile_stats=false
992 AC_MSG_CHECKING(whether you want logfile statistics)
993 AC_ARG_ENABLE(logfile_stats,
994 [ --enable-logfile-stats Enables logfile stats (default=no)],
995 [case "${enableval}" in
996 yes)
997 logfile_stats=true
998 AC_MSG_RESULT(yes)
999 ;;
1000 no)
1001 logfile_stats=false
1002 AC_MSG_RESULT(no)
1003 ;;
1004 *)
1005 AC_MSG_ERROR(bad value ${enableval} for --enable-logfile-stats)
1006 ;;
1007 esac],
1008 [logfile_stats=false] AC_MSG_RESULT(no))
1009
1010 if test "$logfile_stats" = "true"; then
1011 CFLAGS="-D_SPF_LOGFILE_STATS $CFLAGS"
1012 fi
1013
1014
1015 #-------------------------------------------------------------------------------
1016 # Check whether to enable a memset after each malloc
1017 #-------------------------------------------------------------------------------
1018
1019 rfc_recursion=false
1020 AC_MSG_CHECKING(whether to abide by the RFC as regards recursiveness)
1021 AC_ARG_ENABLE(rfc_recursion,
1022 [ --enable-rfc-recursion Change SPF recursion to 20 (as per RFC) (default=no)],
1023 [case "${enableval}" in
1024 yes)
1025 rfc_recursion=true
1026 AC_MSG_RESULT(yes)
1027 ;;
1028 no)
1029 rfc_recursion=false
1030 AC_MSG_RESULT(no)
1031 ;;
1032 *)
1033 AC_MSG_ERROR(bad value ${enableval} for --enable-rfc-recursion)
1034 ;;
1035 esac],
1036 [rfc_recursion=false] AC_MSG_RESULT(no))
1037
1038 if test "$rfc_recursion" = "true"; then
1039 CFLAGS="-D_RFC_RECURSION $CFLAGS"
1040 AC_MSG_WARN(=== THE INTERNET IS FULL OF ILLITERATE AND LAZY PEOPLE ===)
1041 sleep 1
1042 AC_MSG_WARN(=== MANY OF WHOM CAN NOT PUBLISH A VALID SPF RECORD TO ===)
1043 sleep 1
1044 AC_MSG_WARN(=== SAVE THEIR LIFE. MANY OF SUCH INDIVIDUALS OFTEN ===)
1045 sleep 1
1046 AC_MSG_WARN(=== LINK RECORDS TOGETHER FORMING A RECURSIVE PARSING ===)
1047 sleep 1
1048 AC_MSG_WARN(=== LOOP. YOU HAVE BEEN WARNED. THE RFC STATES THAT ===)
1049 sleep 1
1050 AC_MSG_WARN(=== SPF PARSERS MUST SUPPORT AT LEAST TWENTY LEVELS OF ===)
1051 sleep 1
1052 AC_MSG_WARN(=== RECURSION. THIS HAS PROVEN TO BE POINTLESS GIVEN ===)
1053 sleep 1
1054 AC_MSG_WARN(=== GIVEN THE ABUNDANCE OF STUPIDITY PREVALENT ON THE ===)
1055 sleep 1
1056 AC_MSG_WARN(=== INTERNET. YOU HAVE BEEN WARNED!! ===)
1057 sleep 5
1058 fi
1059
1060
1061 #-------------------------------------------------------------------------------
1062 # Check whether to enable a memset after each malloc
1063 #-------------------------------------------------------------------------------
1064
1065 paranoid_malloc=true
1066 AC_MSG_CHECKING(whether to memset after every malloc (paranoid malloc)?)
1067 AC_ARG_ENABLE(paranoid_malloc,
1068 [ --enable-paranoid-malloc Enables a memset of every malloc to NULL (default=yes)],
1069 [case "${enableval}" in
1070 yes)
1071 paranoid_malloc=true
1072 AC_MSG_RESULT(yes)
1073 ;;
1074 no)
1075 paranoid_malloc=false
1076 AC_MSG_RESULT(no)
1077 ;;
1078 *)
1079 AC_MSG_ERROR(bad value ${enableval} for --enable-paranoid-malloc)
1080 ;;
1081 esac],
1082 [paranoid_malloc=true] AC_MSG_RESULT(yes))
1083
1084 if test "$paranoid_malloc" = "true"; then
1085 CFLAGS="-D_WITH_PARANOID_MALLOC $CFLAGS"
1086 fi
1087
1088
1089 #-------------------------------------------------------------------------------
1090 # Check whether to enable res_search behaviour instead of RFC821/2821 required
1091 # res_query behaviour. See Debian bug tracking list thread:
1092 # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=297060 for more information.
1093 #-------------------------------------------------------------------------------
1094
1095 res_search=false
1096 AC_MSG_CHECKING(whether to use res_search instead of res_query?)
1097 AC_ARG_ENABLE(res_search,
1098 [ --enable-res_search Enables DNS queries to follow default and search rules (default=no)],
1099 [case "${enableval}" in
1100 yes)
1101 res_search=true
1102 AC_MSG_RESULT(yes)
1103 ;;
1104 no)
1105 res_search=false
1106 AC_MSG_RESULT(no)
1107 ;;
1108 *)
1109 AC_MSG_ERROR(bad value ${enableval} for --enable-res_search)
1110 ;;
1111 esac],
1112 [res_search=falsee] AC_MSG_RESULT(no))
1113
1114 if test "$res_search" = "true"; then
1115 CFLAGS="-D_WITH_RES_SEARCH $CFLAGS"
1116 fi
1117
1118
1119 #-------------------------------------------------------------------------------
1120 # Check to see if we should build libSPF Query Tool
1121 #-------------------------------------------------------------------------------
1122
1123 AC_MSG_CHECKING(whether to disable build the libSPF Query Tool?)
1124 AC_ARG_ENABLE(spfqtool,
1125 [ --disable-spfqtool Disables compilation of the libSPF Query Tool (default=no)],
1126 [case "${enableval}" in
1127 yes)
1128 spfqtool=true
1129 AC_MSG_RESULT(yes)
1130 ;;
1131 no)
1132 spfqtool=false
1133 AC_MSG_RESULT(no)
1134 ;;
1135 *)
1136 AC_MSG_ERROR(bad value ${enableval} for --disable-spfqtool)
1137 ;;
1138 esac],
1139 [spfqtool=false] AC_MSG_RESULT(no))
1140
1141 if test "$spfqtool" = "true"; then
1142 LIBSPF_BUILD_DIRS="libspf"
1143 fi
1144 #AC_SUBST(LIBSPF_BUILD_DIRS)
1145
1146
1147 #-------------------------------------------------------------------------------
1148 # Check to see if we want to enable pthreads (gethostbyname_r)
1149 # For now, --enable-pthreads just happens to activate our internal
1150 # _DNS_gethostbyname_r reentrant wrapper to gethostbyname unless
1151 # gethostbyname_r is available (GNU extention) then the wrapper will
1152 # be around that instead and won't use the mutex
1153 #-------------------------------------------------------------------------------
1154
1155 AC_MSG_CHECKING(whether to compile with reentrant capabilities)
1156 AC_ARG_ENABLE(pthreads,
1157 [ --enable-pthreads Enables reentrant (thread-safe) library (default=no)],
1158 [case "${enableval}" in
1159 yes)
1160 pthreads=true
1161 AC_MSG_RESULT(yes)
1162 ;;
1163 no)
1164 pthreads=false
1165 AC_MSG_RESULT(no)
1166 ;;
1167 *)
1168 AC_MSG_ERROR(bad value ${enableval} for --enable-pthreads)
1169 ;;
1170 esac],
1171 [pthreads=false] AC_MSG_RESULT(no))
1172
1173 if test "$pthreads" = "true"; then
1174
1175 AC_CHECK_HEADERS(pthread.h)
1176 if test "x-$ac_cv_header_pthread_h" = "x-yes"; then
1177 AC_DEFINE(HAVE_PTHREAD_H)
1178 CFLAGS="-D_WITH_PTHREADS -D_REENTRANT $CFLAGS"
1179
1180 case "$host" in
1181 *-*-freebsd*)
1182 AC_MSG_WARN([Hey we are FreeBSD we can be all HOMO and DIFFERENT!])
1183 LIBSPF_PTHREADS_LIB="-pthread"
1184 ;;
1185 *)
1186 LIBSPF_PTHREADS_LIB="-lpthread"
1187 ;;
1188 esac
1189 fi
1190
1191 AC_CHECK_FUNCS(gethostbyname_r)
1192 if test "x-$ac_cv_func_gethostbyname_r" = "x-yes"; then
1193 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
1194 else
1195 AC_MSG_WARN([GNU gethostbyname_r not found, using internal wrapper])
1196 fi
1197
1198 else
1199
1200 LIBSPF_PTHREADS_LIB=""
1201 pthreads=false
1202
1203 fi
1204 AC_SUBST(LIBSPF_PTHREADS_LIB)
1205
1206
1207 #-------------------------------------------------------------------------------
1208 # Check to see if we should build Sendmail SPF milter and perform the pthreads
1209 # check again and in the event it wasn't specified (its required) or it failed,
1210 # we will catch it (and enable it if successful) here.
1211 #-------------------------------------------------------------------------------
1212
1213 AC_MSG_CHECKING(whether to build the Sendmail SPF milter?)
1214 AC_ARG_ENABLE(spfmilter,
1215 [ --enable-spfmilter Enables compilation of the Sendmail SPF milter (default=no)],
1216 [case "${enableval}" in
1217 yes)
1218 spfmilter=true
1219 AC_MSG_RESULT(yes)
1220 ;;
1221 no)
1222 spfmilter=false
1223 AC_MSG_RESULT(no)
1224 ;;
1225 *)
1226 AC_MSG_ERROR(bad value ${enableval} for --enable-spfmilter)
1227 ;;
1228 esac],
1229 [spfmilter=false] AC_MSG_RESULT(no))
1230
1231 if test "$pthreads" = "false"; then
1232 if test "$spfmilter" = "true"; then
1233 AC_MSG_ERROR([pthreads is required, please re-configure with --enable-pthreads])
1234 fi
1235 fi
1236
1237 if test "$spfmilter" = "true"; then
1238 LIBSPF_BUILD_DIRS="$LIBSPF_BUILD_DIRS spfmilter"
1239 echo "--------------------------------------------------------------------------------"
1240 sleep 1
1241 echo " spfmilter - SPF mail filter module"
1242 echo ""
1243 echo " Originally by Jef Poskanzer <jef@acme.com>"
1244 echo ""
1245 echo " Sendmail includes a facility for plugging in custom mail filters,"
1246 echo " called milters. It's documented here: http://www.milter.org/milter_api/"
1247 echo ""
1248 echo " See the manual entry (man spfmilter) or the README for more details."
1249 echo ""
1250 echo " Jef Poskanzer is the original author of this spfmilter."
1251 echo ""
1252 echo " This version and future versions of this spfmilter as bundled within libSPF"
1253 echo " will be supported by the libSPF development team."
1254 echo ""
1255 echo " DO NOT REPORT PROBLEMS WITH THIS SPFMILTER TO JEF AS IT IS NOT FAIR TO ASK"
1256 echo " HIM TO SUPPORT MULTIPLE VERSIONS OF HIS MILTER AFTER WE HAVE MODIFIED IT"
1257 echo ""
1258 echo " Send bugs to: James Couzens <jcouzens@codeshare.ca>"
1259 echo ""
1260 echo "--------------------------------------------------------------------------------"
1261 sleep 3
1262 echo ""
1263
1264
1265 #-------------------------------------------------------------------------------
1266 # getpwuid (pwd.h)
1267 #-------------------------------------------------------------------------------
1268
1269 AC_MSG_CHECKING([getpwuid])
1270 use_getpwuid=no
1271 AC_CHECK_FUNC(getpwuid,use_getpwuid=yes,[AC_CHECK_FUNC(getpwuid)])
1272 if test "x$use_getpwuid" = "xyes"; then
1273 AC_DEFINE([HAVE_PWD_H], [], [Have pwd.h])
1274 else
1275 AC_MSG_ERROR(Can not continue without pwd.h do you really have it?)
1276 fi
1277
1278
1279 #-------------------------------------------------------------------------------
1280 # setgroups (grp.h)
1281 #-------------------------------------------------------------------------------
1282
1283 AC_MSG_CHECKING([setgroups])
1284 use_setgroups=no
1285 AC_CHECK_FUNC(setgroups,use_setgroups=yes,[AC_CHECK_FUNC(setgroups)])
1286 if test "x$use_setgroups" = "xyes"; then
1287 AC_DEFINE([HAVE_GRP_H], [], [Have pwd.h])
1288 else
1289 AC_MSG_ERROR(Can not continue without grp.h do you really have it?)
1290 fi
1291 fi
1292 AC_SUBST(LIBSPF_BUILD_DIRS)
1293
1294
1295 #-------------------------------------------------------------------------------
1296 # Enable compiler full-optimizations which lead to greater performance
1297 #-------------------------------------------------------------------------------
1298
1299 if test "$debug" = "false"; then
1300
1301 AC_MSG_CHECKING(whether I should enable full optimizations)
1302 AC_ARG_ENABLE(full_optimizations,
1303 [ --enable-full-optimizations Enables building of an optimized library (default=no)],
1304 [case "${enableval}" in
1305 yes)
1306 full_optimizations=true
1307 AC_MSG_RESULT(yes)
1308 ;;
1309 no)
1310 full_optimizations=false
1311 AC_MSG_RESULT(no)
1312 ;;
1313 *)
1314 AC_MSG_ERROR(bad value ${enableval} for --enable-full-optimizations)
1315 ;;
1316 esac],
1317 [full_optimizations=false] AC_MSG_RESULT(no))
1318
1319 if test "$full_optimizations" = "true"; then
1320 if [[ "x$GCCVER" != "xno" ]]; then
1321 AC_MSG_RESULT(yes, however this option is deprecated!)
1322 #CFLAGS="$CFLAGS -O2 -pipe -funroll-loops -ffast-math -ftracer -fweb"
1323 #CFLAGS="$CFLAGS -O3 -ffast-math -fomit-frame-pointer"
1324 fi
1325 fi
1326 fi
1327
1328
1329 #-------------------------------------------------------------------------------
1330 # Generate Makefiles
1331 #-------------------------------------------------------------------------------
1332
1333 AC_OUTPUT( \
1334 Makefile \
1335 src/Makefile \
1336 src/libspf/Makefile \
1337 src/spfqtool/Makefile \
1338 src/libspf/spf.h \
1339 src/libspf/util.c \
1340 src/spfmilter/Makefile \
1341 )
1342 #AC_OUTPUT(src/Makefile)
1343 #AC_OUTPUT(src/libspf/Makefile)
1344 #AC_OUTPUT(src/spfqtool/Makefile)
1345 #AC_OUTPUT(src/libspf/spf.h)
1346 #AC_OUTPUT(src/libspf/util.c)
1347 #AC_OUTPUT(src/spfmilter/Makefile)
1348
1349 echo ""
1350 echo ""
1351 echo " oooo o8o .o8 .oooooo..o ooooooooo. oooooooooooo "
1352 echo " \`888 \`\"' \"888 d8P' \`Y8 \`888 \`Y88. \`888' \`8 "
1353 echo " 888 oooo 888oooo. Y88bo. 888 .d88' 888 "
1354 echo " 888 \`888 d88' \`88b \`\"Y8888o. 888ooo88P' 888oooo8 "
1355 echo " 888 888 888 888 \`\"Y88b 888 888 \" "
1356 echo " 888 888 888 888 oo .d8P 888 888 "
1357 echo " o888o o888o \`Y8bod8P' 8\"\"88888P' o888o o888o "
1358 echo "--------------------------------------------------------------------------------"
1359 echo " $PACKAGE $VERSION "
1360 echo " An ANSI C Implementation of the Sender Policy Framework "
1361 echo "--------------------------------------------------------------------------------"
1362 echo ""
1363 echo " ./CHANGELOG ............ List of documented changed between versions"
1364 echo " ./docs ................. Excellent API and integration Documentation"
1365 echo " ./examples ............. Examples of how to implement"
1366 echo " ./FAQ .................. Frequently Asked Questions (and Answers :-) )"
1367 echo " ./LICENSE .............. Terms under which libSPF is licensed"
1368 echo " ./README ............... A Quick and Excellent rundown of basic information"
1369 echo " ./TODO ................. Things planned for future releases that are 'To Do'"
1370 echo " ./VERSION .............. Version of thie release"
1371 echo " ./bin .................. Static & Dyn. versions of the libSPF Query Tool"
1372 echo " ./libspf.kateproject ... KDE's excellent IDE 'kate' Project File"
1373 echo " ./patches .............. MTA Patches"
1374 echo " ./src .................. Its not the Swartz, but it will have to do ;)"
1375 echo ""
1376 echo "--------------------------------------------------------------------------------"
1377 sleep 2
1378 echo ""
1379 echo " There are complete HOWTOs (or walkthru) documents within the 'Docs' dir for"
1380 echo " the MTA's this library supports."
1381 echo ""
1382 echo " Commercial developers looking to integrate libSPF, there is no cost! If you"
1383 echo " require assistance (free) please contact <developers@codeshare.ca>"
1384 echo ""
1385 echo " Website ................................ http://libSPF.org"
1386 echo " Forums ................................. http://forums.6o4.ca"
1387 echo " Contact ................................ jcouzens@codeshare.ca"
1388 echo ""
1389 echo "--------------------------------------------------------------------------------"
1390 sleep 1
1391 echo ""
1392
1393
1394 if test "$debug" = "true"; then
1395 tmp="ON"
1396 else
1397 tmp="OFF"
1398 fi
1399 echo " Enable Debugging ........................................... "$tmp""
1400
1401
1402 if test "$debug_logfile" = "true"; then
1403 tmp="ON"
1404 else
1405 tmp="OFF"
1406 fi
1407 echo " Enable Debugging output to logfile (/var/log/spf.log) ...... "$tmp""
1408
1409
1410 if test "$logfile_stats" = "true"; then
1411 tmp="ON"
1412 else
1413 tmp="OFF"
1414 fi
1415 echo " Enable SPF logging statistics to /var/log/spflog.txt ....... "$tmp""
1416
1417
1418 if test "$full_optimizations" = "true"; then
1419 tmp="ON"
1420 else
1421 tmp="OFF"
1422 fi
1423 echo " Enable compilation of an optimized library ................. "$tmp""
1424
1425
1426 if test "$rfc_recursion" = "true"; then
1427 tmp="ON"
1428 else
1429 tmp="OFF"
1430 fi
1431 echo " Enable RFC recursion during SPF checks ..................... "$tmp""
1432
1433
1434 if test "$res_search" = "true"; then
1435 tmp="ON"
1436 else
1437 tmp="OFF"
1438 fi
1439 echo " Enable DNS queries to follow 'default' and 'search' rules .. "$tmp""
1440
1441
1442 if test "$paranoid_malloc" = "true"; then
1443 tmp="ON"
1444 else
1445 tmp="OFF"
1446 fi
1447 echo " Enable memset to NULL after each malloc .................... "$tmp""
1448
1449
1450 if test "$spfqtool" = "true"; then
1451 tmp="ON"
1452 else
1453 tmp="OFF"
1454 fi
1455 echo " Disable build of SPF Query Tool ............................ "$tmp""
1456
1457
1458 if test "$libresolv" = "true"; then
1459 tmp="ON"
1460 else
1461 tmp="OFF"
1462 fi
1463 echo " Enable use of libresolv resolver ........................... "$tmp""
1464
1465
1466 if test "$spfmilter" = "true"; then
1467 tmp="ON"
1468 else
1469 tmp="OFF"
1470 fi
1471 echo " Enable use of Sendmail spfmilter ........................... "$tmp""
1472
1473
1474 if test "$libbind" = "true"; then
1475 tmp="ON"
1476 else
1477 tmp="OFF"
1478 fi
1479 echo " Enable use of libbind resolver ............................. "$tmp""
1480
1481
1482 if test "$pthreads" = "true"; then
1483 tmp="ON"
1484 else
1485 tmp="OFF"
1486 fi
1487 echo " Enable use of pthreads (gethostbyname_r) ................... "$tmp""
1488
1489
1490 echo ""
1491 echo " libSPF Query tool binaries are in the new 'bin' dir in the libSPF root"
1492 echo " libSPF Milter binaries are in the new 'bin; dir also"
1493 echo ""
1494 echo " libSPF libraries are in the new 'lib' dir in the libSPF root"
1495 echo ""
1496 echo " libSPF Milter rc scripts and docs are in 'src/spfmilter/rc_scripts'"
1497 echo "--------------------------------------------------------------------------------"
1498 echo ""
1499
1500 # end of configure.in