1dnl $Id: aclocal.m4,v 1.1 2000/07/29 13:34:15 lukem Exp $
2dnl
3
4dnl
5dnl AC_MSG_TRY_COMPILE
6dnl
7dnl Written by Luke Mewburn <lukem@netbsd.org>
8dnl
9dnl Usage:
10dnl	AC_MSG_TRY_COMPILE(Message, CacheVar, Includes, Code,
11dnl			    ActionPass [,ActionFail] )
12dnl
13dnl effectively does:
14dnl	AC_CACHE_CHECK(Message, CacheVar,
15dnl		AC_TRY_COMPILE(Includes, Code, CacheVar = yes, CacheVar = no)
16dnl		if CacheVar == yes
17dnl			AC_MESSAGE_RESULT(yes)
18dnl			ActionPass
19dnl		else
20dnl			AC_MESSAGE_RESULT(no)
21dnl			ActionFail
22dnl	)
23dnl
24AC_DEFUN(AC_MSG_TRY_COMPILE, [
25	AC_CACHE_CHECK($1, $2, [
26		AC_TRY_COMPILE([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
27	])
28	if test "x[$]$2" = "xyes"; then
29		$5
30	else
31		$6
32		:
33	fi
34])
35
36dnl
37dnl AC_MSG_TRY_LINK
38dnl
39dnl Usage:
40dnl	AC_MSG_TRY_LINK(Message, CacheVar, Includes, Code,
41dnl			    ActionPass [,ActionFail] )
42dnl
43dnl as AC_MSG_TRY_COMPILE, but uses AC_TRY_LINK instead of AC_TRY_COMPILE
44dnl
45AC_DEFUN(AC_MSG_TRY_LINK, [
46	AC_CACHE_CHECK($1, $2, [
47		AC_TRY_LINK([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
48	])
49	if test "x[$]$2" = "xyes"; then
50		$5
51	else
52		$6
53		:
54	fi
55])
56
57
58dnl
59dnl AC_LIBRARY_NET: #Id: net.m4,v 1.5 1997/11/09 21:36:54 jhawk Exp #
60dnl
61dnl Written by John Hawkinson <jhawk@mit.edu>. This code is in the Public
62dnl Domain.
63dnl
64dnl This test is for network applications that need socket() and
65dnl gethostbyname() -ish functions.  Under Solaris, those applications need to
66dnl link with "-lsocket -lnsl".  Under IRIX, they should *not* link with
67dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
68dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
69dnl IRIX).
70dnl 
71dnl Unfortunately, many application developers are not aware of this, and
72dnl mistakenly write tests that cause -lsocket to be used under IRIX.  It is
73dnl also easy to write tests that cause -lnsl to be used under operating
74dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
75dnl uses -lnsl for TLI.
76dnl 
77dnl This test exists so that every application developer does not test this in
78dnl a different, and subtly broken fashion.
79dnl 
80dnl It has been argued that this test should be broken up into two seperate
81dnl tests, one for the resolver libraries, and one for the libraries necessary
82dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
83dnl allowing the autoconf user to use them independantly potentially results in
84dnl unfortunate ordering dependancies -- as such, such component macros would
85dnl have to carefully use indirection and be aware if the other components were
86dnl executed. Since other autoconf macros do not go to this trouble, and almost
87dnl no applications use sockets without the resolver, this complexity has not
88dnl been implemented.
89dnl
90dnl The check for libresolv is in case you are attempting to link statically
91dnl and happen to have a libresolv.a lying around (and no libnsl.a).
92dnl
93AC_DEFUN(AC_LIBRARY_NET, [
94   # Most operating systems have gethostbyname() in the default searched
95   # libraries (i.e. libc):
96   AC_CHECK_FUNC(gethostbyname, ,
97     # Some OSes (eg. Solaris) place it in libnsl:
98     AC_CHECK_LIB(nsl, gethostbyname, , 
99       # Some strange OSes (SINIX) have it in libsocket:
100       AC_CHECK_LIB(socket, gethostbyname, ,
101          # Unfortunately libsocket sometimes depends on libnsl.
102          # AC_CHECK_LIB's API is essentially broken so the following
103          # ugliness is necessary:
104          AC_CHECK_LIB(socket, gethostbyname,
105             LIBS="-lsocket -lnsl $LIBS",
106               AC_CHECK_LIB(resolv, gethostbyname),
107             -lnsl)
108       )
109     )
110   )
111  AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
112    AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
113  ])
114
115
116dnl Checks for SOCKS firewall support.
117dnl
118dnl Written by Matthew R. Green <mrg@eterna.com.au>
119dnl
120AC_DEFUN(AC_LIBRARY_SOCKS, [
121    AC_MSG_CHECKING(whether to support SOCKS)
122    AC_ARG_WITH(socks,
123    [  --with-socks            Compile with SOCKS firewall traversal support.],
124    [
125	case "$withval" in
126	no)
127	    AC_MSG_RESULT(no)
128	    ;;
129	yes)
130	    AC_MSG_RESULT(yes)
131	    AC_CHECK_LIB(socks5, SOCKSconnect, [
132		socks=5
133		LIBS="-lsocks5 $LIBS"], [
134	      AC_CHECK_LIB(socks, Rconnect, [
135		socks=4
136		LIBS="-lsocks $LIBS"], [
137		    AC_MSG_ERROR(Could not find socks library.  You must first install socks.) ] ) ] )
138	    ;;
139	esac
140    ],
141	AC_MSG_RESULT(no)
142    )
143
144    if test "x$socks" = "x"; then
145	AC_MSG_CHECKING(whether to support SOCKS5)
146	AC_ARG_WITH(socks5,
147	[  --with-socks5[=PATH]    Compile with SOCKS5 firewall traversal support.],
148	[
149	    case "$withval" in
150	    no)
151		AC_MSG_RESULT(no)
152		;;
153	    *)
154		AC_MSG_RESULT(yes)
155		socks=5
156		if test "x$withval" = "xyes"; then
157		    withval="-lsocks5"
158		else
159		    if test -d "$withval"; then
160			if test -d "$withval/include"; then
161			    CFLAGS="$CFLAGS -I$withval/include"
162			else
163			    CFLAGS="$CFLAGS -I$withval"
164			fi
165			if test -d "$withval/lib"; then
166			    withval="-L$withval/lib -lsocks5"
167			else
168			    withval="-L$withval -lsocks5"
169			fi
170		    fi
171		fi
172		LIBS="$withval $LIBS"
173		# If Socks was compiled with Kerberos support, we will need
174		# to link against kerberos libraries.  Temporarily append
175		# to LIBS.  This is harmless if there is no kerberos support.
176		TMPLIBS="$LIBS"
177		LIBS="$LIBS $KERBEROS_LIBS"
178		AC_TRY_LINK([],
179		    [ SOCKSconnect(); ],
180		    [],
181		    [ AC_MSG_ERROR(Could not find the $withval library.  You must first install socks5.) ])
182		LIBS="$TMPLIBS"
183		;;
184	    esac
185	],
186	    AC_MSG_RESULT(no)
187	)
188    fi
189
190    if test "x$socks" = "x"; then
191	AC_MSG_CHECKING(whether to support SOCKS4)
192	AC_ARG_WITH(socks4,
193	[  --with-socks4[=PATH]    Compile with SOCKS4 firewall traversal support.],
194	[
195	    case "$withval" in
196	    no)
197		AC_MSG_RESULT(no)
198		;;
199	    *)
200		AC_MSG_RESULT(yes)
201		socks=4
202		if test "x$withval" = "xyes"; then
203		    withval="-lsocks"
204		else
205		    if test -d "$withval"; then
206			withval="-L$withval -lsocks"
207		    fi
208		fi
209		LIBS="$withval $LIBS"
210		AC_TRY_LINK([],
211		    [ Rconnect(); ],
212		    [],
213		    [ AC_MSG_ERROR(Could not find the $withval library.  You must first install socks.) ])
214		;;
215	    esac
216	],
217	    AC_MSG_RESULT(no)
218	)
219    fi
220
221    if test "x$socks" = "x4"; then
222	AC_DEFINE(SOCKS)
223	AC_DEFINE(SOCKS4)
224	AC_DEFINE(connect, Rconnect)
225	AC_DEFINE(getsockname, Rgetsockname)
226	AC_DEFINE(bind, Rbind)
227	AC_DEFINE(accept, Raccept)
228	AC_DEFINE(listen, Rlisten)
229	AC_DEFINE(select, Rselect)
230    fi
231
232    if test "x$socks" = "x5"; then
233	AC_DEFINE(SOCKS)
234	AC_DEFINE(SOCKS5)
235	AC_DEFINE(connect,SOCKSconnect)
236	AC_DEFINE(getsockname,SOCKSgetsockname)
237	AC_DEFINE(getpeername,SOCKSgetpeername)
238	AC_DEFINE(bind,SOCKSbind)
239	AC_DEFINE(accept,SOCKSaccept)
240	AC_DEFINE(listen,SOCKSlisten)
241	AC_DEFINE(select,SOCKSselect)
242	AC_DEFINE(recvfrom,SOCKSrecvfrom)
243	AC_DEFINE(sendto,SOCKSsendto)
244	AC_DEFINE(recv,SOCKSrecv)
245	AC_DEFINE(send,SOCKSsend)
246	AC_DEFINE(read,SOCKSread)
247	AC_DEFINE(write,SOCKSwrite)
248	AC_DEFINE(rresvport,SOCKSrresvport)
249	AC_DEFINE(shutdown,SOCKSshutdown)
250	AC_DEFINE(listen,SOCKSlisten)
251	AC_DEFINE(close,SOCKSclose)
252	AC_DEFINE(dup,SOCKSdup)
253	AC_DEFINE(dup2,SOCKSdup2)
254	AC_DEFINE(fclose,SOCKSfclose)
255	AC_DEFINE(gethostbyname,SOCKSgethostbyname)
256    fi
257])
258