1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl
4dnl Copyright 1998 - 2007 Double Precision, Inc.  See COPYING for
5dnl distribution information.
6
7AC_INIT(libuserdb, 0.10, [courier-users@lists.sourceforge.net])
8
9>confdefs.h # Kill PACKAGE_ macros.
10
11LPATH="$PATH:/usr/local/bin"
12
13AC_CONFIG_SRCDIR(userdb.c)
14AC_CONFIG_AUX_DIR(..)
15AM_INIT_AUTOMAKE([foreign no-define])
16AC_CONFIG_HEADERS(config.h)
17
18dnl Checks for programs.
19AC_PROG_AWK
20AC_PROG_CC
21AC_PROG_CC_C99
22AC_PROG_INSTALL
23AC_PROG_LN_S
24AC_PROG_LIBTOOL
25AC_PATH_PROGS(PERL, perl5 perl, perl, $LPATH)
26
27if test "$PERL" = "perl"
28then
29	AC_MSG_ERROR(Perl not found.)
30fi
31
32if test "$GCC" = "yes"
33then
34	CFLAGS="$CFLAGS -Wall"
35fi
36
37CFLAGS="$CFLAGS -I.. -I${srcdir}/.. -I../libs -I${srcdir}/../libs"
38
39dnl Checks for libraries.
40
41AC_ARG_WITH(userdb, [ ], userdb="$withval", userdb="/etc/userdb")
42AC_SUBST(userdb)
43USERDB="`echo $userdb | tr '[a-z]' '[A-Z]'`"
44AC_SUBST(USERDB)
45
46AC_ARG_WITH(userdbmandir, [ ], mandir="$withval")
47
48AC_ARG_WITH(userdbtmpdir, [ ], tmpdir="$withval", tmpdir="")
49
50changequote({,})
51
52if test "$tmpdir" = ""
53then
54	tmpdir=`echo "$userdb" | sed 's/\/[^\/]*$//'`
55fi
56
57changequote([,])
58
59AC_SUBST(userdbtmpdir)
60AC_SUBST(tmpdir)
61
62AC_ARG_WITH(makedatprog, [ ], makedat="$withval", makedat="$bindir/makedat")
63AC_SUBST(makedat)
64
65if test -d ${srcdir}/../libs/md5
66then
67	AC_DEFINE_UNQUOTED(HAVE_MD5,1,[ Whether libmd5.a is present ])
68	MD5LIB=../libs/md5/libmd5.la
69else
70	MD5LIB=""
71fi
72AC_SUBST(MD5LIB)
73
74if test -d ${srcdir}/../libs/sha1
75then
76	SHA1LIB=../libs/sha1/libsha1.la
77else
78	SHA1LIB=""
79fi
80AC_SUBST(SHA1LIB)
81
82if test -d ${srcdir}/../libs/libhmac
83then
84	AC_DEFINE_UNQUOTED(HAVE_HMAC,1, [ Whether libhmac.a is present ])
85	HMACLIB=../libs/libhmac/libhmac.la
86else
87	HMACLIB=""
88fi
89AC_SUBST(HMACLIB)
90
91dnl Checks for header files.
92AC_HEADER_STDC
93AC_CHECK_HEADERS(sys/stat.h sys/time.h unistd.h fcntl.h termios.h crypt.h)
94AC_HEADER_TIME
95
96dnl Checks for typedefs, structures, and compiler characteristics.
97AC_C_CONST
98AC_PID_T
99AC_TYPE_UID_T
100AC_TYPE_SIGNAL
101AC_SYS_LARGEFILE
102
103dnl Other checks
104
105AC_CHECK_LIB(crypt, crypt, CRYPTLIBS="-lcrypt")
106saveLIBS="$LIBS"
107LIBS="$CRYPTLIBS $LIBS"
108AC_CHECK_FUNC(crypt, AC_DEFINE_UNQUOTED(HAVE_CRYPT,1,
109			[ Whether the crypt() function is available ]))
110LIBS="$saveLIBS"
111AC_CACHE_CHECK([for crypt() prototype],userdb_cv_NEED_CRYPT_PROTOTYPE,
112
113	AC_TRY_COMPILE( [
114	       #if HAVE_CRYPT_H
115	       #include <crypt.h>
116	       #endif
117	       #if HAVE_UNISTD_H
118	       #include <unistd.h>
119	       #endif
120	       int crypt(int, int);
121
122		], [], userdb_cv_NEED_CRYPT_PROTOTYPE=1,
123			userdb_cv_NEED_CRYPT_PROTOTYPE=0 )
124
125	)
126
127AC_DEFINE_UNQUOTED(NEED_CRYPT_PROTOTYPE, $userdb_cv_NEED_CRYPT_PROTOTYPE,
128			 [ Whether crypt() must be explicitly prototyped ])
129AC_SUBST(CRYPTLIBS)
130
131AC_CHECK_FUNCS(isatty gettimeofday)
132
133AC_ARG_WITH(random, [ --with-random=/dev/urandom - location of the system random file generator
134--without-random            - there is no system random file generator ],
135	random="$withval",
136	random="y")
137
138case "$random" in
139/*)
140	;;
141y*|1*)
142	AC_CACHE_CHECK([for random source],userdb_cv_RANDOM,
143
144		if test -c /dev/urandom
145		then
146			userdb_cv_RANDOM=/dev/urandom
147		else
148			if test -c /dev/random
149			then
150				userdb_cv_RANDOM=/dev/random
151			else
152				userdb_cv_RANDOM="none"
153			fi
154		fi
155	)
156	random="$userdb_cv_RANDOM"
157	;;
158*)
159	random="none"
160	;;
161esac
162
163if test "$random" != "none"
164then
165	AC_DEFINE_UNQUOTED(RANDOM, "$random",
166				   [ System random number generator ])
167fi
168
169AM_CONDITIONAL(HAVE_SGML, test -d ${srcdir}/../libs/docbook)
170
171AC_OUTPUT(Makefile userdb.pl makeuserdb pw2userdb)
172