1AC_INIT(xinetd/main.c)
2
3AC_CANONICAL_SYSTEM
4
5AC_PROG_CC
6AC_PROG_INSTALL
7AC_PROG_RANLIB
8
9AC_CHECK_LIB(compat, main)
10AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
11AC_SEARCH_LIBS(getnameinfo, nsl socket resolv)
12AC_SEARCH_LIBS(inet_ntop, nsl socket resolv)
13AC_CHECK_FUNCS(getnameinfo inet_ntop)
14AC_CHECK_FUNCS(difftime, ,
15   AC_CHECK_LIB(m, difftime))
16AC_CHECK_FUNCS(fcvt, ,
17   AC_CHECK_LIB(m, fcvt))
18AC_CHECK_FUNCS(ecvt, ,
19   AC_CHECK_LIB(m, ecvt))
20AC_CHECK_FUNCS(gcvt, ,
21   AC_CHECK_LIB(m, gcvt))
22
23AC_CHECK_FUNC(strerror, [AC_DEFINE(HAVE_STRERROR)])
24AC_CHECK_FUNC(strcasecmp, [AC_DEFINE(HAVE_STRCASECMP)])
25AC_CHECK_FUNC(socket, ,
26   AC_CHECK_LIB(socket, socket, ,
27      AC_CHECK_LIB(nsl, socket)))
28AC_CHECK_FUNC(inet_aton, ,
29	AC_CHECK_LIB(nsl, inet_aton, ,
30		AC_CHECK_LIB(socket, inet_aton, ,
31			AC_CHECK_LIB(resolv, inet_aton, ,[AC_DEFINE(NO_INET_ATON)]))))
32AC_CHECK_FUNC(setenv,[AC_DEFINE(HAVE_SETENV)])
33AC_CHECK_FUNC(strsignal, [AC_DEFINE(HAVE_STRSIGNAL)])
34AC_CHECK_LIB(c, sys_siglist, [AC_DEFINE(HAVE_SYS_SIGLIST)])
35AC_CHECK_FUNC(gai_strerror,[AC_DEFINE(HAVE_GAI_STRERROR)])
36AC_CHECK_FUNC(freeaddrinfo,[AC_DEFINE(HAVE_FREEADDRINFO)])
37AC_CHECK_FUNC(getaddrinfo,[AC_DEFINE(HAVE_GETADDRINFO)])
38
39AC_CHECK_HEADERS(sys/types.h sys/termios.h termios.h sys/ioctl.h sys/select.h rpc/rpc.h rpc/rpcent.h sys/file.h ftw.h machine/reg.h netdb.h)
40AC_CHECK_HEADER(sys/resource.h, [AC_DEFINE(HAVE_SYS_RESOURCE_H)])
41AC_CHECK_HEADER(arpa/inet.h, [AC_DEFINE(HAVE_ARPA_INET_H)])
42AC_CHECK_HEADER(grp.h, [AC_DEFINE(HAVE_GRP_H)])
43AC_CHECK_HEADER(rpc/pmap_clnt.h, [AC_DEFINE(HAVE_RPC_PMAP_CLNT_H)])
44AC_CHECK_HEADER(sys/socket.h, [AC_DEFINE(HAVE_SYS_SOCKET_H)])
45AC_CHECK_HEADER(sys/signal.h, [AC_DEFINE(HAVE_SYS_SIGNAL_H)])
46AC_CHECK_HEADER(crypt.h, [AC_DEFINE(HAVE_CRYPT_H)])
47AC_CHECK_HEADER(stdint.h, [AC_DEFINE(HAVE_STDINT_H)])
48AC_CHECK_HEADER(stdbool.h, [AC_DEFINE(HAVE_STDBOOL_H)])
49AC_CHECK_HEADER(sys/filio.h, [AC_DEFINE(HAVE_SYS_FILIO_H)])
50AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [AC_DEFINE(HAVE_DNSREGISTRATION) AC_DEFINE(HAVE_MDNS)])
51
52AC_ARG_WITH(howl, [  --with-howl=PATH        Compile in howl support.
53                          PATH is the prefix where howl is installed,
54                          and is not optional.],
55   [ OLDCFLAGS=$CFLAGS; CFLAGS="-I$withval/include/howl/ $CFLAGS";
56     OLDLDFLAGS=$LDFLAGS; LDFLAGS="-L$withval/lib/ $LDFLAGS";
57     OLDCPPFLAGS=$CPPFLAGS; CPPFLAGS="-I$withval/include/howl/ $CPPFLAGS";
58     AC_CHECK_HEADER($withval/include/howl/howl.h,
59        [AC_DEFINE(HAVE_HOWL) AC_DEFINE(HAVE_MDNS)],
60        [CFLAGS=$OLDCFLAGS; LDFLAGS=$OLDLDFLAGS; CPPFLAGS=$OLDCPPFLAGS;])
61     AC_CHECK_LIB(howl, sw_discovery_publish, [LIBS="-lhowl $LIBS"], [
62        OLDLIBS=$LIBS; LIBS="-lpthread $LIBS";
63        AC_CHECK_LIB(howl, main, [LIBS="-lhowl $LIBS"],
64           [LIBS=$OLDLIBS])
65     ])
66   ])
67
68XINETD_CHECK_TYPE(uint16_t, unsigned short)
69XINETD_CHECK_TYPE(uint32_t, unsigned int)
70XINETD_CHECK_TYPE(uint64_t, unsigned long long)
71XINETD_CHECK_TYPE(uid_t, unsigned int)
72XINETD_CHECK_TYPE(gid_t, unsigned int)
73XINETD_CHECK_TYPE(socklen_t, unsigned int)
74XINETD_CHECK_TYPE(rlim_t, long long)
75
76AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
77        AC_TRY_COMPILE(
78                [
79#include <sys/types.h>
80#include <sys/socket.h>
81#ifdef HAVE_NETDB_H
82#include <netdb.h>
83#endif
84                ],
85                [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
86                [ ac_cv_have_struct_addrinfo="yes" ],
87                [ ac_cv_have_struct_addrinfo="no" ]
88        )
89])
90if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
91        AC_DEFINE(HAVE_STRUCT_ADDRINFO)
92fi
93
94AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
95        AC_TRY_COMPILE(
96                [
97#include <sys/types.h>
98#include <netinet/in.h>
99                ],
100                [ struct in6_addr s; s.s6_addr[0] = 0; ],
101                [ ac_cv_have_struct_in6_addr="yes" ],
102                [ ac_cv_have_struct_in6_addr="no" ]
103        )
104])
105if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
106        AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
107fi
108
109AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
110        AC_TRY_COMPILE(
111                [
112#include <sys/types.h>
113#include <netinet/in.h>
114                ],
115                [ struct sockaddr_in6 s; s.sin6_family = 0; ],
116                [ ac_cv_have_struct_sockaddr_in6="yes" ],
117                [ ac_cv_have_struct_sockaddr_in6="no" ]
118        )
119])
120if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
121        AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
122fi
123
124AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
125        AC_TRY_COMPILE(
126                [
127#include <sys/types.h>
128#include <sys/socket.h>
129                ],
130                [ struct sockaddr_storage s; ],
131                [ ac_cv_have_struct_sockaddr_storage="yes" ],
132                [ ac_cv_have_struct_sockaddr_storage="no" ]
133        )
134])
135if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
136        AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
137fi
138
139
140case "$target_os" in
141
142solaris*)
143	AC_DEFINE(N0_SIGLIST)
144	AC_DEFINE(solaris)
145
146	AC_MSG_CHECKING(whether to compile in loadavg)
147	AC_ARG_WITH(loadavg,
148	[  --with-loadavg[=PATH]   Compile in loadavg support.],
149	[ case "$withval" in
150		no)
151			AC_MSG_RESULT(no)
152			;;
153		yes)
154			AC_MSG_RESULT(yes)
155			AC_CHECK_LIB(kstat, main)
156			AC_CHECK_HEADER(kstat.h, [AC_DEFINE(HAVE_KSTAT_H)])
157			AC_DEFINE(HAVE_LOADAVG)
158			;;
159		*)
160			AC_MSG_RESULT(yes)
161			AC_DEFINE(HAVE_LOADAVG)
162			;;
163	esac ], AC_MSG_RESULT(no) )
164	;;
165osf*)
166	LDFLAGS=-oldstyle_liblookup
167	AC_MSG_CHECKING(whether to compile in loadavg)
168	AC_ARG_WITH(loadavg,,
169	[ case "$withval" in
170		no)
171			AC_MSG_RESULT(no)
172			;;
173		yes)
174			AC_MSG_RESULT(yes)
175			AC_DEFINE(HAVE_LOADAVG)
176			;;
177		*)
178			AC_MSG_RESULT(yes)
179			AC_DEFINE(HAVE_LOADAVG)
180			;;
181	esac ], AC_MSG_RESULT(no))
182	;;
183linux*|freebsd*)
184	AC_CHECK_LIB(crypt, main)
185
186	AC_MSG_CHECKING(whether to compile in loadavg)
187	AC_ARG_WITH(loadavg,,
188	[ case "$withval" in
189		no)
190			AC_MSG_RESULT(no)
191			;;
192		yes)
193			AC_MSG_RESULT(yes)
194			AC_DEFINE(HAVE_LOADAVG)
195			;;
196		*)
197			AC_MSG_RESULT(yes)
198			AC_DEFINE(HAVE_LOADAVG)
199			;;
200	esac ], AC_MSG_RESULT(no))
201	;;
202darwin* | "Mac OS"*)
203	ac_cv_prog_RANLIB="ranlib"
204	# AC_CHECK_FUNCS doesn't look in the proper header file...
205	AC_DEFINE(HAVE_ISATTY)
206	CFLAGS="$CFLAGS -no-cpp-precomp"
207	AC_MSG_CHECKING(whether to compile in loadavg)
208	AC_ARG_WITH(loadavg,,
209	[ case "$withval" in
210		no)
211			AC_MSG_RESULT(no)
212			;;
213		yes)
214			AC_MSG_RESULT(yes)
215			AC_DEFINE(HAVE_LOADAVG)
216			;;
217		*)
218			AC_MSG_RESULT(yes)
219			AC_DEFINE(HAVE_LOADAVG)
220			;;
221	esac ], AC_MSG_RESULT(no))
222	;;
223*bsdi*)
224       AC_MSG_CHECKING(whether to compile in loadavg)
225       AC_ARG_WITH(loadavg,,
226       [ case "$withval" in
227               no)
228                       AC_MSG_RESULT(no)
229                       ;;
230               yes)
231                       AC_MSG_RESULT(yes)
232                       AC_DEFINE(bsdi)
233                       AC_DEFINE(HAVE_LOADAVG)
234                       ;;
235               *)
236                       AC_MSG_RESULT(yes)
237                       AC_DEFINE(bsdi)
238                       AC_DEFINE(HAVE_LOADAVG)
239                       ;;
240       esac ], AC_MSG_RESULT(no))
241       ;;
242esac
243
244
245AC_CHECK_LIB(c, crypt, [:], [
246 AC_CHECK_LIB(crypt, crypt, [
247  LIBS="-lcrypt $LIBS"
248  AC_DEFINE(HAVE_LIBCRYPT) ], []) ])
249
250AC_CHECK_LIB(m, log10, [ LIBS="-lm $LIBS" ], [])
251
252AC_MSG_CHECKING(whether to default to ipv6)
253AC_ARG_WITH(inet6, [  --with-inet6    Compile in ipv6 support. (obsolete)],
254AC_MSG_RESULT(ignored), AC_MSG_RESULT(ignored) )
255
256AC_MSG_CHECKING(whether to use libwrap)
257AC_ARG_WITH(libwrap,
258[  --with-libwrap[=PATH]   Compile in libwrap (tcp_wrappers) support.],
259[ case "$withval" in
260	no)
261		AC_MSG_RESULT(no)
262		;;
263	yes)
264		AC_MSG_RESULT(yes)
265		AC_CHECK_LIB(wrap, request_init, [
266			AC_DEFINE(LIBWRAP)
267			WRAPLIBS="-lwrap"
268			AC_DEFINE(HAVE_LIBWRAP) ])
269		AC_CHECK_LIB(nsl, yp_get_default_domain, [
270			WRAPLIBS="$WRAPLIBS -lnsl" ])
271		LIBS="$WRAPLIBS $LIBS"
272		;;
273	*)
274		AC_MSG_RESULT(yes)
275		AC_DEFINE(LIBWRAP)
276		if test -d "$withval"; then
277			WRAPLIBS="-L$withval -lwrap"
278		else
279			WRAPLIBS="$withval"
280		fi
281		AC_CHECK_LIB(nsl, yp_get_default_domain, [
282			WRAPLIBS="$WRAPLIBS -lnsl" ])
283		OLDLIBS="$LIBS"
284		LIBS="$WRAPLIBS $LIBS"
285		AC_TRY_LINK([ int allow_severity; int deny_severity; ],
286			[ hosts_access(); ], [], [ AC_MSG_ERROR(Could not find the $withval library.  You must first install tcp_wrappers.) ])
287		;;
288	esac ],
289	AC_MSG_RESULT(no)
290)
291
292AC_MSG_CHECKING(whether to use labeled-networking)
293AC_ARG_WITH(labeled-networking,
294[  --with-labeled-networking[=PATH]   Compile in labeled networking support.],
295[ case "$withval" in
296	no)
297		AC_MSG_RESULT(no)
298		;;
299	yes)
300		AC_MSG_RESULT(yes)
301		AC_CHECK_LIB(selinux, setexeccon, [
302			AC_DEFINE(LABELED_NET)
303			LABELLIBS="-lselinux" ])
304		LIBS="$LABELLIBS $LIBS"
305		;;
306	*)
307		AC_MSG_RESULT(yes)
308		AC_DEFINE(LABELED_NET)
309		if test -d "$withval"; then
310			LABELLIBS="-L$withval -lselinux"
311		else
312			LABELLIBS="$withval"
313		fi
314		LIBS="$LABELLIBS $LIBS"
315		;;
316	esac ],
317	AC_MSG_RESULT(no)
318)
319
320AC_FUNC_MMAP
321
322AC_CHECK_FUNCS(isatty)
323AC_CHECK_FUNCS(memcpy)
324AC_CHECK_FUNCS(waitpid)
325AC_CHECK_FUNCS(sigvec)
326AC_CHECK_FUNCS(setsid)
327AC_CHECK_FUNCS(strftime)
328
329# AC_CHECK_TYPE(R_OK,4)
330
331
332mkdir -p libs/src/misc
333mkdir -p libs/src/pset
334mkdir -p libs/src/sio
335mkdir -p libs/src/str
336mkdir -p libs/src/xlog
337mkdir -p libs/include
338mkdir -p libs/lib
339mkdir -p libs/man
340
341AC_CONFIG_HEADER(config.h)
342AC_OUTPUT(Makefile libs/src/misc/Makefile libs/src/pset/Makefile libs/src/sio/Makefile libs/src/str/Makefile libs/src/xlog/Makefile libs/src/portable/Makefile xinetd/Makefile)
343
344cp config.h libs/include
345