1#                               .o88o.                       oooo
2#                               888 `"                       `888
3#           .oooo.o oo.ooooo.  o888oo  oooo    ooo  .oooo.    888
4#          d88(  "8  888' `88b  888     `88.  .8'  `P  )88b   888
5#          `"Y88b.   888   888  888      `88..8'    .oP"888   888
6#          o.  )88b  888   888  888       `888'    d8(  888   888
7#          8""888P'  888bod8P' o888o       `8'     `Y888""8o o888o
8#                    888
9#                   o888o
10#
11# ------------------------------------------------------------------------------
12#            An ANSI C Sender Policy Framework record validator
13# ------------------------------------------------------------------------------
14#
15# File:   configure.in
16# Author: James Couzens <jcouzens@codeshare.ca>
17# Date:   June 15, 2004
18#
19# Info:   'AutoTools' framework for building a configure script
20#          for the SPF Validator
21#
22#-------------------------------------------------------------------------------
23
24AC_PREREQ(2.59)
25AC_INIT(spfval,0.0.1,tanderson@codeshare.ca)
26AC_CONFIG_AUX_DIR([build_tools])
27AM_INIT_AUTOMAKE(spfval,0.0.1,tanderson@codeshare.ca)
28PACKAGE=$PACKAGE_NAME
29VERSION=$PACKAGE_VERSION
30
31
32#-------------------------------------------------------------------------------
33# Required programs
34#-------------------------------------------------------------------------------
35
36AM_CONFIG_HEADER([config.h])
37#AC_CONFIG_SRCDIR([src/spfval/main.c])
38
39AC_PROG_CC
40AC_PROG_LN_S
41#AC_PROG_RANLIB
42#AC_ARG_PROGRAM
43AC_PROG_MAKE_SET
44#AC_PROG_CPP
45AC_PROG_INSTALL
46AM_CONDITIONAL(GCC, test x$GCC = xyes)
47
48# Auto Make
49#AM_MAINTAINER_MODE
50
51
52#-------------------------------------------------------------------------------
53# LIBTOOL
54#-------------------------------------------------------------------------------
55
56#AC_PROG_LIBTOOL
57#AC_SUBST(LIBTOOL_DEPS)
58
59#
60#  Making releases:
61#    SPFVAL_MICRO_VERSION += 1;
62#    SPFVAL_INTERFACE_AGE += 1;
63#    SPFVAL_BINARY_AGE += 1;
64#  if any functions have been added, set SPFVAL_INTERFACE_AGE to 0.
65#  if backwards compatibility has been broken,
66#  set SPFVAL_BINARY_AGE _and_ SPFVAL_INTERFACE_AGE to 0.
67#
68
69#SPFVAL_MAJOR_VERSION=1
70#SPFVAL_MINOR_VERSION=0
71#SPFVAL_MICRO_VERSION=0
72#SPFVAL_INTERFACE_AGE=1
73#SPFVAL_BINARY_AGE=1
74#SPFVAL_VERSION=$SPFVAL_MAJOR_VERSION.$SPFVAL_MINOR_VERSION.$SPFVAL_MICRO_VERSION
75
76#AC_SUBST(SPFVAL_MAJOR_VERSION)
77#AC_SUBST(SPFVAL_MINOR_VERSION)
78#AC_SUBST(SPFVAL_MICRO_VERSION)
79#AC_SUBST(SPFVAL_VERSION)
80#AC_SUBST(SPFVAL_INTERFACE_AGE)
81#AC_SUBST(SPFVAL_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="1"
89#LT_AGE="0"
90#LT_RELEASE="1.0"
91
92#echo ""
93#echo "--------------------------------------------------------------------------------"
94#echo ""
95#echo "LIBTOOL Version ........ ${SPFVAL_MAJOR_VERSION}.${SPFVAL_MINOR_VERSION}.${SPFVAL_MICRO_VERSION}"
96#echo "LIBTOOL Interface Age .. $SPFVAL_INTERFACE_AGE"
97#echo "LIBTOOL Binary Age ..... $SPFVAL_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
121AC_CHECK_LIB([c], [exit])
122
123
124#-------------------------------------------------------------------------------
125# Check up on GCC
126#-------------------------------------------------------------------------------
127
128if test "$GCC" = "yes"
129then
130  CFLAGS="-Wall $CFLAGS"
131fi
132
133
134#-------------------------------------------------------------------------------
135# Define special resolver flags for various operating systems
136#-------------------------------------------------------------------------------
137
138case "$host" in
139  *-*-darwin*)
140    AC_DEFINE([_WITH_DARWINPPC],[],["Darwin/OSX"])
141    ;;
142  *-*-sunos4.1.1*)
143    SPFVAL_LDFLAGS=""
144    ;;
145  *-*-solaris*)
146    SPFVAL_LDFLAGS=""
147    ;;
148  *-*-sunos*)
149    SPFVAL_LDFLAGS=""
150    ;;
151  *-*-freebsd*)
152    AC_DEFINE([_WITH_FREEBSD],[],["FreeBSD"])
153    SPFVAL_LDFLAGS="-lc"
154    ;;
155  *-*-netbsd*)
156    ;;
157  *-*-openbsd*)
158    AC_DEFINE([_WITH_OPENBSD],[],["OpenBSD"])
159    ;;
160  *)
161    SPFVAL_LDFLAGS="-lresolv"
162   ;;
163esac
164
165
166#-------------------------------------------------------------------------------
167# Solaris specific
168#-------------------------------------------------------------------------------
169
170case "$host" in
171  *-*-solaris*)
172    extralibflags="-R$libdir"
173    AC_MSG_WARN(Solaris install detected.  Using extralibflags for linking: $extralibflags)
174    ;;
175  *)
176    extralibflags=""
177    ;;
178esac
179
180
181#-------------------------------------------------------------------------------
182# Checks for header files.
183#-------------------------------------------------------------------------------
184
185AC_HEADER_STDC
186AC_CHECK_HEADERS([stdio.h, stdlib.h, string.h, strings.h, unistd.h, error.h, \
187  inttypes.h])
188
189
190#-------------------------------------------------------------------------------
191# Required Types, structures and other compiler requirements
192#-------------------------------------------------------------------------------
193
194AC_C_CONST
195AC_C_INLINE
196AC_TYPE_SIZE_T
197AC_STRUCT_TM
198AC_C_CHAR_UNSIGNED
199AC_CHECK_TYPES([time_t])
200
201
202#-------------------------------------------------------------------------------
203#  Required functions
204#-------------------------------------------------------------------------------
205
206AC_FUNC_MALLOC
207AC_FUNC_REALLOC
208AC_FUNC_STRFTIME
209AC_CHECK_FUNCS([ntohl, memset, strcasecmp, strchr, strdup, strrchr, strstr, \
210  mkdir])
211
212
213#-------------------------------------------------------------------------------
214# __BEGIN_DECLS / __END_DECLS defined ?
215#-------------------------------------------------------------------------------
216
217AC_MSG_CHECKING([__BEGIN_DECLS])
218AC_COMPILE_IFELSE([
219#include <features.h>
220__BEGIN_DECLS
221extern int x;
222__END_DECLS],
223  [AC_MSG_RESULT(yes)
224   AC_DEFINE(HAVE__BEGIN_DECLS,1,
225[Define to 1 if declarations in headers are surrounded by __{BEGIN,END}_DECLS])
226   AC_SUBST(__BEGIN_DECLS,__BEGIN_DECLS)
227   AC_SUBST(__END_DECLS,__END_DECLS)],
228  [AC_MSG_RESULT(no)
229   AC_SUBST_FILE(__BEGIN_DECLS_INCL)
230   __BEGIN_DECLS_INCL=$srcdir/conf/begin_decls
231   AC_SUBST_FILE(__END_DECLS_INCL)
232   __END_DECLS_INCL=$srcdir/conf/end_decls]
233)
234
235
236#-------------------------------------------------------------------------------
237# Unsigned int types
238#-------------------------------------------------------------------------------
239
240AC_CHECK_TYPE(u_int8_t, [uint="u_int8_t"
241  AC_DEFINE(HAVE_U_INT8_T,1,[Define to 1 if type `u_int8_t' is defined])],
242  AC_CHECK_TYPE(uint8_t, [uint="uint8_t"
243    AC_DEFINE(HAVE_UINT8_T,1,[Define to 1 if type `uint8_t' is defined])],
244    [uint="unsigned char"]))
245AC_SUBST(U_INT8_T,[$uint])
246
247AC_CHECK_TYPE(u_int16_t, [uint="u_int16_t"
248  AC_DEFINE(HAVE_U_INT16_T,1,[Define to 1 if type `u_int16_t' is defined])],
249  AC_CHECK_TYPE(uint16_t, [uint="uint16_t"
250    AC_DEFINE(HAVE_UINT16_T,1,[Define to 1 if type `uint16_t' is defined])],
251    [uint="unsigned short"]))
252AC_SUBST(U_INT16_T,[$uint])
253
254AC_CHECK_TYPE(u_int32_t, [uint="u_int32_t"
255  AC_DEFINE(HAVE_U_INT32_T,1,[Define to 1 if type `u_int32_t' is defined])],
256  AC_CHECK_TYPE(uint32_t, [uint="uint32_t"
257    AC_DEFINE(HAVE_UINT32_T,1,[Define to 1 if type `uint32_t' is defined])],
258    [uint="unsigned int"]))
259AC_SUBST(U_INT32_T,[$uint])
260
261AC_CHECK_TYPE(uintptr_t, [uint="uintptr_t"
262  AC_DEFINE(HAVE_UINTPTR_T,1,[Define to 1 if type `uintptr_t' is defined])])
263AC_SUBST(UINTPTR_T,[$uint])
264
265
266#-------------------------------------------------------------------------------
267# __FUNCTION__
268#-------------------------------------------------------------------------------
269
270AC_MSG_CHECKING([__FUNCTION__])
271func=none
272AC_COMPILE_IFELSE(
273  [int x() { f(__FUNCTION__); }],
274  AC_MSG_RESULT([__FUNCTION__])
275  AC_DEFINE(HAVE___FUNCTION__, [], ["Define to 1 if __FUNCTION__ is defined"]),
276  AC_COMPILE_IFELSE(
277    [int x() { f(__func__); }],
278    AC_MSG_RESULT([__func__])
279    AC_DEFINE(HAVE___FUNC__, [], ["Define to 1 if __func__ is defined"])))
280
281
282#-------------------------------------------------------------------------------
283# Setup build directories
284#-------------------------------------------------------------------------------
285
286SPFVAL_BUILD_DIRS="spfval"
287AC_SUBST(SPFVAL_BUILD_DIRS)
288
289
290#-------------------------------------------------------------------------------
291# Warn people configuring as root....
292#-------------------------------------------------------------------------------
293
294idcommand="id -u"
295if test `$idcommand` == "0"
296then
297  AC_MSG_WARN(=== DO NOT EVER CONFIGURE AS ROOT  ===)
298  AC_MSG_WARN(=== UNLESS EXPLICITLY EXPRESSED BY ===)
299  AC_MSG_WARN(=== SUPPLIED DOCUMENTATION FROM A  ===)
300  AC_MSG_WARN(=== REPUTABLE AUTHOR! Baka!        ===)
301fi
302
303
304#-------------------------------------------------------------------------------
305# Check to see if we want to enable debugging
306#-------------------------------------------------------------------------------
307
308AC_MSG_CHECKING(whether DEBUG is eanbled)
309AC_ARG_ENABLE(debug,
310[  --enable-debug            Enables debug option (default=no)],
311[case "${enableval}" in
312  yes)
313    debug=true
314    AC_MSG_RESULT(yes)
315    ;;
316  no)
317    debug=false
318    AC_MSG_RESULT(no)
319    ;;
320  *)
321    AC_MSG_ERROR(bad value ${enableval} for --enable-debug)
322    ;;
323esac],
324[debug=false] AC_MSG_RESULT(no))
325
326if test "$debug" = "true"; then
327  CFLAGS="-ggdb -D_SPFVAL_DEBUG $CFLAGS"
328fi
329
330
331#-------------------------------------------------------------------------------
332# Generate Makefiles
333#-------------------------------------------------------------------------------
334
335AC_OUTPUT(Makefile)
336AC_OUTPUT(src/Makefile)
337AC_OUTPUT(src/spfval/Makefile)
338
339echo ""
340echo "                               .o88o.                       oooo                "
341echo "                               888 \`\"                       \`888                "
342echo "           .oooo.o oo.ooooo.  o888oo  oooo    ooo  .oooo.    888                "
343echo "          d88(  \"8  888' \`88b  888     \`88.  .8'  \`P  )88b   888                "
344echo "          \`\"Y88b.   888   888  888      \`88..8'    .oP\"888   888                "
345echo "          o.  )88b  888   888  888       \`888'    d8(  888   888                "
346echo "          8\"\"888P'  888bod8P' o888o       \`8'     \`Y888\"\"8o o888o               "
347echo "                    888                                                         "
348echo "                   o888o                                                        "
349echo ""
350echo "--------------------------------------------------------------------------------"
351echo "              An ANSI C Sender Policy Framework record validator                "
352echo "--------------------------------------------------------------------------------"
353echo ""
354echo ""
355echo "--------------------------------------------------------------------------------"
356echo "                              $PACKAGE $VERSION                                 "
357echo "--------------------------------------------------------------------------------"
358echo ""
359echo " ./CHANGELOG ............ List of documented changed between versions"
360echo " ./FAQ .................. Frequently Asked Questions (and Answers :-) )"
361echo " ./LICENSE .............. Terms under which spfval is licensed"
362echo " ./README ............... A Quick and Excellent rundown of basic information"
363echo " ./TODO ................. Things planned for future releases that are 'To Do'"
364echo " ./VERSION .............. Version of thie release"
365echo " ./bin .................. Static & Dyn. versions of the spfval Query Tool"
366echo " ./src .................. Its not the Swartz, but it will have to do ;)"
367echo ""
368echo "--------------------------------------------------------------------------------"
369sleep 2
370echo ""
371echo " Website ................................ http://spfTools.net"
372echo " Contact ................................ tanderson@codeshare.ca"
373echo ""
374echo "--------------------------------------------------------------------------------"
375sleep 1
376echo ""
377
378if test "$debug" = "true"; then
379  tmp="ON"
380else
381  tmp="OFF"
382fi
383echo " Enable Debugging ........................................... "$tmp""
384
385echo ""
386echo " spfval binaries are in the new 'bin' dir in the spfval root"
387echo "--------------------------------------------------------------------------------"
388echo ""
389
390# end of configure.in
391