2 dnl autoconf input file to generate MCONFIG
8 AC_PREFIX_DEFAULT(/usr)
16 dnl Feature-test macros. These need to be set in CFLAGS, rather in
17 dnl aconfig.h, or "configure" will run in a different environment than
18 dnl we eventually we build in.
21 dnl Needed on Solaris/cc or Solaris/gcc
22 CFLAGS="$CFLAGS -D_XPG4_2"
23 CFLAGS="$CFLAGS -D_XOPEN_SOURCE"
24 CFLAGS="$CFLAGS -D__EXTENSIONS__"
26 dnl Needed on some glibc systems
27 CFLAGS="$CFLAGS -D_GNU_SOURCE"
29 dnl Needed on Digital Unix
30 CFLAGS="$CFLAGS -D_OSF_SOURCE"
31 CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
40 PA_ADD_CFLAGS(-Wpointer-arith)
41 PA_ADD_CFLAGS(-Wbad-function-cast)
42 PA_ADD_CFLAGS(-Wcast-equal)
43 PA_ADD_CFLAGS(-Wstrict-prototypes)
44 PA_ADD_CFLAGS(-Wmissing-prototypes)
45 PA_ADD_CFLAGS(-Wmissing-declarations)
46 PA_ADD_CFLAGS(-Wnested-externs)
47 PA_ADD_CFLAGS(-Winline)
48 PA_ADD_CFLAGS(-Wwrite-strings)
49 PA_ADD_CFLAGS(-Wundef)
50 PA_ADD_CFLAGS(-Wshadow)
51 PA_ADD_CFLAGS(-Wsign-compare)
53 PA_ADD_CFLAGS(-fno-strict-aliasing)
56 AC_CHECK_HEADERS(inttypes.h)
57 AC_CHECK_HEADERS(stdint.h)
58 PA_CHECK_INTTYPES_H_SANE
59 AC_CHECK_HEADERS(fcntl.h)
60 AC_CHECK_HEADERS(getopt.h)
61 AC_CHECK_HEADERS(grp.h)
62 AC_CHECK_HEADERS(libgen.h)
63 AC_CHECK_HEADERS(memory.h)
64 AC_CHECK_HEADERS(setjmp.h)
65 AC_CHECK_HEADERS(stddef.h)
66 AC_CHECK_HEADERS(stdlib.h)
67 AC_CHECK_HEADERS(string.h)
68 AC_CHECK_HEADERS(strings.h)
69 AC_CHECK_HEADERS(sysexits.h)
70 AC_CHECK_HEADERS(time.h)
71 AC_CHECK_HEADERS(unistd.h)
72 AC_CHECK_HEADERS(sys/filio.h)
73 AC_CHECK_HEADERS(sys/stat.h)
74 AC_CHECK_HEADERS(sys/time.h)
75 AC_CHECK_HEADERS(sys/types.h)
76 AC_CHECK_HEADERS(arpa/inet.h)
78 dnl This is needed on some versions of FreeBSD...
79 AC_CHECK_HEADERS(machine/param.h)
80 AC_CHECK_HEADERS(sys/socket.h)
81 AC_CHECK_HEADERS(winsock2.h)
82 AC_CHECK_HEADERS(winsock.h)
88 AC_CHECK_TYPES(intmax_t)
89 AC_CHECK_TYPES(long long)
90 AC_CHECK_TYPES(uint16_t)
91 AC_CHECK_TYPES(uint32_t)
92 AC_CHECK_TYPES(u_short)
93 AC_CHECK_TYPES(u_long)
94 AC_CHECK_TYPES(socklen_t)
96 AC_SEARCH_LIBS(socket, [socket ws2_32 wsock32], , [AC_MSG_ERROR(socket library not found)])
97 AC_SEARCH_LIBS(gethostbyname, [nsl resolv], , [AC_MSG_ERROR(gethostbyname not found)])
98 AC_SEARCH_LIBS(inet_aton, [nsl resolv], , [AC_MSG_ERROR(inet_aton not found)])
99 AC_SEARCH_LIBS(herror, [nsl resolv], , [AC_MSG_ERROR(herror not found)])
102 AC_CHECK_FUNCS(fcntl)
103 AC_CHECK_FUNCS(setsid)
104 AC_CHECK_FUNCS(recvmsg)
105 AC_CHECK_FUNCS(ftruncate)
106 AC_CHECK_FUNCS(setreuid)
107 AC_CHECK_FUNCS(setregid)
108 AC_CHECK_FUNCS(initgroups)
109 AC_CHECK_FUNCS(setgroups)
111 dnl Solaris 8 has [u]intmax_t but not strtoumax(). How utterly braindamaged.
112 AC_CHECK_FUNCS(strtoumax)
113 AC_CHECK_FUNCS(strtoull)
115 PA_MSGHDR_MSG_CONTROL
118 PA_HEADER_DEFINES(fcntl.h, int, O_NONBLOCK)
119 PA_HEADER_DEFINES(fcntl.h, int, O_BINARY)
120 PA_HEADER_DEFINES(fcntl.h, int, O_TEXT)
122 AH_TEMPLATE([HAVE_SIGSETJMP],
123 [Define if we have sigsetjmp, siglongjmp and sigjmp_buf.])
124 PA_SIGSETJMP([AC_DEFINE(HAVE_SIGSETJMP)])
129 SRCROOT=`cd $srcdir && pwd`
133 AC_SEARCH_LIBS(xmalloc, iberty, , [XTRA=true ; AC_LIBOBJ(xmalloc)])
134 AC_SEARCH_LIBS(xstrdup, iberty, , [XTRA=true ; AC_LIBOBJ(xstrdup)])
135 AC_SEARCH_LIBS(bsd_signal, bsd, , [XTRA=true ; AC_LIBOBJ(bsdsignal)])
138 XTRALIBS="$OBJROOT/lib/libxtra.a $XTRALIBS"
142 dnl These libraries apply to the server only
147 PA_HEADER_DEFINES(netinet/in.h, int, IPPORT_TFTP)
149 PA_WITH_BOOL(tcpwrappers, 1,
150 [ --without-tcpwrappers disable tcpwrapper permissions checking],
152 AC_SEARCH_LIBS(yp_get_default_domain, [nsl resolv])
157 AH_TEMPLATE([WITH_REGEX],
158 [Define if we are compiling with regex filename remapping.])
160 PA_WITH_BOOL(remap, 1,
161 [ --without-remap disable regex-based filename remapping],
163 AC_CHECK_HEADER(regex.h,
165 AC_SEARCH_LIBS(regcomp, [regex rx],
167 AC_DEFINE(WITH_REGEX)
168 TFTPDOBJS="remap.${OBJEXT} $TFTPDOBJS"
173 TFTPD_LIBS="$LIBS $XTRALIBS"
177 dnl These libraries apply to the client only
180 AH_TEMPLATE([WITH_READLINE],
181 [Define if we are compiling with readline command-line editing.])
183 PA_WITH_BOOL(readline, 1,
184 [ --without-readline disable the use of readline command-line editing],
186 AC_CHECK_HEADER(readline/readline.h,
188 dnl readline may need libtermcap or somesuch...
189 AC_SEARCH_LIBS(tputs, [termcap terminfo])
191 AC_SEARCH_LIBS(readline, [readline history],
193 AC_DEFINE(WITH_READLINE)
197 AC_CHECK_HEADERS(readline/history.h)
201 TFTP_LIBS="$LIBS $XTRALIBS"
215 dnl Make sure the install program has an absolute path if it
216 dnl has a path at all. autoconf doesn't do this "in order
217 dnl to not pollute the cache." Sigh.
218 dnl Note: the $ needs to be double-quoted for reasons unknown.
221 [if echo "$INSTALL" | grep '^[^/].*/' > /dev/null 2>&1; then
222 INSTALL='\${SRCROOT}'/"$INSTALL"
225 AC_CONFIG_HEADERS(aconfig.h)