173143b9aSmrgdnl
2a1910677Smrgdnl Copyright (c) 2005, 2025, Oracle and/or its affiliates.
3af928962Smrgdnl
4af928962Smrgdnl Permission is hereby granted, free of charge, to any person obtaining a
5af928962Smrgdnl copy of this software and associated documentation files (the "Software"),
6af928962Smrgdnl to deal in the Software without restriction, including without limitation
7af928962Smrgdnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
8af928962Smrgdnl and/or sell copies of the Software, and to permit persons to whom the
9af928962Smrgdnl Software is furnished to do so, subject to the following conditions:
10af928962Smrgdnl
11af928962Smrgdnl The above copyright notice and this permission notice (including the next
12af928962Smrgdnl paragraph) shall be included in all copies or substantial portions of the
13af928962Smrgdnl Software.
14af928962Smrgdnl
15af928962Smrgdnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16af928962Smrgdnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17af928962Smrgdnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18af928962Smrgdnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19af928962Smrgdnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20af928962Smrgdnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21af928962Smrgdnl DEALINGS IN THE SOFTWARE.
22af928962Smrgdnl
2373143b9aSmrg
2473143b9aSmrg# XTRANS_TCP_FLAGS()
2573143b9aSmrg# ------------------
2673143b9aSmrg# Find needed libraries for TCP sockets, and check for IPv6 support
2773143b9aSmrgAC_DEFUN([XTRANS_TCP_FLAGS],[
2873143b9aSmrg # SVR4 hides these in libraries other than libc
2973143b9aSmrg AC_SEARCH_LIBS(socket, [socket])
3073143b9aSmrg AC_SEARCH_LIBS(gethostbyname, [nsl])
31b53e5eeaSmrg if test "$ac_cv_search_socket$ac_cv_search_gethostbyname" = "nono"; then
3275ebec6dSmrg   AC_CHECK_LIB([ws2_32],[main])
33b53e5eeaSmrg fi
3473143b9aSmrg
3573143b9aSmrg # Needs to come after above checks for libsocket & libnsl for SVR4 systems
36a1910677Smrg AC_CHECK_FUNCS([getaddrinfo inet_ntop])
37a1910677Smrg
38fe567363Smrg AC_ARG_ENABLE(ipv6,
3975ebec6dSmrg	AS_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),
40fe567363Smrg	[IPV6CONN=$enableval],
41a1910677Smrg	[IPV6CONN=$ac_cv_func_getaddrinfo])
4273143b9aSmrg AC_MSG_CHECKING([if IPv6 support should be built])
4373143b9aSmrg if test "$IPV6CONN" = "yes"; then
4473143b9aSmrg	AC_DEFINE(IPv6,1,[Support IPv6 for TCP connections])
4573143b9aSmrg fi
4673143b9aSmrg AC_MSG_RESULT($IPV6CONN)
4773143b9aSmrg
4873143b9aSmrg # 4.3BSD-Reno added a new member to struct sockaddr_in
49fe567363Smrg AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
5073143b9aSmrg	AC_DEFINE([BSD44SOCKETS],1,
5173143b9aSmrg 	    [Define to 1 if `struct sockaddr_in' has a `sin_len' member]), [], [
5273143b9aSmrg#include <sys/types.h>
5373143b9aSmrg#include <sys/socket.h>
5473143b9aSmrg#include <netinet/in.h>
5573143b9aSmrg ])
5673143b9aSmrg
5773143b9aSmrg # POSIX.1g changed the type of pointer passed to getsockname/getpeername/etc.
58a1910677Smrg # and added a type defined to be large enough to hold any sockaddr format.
59a1910677Smrg AC_CHECK_TYPES([socklen_t, struct sockaddr_storage], [], [], [
6073143b9aSmrgAC_INCLUDES_DEFAULT
61a1910677Smrg#include <sys/socket.h>
62a1910677Smrg ])
63fe567363Smrg
6475ebec6dSmrg # XPG4v2/UNIX95 added msg_control - check to see if we need to define
6575ebec6dSmrg # _XOPEN_SOURCE to get it (such as on Solaris)
6675ebec6dSmrg AC_CHECK_MEMBER([struct msghdr.msg_control], [], [],
6775ebec6dSmrg                 [
6875ebec6dSmrgAC_INCLUDES_DEFAULT
6975ebec6dSmrg#include <sys/socket.h>
7075ebec6dSmrg                 ])
7175ebec6dSmrg # First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03
7275ebec6dSmrg if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
7375ebec6dSmrg     unset ac_cv_member_struct_msghdr_msg_control
7475ebec6dSmrg     AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600])
7575ebec6dSmrg     AC_CHECK_MEMBER([struct msghdr.msg_control],
7675ebec6dSmrg                     [AC_DEFINE([_XOPEN_SOURCE], [600],
7775ebec6dSmrg                       [Defined if needed to expose struct msghdr.msg_control])
7875ebec6dSmrg                     ], [], [
7975ebec6dSmrg#define _XOPEN_SOURCE 600
8075ebec6dSmrgAC_INCLUDES_DEFAULT
8175ebec6dSmrg#include <sys/socket.h>
8275ebec6dSmrg                     ])
8375ebec6dSmrg fi
8475ebec6dSmrg # If that didn't work, fall back to XPG5/UNIX98 with C89
8575ebec6dSmrg if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
8675ebec6dSmrg     unset ac_cv_member_struct_msghdr_msg_control
8775ebec6dSmrg     AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500])
8875ebec6dSmrg     AC_CHECK_MEMBER([struct msghdr.msg_control],
8975ebec6dSmrg                     [AC_DEFINE([_XOPEN_SOURCE], [500],
9075ebec6dSmrg                       [Defined if needed to expose struct msghdr.msg_control])
9175ebec6dSmrg                     ], [], [
9275ebec6dSmrg#define _XOPEN_SOURCE 500
9375ebec6dSmrgAC_INCLUDES_DEFAULT
9475ebec6dSmrg#include <sys/socket.h>
9575ebec6dSmrg                     ])
9675ebec6dSmrg fi
9775ebec6dSmrg
9875ebec6dSmrg
9973143b9aSmrg]) # XTRANS_TCP_FLAGS
10073143b9aSmrg
10173143b9aSmrg# XTRANS_CONNECTION_FLAGS()
10273143b9aSmrg# -------------------------
10373143b9aSmrg# Standard checks for which Xtrans transports to use by the Xorg packages
10473143b9aSmrg# that use Xtrans functions
10573143b9aSmrgAC_DEFUN([XTRANS_CONNECTION_FLAGS],[
10673143b9aSmrg AC_REQUIRE([AC_CANONICAL_HOST])
10773143b9aSmrg [case $host_os in
10873143b9aSmrg	mingw*)	unixdef="no"   ;;
10973143b9aSmrg	*)	unixdef="yes"  ;;
11073143b9aSmrg esac]
11173143b9aSmrg AC_ARG_ENABLE(unix-transport,
11275ebec6dSmrg	AS_HELP_STRING([--enable-unix-transport],[Enable UNIX domain socket transport]),
11373143b9aSmrg	[UNIXCONN=$enableval], [UNIXCONN=$unixdef])
11473143b9aSmrg AC_MSG_CHECKING([if Xtrans should support UNIX socket connections])
11573143b9aSmrg if test "$UNIXCONN" = "yes"; then
11673143b9aSmrg	AC_DEFINE(UNIXCONN,1,[Support UNIX socket connections])
11773143b9aSmrg fi
11873143b9aSmrg AC_MSG_RESULT($UNIXCONN)
119fe567363Smrg AC_ARG_ENABLE(tcp-transport,
12075ebec6dSmrg	AS_HELP_STRING([--enable-tcp-transport],[Enable TCP socket transport]),
12173143b9aSmrg	[TCPCONN=$enableval], [TCPCONN=yes])
12273143b9aSmrg AC_MSG_CHECKING([if Xtrans should support TCP socket connections])
12373143b9aSmrg AC_MSG_RESULT($TCPCONN)
12473143b9aSmrg if test "$TCPCONN" = "yes"; then
12573143b9aSmrg	AC_DEFINE(TCPCONN,1,[Support TCP socket connections])
12673143b9aSmrg	XTRANS_TCP_FLAGS
12773143b9aSmrg fi
12873143b9aSmrg [case $host_os in
129e45ace2bSmrg	solaris*)		localdef="yes" ;;
13073143b9aSmrg	*)			localdef="no"  ;;
13173143b9aSmrg esac]
13273143b9aSmrg AC_ARG_ENABLE(local-transport,
13375ebec6dSmrg	AS_HELP_STRING([--enable-local-transport],[Enable os-specific local transport]),
13473143b9aSmrg	[LOCALCONN=$enableval], [LOCALCONN=$localdef])
13573143b9aSmrg AC_MSG_CHECKING([if Xtrans should support os-specific local connections])
13673143b9aSmrg AC_MSG_RESULT($LOCALCONN)
13773143b9aSmrg if test "$LOCALCONN" = "yes"; then
13873143b9aSmrg	AC_DEFINE(LOCALCONN,1,[Support os-specific local connections])
13973143b9aSmrg fi
140fe567363Smrg
1413d2ed3e3Smrg # Other functions Xtrans may need
1423d2ed3e3Smrg AC_CHECK_FUNCS([strcasecmp strlcpy])
1433d2ed3e3Smrg
14473143b9aSmrg]) # XTRANS_CONNECTION_FLAGS
14573143b9aSmrg
14673143b9aSmrg
14773143b9aSmrg# XTRANS_SECURE_RPC_FLAGS()
14873143b9aSmrg# -------------------------
14973143b9aSmrg# Check for Secure RPC functions - must come after XTRANS_TCP_FLAGS
15073143b9aSmrg# so that any necessary networking libraries are already found
15173143b9aSmrgAC_DEFUN([XTRANS_SECURE_RPC_FLAGS],
15273143b9aSmrg[AC_REQUIRE([XTRANS_TCP_FLAGS])
153fe567363Smrg AC_ARG_ENABLE(secure-rpc,
15475ebec6dSmrg	AS_HELP_STRING([--enable-secure-rpc],[Enable Secure RPC]),
15573143b9aSmrg        [SECURE_RPC=$enableval], [SECURE_RPC="try"])
15673143b9aSmrg
15773143b9aSmrg if test "x$SECURE_RPC" = "xyes" -o "x$SECURE_RPC" = "xtry" ; then
15873143b9aSmrg	FOUND_SECURE_RPC="no"
15973143b9aSmrg	AC_CHECK_FUNCS([authdes_seccreate authdes_create],
16073143b9aSmrg			[FOUND_SECURE_RPC="yes"])
16173143b9aSmrg	if test "x$FOUND_SECURE_RPC" = "xno" ; then
16273143b9aSmrg		if test "x$SECURE_RPC" = "xyes" ; then
16373143b9aSmrg	AC_MSG_ERROR([Secure RPC requested, but required functions not found])
164fe567363Smrg		fi
16573143b9aSmrg		SECURE_RPC="no"
16673143b9aSmrg	else
16773143b9aSmrg		dnl FreeBSD keeps getsecretkey in librpcsvc
16873143b9aSmrg		AC_SEARCH_LIBS(getsecretkey, [rpcsvc])
16973143b9aSmrg		SECURE_RPC="yes"
17073143b9aSmrg	fi
17173143b9aSmrg fi
17273143b9aSmrg AC_MSG_CHECKING([if Secure RPC authentication ("SUN-DES-1") should be supported])
17373143b9aSmrg if test "x$SECURE_RPC" = "xyes" ; then
17473143b9aSmrg	AC_DEFINE(SECURE_RPC, 1, [Support Secure RPC ("SUN-DES-1") authentication for X11 clients])
17573143b9aSmrg fi
17673143b9aSmrg AC_MSG_RESULT($SECURE_RPC)
17773143b9aSmrg]) # XTRANS_SECURE_RPC_FLAGS
17873143b9aSmrg
179