7e4fc92efddb103e55214bff3a9c8d748917e038
[oftpd.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(src/file_list.c)
3 AM_INIT_AUTOMAKE(oftpd, 0.3.6)
4 AM_CONFIG_HEADER(src/config.h)
5
6 dnl Checks for programs.
7 AC_PROG_AWK
8 AC_PROG_CC
9 AC_PROG_INSTALL
10 AC_PROG_LN_S
11
12 dnl Checks for header files.
13 AC_HEADER_STDC
14 AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h sys/types.h)
15
16 dnl Check for ss_family
17 AC_EGREP_CPP(__ss_family,
18 [#include<sys/socket.h>
19 ],,AC_DEFINE(HAVE_NEW_SS_FAMILY))
20
21 dnl Checks for typedefs, structures, and compiler characteristics.
22 AC_C_CONST
23 AC_TYPE_MODE_T
24 AC_TYPE_OFF_T
25 AC_TYPE_SIZE_T
26 AC_STRUCT_ST_BLOCKS
27 AC_STRUCT_ST_RDEV
28 AC_HEADER_STAT
29 AC_HEADER_TIME
30 AC_STRUCT_ST_BLOCKS
31 AC_STRUCT_ST_RDEV
32 AC_STRUCT_TM
33
34 # We need the size of some types to be able to detect overflows 
35 # in parsing numeric values.
36 AC_CHECK_SIZEOF(off_t)
37 AC_CHECK_SIZEOF(unsigned long)
38 AC_CHECK_SIZEOF(unsigned long long)
39
40 dnl Checks for library functions.
41 AC_FUNC_ALLOCA
42 AC_FUNC_MEMCMP
43 AC_TYPE_SIGNAL
44 AC_FUNC_STRFTIME
45 AC_CHECK_FUNCS(getcwd gettimeofday select socket strerror localtime_r gmtime_r)
46 dnl AC_CHECK_LIB(pthread, pthread_create)
47 dnl AC_SEARCH_LIBS(pthread_create, [ pthread pthreads thread threads ])
48 AC_SEARCH_LIBS(socket, socket)
49 AC_SEARCH_LIBS(inet_ntoa, nsl)
50 AC_CHECK_FUNCS(inet_aton)
51
52
53 dnl check for efficient file transfer mechanisms (i.e. sendfile())
54 have_sendfile=no
55 AC_TRY_LINK([
56 #include <sys/types.h>
57 #include <sys/socket.h>
58 #include <unistd.h>
59 ], [
60 off_t offset;
61 sendfile(0, 1, &offset);
62 ], 
63 AC_DEFINE(HAVE_LINUX_SENDFILE) AC_DEFINE(HAVE_SENDFILE) have_sendfile=yes
64 )
65 if test $have_sendfile = no; then
66 AC_TRY_LINK([
67 #include <sys/types.h>
68 #include <sys/socket.h>
69 #include <unistd.h>
70 ], [
71 off_t offset;
72 off_t sbytes;
73 sendfile(0, 1, &offset, 0, NULL, &sbytes, 0);
74 ],
75 AC_DEFINE(HAVE_FREEBSD_SENDFILE) AC_DEFINE(HAVE_SENDFILE) have_sendfile=yes
76 )
77 fi
78
79
80
81 dnl decipher pthread compilation model
82
83 dnl first, try linking a threaded application with "-pthread", 
84 dnl which will work on FreeBSD (and OpenBSD) systems
85 save_LDFLAGS="$LDFLAGS"
86 LDFLAGS="-pthread $LDFLAGS"
87 AC_TRY_LINK([ 
88 #include <pthread.h>
89 ], [
90 pthread_create();
91 ],
92 ,
93 LIBS="$save_LDFLAGS"
94 )
95
96 dnl then, try looking in various libraries, which will work on other systems
97 AC_SEARCH_LIBS(pthread_create, [ pthread pthreads thread threads ])
98
99 dnl add reentrant flags
100 CFLAGS="$CFLAGS -D_REENTRANT -D_THREAD_SAFE"
101
102 dnl Check whether to enable IPv6 support
103 AC_ARG_ENABLE([ipv6],[  --enable-ipv6           Enable IPv6 support (disabled by default)],
104               CFLAGS="$CFLAGS -DINET6",)
105
106 AC_SUBST(HAVE_NEW_SS_FAMILY)
107 AC_OUTPUT(Makefile src/Makefile man/Makefile)
108 dnl AM_CONFIG_HEADER(src/config.h)