configure.ac 20.1 KB
Newer Older
1
#                                               -*- Autoconf -*-
2
# Process this file with autoconf and autoheader to produce a configure script.
3

Matt Johnston's avatar
Matt Johnston committed
4
5
6
# This Autoconf file was cobbled from various locations. In particular, a bunch
# of the platform checks have been taken straight from OpenSSH's configure.ac
# Huge thanks to them for dealing with the horrible platform-specifics :)
7

8
9
10
AC_PREREQ(2.59)
AC_INIT
AC_CONFIG_SRCDIR(buffer.c)
11
12
13
14
15
16
17
18
19
20
21
22

OLDCFLAGS=$CFLAGS
# Checks for programs.
AC_PROG_CC
AC_PROG_MAKE_SET

if test -z "$LD" ; then
	LD=$CC
fi
AC_SUBST(LD)	

if test -z "$OLDCFLAGS" && test "$GCC" = "yes"; then
23
	AC_MSG_NOTICE(No \$CFLAGS set... using "-Os -W -Wall" for GCC)
Matt Johnston's avatar
Matt Johnston committed
24
	CFLAGS="-Os -W -Wall -Wno-pointer-sign"
25
26
fi

27
28
29
# large file support is useful for scp
AC_SYS_LARGEFILE

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Host specific options
# this isn't a definitive list of hosts, they are just added as required
AC_CANONICAL_HOST

case "$host" in

*-*-linux*)
	no_ptmx_check=1
	;;

*-*-solaris*)
	CFLAGS="$CFLAGS -I/usr/local/include"
	LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
	conf_lastlog_location="/var/adm/lastlog"
	AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
	sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
	if test "$sol2ver" -ge 8; then
		AC_MSG_RESULT(yes)
		AC_DEFINE(DISABLE_UTMP,,Disable utmp)
		AC_DEFINE(DISABLE_WTMP,,Disable wtmp)
	else
		AC_MSG_RESULT(no)
	fi
	AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
	AC_CHECK_LIB(nsl, yp_match, LIBS="$LIBS -lnsl")
	;;

*-*-aix*)
	AC_DEFINE(AIX,,Using AIX)
Matt Johnston's avatar
Matt Johnston committed
59
60
	# OpenSSH thinks it's broken. If it isn't, let me know.
	AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
61
62
63
64
	;;
	
*-*-hpux*)
	LIBS="$LIBS -lsec"
Matt Johnston's avatar
Matt Johnston committed
65
66
67
68
69
	# It's probably broken.
	AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
	;;
*-dec-osf*)
	AC_DEFINE(BROKEN_GETADDRINFO,,Broken getaddrinfo)
70
71
72
73
74
75
76
77
78
79
80
81
	;;
esac

AC_CHECK_TOOL(AR, ar, :)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(STRIP, strip, :)
AC_CHECK_TOOL(INSTALL, install, :)

dnl Can't use login() or logout() with uclibc
AC_CHECK_DECL(__UCLIBC__, 
	[
	no_loginfunc_check=1
82
	AC_MSG_NOTICE([Using uClibc - login() and logout() probably don't work, so we won't use them.])
83
84
85
	],,,)

# Checks for libraries.
86
87
AC_CHECK_LIB(crypt, crypt, CRYPTLIB="-lcrypt")
AC_SUBST(CRYPTLIB)	
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

# Check if zlib is needed
AC_ARG_WITH(zlib,
	[  --with-zlib=PATH        Use zlib in PATH],
	[
		# option is given
		if test -d "$withval/lib"; then
			LDFLAGS="-L${withval}/lib ${LDFLAGS}"
		else
			LDFLAGS="-L${withval} ${LDFLAGS}"
		fi
		if test -d "$withval/include"; then
			CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
		else
			CPPFLAGS="-I${withval} ${CPPFLAGS}"
		fi
	]
)

AC_ARG_ENABLE(zlib,
	[  --disable-zlib          Don't include zlib support],
	[
		if test "x$enableval" = "xno"; then
			AC_DEFINE(DISABLE_ZLIB,, Use zlib)
112
			AC_MSG_NOTICE(Disabling zlib)
113
114
		else
			AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))
115
			AC_MSG_NOTICE(Enabling zlib)
116
117
118
119
120
		fi
	],
	[
		# if not disabled, check for zlib
		AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))
121
		AC_MSG_NOTICE(Enabling zlib)
122
123
124
	]
)

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Check if pam is needed
AC_ARG_WITH(pam,
	[  --with-pam=PATH        Use pam in PATH],
	[
		# option is given
		if test -d "$withval/lib"; then
			LDFLAGS="-L${withval}/lib ${LDFLAGS}"
		else
			LDFLAGS="-L${withval} ${LDFLAGS}"
		fi
		if test -d "$withval/include"; then
			CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
		else
			CPPFLAGS="-I${withval} ${CPPFLAGS}"
		fi
	]
)

143

144
AC_ARG_ENABLE(pam,
145
	[  --enable-pam          Try to include PAM support],
146
	[
147
		if test "x$enableval" = "xyes"; then
148
			AC_CHECK_LIB(pam, pam_authenticate, , AC_MSG_ERROR([*** PAM missing - install first or check config.log ***]))
149
			AC_MSG_NOTICE(Enabling PAM)
150
			AC_CHECK_FUNCS(pam_fail_delay)
151
152
		else
			AC_DEFINE(DISABLE_PAM,, Use PAM)
153
			AC_MSG_NOTICE(Disabling PAM)
154
155
156
		fi
	],
	[
157
158
		# disable it by default
		AC_DEFINE(DISABLE_PAM,, Use PAM)
159
		AC_MSG_NOTICE(Disabling PAM)
160
161
162
	]
)

163
164
165
166
AC_ARG_ENABLE(openpty,
	[  --disable-openpty       Don't use openpty, use alternative method],
	[
		if test "x$enableval" = "xno"; then
167
			AC_MSG_NOTICE(Not using openpty)
168
		else
169
			AC_MSG_NOTICE(Using openpty if available)
170
171
172
173
			AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY,,Have openpty() function)])
		fi
	],
	[
174
		AC_MSG_NOTICE(Using openpty if available)
175
176
177
178
179
180
181
182
183
184
		AC_SEARCH_LIBS(openpty, util, [AC_DEFINE(HAVE_OPENPTY)])
	]
)
		

AC_ARG_ENABLE(syslog,
	[  --disable-syslog        Don't include syslog support],
	[
		if test "x$enableval" = "xno"; then
			AC_DEFINE(DISABLE_SYSLOG,, Using syslog)
185
			AC_MSG_NOTICE(Disabling syslog)
186
		else
187
			AC_MSG_NOTICE(Enabling syslog)
188
189
190
		fi
	],
	[
191
		AC_MSG_NOTICE(Enabling syslog)
192
193
194
195
196
197
198
	]
)

AC_ARG_ENABLE(shadow,
	[  --disable-shadow        Don't use shadow passwords (if available)],
	[
		if test "x$enableval" = "xno"; then
199
			AC_MSG_NOTICE(Not using shadow passwords)
200
201
		else
			AC_CHECK_HEADERS([shadow.h])
202
			AC_MSG_NOTICE(Using shadow passwords if available)
203
204
205
206
		fi
	],
	[
		AC_CHECK_HEADERS([shadow.h])
207
		AC_MSG_NOTICE(Using shadow passwords if available)
208
209
210
211
212
213
214
	]
)
			

# Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
Matt Johnston's avatar
Matt Johnston committed
215
AC_CHECK_HEADERS([fcntl.h limits.h netinet/in.h netinet/tcp.h stdlib.h string.h sys/socket.h sys/time.h termios.h unistd.h crypt.h pty.h ioctl.h libutil.h libgen.h inttypes.h stropts.h utmp.h utmpx.h lastlog.h paths.h util.h netdb.h security/pam_appl.h pam/pam_appl.h netinet/in_systm.h sys/uio.h])
216
217
218
219
220
221
222
223
224

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_UID_T
AC_TYPE_MODE_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME

225
226
AC_CHECK_TYPES([uint8_t, u_int8_t, uint16_t, u_int16_t, uint32_t, u_int32_t])
AC_CHECK_TYPES([struct sockaddr_storage])
227
228
229
230
231
232
233
234
235
AC_CHECK_TYPE([socklen_t], ,[
	AC_MSG_CHECKING([for socklen_t equivalent])
	AC_CACHE_VAL([curl_cv_socklen_t_equiv],
	[
	# Systems have either "struct sockaddr *" or
	# "void *" as the second argument to getpeername
	curl_cv_socklen_t_equiv=
	for arg2 in "struct sockaddr" void; do
		for t in int size_t unsigned long "unsigned long"; do
236
237
238
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/socket.h>
239
240

			int getpeername (int, $arg2 *, $t *);
241
		]],[[
242
243
			$t len;
			getpeername(0,0,&len);
244
		]])],[
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
			curl_cv_socklen_t_equiv="$t"
			break
		])
		done
	done

	if test "x$curl_cv_socklen_t_equiv" = x; then
		AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
	fi
	])
	AC_MSG_RESULT($curl_cv_socklen_t_equiv)
	AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
			[type to use in place of socklen_t if not defined])],
	[#include <sys/types.h>
	#include <sys/socket.h>])

Matt Johnston's avatar
Matt Johnston committed
261
262
263
# for the fake-rfc2553 stuff - straight from OpenSSH

AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
264
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Matt Johnston's avatar
Matt Johnston committed
265
266
#include <sys/types.h>
#include <sys/socket.h>
267
		]],
268
		[[ if (sizeof(struct sockaddr_storage)) return 0 ]])],
Matt Johnston's avatar
Matt Johnston committed
269
270
271
272
273
274
275
276
277
		[ ac_cv_have_struct_sockaddr_storage="yes" ],
		[ ac_cv_have_struct_sockaddr_storage="no" ]
	)
])
if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
	AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
fi

AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
278
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Matt Johnston's avatar
Matt Johnston committed
279
280
#include <sys/types.h>
#include <netinet/in.h>
281
		]],
282
		[[ if (sizeof(struct sockaddr_in6)) return 0 ]])],
Matt Johnston's avatar
Matt Johnston committed
283
284
285
286
287
288
289
290
291
		[ ac_cv_have_struct_sockaddr_in6="yes" ],
		[ ac_cv_have_struct_sockaddr_in6="no" ]
	)
])
if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
	AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6,,Have struct sockaddr_in6)
fi

AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
292
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Matt Johnston's avatar
Matt Johnston committed
293
294
#include <sys/types.h>
#include <netinet/in.h>
295
		]],
296
		[[ if (sizeof(struct in6_addr)) return 0 ]])],
Matt Johnston's avatar
Matt Johnston committed
297
298
299
300
301
302
303
304
305
		[ ac_cv_have_struct_in6_addr="yes" ],
		[ ac_cv_have_struct_in6_addr="no" ]
	)
])
if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
	AC_DEFINE(HAVE_STRUCT_IN6_ADDR,,Have struct in6_addr)
fi

AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
306
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Matt Johnston's avatar
Matt Johnston committed
307
308
309
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
310
		]],
311
		[[ if (sizeof(struct addrinfo)) return 0 ]])],
Matt Johnston's avatar
Matt Johnston committed
312
313
314
315
316
317
318
319
320
321
322
323
		[ ac_cv_have_struct_addrinfo="yes" ],
		[ ac_cv_have_struct_addrinfo="no" ]
	)
])
if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
	AC_DEFINE(HAVE_STRUCT_ADDRINFO,,Have struct addrinfo)
fi


# IRIX has a const char return value for gai_strerror()
AC_CHECK_FUNCS(gai_strerror,[
	AC_DEFINE(HAVE_GAI_STRERROR)
324
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Matt Johnston's avatar
Matt Johnston committed
325
326
327
328
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

329
const char *gai_strerror(int);]],[[
Matt Johnston's avatar
Matt Johnston committed
330
331
char *str;

332
str = gai_strerror(0);]])],[
Matt Johnston's avatar
Matt Johnston committed
333
334
		AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
		[Define if gai_strerror() returns const char *])])])
335
336
337
338
339
340
341
342
343
344

# for loginrec.c

AC_CHECK_MEMBERS([struct utmp.ut_host, struct utmp.ut_pid, struct utmp.ut_type, struct utmp.ut_tv, struct utmp.ut_id, struct utmp.ut_addr, struct utmp.ut_addr_v6, struct utmp.ut_exit, struct utmp.ut_time],,,[
#include <sys/types.h>
#if HAVE_UTMP_H
#include <utmp.h>
#endif
])

345
AC_CHECK_MEMBERS([struct utmpx.ut_host, struct utmpx.ut_syslen, struct utmpx.ut_type, struct utmpx.ut_id, struct utmpx.ut_addr, struct utmpx.ut_addr_v6, struct utmpx.ut_time, struct utmpx.ut_tv],,,[
346
#include <sys/types.h>
347
#include <sys/socket.h>
348
349
350
351
352
#if HAVE_UTMPX_H
#include <utmpx.h>
#endif
])

353
354
355
356
AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],,,[
#include <sys/types.h>
#include <sys/socket.h>
])
357

358
359
360
361
362
363
AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
AC_CHECK_FUNCS(utmpname)
AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
AC_CHECK_FUNCS(setutxent utmpxname)
AC_CHECK_FUNCS(logout updwtmp logwtmp)

364
365
366
367
# OS X monotonic time
AC_CHECK_HEADERS([mach/mach_time.h])
AC_CHECK_FUNCS(mach_absolute_time)

368
AC_ARG_ENABLE(bundled-libtom,
369
370
371
372
373
374
375
376
377
[  --enable-bundled-libtom       Force using bundled libtomcrypt/libtommath even if a system version exists.
  --disable-bundled-libtom      Force using system libtomcrypt/libtommath, fail if it does not exist.
                                Default is to use system if available, otherwise bundled.],
	[
		if test "x$enableval" = "xyes"; then
			BUNDLED_LIBTOM=1
			AC_MSG_NOTICE(Forcing bundled libtom*)
		else
			BUNDLED_LIBTOM=0
378
379
380
			AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath", 
				[AC_MSG_ERROR([Missing system libtommath and --disable-bundled-libtom was specified])] )
			AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt", 
Matt Johnston's avatar
Matt Johnston committed
381
				[AC_MSG_ERROR([Missing system libtomcrypt and --disable-bundled-libtom was specified])] )
382
		fi
383
384
385
	],
	[
		BUNDLED_LIBTOM=0
386
387
		AC_CHECK_LIB(tommath, mp_exptmod, LIBTOM_LIBS="$LIBTOM_LIBS -ltommath", BUNDLED_LIBTOM=1)
		AC_CHECK_LIB(tomcrypt, register_cipher, LIBTOM_LIBS="$LIBTOM_LIBS -ltomcrypt", BUNDLED_LIBTOM=1)
388
389
390
	]
)

391
392
393
394
if test $BUNDLED_LIBTOM = 1 ; then
	AC_DEFINE(BUNDLED_LIBTOM,,Use bundled libtom) 
fi

395
AC_SUBST(LIBTOM_LIBS)
396
397
AC_SUBST(BUNDLED_LIBTOM)

398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
dnl Added from OpenSSH 3.6.1p2's configure.ac

dnl allow user to disable some login recording features
AC_ARG_ENABLE(lastlog,
	[  --disable-lastlog       Disable use of lastlog even if detected [no]],
	[ AC_DEFINE(DISABLE_LASTLOG,,Disable use of lastlog()) ]
)
AC_ARG_ENABLE(utmp,
	[  --disable-utmp          Disable use of utmp even if detected [no]],
	[ AC_DEFINE(DISABLE_UTMP,,Disable use of utmp) ]
)
AC_ARG_ENABLE(utmpx,
	[  --disable-utmpx         Disable use of utmpx even if detected [no]],
	[ AC_DEFINE(DISABLE_UTMPX,,Disable use of utmpx) ]
)
AC_ARG_ENABLE(wtmp,
	[  --disable-wtmp          Disable use of wtmp even if detected [no]],
	[ AC_DEFINE(DISABLE_WTMP,,Disable use of wtmp) ]
)
AC_ARG_ENABLE(wtmpx,
	[  --disable-wtmpx         Disable use of wtmpx even if detected [no]],
	[ AC_DEFINE(DISABLE_WTMPX,,Disable use of wtmpx) ]
)
AC_ARG_ENABLE(loginfunc,
	[  --disable-loginfunc     Disable use of login() etc. [no]],
	[ no_loginfunc_check=1
424
	AC_MSG_NOTICE(Not using login() etc) ]
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
)
AC_ARG_ENABLE(pututline,
	[  --disable-pututline     Disable use of pututline() etc. ([uw]tmp) [no]],
	[ AC_DEFINE(DISABLE_PUTUTLINE,,Disable use of pututline()) ]
)
AC_ARG_ENABLE(pututxline,
	[  --disable-pututxline    Disable use of pututxline() etc. ([uw]tmpx) [no]],
	[ AC_DEFINE(DISABLE_PUTUTXLINE,,Disable use of pututxline()) ]
)
AC_ARG_WITH(lastlog,
  [  --with-lastlog=FILE|DIR specify lastlog location [common locations]],
	[
		if test "x$withval" = "xno" ; then	
			AC_DEFINE(DISABLE_LASTLOG)
		else
			conf_lastlog_location=$withval
		fi
	]
)

if test -z "$no_loginfunc_check"; then
	dnl    Checks for libutil functions (login(), logout() etc, not openpty() )
	AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN,,Have login() function)])
	AC_CHECK_FUNCS(logout updwtmp logwtmp)
fi

dnl lastlog, [uw]tmpx? detection
dnl  NOTE: set the paths in the platform section to avoid the
dnl   need for command-line parameters
dnl lastlog and [uw]tmp are subject to a file search if all else fails

dnl lastlog detection
dnl  NOTE: the code itself will detect if lastlog is a directory
AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
459
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
460
461
462
463
464
465
466
467
468
469
470
#include <sys/types.h>
#include <utmp.h>
#ifdef HAVE_LASTLOG_H
#  include <lastlog.h>
#endif
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
#ifdef HAVE_LOGIN_H
# include <login.h>
#endif
471
472
	]],
	[[ char *lastlog = LASTLOG_FILE; ]])],
473
474
475
476
	[ AC_MSG_RESULT(yes) ],
	[
		AC_MSG_RESULT(no)
		AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
477
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
478
479
480
481
482
483
484
485
#include <sys/types.h>
#include <utmp.h>
#ifdef HAVE_LASTLOG_H
#  include <lastlog.h>
#endif
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
486
487
		]],
		[[ char *lastlog = _PATH_LASTLOG; ]])],
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
		[ AC_MSG_RESULT(yes) ],
		[
			AC_MSG_RESULT(no)
			system_lastlog_path=no
		])
	]
)

if test -z "$conf_lastlog_location"; then
	if test x"$system_lastlog_path" = x"no" ; then
		for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
				if (test -d "$f" || test -f "$f") ; then
					conf_lastlog_location=$f
				fi
		done
		if test -z "$conf_lastlog_location"; then
			AC_MSG_WARN([** Cannot find lastlog **])
			dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
		fi
	fi
fi

if test -n "$conf_lastlog_location"; then
	AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location", lastlog file location)
fi	

dnl utmp detection
AC_MSG_CHECKING([if your system defines UTMP_FILE])
516
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
517
518
519
520
521
#include <sys/types.h>
#include <utmp.h>
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
522
523
	]],
	[[ char *utmp = UTMP_FILE; ]])],
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
	[ AC_MSG_RESULT(yes) ],
	[ AC_MSG_RESULT(no)
	  system_utmp_path=no ]
)
if test -z "$conf_utmp_location"; then
	if test x"$system_utmp_path" = x"no" ; then
		for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
			if test -f $f ; then
				conf_utmp_location=$f
			fi
		done
		if test -z "$conf_utmp_location"; then
			AC_DEFINE(DISABLE_UTMP)
		fi
	fi
fi
if test -n "$conf_utmp_location"; then
	AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location", utmp file location)
fi	

dnl wtmp detection
AC_MSG_CHECKING([if your system defines WTMP_FILE])
546
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
547
#include <sys/types.h>
Matt Johnston's avatar
Matt Johnston committed
548
549
550
#ifdef HAVE_UTMP_H
#  include <utmp.h>
#endif
551
552
553
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
554
555
	]],
	[[ char *wtmp = WTMP_FILE; ]])],
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
	[ AC_MSG_RESULT(yes) ],
	[ AC_MSG_RESULT(no)
	  system_wtmp_path=no ]
)
if test -z "$conf_wtmp_location"; then
	if test x"$system_wtmp_path" = x"no" ; then
		for f in /usr/adm/wtmp /var/log/wtmp; do
			if test -f $f ; then
				conf_wtmp_location=$f
			fi
		done
		if test -z "$conf_wtmp_location"; then
			AC_DEFINE(DISABLE_WTMP)
		fi
	fi
fi
if test -n "$conf_wtmp_location"; then
	AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location", wtmp file location)
fi	


dnl utmpx detection - I don't know any system so perverse as to require
dnl  utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
dnl  there, though.
AC_MSG_CHECKING([if your system defines UTMPX_FILE])
581
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
582
583
584
585
586
587
588
589
#include <sys/types.h>
#include <utmp.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#endif
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
590
591
	]],
	[[ char *utmpx = UTMPX_FILE; ]])],
592
593
594
595
596
597
598
599
600
601
602
603
604
605
	[ AC_MSG_RESULT(yes) ],
	[ AC_MSG_RESULT(no)
	  system_utmpx_path=no ]
)
if test -z "$conf_utmpx_location"; then
	if test x"$system_utmpx_path" = x"no" ; then
		AC_DEFINE(DISABLE_UTMPX)
	fi
else
	AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location", utmpx file location)
fi	

dnl wtmpx detection
AC_MSG_CHECKING([if your system defines WTMPX_FILE])
606
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
607
#include <sys/types.h>
Matt Johnston's avatar
Matt Johnston committed
608
609
610
#ifdef HAVE_UTMP_H
#  include <utmp.h>
#endif
611
#ifdef HAVE_UTMPX_H
Matt Johnston's avatar
Matt Johnston committed
612
#  include <utmpx.h>
613
614
615
616
#endif
#ifdef HAVE_PATHS_H
#  include <paths.h>
#endif
617
618
	]],
	[[ char *wtmpx = WTMPX_FILE; ]])],
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
	[ AC_MSG_RESULT(yes) ],
	[ AC_MSG_RESULT(no)
	  system_wtmpx_path=no ]
)
if test -z "$conf_wtmpx_location"; then
	if test x"$system_wtmpx_path" = x"no" ; then
		AC_DEFINE(DISABLE_WTMPX)
	fi
else
	AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location", wtmpx file location)
fi	

# Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_FUNC_SELECT_ARGTYPES
635
AC_CHECK_FUNCS([dup2 getspnam getusershell memset putenv select socket strdup clearenv strlcpy strlcat daemon basename _getpty getaddrinfo freeaddrinfo getnameinfo fork writev])
636
637
638
639
640
641

AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME))

# Solaris needs ptmx
if test -z "$no_ptmx_check" ; then
	if test x"$cross_compiling" = x"no" ; then
642
643
644
		if test -e /dev/ptmx ; then
			AC_DEFINE(USE_DEV_PTMX,,Use /dev/ptmx)
		fi
645
	else
646
		AC_MSG_NOTICE([Not checking for /dev/ptmx, we're cross-compiling])
647
648
649
650
651
	fi
fi

if test -z "$no_ptc_check" ; then
	if test x"$cross_compiling" = x"no" ; then
652
653
654
		if test -e /dev/ptc ; then
			AC_DEFINE(HAVE_DEV_PTS_AND_PTC,,Use /dev/ptc & /dev/pts)
		fi
655
	else
656
		AC_MSG_NOTICE([Not checking for /dev/ptc & /dev/pts since we're cross-compiling])
657
658
659
	fi
fi

Matt Johnston's avatar
Matt Johnston committed
660
AC_EXEEXT
661
662

# XXX there must be a nicer way to do this
663
if test $BUNDLED_LIBTOM = 1 ; then
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
AS_MKDIR_P(libtomcrypt/src/ciphers/aes)
AS_MKDIR_P(libtomcrypt/src/ciphers/safer)
AS_MKDIR_P(libtomcrypt/src/ciphers/twofish)
AS_MKDIR_P(libtomcrypt/src/encauth/ccm)
AS_MKDIR_P(libtomcrypt/src/encauth/eax)
AS_MKDIR_P(libtomcrypt/src/encauth/gcm)
AS_MKDIR_P(libtomcrypt/src/encauth/ocb)
AS_MKDIR_P(libtomcrypt/src/hashes)
AS_MKDIR_P(libtomcrypt/src/hashes/chc)
AS_MKDIR_P(libtomcrypt/src/hashes/helper)
AS_MKDIR_P(libtomcrypt/src/hashes/sha2)
AS_MKDIR_P(libtomcrypt/src/hashes/whirl)
AS_MKDIR_P(libtomcrypt/src/mac/hmac)
AS_MKDIR_P(libtomcrypt/src/mac/omac)
AS_MKDIR_P(libtomcrypt/src/mac/pelican)
AS_MKDIR_P(libtomcrypt/src/mac/pmac)
680
681
682
AS_MKDIR_P(libtomcrypt/src/mac/f9)
AS_MKDIR_P(libtomcrypt/src/mac/xcbc)
AS_MKDIR_P(libtomcrypt/src/math/fp)
683
684
685
686
687
688
689
690
691
AS_MKDIR_P(libtomcrypt/src/misc/base64)
AS_MKDIR_P(libtomcrypt/src/misc/crypt)
AS_MKDIR_P(libtomcrypt/src/misc/mpi)
AS_MKDIR_P(libtomcrypt/src/misc/pkcs5)
AS_MKDIR_P(libtomcrypt/src/modes/cbc)
AS_MKDIR_P(libtomcrypt/src/modes/cfb)
AS_MKDIR_P(libtomcrypt/src/modes/ctr)
AS_MKDIR_P(libtomcrypt/src/modes/ecb)
AS_MKDIR_P(libtomcrypt/src/modes/ofb)
692
693
AS_MKDIR_P(libtomcrypt/src/modes/f8)
AS_MKDIR_P(libtomcrypt/src/modes/lrw)
694
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/bit)
695
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/boolean)
696
697
698
699
700
701
702
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/choice)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/ia5)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/integer)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/object_identifier)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/octet)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/printable_string)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/sequence)
703
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/set)
704
705
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/short_integer)
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/utctime)
706
AS_MKDIR_P(libtomcrypt/src/pk/asn1/der/utf8)
707
708
709
AS_MKDIR_P(libtomcrypt/src/pk/dh)
AS_MKDIR_P(libtomcrypt/src/pk/dsa)
AS_MKDIR_P(libtomcrypt/src/pk/ecc)
710
AS_MKDIR_P(libtomcrypt/src/pk/katja)
711
712
AS_MKDIR_P(libtomcrypt/src/pk/pkcs1)
AS_MKDIR_P(libtomcrypt/src/pk/rsa)
713
AS_MKDIR_P(libtomcrypt/src/prngs)
714
715
LIBTOM_FILES="libtomcrypt/Makefile libtommath/Makefile"
fi
716
AC_CONFIG_HEADER(config.h)
717
AC_CONFIG_FILES(Makefile $LIBTOM_FILES)
718
AC_OUTPUT
719
720
721
722
723
724
725
726

AC_MSG_NOTICE()
if test $BUNDLED_LIBTOM = 1 ; then
AC_MSG_NOTICE(Using bundled libtomcrypt and libtommath)
else
AC_MSG_NOTICE(Using system libtomcrypt and libtommath)
fi

727
728
AC_MSG_NOTICE()
AC_MSG_NOTICE(Now edit options.h to choose features.)