2007-02-06 Marcus Brinkmann <marcus@g10code.de>
[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.7-wk2)
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 sys/sendfile.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 AC_CHECK_FUNCS(strerror_r)
47 dnl AC_CHECK_LIB(pthread, pthread_create)
48 dnl AC_SEARCH_LIBS(pthread_create, [ pthread pthreads thread threads ])
49 AC_SEARCH_LIBS(socket, socket)
50 AC_SEARCH_LIBS(inet_ntoa, nsl)
51 AC_CHECK_FUNCS(inet_aton)
52
53
54 dnl check for efficient file transfer mechanisms (i.e. sendfile())
55 have_sendfile=no
56 AC_TRY_LINK([
57 #include <sys/types.h>
58 #include <sys/socket.h>
59 #include <unistd.h>
60 ], [
61 off_t offset;
62 sendfile(0, 1, &offset);
63 ], 
64 AC_DEFINE(HAVE_LINUX_SENDFILE) AC_DEFINE(HAVE_SENDFILE) have_sendfile=yes
65 )
66 if test $have_sendfile = no; then
67 AC_TRY_LINK([
68 #include <sys/types.h>
69 #include <sys/socket.h>
70 #include <unistd.h>
71 ], [
72 off_t offset;
73 off_t sbytes;
74 sendfile(0, 1, &offset, 0, NULL, &sbytes, 0);
75 ],
76 dnl sendfile() seems broken on FreeBSD, so for now we'll just omit it
77 dnl AC_DEFINE(HAVE_FREEBSD_SENDFILE) AC_DEFINE(HAVE_SENDFILE) have_sendfile=yes
78 )
79 fi
80
81
82
83 dnl decipher pthread compilation model
84
85 dnl first, try linking a threaded application with "-pthread", 
86 dnl which will work on FreeBSD (and OpenBSD) systems
87 save_LDFLAGS="$LDFLAGS"
88 LDFLAGS="-pthread $LDFLAGS"
89 AC_TRY_LINK([ 
90 #include <pthread.h>
91 ], [
92 pthread_self();
93 ],
94 ,
95 LDFLAGS="$save_LDFLAGS"
96 )
97
98 dnl then, try looking in various libraries, which will work on other systems
99 AC_SEARCH_LIBS(pthread_self, [ pthread pthreads thread threads ])
100
101 dnl add reentrant flags
102 CFLAGS="$CFLAGS -D_REENTRANT -D_THREAD_SAFE"
103
104 dnl Check whether to enable IPv6 support
105 AC_ARG_ENABLE([ipv6],[  --enable-ipv6           Enable IPv6 support (disabled by default)],
106               CFLAGS="$CFLAGS -DINET6",)
107
108
109 AH_BOTTOM([
110 /* Size of the buffer used for strerror_r. */
111 #define ERRBUF_SIZE 256
112 ])
113
114
115
116 AC_SUBST(HAVE_NEW_SS_FAMILY)
117 AC_OUTPUT(Makefile src/Makefile man/Makefile)
118 dnl AM_CONFIG_HEADER(src/config.h)