xref: /OK3568_Linux_fs/external/xserver/configure.ac (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyundnl Copyright © 2003-2007 Keith Packard, Daniel Stone
2*4882a593Smuzhiyundnl
3*4882a593Smuzhiyundnl Permission is hereby granted, free of charge, to any person obtaining a
4*4882a593Smuzhiyundnl copy of this software and associated documentation files (the "Software"),
5*4882a593Smuzhiyundnl to deal in the Software without restriction, including without limitation
6*4882a593Smuzhiyundnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
7*4882a593Smuzhiyundnl and/or sell copies of the Software, and to permit persons to whom the
8*4882a593Smuzhiyundnl Software is furnished to do so, subject to the following conditions:
9*4882a593Smuzhiyundnl
10*4882a593Smuzhiyundnl The above copyright notice and this permission notice (including the next
11*4882a593Smuzhiyundnl paragraph) shall be included in all copies or substantial portions of the
12*4882a593Smuzhiyundnl Software.
13*4882a593Smuzhiyundnl
14*4882a593Smuzhiyundnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*4882a593Smuzhiyundnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*4882a593Smuzhiyundnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17*4882a593Smuzhiyundnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*4882a593Smuzhiyundnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19*4882a593Smuzhiyundnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20*4882a593Smuzhiyundnl DEALINGS IN THE SOFTWARE.
21*4882a593Smuzhiyundnl
22*4882a593Smuzhiyundnl Authors: Keith Packard <keithp@keithp.com>
23*4882a593Smuzhiyundnl          Daniel Stone <daniel@fooishbar.org>
24*4882a593Smuzhiyundnl          an unwitting cast of miscellaneous others
25*4882a593Smuzhiyundnl
26*4882a593Smuzhiyundnl Process this file with autoconf to create configure.
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunAC_PREREQ(2.60)
29*4882a593SmuzhiyunAC_INIT([xorg-server], 1.20.11, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
30*4882a593SmuzhiyunRELEASE_DATE="2021-04-13"
31*4882a593SmuzhiyunRELEASE_NAME="Arroz con Pollo"
32*4882a593SmuzhiyunAC_CONFIG_SRCDIR([Makefile.am])
33*4882a593SmuzhiyunAC_CONFIG_MACRO_DIR([m4])
34*4882a593SmuzhiyunAM_INIT_AUTOMAKE([foreign dist-bzip2])
35*4882a593SmuzhiyunAC_USE_SYSTEM_EXTENSIONS
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun# Require xorg-macros minimum of 1.14 for XORG_COMPILER_BRAND in XORG_DEFAULT_OPTIONS
38*4882a593Smuzhiyunm4_ifndef([XORG_MACROS_VERSION],
39*4882a593Smuzhiyun          [m4_fatal([must install xorg-macros 1.14 or later before running autoconf/autogen])])
40*4882a593SmuzhiyunXORG_MACROS_VERSION(1.14)
41*4882a593SmuzhiyunXORG_DEFAULT_OPTIONS
42*4882a593SmuzhiyunXORG_WITH_DOXYGEN(1.6.1)
43*4882a593SmuzhiyunXORG_CHECK_SGML_DOCTOOLS(1.8)
44*4882a593SmuzhiyunXORG_ENABLE_DOCS
45*4882a593SmuzhiyunXORG_ENABLE_DEVEL_DOCS
46*4882a593SmuzhiyunXORG_WITH_XMLTO(0.0.20)
47*4882a593SmuzhiyunXORG_WITH_FOP
48*4882a593SmuzhiyunXORG_WITH_XSLTPROC
49*4882a593SmuzhiyunXORG_ENABLE_UNIT_TESTS
50*4882a593SmuzhiyunXORG_LD_WRAP([optional])
51*4882a593Smuzhiyun
52*4882a593Smuzhiyunm4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install font-util 1.1 or later before running autoconf/autogen])])
53*4882a593SmuzhiyunXORG_FONT_MACROS_VERSION(1.1)
54*4882a593Smuzhiyun
55*4882a593Smuzhiyundnl this gets generated by autoheader, and thus contains all the defines.  we
56*4882a593Smuzhiyundnl don't ever actually use it, internally.
57*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/do-not-use-config.h)
58*4882a593Smuzhiyundnl xorg-server.h is an external header, designed to be included by loadable
59*4882a593Smuzhiyundnl drivers.
60*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/xorg-server.h)
61*4882a593Smuzhiyundnl dix-config.h covers most of the DIX (i.e. everything but the DDX, not just
62*4882a593Smuzhiyundnl dix/).
63*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/dix-config.h)
64*4882a593Smuzhiyundnl xorg-config.h covers the Xorg DDX.
65*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/xorg-config.h)
66*4882a593Smuzhiyundnl xkb-config.h covers XKB for the Xorg and Xnest DDXs.
67*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/xkb-config.h)
68*4882a593Smuzhiyundnl xwin-config.h covers the XWin DDX.
69*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/xwin-config.h)
70*4882a593Smuzhiyundnl xwayland-config.h covers Xwayland.
71*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/xwayland-config.h)
72*4882a593Smuzhiyundnl version-config.h covers the version numbers so they can be bumped without
73*4882a593Smuzhiyundnl forcing an entire recompile.x
74*4882a593SmuzhiyunAC_CONFIG_HEADERS(include/version-config.h)
75*4882a593Smuzhiyun
76*4882a593SmuzhiyunAM_PROG_AS
77*4882a593SmuzhiyunAC_PROG_LN_S
78*4882a593SmuzhiyunLT_PREREQ([2.2])
79*4882a593SmuzhiyunLT_INIT([disable-static win32-dll])
80*4882a593SmuzhiyunPKG_PROG_PKG_CONFIG
81*4882a593SmuzhiyunAC_PROG_LEX
82*4882a593SmuzhiyunAC_PROG_YACC
83*4882a593SmuzhiyunAC_SYS_LARGEFILE
84*4882a593SmuzhiyunXORG_PROG_RAWCPP
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun# Quoted so that make will expand $(CWARNFLAGS) in makefiles to allow
87*4882a593Smuzhiyun# easier overrides at build time.
88*4882a593SmuzhiyunXSERVER_CFLAGS='$(CWARNFLAGS)'
89*4882a593Smuzhiyun
90*4882a593Smuzhiyundnl Explicitly add -fno-strict-aliasing since this option should disappear
91*4882a593Smuzhiyundnl from util-macros CWARNFLAGS
92*4882a593Smuzhiyunif  test "x$GCC" = xyes ; then
93*4882a593Smuzhiyun    XSERVER_CFLAGS="$XSERVER_CFLAGS -fno-strict-aliasing"
94*4882a593Smuzhiyunfi
95*4882a593Smuzhiyun
96*4882a593Smuzhiyundnl Check for dtrace program (needed to build Xserver dtrace probes)
97*4882a593Smuzhiyundnl Also checks for <sys/sdt.h>, since some Linux distros have an
98*4882a593Smuzhiyundnl ISDN trace program named dtrace
99*4882a593SmuzhiyunAC_ARG_WITH(dtrace, AS_HELP_STRING([--with-dtrace=PATH],
100*4882a593Smuzhiyun	     [Enable dtrace probes (default: enabled if dtrace found)]),
101*4882a593Smuzhiyun	     [WDTRACE=$withval], [WDTRACE=auto])
102*4882a593Smuzhiyunif test "x$WDTRACE" = "xyes" -o "x$WDTRACE" = "xauto" ; then
103*4882a593Smuzhiyun	AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
104*4882a593Smuzhiyun	if test "x$DTRACE" = "xnot_found" ; then
105*4882a593Smuzhiyun		if test "x$WDTRACE" = "xyes" ; then
106*4882a593Smuzhiyun			AC_MSG_FAILURE([dtrace requested but not found])
107*4882a593Smuzhiyun		fi
108*4882a593Smuzhiyun		WDTRACE="no"
109*4882a593Smuzhiyun	else
110*4882a593Smuzhiyun		AC_CHECK_HEADER(sys/sdt.h, [HAS_SDT_H="yes"], [HAS_SDT_H="no"])
111*4882a593Smuzhiyun		if test "x$WDTRACE" = "xauto" -a "x$HAS_SDT_H" = "xno" ; then
112*4882a593Smuzhiyun			WDTRACE="no"
113*4882a593Smuzhiyun		fi
114*4882a593Smuzhiyun	fi
115*4882a593Smuzhiyunfi
116*4882a593Smuzhiyunif test "x$WDTRACE" != "xno" ; then
117*4882a593Smuzhiyun  AC_DEFINE(XSERVER_DTRACE, 1,
118*4882a593Smuzhiyun      [Define to 1 if the DTrace Xserver provider probes should be built in.])
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun# Solaris/OpenSolaris require dtrace -G to build dtrace probe information into
121*4882a593Smuzhiyun# object files, and require linking with those as relocatable objects, not .a
122*4882a593Smuzhiyun# archives. MacOS X handles all this in the normal compiler toolchain, and on
123*4882a593Smuzhiyun# some releases (like Tiger), will error out on dtrace -G.  For now, other
124*4882a593Smuzhiyun# platforms with Dtrace ports are assumed to support -G (the FreeBSD and Linux
125*4882a593Smuzhiyun# ports appear to, based on my web searches, but have not yet been tested).
126*4882a593Smuzhiyun	case $host_os in
127*4882a593Smuzhiyun		darwin*)	SPECIAL_DTRACE_OBJECTS=no ;;
128*4882a593Smuzhiyun		*)		SPECIAL_DTRACE_OBJECTS=yes ;;
129*4882a593Smuzhiyun	esac
130*4882a593Smuzhiyunfi
131*4882a593SmuzhiyunAM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
132*4882a593SmuzhiyunAM_CONDITIONAL(SPECIAL_DTRACE_OBJECTS, [test "x$SPECIAL_DTRACE_OBJECTS" = "xyes"])
133*4882a593Smuzhiyun
134*4882a593SmuzhiyunAC_HEADER_DIRENT
135*4882a593SmuzhiyunAC_HEADER_STDC
136*4882a593SmuzhiyunAC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h stropts.h \
137*4882a593Smuzhiyun fnmatch.h sys/mkdev.h sys/sysmacros.h sys/utsname.h])
138*4882a593Smuzhiyun
139*4882a593Smuzhiyundnl Checks for typedefs, structures, and compiler characteristics.
140*4882a593SmuzhiyunAC_C_CONST
141*4882a593SmuzhiyunAC_C_TYPEOF
142*4882a593SmuzhiyunAC_C_BIGENDIAN(AC_DEFINE(X_BYTE_ORDER, X_BIG_ENDIAN, [byte order]),
143*4882a593Smuzhiyun               AC_DEFINE(X_BYTE_ORDER, X_LITTLE_ENDIAN, [byte order]))
144*4882a593Smuzhiyun
145*4882a593SmuzhiyunAC_CHECK_SIZEOF([unsigned long])
146*4882a593Smuzhiyunif test "$ac_cv_sizeof_unsigned_long" = 8; then
147*4882a593Smuzhiyun	AC_DEFINE(_XSERVER64, 1, [Define to 1 if unsigned long is 64 bits.])
148*4882a593Smuzhiyunfi
149*4882a593Smuzhiyun
150*4882a593SmuzhiyunAC_TYPE_PID_T
151*4882a593Smuzhiyun
152*4882a593Smuzhiyundnl Check to see if dlopen is in default libraries (like Solaris, which
153*4882a593Smuzhiyundnl has it in libc), or if libdl is needed to get it.
154*4882a593SmuzhiyunAC_CHECK_FUNC([dlopen], [],
155*4882a593Smuzhiyun	AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
156*4882a593SmuzhiyunAC_SUBST(DLOPEN_LIBS)
157*4882a593Smuzhiyun
158*4882a593Smuzhiyundnl Checks for library functions.
159*4882a593SmuzhiyunAC_CHECK_FUNCS([backtrace geteuid getuid issetugid getresuid \
160*4882a593Smuzhiyun	getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \
161*4882a593Smuzhiyun	mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \
162*4882a593Smuzhiyun	walkcontext setitimer poll epoll_create1 mkostemp memfd_create isastream])
163*4882a593SmuzhiyunAC_CONFIG_LIBOBJ_DIR([os])
164*4882a593SmuzhiyunAC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\
165*4882a593Smuzhiyun	timingsafe_memcmp])
166*4882a593SmuzhiyunAM_CONDITIONAL(POLL, [test "x$ac_cv_func_poll" = "xyes"])
167*4882a593Smuzhiyun
168*4882a593SmuzhiyunAC_CHECK_LIB([bsd], [arc4random_buf])
169*4882a593SmuzhiyunAC_CHECK_FUNCS([arc4random_buf])
170*4882a593Smuzhiyun
171*4882a593SmuzhiyunAC_CHECK_DECLS([program_invocation_short_name], [], [], [[#include <errno.h>]])
172*4882a593Smuzhiyun
173*4882a593Smuzhiyundnl Check for SO_PEERCRED #define
174*4882a593SmuzhiyunAC_CACHE_CHECK([for SO_PEERCRED in sys/socket.h],
175*4882a593Smuzhiyun	       [xorg_cv_sys_have_so_peercred],
176*4882a593Smuzhiyun	       [AC_EGREP_CPP(yes_have_so_peercred,[
177*4882a593Smuzhiyun#include <sys/types.h>
178*4882a593Smuzhiyun#include <sys/socket.h>
179*4882a593Smuzhiyun#ifdef SO_PEERCRED
180*4882a593Smuzhiyunyes_have_so_peercred
181*4882a593Smuzhiyun#endif
182*4882a593Smuzhiyun],
183*4882a593Smuzhiyun	       [xorg_cv_sys_have_so_peercred=yes],
184*4882a593Smuzhiyun	       [xorg_cv_sys_have_so_peercred=no])])
185*4882a593Smuzhiyun
186*4882a593Smuzhiyundnl define NO_LOCAL_CLIENT_CRED if no getpeereid, getpeerucred or SO_PEERCRED
187*4882a593Smuzhiyunif test "x$ac_cv_func_getpeereid" = xno && test "x$ac_cv_func_getpeerucred" = xno && test "x$xorg_cv_sys_have_so_peercred" = xno ; then
188*4882a593Smuzhiyun	AC_DEFINE([NO_LOCAL_CLIENT_CRED], 1, [Define to 1 if no local socket credentials interface exists])
189*4882a593Smuzhiyunfi
190*4882a593Smuzhiyun
191*4882a593Smuzhiyundnl Find the math libary, then check for cbrt function in it.
192*4882a593SmuzhiyunAC_CHECK_LIB(m, sqrt)
193*4882a593SmuzhiyunAC_CHECK_FUNCS([cbrt])
194*4882a593Smuzhiyun
195*4882a593Smuzhiyundnl AGPGART headers
196*4882a593SmuzhiyunAC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
197*4882a593SmuzhiyunAM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
198*4882a593Smuzhiyun
199*4882a593Smuzhiyundnl fbdev header
200*4882a593SmuzhiyunAC_CHECK_HEADERS([linux/fb.h], FBDEV=yes)
201*4882a593SmuzhiyunAM_CONDITIONAL(FBDEVHW, [test "x$FBDEV" = xyes])
202*4882a593Smuzhiyun
203*4882a593Smuzhiyundnl FreeBSD kldload support (sys/linker.h)
204*4882a593SmuzhiyunAC_CHECK_HEADERS([sys/linker.h],
205*4882a593Smuzhiyun	[ac_cv_sys_linker_h=yes],
206*4882a593Smuzhiyun	[ac_cv_sys_linker_h=no],
207*4882a593Smuzhiyun	[#include <sys/param.h>])
208*4882a593SmuzhiyunAM_CONDITIONAL(FREEBSD_KLDLOAD, [test "x$ac_cv_sys_linker_h" = xyes])
209*4882a593Smuzhiyun
210*4882a593SmuzhiyunAC_CACHE_CHECK([for SYSV IPC],
211*4882a593Smuzhiyun		ac_cv_sysv_ipc,
212*4882a593Smuzhiyun               [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
213*4882a593Smuzhiyun#include <sys/types.h>
214*4882a593Smuzhiyun#include <sys/ipc.h>
215*4882a593Smuzhiyun#include <sys/shm.h>
216*4882a593Smuzhiyun#include <sys/stat.h>
217*4882a593Smuzhiyun]],[[
218*4882a593Smuzhiyun{
219*4882a593Smuzhiyun    int id;
220*4882a593Smuzhiyun    id = shmget(IPC_PRIVATE, 512, S_IRUSR | S_IWUSR);
221*4882a593Smuzhiyun    if (id < 0) return -1;
222*4882a593Smuzhiyun    return shmctl(id, IPC_RMID, 0);
223*4882a593Smuzhiyun}]])],
224*4882a593Smuzhiyun       [ac_cv_sysv_ipc=yes],
225*4882a593Smuzhiyun       [ac_cv_sysv_ipc=no])])
226*4882a593Smuzhiyunif test "x$ac_cv_sysv_ipc" = xyes; then
227*4882a593Smuzhiyun	AC_DEFINE(HAVE_SYSV_IPC, 1, [Define to 1 if SYSV IPC is available])
228*4882a593Smuzhiyunfi
229*4882a593Smuzhiyun
230*4882a593Smuzhiyundnl OpenBSD /dev/xf86 aperture driver
231*4882a593Smuzhiyunif test -c /dev/xf86 ; then
232*4882a593Smuzhiyun	AC_DEFINE(HAS_APERTURE_DRV, 1, [System has /dev/xf86 aperture driver])
233*4882a593Smuzhiyunfi
234*4882a593Smuzhiyun
235*4882a593Smuzhiyundnl BSD APM support
236*4882a593SmuzhiyunAC_CHECK_HEADER([machine/apmvar.h],[
237*4882a593Smuzhiyun	AC_CHECK_HEADER([sys/event.h],
238*4882a593Smuzhiyun		ac_cv_BSD_KQUEUE_APM=yes,
239*4882a593Smuzhiyun		ac_cv_BSD_APM=yes)])
240*4882a593Smuzhiyun
241*4882a593SmuzhiyunAM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes])
242*4882a593SmuzhiyunAM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes])
243*4882a593Smuzhiyun
244*4882a593Smuzhiyundnl glibc backtrace support check
245*4882a593SmuzhiyunAC_CHECK_HEADER([execinfo.h],[
246*4882a593Smuzhiyun    AC_CHECK_LIB(c, backtrace, [
247*4882a593Smuzhiyun        AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
248*4882a593Smuzhiyun        AC_DEFINE(HAVE_EXECINFO_H, 1, [Have execinfo.h])
249*4882a593Smuzhiyun    ])]
250*4882a593Smuzhiyun)
251*4882a593Smuzhiyun
252*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
253*4882a593Smuzhiyundnl Bus options and CPU capabilities.  Replaces logic in
254*4882a593Smuzhiyundnl hw/xfree86/os-support/bus/Makefile.am, among others.
255*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
256*4882a593SmuzhiyunDEFAULT_INT10="x86emu"
257*4882a593Smuzhiyun
258*4882a593Smuzhiyundnl Override defaults as needed for specific platforms:
259*4882a593Smuzhiyun
260*4882a593Smuzhiyuncase $host_cpu in
261*4882a593Smuzhiyun  alpha*)
262*4882a593Smuzhiyun	ALPHA_VIDEO=yes
263*4882a593Smuzhiyun	case $host_os in
264*4882a593Smuzhiyun	        *freebsd*)	SYS_LIBS=-lio ;;
265*4882a593Smuzhiyun		*netbsd*)	AC_DEFINE(USE_ALPHA_PIO, 1, [NetBSD PIO alpha IO]) ;;
266*4882a593Smuzhiyun	esac
267*4882a593Smuzhiyun	GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
268*4882a593Smuzhiyun	;;
269*4882a593Smuzhiyun  arm*)
270*4882a593Smuzhiyun	ARM_VIDEO=yes
271*4882a593Smuzhiyun	DEFAULT_INT10="stub"
272*4882a593Smuzhiyun	;;
273*4882a593Smuzhiyun  i*86)
274*4882a593Smuzhiyun	I386_VIDEO=yes
275*4882a593Smuzhiyun	case $host_os in
276*4882a593Smuzhiyun		*freebsd*)	AC_DEFINE(USE_DEV_IO) ;;
277*4882a593Smuzhiyun		*dragonfly*)	AC_DEFINE(USE_DEV_IO) ;;
278*4882a593Smuzhiyun		*netbsd*)	AC_DEFINE(USE_I386_IOPL)
279*4882a593Smuzhiyun				SYS_LIBS=-li386
280*4882a593Smuzhiyun				;;
281*4882a593Smuzhiyun		*openbsd*)	AC_DEFINE(USE_I386_IOPL)
282*4882a593Smuzhiyun				SYS_LIBS=-li386
283*4882a593Smuzhiyun				;;
284*4882a593Smuzhiyun	esac
285*4882a593Smuzhiyun        ;;
286*4882a593Smuzhiyun  powerpc*)
287*4882a593Smuzhiyun	PPC_VIDEO=yes
288*4882a593Smuzhiyun	case $host_os in
289*4882a593Smuzhiyun		*freebsd*)	DEFAULT_INT10=stub ;;
290*4882a593Smuzhiyun	esac
291*4882a593Smuzhiyun	;;
292*4882a593Smuzhiyun  sparc*)
293*4882a593Smuzhiyun	SPARC64_VIDEO=yes
294*4882a593Smuzhiyun	BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c"
295*4882a593Smuzhiyun	GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
296*4882a593Smuzhiyun	;;
297*4882a593Smuzhiyun  x86_64*|amd64*)
298*4882a593Smuzhiyun	I386_VIDEO=yes
299*4882a593Smuzhiyun	case $host_os in
300*4882a593Smuzhiyun		*freebsd*)	AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
301*4882a593Smuzhiyun		*dragonfly*)	AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
302*4882a593Smuzhiyun		*netbsd*)	AC_DEFINE(USE_I386_IOPL, 1, [BSD i386 iopl])
303*4882a593Smuzhiyun				SYS_LIBS=-lx86_64
304*4882a593Smuzhiyun				;;
305*4882a593Smuzhiyun		*openbsd*)	AC_DEFINE(USE_AMD64_IOPL, 1, [BSD AMD64 iopl])
306*4882a593Smuzhiyun				SYS_LIBS=-lamd64
307*4882a593Smuzhiyun				;;
308*4882a593Smuzhiyun	esac
309*4882a593Smuzhiyun	GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
310*4882a593Smuzhiyun	;;
311*4882a593Smuzhiyun  ia64*)
312*4882a593Smuzhiyun  	GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
313*4882a593Smuzhiyun	;;
314*4882a593Smuzhiyun  s390*)
315*4882a593Smuzhiyun  	GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
316*4882a593Smuzhiyun	;;
317*4882a593Smuzhiyunesac
318*4882a593SmuzhiyunAC_SUBST(GLX_ARCH_DEFINES)
319*4882a593Smuzhiyun
320*4882a593Smuzhiyundnl BSD *_video.c selection
321*4882a593SmuzhiyunAM_CONDITIONAL(ALPHA_VIDEO, [test "x$ALPHA_VIDEO" = xyes])
322*4882a593SmuzhiyunAM_CONDITIONAL(ARM_VIDEO, [test "x$ARM_VIDEO" = xyes])
323*4882a593SmuzhiyunAM_CONDITIONAL(I386_VIDEO, [test "x$I386_VIDEO" = xyes])
324*4882a593SmuzhiyunAM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes])
325*4882a593SmuzhiyunAM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes])
326*4882a593Smuzhiyun
327*4882a593SmuzhiyunDRI=no
328*4882a593Smuzhiyundnl it would be nice to autodetect these *CONS_SUPPORTs
329*4882a593Smuzhiyuncase $host_os in
330*4882a593Smuzhiyun  *freebsd* | *dragonfly*)
331*4882a593Smuzhiyun	case $host_os in
332*4882a593Smuzhiyun		kfreebsd*-gnu) ;;
333*4882a593Smuzhiyun		*) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) ;;
334*4882a593Smuzhiyun	esac
335*4882a593Smuzhiyun	AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
336*4882a593Smuzhiyun	AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
337*4882a593Smuzhiyun	AC_DEFINE(SYSCONS_SUPPORT, 1, [System has syscons console])
338*4882a593Smuzhiyun	DRI=yes
339*4882a593Smuzhiyun	;;
340*4882a593Smuzhiyun  *netbsd*)
341*4882a593Smuzhiyun	AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
342*4882a593Smuzhiyun	AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
343*4882a593Smuzhiyun	AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
344*4882a593Smuzhiyun	AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
345*4882a593Smuzhiyun	DRI=yes
346*4882a593Smuzhiyun	;;
347*4882a593Smuzhiyun  *openbsd*)
348*4882a593Smuzhiyun	AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
349*4882a593Smuzhiyun	AC_DEFINE(PCVT_SUPPORT, 1, [System has PC console])
350*4882a593Smuzhiyun	AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
351*4882a593Smuzhiyun	;;
352*4882a593Smuzhiyun  *linux*)
353*4882a593Smuzhiyun	DRI=yes
354*4882a593Smuzhiyun	;;
355*4882a593Smuzhiyun  *solaris*)
356*4882a593Smuzhiyun	DRI=yes
357*4882a593Smuzhiyun	;;
358*4882a593Smuzhiyun  darwin*)
359*4882a593Smuzhiyun	AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
360*4882a593Smuzhiyun	;;
361*4882a593Smuzhiyun  cygwin*|mingw*)
362*4882a593Smuzhiyun	CFLAGS="$CFLAGS -DFD_SETSIZE=512"
363*4882a593Smuzhiyun	;;
364*4882a593Smuzhiyunesac
365*4882a593Smuzhiyun
366*4882a593Smuzhiyundnl augment XORG_RELEASE_VERSION for our snapshot number and to expose the
367*4882a593Smuzhiyundnl major number
368*4882a593SmuzhiyunPVMAJOR=`echo $PACKAGE_VERSION | cut -d . -f 1`
369*4882a593SmuzhiyunPVS=`echo $PACKAGE_VERSION | cut -d . -f 4 | cut -d - -f 1`
370*4882a593Smuzhiyunif test "x$PVS" = "x"; then
371*4882a593Smuzhiyun	PVS="0"
372*4882a593Smuzhiyunfi
373*4882a593Smuzhiyun
374*4882a593SmuzhiyunVENDOR_RELEASE="((($PVMAJOR) * 10000000) + (($PVM) * 100000) + (($PVP) * 1000) + $PVS)"
375*4882a593SmuzhiyunVENDOR_MAN_VERSION="Version ${PACKAGE_VERSION}"
376*4882a593Smuzhiyun
377*4882a593SmuzhiyunVENDOR_NAME="The X.Org Foundation"
378*4882a593SmuzhiyunVENDOR_NAME_SHORT="X.Org"
379*4882a593SmuzhiyunVENDOR_WEB="http://wiki.x.org"
380*4882a593Smuzhiyun
381*4882a593Smuzhiyundnl Build options.
382*4882a593SmuzhiyunAC_ARG_ENABLE(werror,        AS_HELP_STRING([--enable-werror],
383*4882a593Smuzhiyun		  [Obsolete - use --enable-strict-compilation instead]),
384*4882a593Smuzhiyun  AC_MSG_ERROR([--enable-werror has been replaced by --enable-strict-compilation]))
385*4882a593Smuzhiyun
386*4882a593SmuzhiyunAC_ARG_ENABLE(debug,         AS_HELP_STRING([--enable-debug],
387*4882a593Smuzhiyun				  [Enable debugging (default: disabled)]),
388*4882a593Smuzhiyun			        [DEBUGGING=$enableval], [DEBUGGING=no])
389*4882a593SmuzhiyunAC_ARG_WITH(int10,           AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
390*4882a593Smuzhiyun				[INT10="$withval"],
391*4882a593Smuzhiyun				[INT10="$DEFAULT_INT10"])
392*4882a593SmuzhiyunAC_ARG_WITH(vendor-name,     AS_HELP_STRING([--with-vendor-name=VENDOR],
393*4882a593Smuzhiyun				  [Vendor string reported by the server]),
394*4882a593Smuzhiyun				[ VENDOR_NAME="$withval" ], [])
395*4882a593SmuzhiyunAC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-name-short=VENDOR],
396*4882a593Smuzhiyun				  [Short version of vendor string reported by the server]),
397*4882a593Smuzhiyun				[ VENDOR_NAME_SHORT="$withval" ], [])
398*4882a593SmuzhiyunAC_ARG_WITH(vendor-web,      AS_HELP_STRING([--with-vendor-web=URL],
399*4882a593Smuzhiyun				  [Vendor web address reported by the server]),
400*4882a593Smuzhiyun				[ VENDOR_WEB="$withval" ], [])
401*4882a593SmuzhiyunAC_ARG_WITH(module-dir,      AS_HELP_STRING([--with-module-dir=DIR],
402*4882a593Smuzhiyun				  [Directory where modules are installed (default: $libdir/xorg/modules)]),
403*4882a593Smuzhiyun				[ moduledir="$withval" ],
404*4882a593Smuzhiyun				[ moduledir="${libdir}/xorg/modules" ])
405*4882a593SmuzhiyunAC_ARG_WITH(log-dir,         AS_HELP_STRING([--with-log-dir=DIR],
406*4882a593Smuzhiyun				  [Directory where log files are kept (default: $localstatedir/log)]),
407*4882a593Smuzhiyun				[ logdir="$withval" ],
408*4882a593Smuzhiyun				[ logdir="$localstatedir/log" ])
409*4882a593SmuzhiyunAC_ARG_WITH(builder-addr,    AS_HELP_STRING([--with-builder-addr=ADDRESS],
410*4882a593Smuzhiyun				  [Builder address (default: xorg@lists.freedesktop.org)]),
411*4882a593Smuzhiyun				[ BUILDERADDR="$withval" ],
412*4882a593Smuzhiyun				[ BUILDERADDR="xorg@lists.freedesktop.org" ])
413*4882a593SmuzhiyunAC_ARG_WITH(os-name,         AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS (default: output of "uname -srm")]),
414*4882a593Smuzhiyun				[ OSNAME="$withval" ],
415*4882a593Smuzhiyun				[ OSNAME=`uname -srm` ])
416*4882a593SmuzhiyunAC_ARG_WITH(os-vendor,       AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
417*4882a593Smuzhiyun				[ OSVENDOR="$withval" ],
418*4882a593Smuzhiyun				[ OSVENDOR="" ])
419*4882a593SmuzhiyunAC_ARG_WITH(builderstring,   AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
420*4882a593Smuzhiyun				[ BUILDERSTRING="$withval" ]
421*4882a593Smuzhiyun				[ ])
422*4882a593SmuzhiyunAC_ARG_ENABLE(listen-tcp,    AS_HELP_STRING([--enable-listen-tcp],
423*4882a593Smuzhiyun                                            [Listen on TCP by default (default:disabled)]),
424*4882a593Smuzhiyun                                [LISTEN_TCP=$enableval], [LISTEN_TCP=no])
425*4882a593SmuzhiyunAC_ARG_ENABLE(listen-unix,   AS_HELP_STRING([--disable-listen-unix],
426*4882a593Smuzhiyun                                            [Listen on Unix by default (default:enabled)]),
427*4882a593Smuzhiyun                                [LISTEN_UNIX=$enableval], [LISTEN_UNIX=yes])
428*4882a593Smuzhiyun
429*4882a593SmuzhiyunAC_ARG_ENABLE(listen-local,  AS_HELP_STRING([--disable-listen-local],
430*4882a593Smuzhiyun                                            [Listen on local by default (default:enabled)]),
431*4882a593Smuzhiyun                                [LISTEN_LOCAL=$enableval], [LISTEN_LOCAL=yes])
432*4882a593Smuzhiyun
433*4882a593Smuzhiyuncase $host_os in
434*4882a593Smuzhiyun    linux*)
435*4882a593Smuzhiyun        FALLBACK_INPUT_DRIVER="libinput"
436*4882a593Smuzhiyun        ;;
437*4882a593Smuzhiyun    *)
438*4882a593Smuzhiyun        FALLBACK_INPUT_DRIVER=""
439*4882a593Smuzhiyun        ;;
440*4882a593Smuzhiyunesac
441*4882a593SmuzhiyunAC_ARG_WITH(fallback-input-driver,
442*4882a593Smuzhiyun            AC_HELP_STRING([--with-fallback-input-driver=$FALLBACK_INPUT_DRIVER],
443*4882a593Smuzhiyun                           [Input driver fallback if the requested driver for a device is unavailable]),
444*4882a593Smuzhiyun                           [ FALLBACK_INPUT_DRIVER=$withval ], [])
445*4882a593Smuzhiyunif test "x$FALLBACK_INPUT_DRIVER" = "xno"; then
446*4882a593Smuzhiyun    FALLBACK_INPUT_DRIVER=""
447*4882a593Smuzhiyunfi
448*4882a593SmuzhiyunAC_MSG_CHECKING([for fallback input driver])
449*4882a593SmuzhiyunAC_MSG_RESULT([$FALLBACK_INPUT_DRIVER])
450*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(FALLBACK_INPUT_DRIVER, ["$FALLBACK_INPUT_DRIVER"], [ Fallback input driver ])
451*4882a593Smuzhiyun
452*4882a593Smuzhiyundnl Determine font path
453*4882a593SmuzhiyunXORG_FONTROOTDIR
454*4882a593SmuzhiyunXORG_FONTSUBDIR(FONTMISCDIR, fontmiscdir, misc)
455*4882a593SmuzhiyunXORG_FONTSUBDIR(FONTOTFDIR, fontotfdir, OTF)
456*4882a593SmuzhiyunXORG_FONTSUBDIR(FONTTTFDIR, fontttfdir, TTF)
457*4882a593SmuzhiyunXORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
458*4882a593SmuzhiyunXORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
459*4882a593SmuzhiyunXORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
460*4882a593Smuzhiyun
461*4882a593Smuzhiyundnl Uses --with-default-font-path if set, otherwise uses standard
462*4882a593Smuzhiyundnl subdirectories of FONTROOTDIR. Some distros set the default font path to
463*4882a593Smuzhiyundnl "catalogue:/etc/X11/fontpath.d,built-ins"
464*4882a593SmuzhiyunDEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
465*4882a593Smuzhiyuncase $host_os in
466*4882a593Smuzhiyun    darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
467*4882a593Smuzhiyunesac
468*4882a593Smuzhiyun
469*4882a593SmuzhiyunAC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
470*4882a593Smuzhiyun				[ FONTPATH="$withval" ],
471*4882a593Smuzhiyun				[ FONTPATH="${DEFAULT_FONT_PATH}" ])
472*4882a593Smuzhiyun
473*4882a593SmuzhiyunAC_MSG_CHECKING([for default font path])
474*4882a593SmuzhiyunAC_MSG_RESULT([$FONTPATH])
475*4882a593Smuzhiyun
476*4882a593SmuzhiyunAC_ARG_WITH(xkb-path,         AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: auto)]),
477*4882a593Smuzhiyun				[ XKBPATH="$withval" ],
478*4882a593Smuzhiyun				[ XKBPATH="auto" ])
479*4882a593SmuzhiyunAC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
480*4882a593Smuzhiyun				[ XKBOUTPUT="$withval" ],
481*4882a593Smuzhiyun				[ XKBOUTPUT="compiled" ])
482*4882a593SmuzhiyunAC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
483*4882a593Smuzhiyun                                   [Keyboard ruleset (default: base/evdev)]),
484*4882a593Smuzhiyun                                [ XKB_DFLT_RULES="$withval" ],
485*4882a593Smuzhiyun                                [ XKB_DFLT_RULES="" ])
486*4882a593SmuzhiyunAC_ARG_WITH(default-xkb-model, AS_HELP_STRING([--with-default-xkb-model=MODEL],
487*4882a593Smuzhiyun                                   [Keyboard model (default: pc105)]),
488*4882a593Smuzhiyun                                [ XKB_DFLT_MODEL="$withval" ],
489*4882a593Smuzhiyun                                [ XKB_DFLT_MODEL="pc105" ])
490*4882a593SmuzhiyunAC_ARG_WITH(default-xkb-layout, AS_HELP_STRING([--with-default-xkb-layout=LAYOUT],
491*4882a593Smuzhiyun                                   [Keyboard layout (default: us)]),
492*4882a593Smuzhiyun                                [ XKB_DFLT_LAYOUT="$withval" ],
493*4882a593Smuzhiyun                                [ XKB_DFLT_LAYOUT="us" ])
494*4882a593SmuzhiyunAC_ARG_WITH(default-xkb-variant, AS_HELP_STRING([--with-default-xkb-variant=VARIANT],
495*4882a593Smuzhiyun                                   [Keyboard variant (default: (none))]),
496*4882a593Smuzhiyun                                [ XKB_DFLT_VARIANT="$withval" ],
497*4882a593Smuzhiyun                                [ XKB_DFLT_VARIANT="" ])
498*4882a593SmuzhiyunAC_ARG_WITH(default-xkb-options, AS_HELP_STRING([--with-default-xkb-options=OPTIONS],
499*4882a593Smuzhiyun                                   [Keyboard layout options (default: (none))]),
500*4882a593Smuzhiyun                                [ XKB_DFLT_OPTIONS="$withval" ],
501*4882a593Smuzhiyun                                [ XKB_DFLT_OPTIONS="" ])
502*4882a593SmuzhiyunAC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH],
503*4882a593Smuzhiyun				   [Directory where ancillary server config files are installed (default: ${libdir}/xorg)]),
504*4882a593Smuzhiyun				[ SERVERCONFIG="$withval" ],
505*4882a593Smuzhiyun				[ SERVERCONFIG="${libdir}/xorg" ])
506*4882a593SmuzhiyunAC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]),
507*4882a593Smuzhiyun				[ APPLE_APPLICATIONS_DIR="${withval}" ],
508*4882a593Smuzhiyun				[ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
509*4882a593SmuzhiyunAC_SUBST([APPLE_APPLICATIONS_DIR])
510*4882a593SmuzhiyunAC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name=NAME], [Name for the .app (default: X11)]),
511*4882a593Smuzhiyun				[ APPLE_APPLICATION_NAME="${withval}" ],
512*4882a593Smuzhiyun				[ APPLE_APPLICATION_NAME="X11" ])
513*4882a593SmuzhiyunAC_SUBST([APPLE_APPLICATION_NAME])
514*4882a593SmuzhiyunAC_ARG_WITH(bundle-id-prefix,  AS_HELP_STRING([--with-bundle-id-prefix=RDNS_PREFIX], [Prefix to use for bundle identifiers (default: org.x)]),
515*4882a593Smuzhiyun                               [ BUNDLE_ID_PREFIX="${withval}" ])
516*4882a593SmuzhiyunAC_SUBST([BUNDLE_ID_PREFIX])
517*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(BUNDLE_ID_PREFIX, "$BUNDLE_ID_PREFIX", [Prefix to use for bundle identifiers])
518*4882a593Smuzhiyunm4_define(DEFAULT_BUNDLE_VERSION, m4_esyscmd([echo ]AC_PACKAGE_VERSION[ | cut -f1-3 -d. | tr -d '\n']))
519*4882a593SmuzhiyunAC_ARG_WITH(bundle-version,    AS_HELP_STRING([--with-bundle-version=VERSION], [Version to use for X11.app's CFBundleVersion (default: ]DEFAULT_BUNDLE_VERSION[)]),
520*4882a593Smuzhiyun                               [ BUNDLE_VERSION="${withval}" ],
521*4882a593Smuzhiyun                               [ BUNDLE_VERSION="DEFAULT_BUNDLE_VERSION" ])
522*4882a593SmuzhiyunAC_SUBST([BUNDLE_VERSION])
523*4882a593SmuzhiyunAC_ARG_WITH(bundle-version-string, AS_HELP_STRING([--with-bundle-version-string=VERSION], [Version to use for X11.app's CFBundleShortVersionString (default: ]AC_PACKAGE_VERSION[)]),
524*4882a593Smuzhiyun                               [ BUNDLE_VERSION_STRING="${withval}" ],
525*4882a593Smuzhiyun                               [ BUNDLE_VERSION_STRING="${PACKAGE_VERSION}" ])
526*4882a593SmuzhiyunAC_SUBST([BUNDLE_VERSION_STRING])
527*4882a593SmuzhiyunAC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]),
528*4882a593Smuzhiyun				[ XQUARTZ_SPARKLE="${enableval}" ],
529*4882a593Smuzhiyun				[ XQUARTZ_SPARKLE="no" ])
530*4882a593SmuzhiyunAC_SUBST([XQUARTZ_SPARKLE])
531*4882a593SmuzhiyunAC_ARG_WITH(sparkle-feed-url,  AS_HELP_STRING([--with-sparkle-feed-url=URL], [URL for the Sparkle feed (default: https://www.xquartz.org/releases/sparkle/release.xml)]),
532*4882a593Smuzhiyun                               [ XQUARTZ_SPARKLE_FEED_URL="${withval}" ],
533*4882a593Smuzhiyun                               [ XQUARTZ_SPARKLE_FEED_URL="https://www.xquartz.org/releases/sparkle/release.xml" ])
534*4882a593SmuzhiyunAC_SUBST([XQUARTZ_SPARKLE_FEED_URL])
535*4882a593SmuzhiyunAC_ARG_ENABLE(visibility,     AS_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]),
536*4882a593Smuzhiyun				[SYMBOL_VISIBILITY=$enableval],
537*4882a593Smuzhiyun				[SYMBOL_VISIBILITY=auto])
538*4882a593Smuzhiyun
539*4882a593Smuzhiyundnl GLX build options
540*4882a593SmuzhiyunAC_ARG_WITH(khronos-spec-dir, AS_HELP_STRING([--with-khronos-spec-dir=PATH], [Path to Khronos OpenGL registry database files (default: auto)]),
541*4882a593Smuzhiyun				[KHRONOS_SPEC_DIR="${withval}"],
542*4882a593Smuzhiyun				[KHRONOS_SPEC_DIR=auto])
543*4882a593Smuzhiyun
544*4882a593Smuzhiyundnl Extensions.
545*4882a593SmuzhiyunAC_ARG_ENABLE(composite,      AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
546*4882a593SmuzhiyunAC_ARG_ENABLE(mitshm,         AS_HELP_STRING([--disable-mitshm], [Build SHM extension (default: auto)]), [MITSHM=$enableval], [MITSHM=auto])
547*4882a593SmuzhiyunAC_ARG_ENABLE(xres,           AS_HELP_STRING([--disable-xres], [Build XRes extension (default: enabled)]), [RES=$enableval], [RES=yes])
548*4882a593SmuzhiyunAC_ARG_ENABLE(record,         AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes])
549*4882a593SmuzhiyunAC_ARG_ENABLE(xv,             AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes])
550*4882a593SmuzhiyunAC_ARG_ENABLE(xvmc,           AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])
551*4882a593SmuzhiyunAC_ARG_ENABLE(dga,            AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto])
552*4882a593SmuzhiyunAC_ARG_ENABLE(screensaver,    AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes])
553*4882a593SmuzhiyunAC_ARG_ENABLE(xdmcp,          AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
554*4882a593SmuzhiyunAC_ARG_ENABLE(xdm-auth-1,     AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
555*4882a593SmuzhiyunAC_ARG_ENABLE(glx,            AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
556*4882a593SmuzhiyunAC_ARG_ENABLE(dri,            AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
557*4882a593SmuzhiyunAC_ARG_ENABLE(dri2,           AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
558*4882a593SmuzhiyunAC_ARG_ENABLE(dri3,           AS_HELP_STRING([--enable-dri3], [Build DRI3 extension (default: auto)]), [DRI3=$enableval], [DRI3=auto])
559*4882a593SmuzhiyunAC_ARG_ENABLE(present,	      AS_HELP_STRING([--disable-present], [Build Present extension (default: enabled)]), [PRESENT=$enableval], [PRESENT=yes])
560*4882a593SmuzhiyunAC_ARG_ENABLE(xinerama,	      AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
561*4882a593SmuzhiyunAC_ARG_ENABLE(xf86vidmode,    AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
562*4882a593SmuzhiyunAC_ARG_ENABLE(xace,           AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
563*4882a593SmuzhiyunAC_ARG_ENABLE(xselinux,       AS_HELP_STRING([--enable-xselinux], [Build SELinux extension (default: disabled)]), [XSELINUX=$enableval], [XSELINUX=no])
564*4882a593SmuzhiyunAC_ARG_ENABLE(xcsecurity,     AS_HELP_STRING([--enable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
565*4882a593SmuzhiyunAC_ARG_ENABLE(dbe,            AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
566*4882a593SmuzhiyunAC_ARG_ENABLE(xf86bigfont,    AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
567*4882a593SmuzhiyunAC_ARG_ENABLE(dpms,           AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
568*4882a593SmuzhiyunAC_ARG_ENABLE(config-udev,    AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto])
569*4882a593SmuzhiyunAC_ARG_ENABLE(config-udev-kms,    AS_HELP_STRING([--enable-config-udev-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=$enableval], [CONFIG_UDEV_KMS=auto])
570*4882a593SmuzhiyunAC_ARG_ENABLE(config-hal,     AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
571*4882a593SmuzhiyunAC_ARG_ENABLE(config-wscons,  AS_HELP_STRING([--enable-config-wscons], [Build wscons config support (default: auto)]), [CONFIG_WSCONS=$enableval], [CONFIG_WSCONS=auto])
572*4882a593SmuzhiyunAC_ARG_ENABLE(xfree86-utils,     AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
573*4882a593SmuzhiyunAC_ARG_ENABLE(vgahw,          AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
574*4882a593SmuzhiyunAC_ARG_ENABLE(vbe,            AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes])
575*4882a593SmuzhiyunAC_ARG_ENABLE(int10-module,     AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes])
576*4882a593SmuzhiyunAC_ARG_ENABLE(windowswm,      AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no])
577*4882a593SmuzhiyunAC_ARG_ENABLE(windowsdri,     AS_HELP_STRING([--enable-windowsdri], [Build XWin with WindowsDRI extension (default: auto)]), [WINDOWSDRI=$enableval], [WINDOWSDRI=auto])
578*4882a593SmuzhiyunAC_ARG_ENABLE(libdrm,         AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
579*4882a593SmuzhiyunAC_ARG_ENABLE(clientids,      AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
580*4882a593SmuzhiyunAC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
581*4882a593SmuzhiyunAC_ARG_ENABLE(linux_acpi, AS_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes])
582*4882a593SmuzhiyunAC_ARG_ENABLE(linux_apm, AS_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes])
583*4882a593SmuzhiyunAC_ARG_ENABLE(systemd-logind, AS_HELP_STRING([--enable-systemd-logind], [Build systemd-logind support (default: auto)]), [SYSTEMD_LOGIND=$enableval], [SYSTEMD_LOGIND=auto])
584*4882a593SmuzhiyunAC_ARG_ENABLE(suid-wrapper, AS_HELP_STRING([--enable-suid-wrapper], [Build suid-root wrapper for legacy driver support on rootless xserver systems (default: no)]), [SUID_WRAPPER=$enableval], [SUID_WRAPPER=no])
585*4882a593Smuzhiyun
586*4882a593Smuzhiyundnl DDXes.
587*4882a593SmuzhiyunAC_ARG_ENABLE(xorg,    	      AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
588*4882a593SmuzhiyunAC_ARG_ENABLE(dmx,    	      AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no])
589*4882a593SmuzhiyunAC_ARG_ENABLE(xvfb,    	      AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
590*4882a593SmuzhiyunAC_ARG_ENABLE(xnest,   	      AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
591*4882a593SmuzhiyunAC_ARG_ENABLE(xquartz,        AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
592*4882a593SmuzhiyunAC_ARG_ENABLE(xwayland,       AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto])
593*4882a593SmuzhiyunAC_ARG_ENABLE(xwayland-eglstream, AS_HELP_STRING([--enable-xwayland-eglstream], [Build Xwayland eglstream support (default: no)]), [XWAYLAND_EGLSTREAM=$enableval], [XWAYLAND_EGLSTREAM=no])
594*4882a593SmuzhiyunAC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
595*4882a593SmuzhiyunAC_ARG_ENABLE(xwin,    	      AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
596*4882a593SmuzhiyunAC_ARG_ENABLE(glamor,         AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: auto)]), [GLAMOR=$enableval], [GLAMOR=auto])
597*4882a593Smuzhiyundnl kdrive and its subsystems
598*4882a593SmuzhiyunAC_ARG_ENABLE(kdrive,         AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
599*4882a593SmuzhiyunAC_ARG_ENABLE(xephyr,         AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
600*4882a593Smuzhiyundnl kdrive options
601*4882a593SmuzhiyunAC_ARG_ENABLE(libunwind,      AS_HELP_STRING([--enable-libunwind], [Use libunwind for backtracing (default: auto)]), [LIBUNWIND="$enableval"], [LIBUNWIND="auto"])
602*4882a593SmuzhiyunAC_ARG_ENABLE(xshmfence,      AS_HELP_STRING([--disable-xshmfence], [Disable xshmfence (default: auto)]), [XSHMFENCE="$enableval"], [XSHMFENCE="auto"])
603*4882a593Smuzhiyun
604*4882a593SmuzhiyunAC_ARG_ENABLE(gles-highp,    	      AS_HELP_STRING([--enable-gles-highp], [Use highp as default precision for GLES(default: yes)]), [GLES_HIGHP=$enableval], [GLES_HIGHP=yes])
605*4882a593Smuzhiyun
606*4882a593Smuzhiyundnl chown/chmod to be setuid root as part of build
607*4882a593Smuzhiyundnl Replaces InstallXserverSetUID in imake
608*4882a593SmuzhiyunAC_ARG_ENABLE(install-setuid,
609*4882a593Smuzhiyun    AS_HELP_STRING([--enable-install-setuid],
610*4882a593Smuzhiyun       [Install Xorg server as owned by root with setuid bit (default: auto)]),
611*4882a593Smuzhiyun    [SETUID=$enableval], [SETUID=auto])
612*4882a593SmuzhiyunAC_MSG_CHECKING([to see if we can install the Xorg server as root])
613*4882a593Smuzhiyunif test "x$SETUID" = "xauto" ; then
614*4882a593Smuzhiyun	case $host_os in
615*4882a593Smuzhiyun	    cygwin*)		SETUID="no"  ;;
616*4882a593Smuzhiyun	    mingw*)		SETUID="no"  ;;
617*4882a593Smuzhiyun	    darwin*)		SETUID="no"  ;;
618*4882a593Smuzhiyun	    *)
619*4882a593Smuzhiyun	   	case $host_cpu in
620*4882a593Smuzhiyun		    sparc)	SETUID="no"  ;;
621*4882a593Smuzhiyun		    *)		SETUID="yes" ;;
622*4882a593Smuzhiyun		esac
623*4882a593Smuzhiyun	esac
624*4882a593Smuzhiyun	if test "x$SETUID" = xyes; then
625*4882a593Smuzhiyun		touch testfile
626*4882a593Smuzhiyun		chown root testfile > /dev/null 2>&1 || SETUID="no"
627*4882a593Smuzhiyun		rm -f testfile
628*4882a593Smuzhiyun	fi
629*4882a593Smuzhiyunfi
630*4882a593SmuzhiyunAC_MSG_RESULT([$SETUID])
631*4882a593SmuzhiyunAM_CONDITIONAL(INSTALL_SETUID, [test "x$SETUID" = "xyes"])
632*4882a593Smuzhiyun
633*4882a593Smuzhiyundnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro
634*4882a593Smuzhiyundnl was not expanded, since xorg-server with no transport types is rather useless.
635*4882a593Smuzhiyundnl
636*4882a593Smuzhiyundnl If you're seeing an error here, be sure you installed the lib/xtrans module
637*4882a593Smuzhiyundnl first and if it's not in the default location, that you set the ACLOCAL
638*4882a593Smuzhiyundnl environment variable to find it, such as:
639*4882a593Smuzhiyundnl	ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
640*4882a593Smuzhiyunm4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
641*4882a593Smuzhiyun
642*4882a593Smuzhiyun# Transport selection macro from xtrans.m4
643*4882a593SmuzhiyunXTRANS_CONNECTION_FLAGS
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun# Secure RPC detection macro from xtrans.m4
646*4882a593SmuzhiyunXTRANS_SECURE_RPC_FLAGS
647*4882a593SmuzhiyunAM_CONDITIONAL(SECURE_RPC, [test "x$SECURE_RPC" = xyes])
648*4882a593Smuzhiyun
649*4882a593SmuzhiyunAM_CONDITIONAL(INT10_VM86, [test "x$INT10" = xvm86])
650*4882a593SmuzhiyunAM_CONDITIONAL(INT10_X86EMU, [test "x$INT10" = xx86emu])
651*4882a593SmuzhiyunAM_CONDITIONAL(INT10_STUB, [test "x$INT10" = xstub])
652*4882a593Smuzhiyun
653*4882a593Smuzhiyundnl DDX Detection... Yes, it's ugly to have it here... but we need to
654*4882a593Smuzhiyundnl handle this early on so that we don't require unsupported extensions
655*4882a593Smuzhiyuncase $host_os in
656*4882a593Smuzhiyun	cygwin* | mingw*)
657*4882a593Smuzhiyun		CONFIG_HAL=no
658*4882a593Smuzhiyun		CONFIG_UDEV=no
659*4882a593Smuzhiyun		CONFIG_UDEV_KMS=no
660*4882a593Smuzhiyun		DGA=no
661*4882a593Smuzhiyun		DRM=no
662*4882a593Smuzhiyun		DRI2=no
663*4882a593Smuzhiyun		DRI3=no
664*4882a593Smuzhiyun		INT10MODULE=no
665*4882a593Smuzhiyun		PCI=no
666*4882a593Smuzhiyun		VGAHW=no
667*4882a593Smuzhiyun		VBE=no
668*4882a593Smuzhiyun		XF86UTILS=no
669*4882a593Smuzhiyun		XF86VIDMODE=no
670*4882a593Smuzhiyun		XSELINUX=no
671*4882a593Smuzhiyun		SYMBOL_VISIBILITY=no
672*4882a593Smuzhiyun		;;
673*4882a593Smuzhiyun	darwin*)
674*4882a593Smuzhiyun		PCI=no
675*4882a593Smuzhiyun		INT10MODULE=no
676*4882a593Smuzhiyun		VGAHW=no
677*4882a593Smuzhiyun		VBE=no
678*4882a593Smuzhiyun		DRM=no
679*4882a593Smuzhiyun		DRI2=no
680*4882a593Smuzhiyun		DRI3=no
681*4882a593Smuzhiyun
682*4882a593Smuzhiyun		if test x$XQUARTZ = xauto; then
683*4882a593Smuzhiyun			AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
684*4882a593Smuzhiyun		 		save_LDFLAGS=$LDFLAGS
685*4882a593Smuzhiyun				LDFLAGS="$LDFLAGS -framework Carbon"
686*4882a593Smuzhiyun				AC_LINK_IFELSE([AC_LANG_SOURCE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}])],
687*4882a593Smuzhiyun				               [xorg_cv_Carbon_framework=yes],
688*4882a593Smuzhiyun				               [xorg_cv_Carbon_framework=no])
689*4882a593Smuzhiyun			        LDFLAGS=$save_LDFLAGS])
690*4882a593Smuzhiyun
691*4882a593Smuzhiyun			if test "X$xorg_cv_Carbon_framework" = Xyes; then
692*4882a593Smuzhiyun				XQUARTZ=yes
693*4882a593Smuzhiyun			else
694*4882a593Smuzhiyun				XQUARTZ=no
695*4882a593Smuzhiyun			fi
696*4882a593Smuzhiyun		fi
697*4882a593Smuzhiyun
698*4882a593Smuzhiyun		if test "x$XQUARTZ" = xyes ; then
699*4882a593Smuzhiyun			XQUARTZ=yes
700*4882a593Smuzhiyun			XVFB=no
701*4882a593Smuzhiyun			XNEST=no
702*4882a593Smuzhiyun			XWAYLAND=no
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun			COMPOSITE=no
705*4882a593Smuzhiyun			DGA=no
706*4882a593Smuzhiyun			DPMSExtension=no
707*4882a593Smuzhiyun			XF86VIDMODE=no
708*4882a593Smuzhiyun		fi
709*4882a593Smuzhiyun		;;
710*4882a593Smuzhiyun	gnu*)
711*4882a593Smuzhiyun		DRM=no
712*4882a593Smuzhiyun		DRI2=no
713*4882a593Smuzhiyun		DRI3=no
714*4882a593Smuzhiyun		;;
715*4882a593Smuzhiyun	*) XQUARTZ=no ;;
716*4882a593Smuzhiyunesac
717*4882a593Smuzhiyun
718*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
719*4882a593Smuzhiyundnl Extension section
720*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
721*4882a593SmuzhiyunXEXT_INC='-I$(top_srcdir)/Xext'
722*4882a593SmuzhiyunXEXT_LIB='$(top_builddir)/Xext/libXext.la'
723*4882a593Smuzhiyun
724*4882a593Smuzhiyundnl Optional modules
725*4882a593SmuzhiyunVIDEOPROTO="videoproto"
726*4882a593SmuzhiyunCOMPOSITEPROTO="compositeproto >= 0.4"
727*4882a593SmuzhiyunRECORDPROTO="recordproto >= 1.13.99.1"
728*4882a593SmuzhiyunSCRNSAVERPROTO="scrnsaverproto >= 1.1"
729*4882a593SmuzhiyunRESOURCEPROTO="resourceproto >= 1.2.0"
730*4882a593SmuzhiyunDRIPROTO="xf86driproto >= 2.1.0"
731*4882a593SmuzhiyunDRI2PROTO="dri2proto >= 2.8"
732*4882a593SmuzhiyunDRI3PROTO="dri3proto >= 1.2"
733*4882a593SmuzhiyunXINERAMAPROTO="xineramaproto"
734*4882a593SmuzhiyunBIGFONTPROTO="xf86bigfontproto >= 1.2.0"
735*4882a593SmuzhiyunDGAPROTO="xf86dgaproto >= 2.0.99.1"
736*4882a593SmuzhiyunGLPROTO="glproto >= 1.4.17"
737*4882a593SmuzhiyunDMXPROTO="dmxproto >= 2.2.99.1"
738*4882a593SmuzhiyunVIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
739*4882a593SmuzhiyunWINDOWSWMPROTO="windowswmproto"
740*4882a593SmuzhiyunAPPLEWMPROTO="applewmproto >= 1.4"
741*4882a593SmuzhiyunLIBXSHMFENCE="xshmfence >= 1.1"
742*4882a593Smuzhiyun
743*4882a593Smuzhiyundnl Required modules
744*4882a593SmuzhiyunXPROTO="xproto >= 7.0.31"
745*4882a593SmuzhiyunRANDRPROTO="randrproto >= 1.6.0"
746*4882a593SmuzhiyunRENDERPROTO="renderproto >= 0.11"
747*4882a593SmuzhiyunXEXTPROTO="xextproto >= 7.2.99.901"
748*4882a593SmuzhiyunINPUTPROTO="inputproto >= 2.3"
749*4882a593SmuzhiyunKBPROTO="kbproto >= 1.0.3"
750*4882a593SmuzhiyunFONTSPROTO="fontsproto >= 2.1.3"
751*4882a593SmuzhiyunFIXESPROTO="fixesproto >= 5.0"
752*4882a593SmuzhiyunDAMAGEPROTO="damageproto >= 1.1"
753*4882a593SmuzhiyunXCMISCPROTO="xcmiscproto >= 1.2.0"
754*4882a593SmuzhiyunBIGREQSPROTO="bigreqsproto >= 1.1.0"
755*4882a593SmuzhiyunXTRANS="xtrans >= 1.3.5"
756*4882a593SmuzhiyunPRESENTPROTO="presentproto >= 1.1"
757*4882a593Smuzhiyun
758*4882a593Smuzhiyundnl List of libraries that require a specific version
759*4882a593SmuzhiyunLIBAPPLEWM="applewm >= 1.4"
760*4882a593SmuzhiyunLIBDMX="dmx >= 1.0.99.1"
761*4882a593SmuzhiyunLIBDRI="dri >= 7.8.0"
762*4882a593SmuzhiyunLIBDRM="libdrm >= 2.4.89"
763*4882a593SmuzhiyunLIBEGL="egl"
764*4882a593SmuzhiyunLIBGBM="gbm >= 10.2.0"
765*4882a593SmuzhiyunLIBGL="gl >= 1.2"
766*4882a593SmuzhiyunLIBXEXT="xext >= 1.0.99.4"
767*4882a593SmuzhiyunLIBXFONT="xfont2 >= 2.0.0"
768*4882a593SmuzhiyunLIBXI="xi >= 1.2.99.1"
769*4882a593SmuzhiyunLIBXTST="xtst >= 1.0.99.2"
770*4882a593SmuzhiyunLIBPCIACCESS="pciaccess >= 0.12.901"
771*4882a593SmuzhiyunLIBUDEV="libudev >= 143"
772*4882a593SmuzhiyunLIBSELINUX="libselinux >= 2.0.86"
773*4882a593SmuzhiyunLIBDBUS="dbus-1 >= 1.0"
774*4882a593SmuzhiyunLIBPIXMAN="pixman-1 >= 0.27.2"
775*4882a593Smuzhiyun
776*4882a593Smuzhiyundnl Pixman is always required, but we separate it out so we can link
777*4882a593Smuzhiyundnl specific modules against it
778*4882a593SmuzhiyunPKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
779*4882a593SmuzhiyunREQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
780*4882a593Smuzhiyun
781*4882a593Smuzhiyundnl Core modules for most extensions, et al.
782*4882a593SmuzhiyunSDK_REQUIRED_MODULES="$XPROTO $RANDRPROTO $RENDERPROTO $XEXTPROTO $INPUTPROTO $KBPROTO $FONTSPROTO $LIBPIXMAN"
783*4882a593Smuzhiyun# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
784*4882a593SmuzhiyunAC_SUBST(SDK_REQUIRED_MODULES)
785*4882a593Smuzhiyun
786*4882a593SmuzhiyunAC_CHECK_DECL([PTHREAD_MUTEX_RECURSIVE], [HAVE_RECURSIVE_MUTEX=yes], [HAVE_RECURSIVE_MUTEX=no], [[#include <pthread.h>]])
787*4882a593Smuzhiyun
788*4882a593SmuzhiyunTHREAD_DEFAULT=no
789*4882a593Smuzhiyun
790*4882a593Smuzhiyunif test "x$HAVE_RECURSIVE_MUTEX" = "xyes" ; then
791*4882a593Smuzhiyun	THREAD_DEFAULT=yes
792*4882a593Smuzhiyunfi
793*4882a593Smuzhiyun
794*4882a593SmuzhiyunAC_ARG_ENABLE(input-thread, AS_HELP_STRING([--enable-input-thread],
795*4882a593Smuzhiyun	     [Enable input threads]),
796*4882a593Smuzhiyun	     [INPUTTHREAD=$enableval], [INPUTTHREAD=$THREAD_DEFAULT])
797*4882a593Smuzhiyun
798*4882a593Smuzhiyunif test "x$INPUTTHREAD" = "xyes" ; then
799*4882a593Smuzhiyun    AX_PTHREAD(,AC_MSG_ERROR([threaded input requested but no pthread support has been found]))
800*4882a593Smuzhiyun    SYS_LIBS="$SYS_LIBS $PTHREAD_LIBS"
801*4882a593Smuzhiyun    CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
802*4882a593Smuzhiyun    AC_DEFINE(INPUTTHREAD, 1, [Use a separate input thread])
803*4882a593Smuzhiyun
804*4882a593Smuzhiyun    save_LIBS="$LIBS"
805*4882a593Smuzhiyun    LIBS="$LIBS $SYS_LIBS"
806*4882a593Smuzhiyun    dnl MacOS X 10.6 & higher
807*4882a593Smuzhiyun    AC_MSG_CHECKING(for pthread_setname_np(const char*))
808*4882a593Smuzhiyun    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
809*4882a593Smuzhiyun	                            [pthread_setname_np("example")])],
810*4882a593Smuzhiyun                   [AC_MSG_RESULT(yes)
811*4882a593Smuzhiyun		    AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID,1,
812*4882a593Smuzhiyun		              [Have function pthread_setname_np(const char*)])],
813*4882a593Smuzhiyun                   [AC_MSG_RESULT(no)])
814*4882a593Smuzhiyun    dnl GNU libc 2.12 & higher, Solaris 11.3 & higher
815*4882a593Smuzhiyun    AC_MSG_CHECKING(for pthread_setname_np(pthread_t, const char*))
816*4882a593Smuzhiyun    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
817*4882a593Smuzhiyun                             [pthread_setname_np(pthread_self(), "example")])],
818*4882a593Smuzhiyun                   [AC_MSG_RESULT(yes)
819*4882a593Smuzhiyun		    AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITH_TID,1,
820*4882a593Smuzhiyun	                      [Have function pthread_setname_np(pthread_t, const char*)])],
821*4882a593Smuzhiyun		   [AC_MSG_RESULT(no)])
822*4882a593Smuzhiyun    LIBS="$save_LIBS"
823*4882a593Smuzhiyunfi
824*4882a593Smuzhiyun
825*4882a593SmuzhiyunREQUIRED_MODULES="$FIXESPROTO $DAMAGEPROTO $XCMISCPROTO $XTRANS $BIGREQSPROTO $SDK_REQUIRED_MODULES"
826*4882a593Smuzhiyun
827*4882a593Smuzhiyundnl systemd socket activation
828*4882a593Smuzhiyundnl activate the code in libxtrans that grabs systemd's socket fds
829*4882a593Smuzhiyundnl libsystemd-daemon was moved into libsystemd in version 209
830*4882a593SmuzhiyunLIBSYSTEMD="libsystemd >= 209"
831*4882a593SmuzhiyunAC_ARG_WITH([systemd-daemon],
832*4882a593Smuzhiyun	AS_HELP_STRING([--with-systemd-daemon],
833*4882a593Smuzhiyun		[support systemd socket activation (default: auto)]),
834*4882a593Smuzhiyun	[WITH_SYSTEMD_DAEMON=$withval], [WITH_SYSTEMD_DAEMON=auto])
835*4882a593Smuzhiyunif test "x$WITH_SYSTEMD_DAEMON" = "xyes" -o "x$WITH_SYSTEMD_DAEMON" = "xauto" ; then
836*4882a593Smuzhiyun	PKG_CHECK_MODULES([SYSTEMD_DAEMON], [$LIBSYSTEMD],
837*4882a593Smuzhiyun			  [HAVE_SYSTEMD_DAEMON=yes;
838*4882a593Smuzhiyun			   LIBSYSTEMD_DAEMON="$LIBSYSTEMD"],
839*4882a593Smuzhiyun			  [PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
840*4882a593Smuzhiyun					     [HAVE_SYSTEMD_DAEMON=yes;
841*4882a593Smuzhiyun					      LIBSYSTEMD_DAEMON=libsystemd-daemon],
842*4882a593Smuzhiyun					     [HAVE_SYSTEMD_DAEMON=no])])
843*4882a593Smuzhiyun	if test "x$HAVE_SYSTEMD_DAEMON" = xyes; then
844*4882a593Smuzhiyun		AC_DEFINE(HAVE_SYSTEMD_DAEMON, 1, [Define to 1 if libsystemd-daemon is available])
845*4882a593Smuzhiyun		REQUIRED_LIBS="$REQUIRED_LIBS $LIBSYSTEMD_DAEMON"
846*4882a593Smuzhiyun	elif test "x$WITH_SYSTEMD_DAEMON" = xyes; then
847*4882a593Smuzhiyun		AC_MSG_ERROR([systemd support requested but no library has been found])
848*4882a593Smuzhiyun	fi
849*4882a593Smuzhiyunfi
850*4882a593SmuzhiyunAM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = "xyes"])
851*4882a593Smuzhiyun
852*4882a593Smuzhiyunif test "x$CONFIG_UDEV" = xyes && test "x$CONFIG_HAL" = xyes; then
853*4882a593Smuzhiyun	AC_MSG_ERROR([Hotplugging through both libudev and hal not allowed])
854*4882a593Smuzhiyunfi
855*4882a593Smuzhiyun
856*4882a593SmuzhiyunPKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
857*4882a593Smuzhiyunif test "x$CONFIG_UDEV" = xauto; then
858*4882a593Smuzhiyun	CONFIG_UDEV="$HAVE_LIBUDEV"
859*4882a593Smuzhiyun	AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if libudev is available.])
860*4882a593Smuzhiyunfi
861*4882a593SmuzhiyunAM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" = xyes])
862*4882a593Smuzhiyunif test "x$CONFIG_UDEV" = xyes; then
863*4882a593Smuzhiyun	CONFIG_HAL=no
864*4882a593Smuzhiyun	if test "x$CONFIG_UDEV_KMS" = xauto; then
865*4882a593Smuzhiyun		CONFIG_UDEV_KMS="$HAVE_LIBUDEV"
866*4882a593Smuzhiyun	fi
867*4882a593Smuzhiyun	if ! test "x$HAVE_LIBUDEV" = xyes; then
868*4882a593Smuzhiyun		AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
869*4882a593Smuzhiyun	fi
870*4882a593Smuzhiyun	AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
871*4882a593Smuzhiyun	if test "x$CONFIG_UDEV_KMS" = xyes; then
872*4882a593Smuzhiyun		AC_DEFINE(CONFIG_UDEV_KMS, 1, [Use libudev for kms enumeration])
873*4882a593Smuzhiyun	fi
874*4882a593Smuzhiyun	SAVE_LIBS=$LIBS
875*4882a593Smuzhiyun	SAVE_CFLAGS=$CFLAGS
876*4882a593Smuzhiyun	CFLAGS="$CFLAGS $UDEV_CFLAGS"
877*4882a593Smuzhiyun	LIBS=$UDEV_LIBS
878*4882a593Smuzhiyun	AC_CHECK_FUNCS([udev_monitor_filter_add_match_tag])
879*4882a593Smuzhiyun	AC_CHECK_FUNCS([udev_enumerate_add_match_tag])
880*4882a593Smuzhiyun	LIBS=$SAVE_LIBS
881*4882a593Smuzhiyun	CFLAGS=$SAVE_CFLAGS
882*4882a593Smuzhiyunfi
883*4882a593SmuzhiyunAM_CONDITIONAL(CONFIG_UDEV_KMS, [test "x$CONFIG_UDEV_KMS" = xyes])
884*4882a593Smuzhiyun
885*4882a593SmuzhiyunPKG_CHECK_MODULES(DBUS, $LIBDBUS, [HAVE_DBUS=yes], [HAVE_DBUS=no])
886*4882a593Smuzhiyunif test "x$HAVE_DBUS" = xyes; then
887*4882a593Smuzhiyun	AC_DEFINE(HAVE_DBUS, 1, [Have D-Bus support])
888*4882a593Smuzhiyunfi
889*4882a593SmuzhiyunAM_CONDITIONAL(HAVE_DBUS, [test "x$HAVE_DBUS" = xyes])
890*4882a593Smuzhiyun
891*4882a593SmuzhiyunPKG_CHECK_MODULES(HAL, hal, [HAVE_HAL=yes], [HAVE_HAL=no])
892*4882a593Smuzhiyunif test "x$CONFIG_HAL" = xauto; then
893*4882a593Smuzhiyun	CONFIG_HAL="$HAVE_HAL"
894*4882a593Smuzhiyunfi
895*4882a593Smuzhiyunif test "x$CONFIG_HAL" = xyes; then
896*4882a593Smuzhiyun	if ! test "x$HAVE_HAL" = xyes; then
897*4882a593Smuzhiyun		AC_MSG_ERROR([HAL hotplug API requested, but HAL is not installed.])
898*4882a593Smuzhiyun	fi
899*4882a593Smuzhiyun
900*4882a593Smuzhiyun	AC_DEFINE(CONFIG_HAL, 1, [Use the HAL hotplug API])
901*4882a593Smuzhiyun	NEED_DBUS="yes"
902*4882a593Smuzhiyunfi
903*4882a593SmuzhiyunAM_CONDITIONAL(CONFIG_HAL, [test "x$CONFIG_HAL" = xyes])
904*4882a593Smuzhiyun
905*4882a593Smuzhiyunif test "x$SYSTEMD_LOGIND" = xauto; then
906*4882a593Smuzhiyun        if test "x$HAVE_DBUS" = xyes -a "x$CONFIG_UDEV" = xyes ; then
907*4882a593Smuzhiyun                SYSTEMD_LOGIND=yes
908*4882a593Smuzhiyun        else
909*4882a593Smuzhiyun                SYSTEMD_LOGIND=no
910*4882a593Smuzhiyun        fi
911*4882a593Smuzhiyunfi
912*4882a593Smuzhiyunif test "x$SYSTEMD_LOGIND" = xyes; then
913*4882a593Smuzhiyun        if ! test "x$HAVE_DBUS" = xyes; then
914*4882a593Smuzhiyun                AC_MSG_ERROR([systemd-logind requested, but D-Bus is not installed.])
915*4882a593Smuzhiyun        fi
916*4882a593Smuzhiyun        if ! test "x$CONFIG_UDEV" = xyes ; then
917*4882a593Smuzhiyun                AC_MSG_ERROR([systemd-logind is only supported in combination with udev configuration.])
918*4882a593Smuzhiyun        fi
919*4882a593Smuzhiyun
920*4882a593Smuzhiyun        AC_DEFINE(SYSTEMD_LOGIND, 1, [Enable systemd-logind integration])
921*4882a593Smuzhiyun        NEED_DBUS="yes"
922*4882a593Smuzhiyunfi
923*4882a593SmuzhiyunAM_CONDITIONAL(SYSTEMD_LOGIND, [test "x$SYSTEMD_LOGIND" = xyes])
924*4882a593Smuzhiyun
925*4882a593Smuzhiyunif test "x$SUID_WRAPPER" = xyes; then
926*4882a593Smuzhiyun        dnl This is a define so that if some platforms want to put the wrapper
927*4882a593Smuzhiyun        dnl somewhere else this can be easily changed
928*4882a593Smuzhiyun        AC_DEFINE_DIR(SUID_WRAPPER_DIR, libexecdir, [Where to install the Xorg binary and Xorg.wrap])
929*4882a593Smuzhiyun        SETUID="no"
930*4882a593Smuzhiyunfi
931*4882a593SmuzhiyunAM_CONDITIONAL(SUID_WRAPPER, [test "x$SUID_WRAPPER" = xyes])
932*4882a593Smuzhiyun
933*4882a593Smuzhiyunif test "x$NEED_DBUS" = xyes; then
934*4882a593Smuzhiyun        AC_DEFINE(NEED_DBUS, 1, [Enable D-Bus core])
935*4882a593Smuzhiyunfi
936*4882a593SmuzhiyunAM_CONDITIONAL(NEED_DBUS, [test "x$NEED_DBUS" = xyes])
937*4882a593Smuzhiyun
938*4882a593Smuzhiyunif test "x$CONFIG_WSCONS" = xauto; then
939*4882a593Smuzhiyun	case $host_os in
940*4882a593Smuzhiyun		*openbsd*)
941*4882a593Smuzhiyun			CONFIG_WSCONS=yes;
942*4882a593Smuzhiyun			;;
943*4882a593Smuzhiyun		*)
944*4882a593Smuzhiyun			CONFIG_WSCONS=no;
945*4882a593Smuzhiyun			;;
946*4882a593Smuzhiyun	esac
947*4882a593Smuzhiyunfi
948*4882a593SmuzhiyunAM_CONDITIONAL(CONFIG_WSCONS, [test "x$CONFIG_WSCONS" = xyes])
949*4882a593Smuzhiyunif test "x$CONFIG_WSCONS" = xyes; then
950*4882a593Smuzhiyun	AC_DEFINE(CONFIG_WSCONS, 1, [Use wscons for input auto configuration])
951*4882a593Smuzhiyunfi
952*4882a593Smuzhiyun
953*4882a593Smuzhiyun
954*4882a593SmuzhiyunAC_MSG_CHECKING([for glibc...])
955*4882a593SmuzhiyunAC_PREPROC_IFELSE([AC_LANG_SOURCE([
956*4882a593Smuzhiyun#include <features.h>
957*4882a593Smuzhiyun#ifndef __GLIBC__
958*4882a593Smuzhiyun#error
959*4882a593Smuzhiyun#endif
960*4882a593Smuzhiyun])], glibc=yes, glibc=no)
961*4882a593SmuzhiyunAC_MSG_RESULT([$glibc])
962*4882a593Smuzhiyun
963*4882a593SmuzhiyunAC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes],
964*4882a593Smuzhiyun               [AC_CHECK_LIB([rt], [clock_gettime], [have_clock_gettime=-lrt],
965*4882a593Smuzhiyun                             [have_clock_gettime=no])])
966*4882a593Smuzhiyun
967*4882a593SmuzhiyunAC_MSG_CHECKING([for a useful monotonic clock ...])
968*4882a593Smuzhiyun
969*4882a593Smuzhiyunif ! test "x$have_clock_gettime" = xno; then
970*4882a593Smuzhiyun    if ! test "x$have_clock_gettime" = xyes; then
971*4882a593Smuzhiyun        CLOCK_LIBS="$have_clock_gettime"
972*4882a593Smuzhiyun    else
973*4882a593Smuzhiyun        CLOCK_LIBS=""
974*4882a593Smuzhiyun    fi
975*4882a593Smuzhiyun
976*4882a593Smuzhiyun    LIBS_SAVE="$LIBS"
977*4882a593Smuzhiyun    LIBS="$CLOCK_LIBS"
978*4882a593Smuzhiyun    CPPFLAGS_SAVE="$CPPFLAGS"
979*4882a593Smuzhiyun
980*4882a593Smuzhiyun    if test x"$glibc" = xyes; then
981*4882a593Smuzhiyun        CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
982*4882a593Smuzhiyun    fi
983*4882a593Smuzhiyun
984*4882a593Smuzhiyun    AC_RUN_IFELSE([AC_LANG_SOURCE([
985*4882a593Smuzhiyun#include <time.h>
986*4882a593Smuzhiyun
987*4882a593Smuzhiyunint main(int argc, char *argv[[]]) {
988*4882a593Smuzhiyun    struct timespec tp;
989*4882a593Smuzhiyun
990*4882a593Smuzhiyun    if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
991*4882a593Smuzhiyun        return 0;
992*4882a593Smuzhiyun    else
993*4882a593Smuzhiyun        return 1;
994*4882a593Smuzhiyun}
995*4882a593Smuzhiyun    ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
996*4882a593Smuzhiyun       [MONOTONIC_CLOCK="cross compiling"])
997*4882a593Smuzhiyun
998*4882a593Smuzhiyun    if test "$MONOTONIC_CLOCK" = "cross compiling"; then
999*4882a593Smuzhiyun        AC_CHECK_DECL([CLOCK_MONOTONIC],[MONOTONIC_CLOCK="guessing yes"],[MONOTONIC_CLOCK=no],[#include <time.h>])
1000*4882a593Smuzhiyun    fi
1001*4882a593Smuzhiyun
1002*4882a593Smuzhiyun    LIBS="$LIBS_SAVE"
1003*4882a593Smuzhiyun    CPPFLAGS="$CPPFLAGS_SAVE"
1004*4882a593Smuzhiyunelse
1005*4882a593Smuzhiyun    MONOTONIC_CLOCK=no
1006*4882a593Smuzhiyunfi
1007*4882a593Smuzhiyun
1008*4882a593SmuzhiyunAC_MSG_RESULT([$MONOTONIC_CLOCK])
1009*4882a593Smuzhiyunif test "$MONOTONIC_CLOCK" = "guessing yes"; then
1010*4882a593Smuzhiyun	MONOTONIC_CLOCK=yes
1011*4882a593Smuzhiyunfi
1012*4882a593Smuzhiyun
1013*4882a593Smuzhiyunif test "x$MONOTONIC_CLOCK" = xyes; then
1014*4882a593Smuzhiyun    AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
1015*4882a593Smuzhiyun    LIBS="$LIBS $CLOCK_LIBS"
1016*4882a593Smuzhiyunfi
1017*4882a593Smuzhiyun
1018*4882a593SmuzhiyunAM_CONDITIONAL(XV, [test "x$XV" = xyes])
1019*4882a593Smuzhiyunif test "x$XV" = xyes; then
1020*4882a593Smuzhiyun	AC_DEFINE(XV, 1, [Support Xv extension])
1021*4882a593Smuzhiyun	AC_DEFINE(XvExtension, 1, [Build Xv extension])
1022*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $VIDEOPROTO"
1023*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $VIDEOPROTO"
1024*4882a593Smuzhiyunelse
1025*4882a593Smuzhiyun	XVMC=no
1026*4882a593Smuzhiyunfi
1027*4882a593Smuzhiyun
1028*4882a593SmuzhiyunAM_CONDITIONAL(XVMC, [test "x$XVMC" = xyes])
1029*4882a593Smuzhiyunif test "x$XVMC" = xyes; then
1030*4882a593Smuzhiyun	AC_DEFINE(XvMCExtension, 1, [Build XvMC extension])
1031*4882a593Smuzhiyunfi
1032*4882a593Smuzhiyun
1033*4882a593SmuzhiyunAM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes])
1034*4882a593Smuzhiyunif test "x$COMPOSITE" = xyes; then
1035*4882a593Smuzhiyun	AC_DEFINE(COMPOSITE, 1, [Support Composite Extension])
1036*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $COMPOSITEPROTO"
1037*4882a593Smuzhiyun	COMPOSITE_LIB='$(top_builddir)/composite/libcomposite.la'
1038*4882a593Smuzhiyun	COMPOSITE_INC='-I$(top_srcdir)/composite'
1039*4882a593Smuzhiyunfi
1040*4882a593Smuzhiyun
1041*4882a593Smuzhiyunif test "x$MITSHM" = xauto; then
1042*4882a593Smuzhiyun	MITSHM="$ac_cv_sysv_ipc"
1043*4882a593Smuzhiyunfi
1044*4882a593SmuzhiyunAM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
1045*4882a593Smuzhiyunif test "x$MITSHM" = xyes; then
1046*4882a593Smuzhiyun	AC_DEFINE(MITSHM, 1, [Support MIT-SHM extension])
1047*4882a593Smuzhiyun	AC_DEFINE(HAS_SHM, 1, [Support SHM])
1048*4882a593Smuzhiyunfi
1049*4882a593Smuzhiyun
1050*4882a593SmuzhiyunAM_CONDITIONAL(RECORD, [test "x$RECORD" = xyes])
1051*4882a593Smuzhiyunif test "x$RECORD" = xyes; then
1052*4882a593Smuzhiyun	AC_DEFINE(XRECORD, 1, [Support Record extension])
1053*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $RECORDPROTO"
1054*4882a593Smuzhiyun	RECORD_LIB='$(top_builddir)/record/librecord.la'
1055*4882a593Smuzhiyunfi
1056*4882a593Smuzhiyun
1057*4882a593SmuzhiyunAM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes])
1058*4882a593Smuzhiyunif test "x$SCREENSAVER" = xyes; then
1059*4882a593Smuzhiyun	AC_DEFINE(SCREENSAVER, 1, [Support MIT-SCREEN-SAVER extension])
1060*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $SCRNSAVERPROTO"
1061*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $SCRNSAVERPROTO"
1062*4882a593Smuzhiyunfi
1063*4882a593Smuzhiyun
1064*4882a593SmuzhiyunHASHTABLE=no
1065*4882a593SmuzhiyunAM_CONDITIONAL(RES, [test "x$RES" = xyes])
1066*4882a593Smuzhiyunif test "x$RES" = xyes; then
1067*4882a593Smuzhiyun	AC_DEFINE(RES, 1, [Support X resource extension])
1068*4882a593Smuzhiyun	HASHTABLE=yes
1069*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
1070*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO"
1071*4882a593Smuzhiyunfi
1072*4882a593Smuzhiyun
1073*4882a593Smuzhiyunif test "x$LISTEN_TCP" = xyes; then
1074*4882a593Smuzhiyun	AC_DEFINE(LISTEN_TCP, 1, [Listen on TCP socket])
1075*4882a593Smuzhiyunfi
1076*4882a593Smuzhiyunif test "x$LISTEN_UNIX" = xyes; then
1077*4882a593Smuzhiyun	AC_DEFINE(LISTEN_UNIX, 1, [Listen on Unix socket])
1078*4882a593Smuzhiyunfi
1079*4882a593Smuzhiyunif test "x$LISTEN_LOCAL" = xyes; then
1080*4882a593Smuzhiyun	AC_DEFINE(LISTEN_LOCAL, 1, [Listen on local socket])
1081*4882a593Smuzhiyunfi
1082*4882a593Smuzhiyun
1083*4882a593Smuzhiyun# The XRes extension may support client ID tracking only if it has
1084*4882a593Smuzhiyun# been specifically enabled. Client ID tracking is implicitly not
1085*4882a593Smuzhiyun# supported if XRes extension is disabled.
1086*4882a593SmuzhiyunAC_MSG_CHECKING([whether to track client ids])
1087*4882a593Smuzhiyunif test "x$RES" = xyes && test "x$CLIENTIDS" = xyes; then
1088*4882a593Smuzhiyun	AC_DEFINE(CLIENTIDS, 1, [Support client ID tracking])
1089*4882a593Smuzhiyunelse
1090*4882a593Smuzhiyun	CLIENTIDS=no
1091*4882a593Smuzhiyunfi
1092*4882a593Smuzhiyunif test "x$CLIENTIDS" = xyes; then
1093*4882a593Smuzhiyun	case $host_os in
1094*4882a593Smuzhiyun	openbsd*)
1095*4882a593Smuzhiyun		SYS_LIBS="$SYS_LIBS -lkvm"
1096*4882a593Smuzhiyun	;;
1097*4882a593Smuzhiyun	esac
1098*4882a593Smuzhiyunfi
1099*4882a593SmuzhiyunAC_MSG_RESULT([$CLIENTIDS])
1100*4882a593SmuzhiyunAM_CONDITIONAL(CLIENTIDS, [test "x$CLIENTIDS" = xyes])
1101*4882a593Smuzhiyun
1102*4882a593SmuzhiyunAM_CONDITIONAL(DRI, test "x$DRI" = xyes)
1103*4882a593Smuzhiyunif test "x$DRI" = xyes; then
1104*4882a593Smuzhiyun	AC_DEFINE(XF86DRI, 1, [Build DRI extension])
1105*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $DRIPROTO $GLPROTO $LIBDRI"
1106*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRIPROTO $GLPROTO $LIBDRI"
1107*4882a593Smuzhiyunfi
1108*4882a593Smuzhiyun
1109*4882a593SmuzhiyunPKG_CHECK_MODULES([DRI2PROTO], $DRI2PROTO,
1110*4882a593Smuzhiyun                  [HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no])
1111*4882a593Smuzhiyuncase "$DRI2,$HAVE_DRI2PROTO" in
1112*4882a593Smuzhiyun	yes,no)
1113*4882a593Smuzhiyun		AC_MSG_ERROR([DRI2 requested, but dri2proto not found.])
1114*4882a593Smuzhiyun		;;
1115*4882a593Smuzhiyun	yes,yes | auto,yes)
1116*4882a593Smuzhiyun		AC_DEFINE(DRI2, 1, [Build DRI2 extension])
1117*4882a593Smuzhiyun		DRI2=yes
1118*4882a593Smuzhiyun		LIBGL="gl >= 1.2"
1119*4882a593Smuzhiyun		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
1120*4882a593Smuzhiyun		;;
1121*4882a593Smuzhiyunesac
1122*4882a593SmuzhiyunAM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
1123*4882a593Smuzhiyun
1124*4882a593SmuzhiyunAC_ARG_ENABLE(xtrans-send-fds,	AS_HELP_STRING([--disable-xtrans-send-fds], [Use Xtrans support for fd passing (default: auto)]), [XTRANS_SEND_FDS=$enableval], [XTRANS_SEND_FDS=auto])
1125*4882a593Smuzhiyun
1126*4882a593Smuzhiyuncase "x$XTRANS_SEND_FDS" in
1127*4882a593Smuzhiyunxauto)
1128*4882a593Smuzhiyun	case "$host_os" in
1129*4882a593Smuzhiyun	linux*|solaris*|freebsd*|dragonfly*|openbsd*)
1130*4882a593Smuzhiyun		XTRANS_SEND_FDS=yes
1131*4882a593Smuzhiyun		;;
1132*4882a593Smuzhiyun	*)
1133*4882a593Smuzhiyun		XTRANS_SEND_FDS=no
1134*4882a593Smuzhiyun		;;
1135*4882a593Smuzhiyun	esac
1136*4882a593Smuzhiyunesac
1137*4882a593Smuzhiyun
1138*4882a593Smuzhiyuncase "x$XTRANS_SEND_FDS" in
1139*4882a593Smuzhiyunxyes)
1140*4882a593Smuzhiyun	AC_DEFINE(XTRANS_SEND_FDS, 1, [Enable xtrans fd passing support])
1141*4882a593Smuzhiyun	;;
1142*4882a593Smuzhiyunesac
1143*4882a593Smuzhiyun
1144*4882a593Smuzhiyuncase "$DRI3,$XTRANS_SEND_FDS" in
1145*4882a593Smuzhiyun	yes,yes | auto,yes)
1146*4882a593Smuzhiyun		;;
1147*4882a593Smuzhiyun	yes,no)
1148*4882a593Smuzhiyun		AC_MSG_ERROR([DRI3 requested, but xtrans fd passing support not found.])
1149*4882a593Smuzhiyun		DRI3=no
1150*4882a593Smuzhiyun		;;
1151*4882a593Smuzhiyun	no,*)
1152*4882a593Smuzhiyun		;;
1153*4882a593Smuzhiyun	*)
1154*4882a593Smuzhiyun		AC_MSG_NOTICE([DRI3 disabled because xtrans fd passing support not found.])
1155*4882a593Smuzhiyun		DRI3=no
1156*4882a593Smuzhiyun		;;
1157*4882a593Smuzhiyunesac
1158*4882a593Smuzhiyun
1159*4882a593SmuzhiyunPKG_CHECK_MODULES([DRI3PROTO], $DRI3PROTO,
1160*4882a593Smuzhiyun                  [HAVE_DRI3PROTO=yes], [HAVE_DRI3PROTO=no])
1161*4882a593Smuzhiyun
1162*4882a593Smuzhiyuncase "$DRI3,$HAVE_DRI3PROTO" in
1163*4882a593Smuzhiyun	yes,yes | auto,yes)
1164*4882a593Smuzhiyun		REQUIRED_MODULES="$REQUIRED_MODULES dri3proto"
1165*4882a593Smuzhiyun		;;
1166*4882a593Smuzhiyun	yes,no)
1167*4882a593Smuzhiyun		AC_MSG_ERROR([DRI3 requested, but dri3proto not found.])
1168*4882a593Smuzhiyun		DRI3=no
1169*4882a593Smuzhiyun		;;
1170*4882a593Smuzhiyun	no,*)
1171*4882a593Smuzhiyun		;;
1172*4882a593Smuzhiyun	*)
1173*4882a593Smuzhiyun		AC_MSG_NOTICE([DRI3 disabled because dri3proto not found.])
1174*4882a593Smuzhiyun		DRI3=no
1175*4882a593Smuzhiyun		;;
1176*4882a593Smuzhiyunesac
1177*4882a593Smuzhiyun
1178*4882a593SmuzhiyunAC_CHECK_FUNCS([sigaction])
1179*4882a593Smuzhiyun
1180*4882a593SmuzhiyunBUSFAULT=no
1181*4882a593Smuzhiyun
1182*4882a593Smuzhiyuncase x"$ac_cv_func_sigaction" in
1183*4882a593Smuzhiyun	xyes)
1184*4882a593Smuzhiyun		AC_DEFINE(HAVE_SIGACTION, 1, [Have sigaction function])
1185*4882a593Smuzhiyun		BUSFAULT=yes
1186*4882a593Smuzhiyun		;;
1187*4882a593Smuzhiyunesac
1188*4882a593Smuzhiyun
1189*4882a593Smuzhiyuncase x"$BUSFAULT" in
1190*4882a593Smuzhiyun	xyes)
1191*4882a593Smuzhiyun		AC_DEFINE(BUSFAULT, 1, [Include busfault OS API])
1192*4882a593Smuzhiyun		;;
1193*4882a593Smuzhiyunesac
1194*4882a593Smuzhiyun
1195*4882a593SmuzhiyunAM_CONDITIONAL(BUSFAULT, test x"$BUSFAULT" = xyes)
1196*4882a593Smuzhiyun
1197*4882a593Smuzhiyun
1198*4882a593SmuzhiyunPKG_CHECK_MODULES([XSHMFENCE], $LIBXSHMFENCE, [HAVE_XSHMFENCE=yes], [HAVE_XSHMFENCE=no])
1199*4882a593Smuzhiyunif test "x$XSHMFENCE" = "xauto"; then
1200*4882a593Smuzhiyun    XSHMFENCE="$HAVE_XSHMFENCE"
1201*4882a593Smuzhiyunfi
1202*4882a593Smuzhiyun
1203*4882a593Smuzhiyunif test "x$XSHMFENCE" = "xyes"; then
1204*4882a593Smuzhiyun    if test "x$HAVE_XSHMFENCE" != "xyes"; then
1205*4882a593Smuzhiyun        AC_MSG_ERROR([xshmfence requested but not installed.])
1206*4882a593Smuzhiyun    fi
1207*4882a593Smuzhiyun    AC_DEFINE(HAVE_XSHMFENCE, 1, [Have xshmfence support])
1208*4882a593Smuzhiyun    REQUIRED_LIBS="$REQUIRED_LIBS $LIBXSHMFENCE"
1209*4882a593Smuzhiyunfi
1210*4882a593Smuzhiyun
1211*4882a593SmuzhiyunAM_CONDITIONAL(XSHMFENCE, [test "x$XSHMFENCE" = xyes])
1212*4882a593Smuzhiyun
1213*4882a593Smuzhiyuncase "$DRI3,$XSHMFENCE" in
1214*4882a593Smuzhiyun	yes,yes | auto,yes)
1215*4882a593Smuzhiyun		;;
1216*4882a593Smuzhiyun	yes,no)
1217*4882a593Smuzhiyun		AC_MSG_ERROR([DRI3 requested, but xshmfence not found.])
1218*4882a593Smuzhiyun		DRI3=no
1219*4882a593Smuzhiyun		;;
1220*4882a593Smuzhiyun	no,*)
1221*4882a593Smuzhiyun		;;
1222*4882a593Smuzhiyun	*)
1223*4882a593Smuzhiyun		AC_MSG_NOTICE([DRI3 disabled because xshmfence not found.])
1224*4882a593Smuzhiyun		DRI3=no
1225*4882a593Smuzhiyun		;;
1226*4882a593Smuzhiyunesac
1227*4882a593Smuzhiyun
1228*4882a593Smuzhiyuncase x"$DRI3" in
1229*4882a593Smuzhiyun	xyes|xauto)
1230*4882a593Smuzhiyun		DRI3=yes
1231*4882a593Smuzhiyun		AC_DEFINE(DRI3, 1, [Build DRI3 extension])
1232*4882a593Smuzhiyun		DRI3_LIB='$(top_builddir)/dri3/libdri3.la'
1233*4882a593Smuzhiyun		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI3PROTO"
1234*4882a593Smuzhiyun		AC_MSG_NOTICE([DRI3 enabled]);
1235*4882a593Smuzhiyun		;;
1236*4882a593Smuzhiyunesac
1237*4882a593Smuzhiyun
1238*4882a593SmuzhiyunAM_CONDITIONAL(DRI3, test "x$DRI3" = xyes)
1239*4882a593Smuzhiyun
1240*4882a593Smuzhiyunif test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$DRI3" = xyes || test "x$CONFIG_UDEV_KMS" = xyes || test "x$XORG" = xyes; then
1241*4882a593Smuzhiyun	if test "x$DRM" = xyes; then
1242*4882a593Smuzhiyun		AC_DEFINE(WITH_LIBDRM, 1, [Building with libdrm support])
1243*4882a593Smuzhiyun		PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
1244*4882a593Smuzhiyun	fi
1245*4882a593Smuzhiyunfi
1246*4882a593Smuzhiyun
1247*4882a593Smuzhiyunif test "x$GLX" = xyes; then
1248*4882a593Smuzhiyun	PKG_CHECK_MODULES([XLIB], [x11])
1249*4882a593Smuzhiyun	PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
1250*4882a593Smuzhiyun	AC_SUBST(XLIB_CFLAGS)
1251*4882a593Smuzhiyun	AC_DEFINE(GLXEXT, 1, [Build GLX extension])
1252*4882a593Smuzhiyun	HASHTABLE=yes
1253*4882a593Smuzhiyun	GLX_LIBS='$(top_builddir)/glx/libglx.la $(top_builddir)/glx/libglxvnd.la'
1254*4882a593Smuzhiyun	GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
1255*4882a593Smuzhiyunelse
1256*4882a593Smuzhiyun        GLX=no
1257*4882a593Smuzhiyunfi
1258*4882a593SmuzhiyunAM_CONDITIONAL(GLX, test "x$GLX" = xyes)
1259*4882a593Smuzhiyun
1260*4882a593SmuzhiyunAM_CONDITIONAL(HASHTABLE, test "x$HASHTABLE" = xyes)
1261*4882a593Smuzhiyun
1262*4882a593SmuzhiyunAC_SUBST([GLX_DEFINES])
1263*4882a593SmuzhiyunAC_SUBST([GLX_SYS_LIBS])
1264*4882a593Smuzhiyun
1265*4882a593SmuzhiyunAM_CONDITIONAL(PRESENT, [test "x$PRESENT" = xyes])
1266*4882a593Smuzhiyunif test "x$PRESENT" = xyes; then
1267*4882a593Smuzhiyun	AC_DEFINE(PRESENT, 1, [Support Present extension])
1268*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $PRESENTPROTO"
1269*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $PRESENTPROTO"
1270*4882a593Smuzhiyun	PRESENT_INC='-I$(top_srcdir)/present'
1271*4882a593Smuzhiyun	PRESENT_LIB='$(top_builddir)/present/libpresent.la'
1272*4882a593Smuzhiyunfi
1273*4882a593Smuzhiyun
1274*4882a593SmuzhiyunAM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
1275*4882a593Smuzhiyunif test "x$XINERAMA" = xyes; then
1276*4882a593Smuzhiyun	AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
1277*4882a593Smuzhiyun	AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
1278*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $XINERAMAPROTO"
1279*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
1280*4882a593Smuzhiyunfi
1281*4882a593Smuzhiyun
1282*4882a593SmuzhiyunAM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
1283*4882a593Smuzhiyunif test "x$XACE" = xyes; then
1284*4882a593Smuzhiyun	AC_DEFINE(XACE, 1, [Build X-ACE extension])
1285*4882a593Smuzhiyunfi
1286*4882a593Smuzhiyun
1287*4882a593SmuzhiyunAM_CONDITIONAL(XSELINUX, [test "x$XSELINUX" = xyes])
1288*4882a593Smuzhiyunif test "x$XSELINUX" = xyes; then
1289*4882a593Smuzhiyun	if test "x$XACE" != xyes; then
1290*4882a593Smuzhiyun		AC_MSG_ERROR([cannot build SELinux extension without X-ACE])
1291*4882a593Smuzhiyun	fi
1292*4882a593Smuzhiyun	AC_CHECK_HEADERS([libaudit.h], [], AC_MSG_ERROR([SELinux extension requires audit system headers]))
1293*4882a593Smuzhiyun	AC_CHECK_LIB(audit, audit_open, [], AC_MSG_ERROR([SELinux extension requires audit system library]))
1294*4882a593Smuzhiyun	PKG_CHECK_MODULES([SELINUX], $LIBSELINUX)
1295*4882a593Smuzhiyun	SELINUX_LIBS="$SELINUX_LIBS -laudit"
1296*4882a593Smuzhiyun	AC_DEFINE(XSELINUX, 1, [Build SELinux extension])
1297*4882a593Smuzhiyunfi
1298*4882a593Smuzhiyun
1299*4882a593SmuzhiyunAM_CONDITIONAL(XCSECURITY, [test "x$XCSECURITY" = xyes])
1300*4882a593Smuzhiyunif test "x$XCSECURITY" = xyes; then
1301*4882a593Smuzhiyun	if test "x$XACE" != xyes; then
1302*4882a593Smuzhiyun		AC_MSG_ERROR([cannot build Security extension without X-ACE])
1303*4882a593Smuzhiyun	fi
1304*4882a593Smuzhiyun	AC_DEFINE(XCSECURITY, 1, [Build Security extension])
1305*4882a593Smuzhiyunfi
1306*4882a593Smuzhiyun
1307*4882a593SmuzhiyunAM_CONDITIONAL(DBE, [test "x$DBE" = xyes])
1308*4882a593Smuzhiyunif test "x$DBE" = xyes; then
1309*4882a593Smuzhiyun	AC_DEFINE(DBE, 1, [Support DBE extension])
1310*4882a593Smuzhiyun	DBE_LIB='$(top_builddir)/dbe/libdbe.la'
1311*4882a593Smuzhiyun	DBE_INC='-I$(top_srcdir)/dbe'
1312*4882a593Smuzhiyunfi
1313*4882a593Smuzhiyun
1314*4882a593SmuzhiyunAM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
1315*4882a593Smuzhiyunif test "x$XF86BIGFONT" = xyes; then
1316*4882a593Smuzhiyun	AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
1317*4882a593Smuzhiyun	REQUIRED_MODULES="$REQUIRED_MODULES $BIGFONTPROTO"
1318*4882a593Smuzhiyun	SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $BIGFONTPROTO"
1319*4882a593Smuzhiyunfi
1320*4882a593Smuzhiyun
1321*4882a593SmuzhiyunAM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
1322*4882a593Smuzhiyunif test "x$DPMSExtension" = xyes; then
1323*4882a593Smuzhiyun	AC_DEFINE(DPMSExtension, 1, [Support DPMS extension])
1324*4882a593Smuzhiyunfi
1325*4882a593Smuzhiyun
1326*4882a593SmuzhiyunAC_DEFINE(RENDER, 1, [Support RENDER extension])
1327*4882a593SmuzhiyunRENDER_LIB='$(top_builddir)/render/librender.la'
1328*4882a593SmuzhiyunRENDER_INC='-I$(top_srcdir)/render'
1329*4882a593Smuzhiyun
1330*4882a593SmuzhiyunAC_DEFINE(RANDR, 1, [Support RANDR extension])
1331*4882a593SmuzhiyunRANDR_LIB='$(top_builddir)/randr/librandr.la'
1332*4882a593SmuzhiyunRANDR_INC='-I$(top_srcdir)/randr'
1333*4882a593Smuzhiyun
1334*4882a593SmuzhiyunAC_DEFINE(XFIXES,1,[Support XFixes extension])
1335*4882a593SmuzhiyunFIXES_LIB='$(top_builddir)/xfixes/libxfixes.la'
1336*4882a593SmuzhiyunFIXES_INC='-I$(top_srcdir)/xfixes'
1337*4882a593Smuzhiyun
1338*4882a593SmuzhiyunAC_DEFINE(DAMAGE,1,[Support Damage extension])
1339*4882a593SmuzhiyunDAMAGE_LIB='$(top_builddir)/damageext/libdamageext.la'
1340*4882a593SmuzhiyunDAMAGE_INC='-I$(top_srcdir)/damageext'
1341*4882a593SmuzhiyunMIEXT_DAMAGE_LIB='$(top_builddir)/miext/damage/libdamage.la'
1342*4882a593SmuzhiyunMIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
1343*4882a593Smuzhiyun
1344*4882a593Smuzhiyun# XINPUT extension is integral part of the server
1345*4882a593SmuzhiyunAC_DEFINE(XINPUT, 1, [Support X Input extension])
1346*4882a593SmuzhiyunXI_LIB='$(top_builddir)/Xi/libXi.la'
1347*4882a593SmuzhiyunXI_INC='-I$(top_srcdir)/Xi'
1348*4882a593Smuzhiyun
1349*4882a593SmuzhiyunAM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
1350*4882a593SmuzhiyunAM_CONDITIONAL(VGAHW, test "x$VGAHW" = xyes)
1351*4882a593SmuzhiyunAM_CONDITIONAL(VBE, test "x$VBE" = xyes)
1352*4882a593SmuzhiyunAM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
1353*4882a593Smuzhiyun
1354*4882a593SmuzhiyunAC_DEFINE(SHAPE, 1, [Support SHAPE extension])
1355*4882a593Smuzhiyun
1356*4882a593Smuzhiyunif test "x$XKBPATH" = "xauto"; then
1357*4882a593Smuzhiyun    XKBPATH=$(pkg-config --variable datadir xkbcomp || echo ${datadir})/X11/xkb
1358*4882a593Smuzhiyunfi
1359*4882a593Smuzhiyun
1360*4882a593SmuzhiyunAC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
1361*4882a593SmuzhiyunAC_ARG_WITH(xkb-bin-directory,
1362*4882a593Smuzhiyun				AS_HELP_STRING([--with-xkb-bin-directory=DIR], [Directory containing xkbcomp program (default: auto)]),
1363*4882a593Smuzhiyun				[XKB_BIN_DIRECTORY="$withval"],
1364*4882a593Smuzhiyun				[XKB_BIN_DIRECTORY="auto"])
1365*4882a593Smuzhiyun
1366*4882a593Smuzhiyunif test "x$XKB_BIN_DIRECTORY" = "xauto"; then
1367*4882a593Smuzhiyun    XKB_BIN_DIRECTORY=$(pkg-config --variable bindir xkbcomp || echo ${bindir})
1368*4882a593Smuzhiyunfi
1369*4882a593Smuzhiyun
1370*4882a593SmuzhiyunAC_DEFINE_DIR(XKB_BIN_DIRECTORY, XKB_BIN_DIRECTORY, [Path to XKB bin dir])
1371*4882a593Smuzhiyun
1372*4882a593Smuzhiyundnl Make sure XKM_OUTPUT_DIR is an absolute path
1373*4882a593SmuzhiyunXKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
1374*4882a593Smuzhiyunif [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
1375*4882a593Smuzhiyun   XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
1376*4882a593Smuzhiyunfi
1377*4882a593Smuzhiyun
1378*4882a593Smuzhiyundnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
1379*4882a593Smuzhiyundnl XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
1380*4882a593Smuzhiyun
1381*4882a593SmuzhiyunXKBOUTPUT=`echo $XKBOUTPUT/ | $SED 's|/*$|/|'`
1382*4882a593SmuzhiyunXKB_COMPILED_DIR=`echo $XKBOUTPUT | $SED 's|/*$||'`
1383*4882a593SmuzhiyunAC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
1384*4882a593SmuzhiyunAC_SUBST(XKB_COMPILED_DIR)
1385*4882a593Smuzhiyun
1386*4882a593Smuzhiyunif test "x$XKB_DFLT_RULES" = x; then
1387*4882a593Smuzhiyun    case $host_os in
1388*4882a593Smuzhiyun    linux*)
1389*4882a593Smuzhiyun        dnl doesn't take AutoAddDevices into account, but whatever.
1390*4882a593Smuzhiyun        XKB_DFLT_RULES="evdev"
1391*4882a593Smuzhiyun        ;;
1392*4882a593Smuzhiyun    *)
1393*4882a593Smuzhiyun        XKB_DFLT_RULES="base"
1394*4882a593Smuzhiyun        ;;
1395*4882a593Smuzhiyun    esac
1396*4882a593Smuzhiyunfi
1397*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XKB_DFLT_RULES, ["$XKB_DFLT_RULES"], [Default XKB ruleset])
1398*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XKB_DFLT_MODEL, ["$XKB_DFLT_MODEL"], [Default XKB model])
1399*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XKB_DFLT_LAYOUT, ["$XKB_DFLT_LAYOUT"], [Default XKB layout])
1400*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XKB_DFLT_VARIANT, ["$XKB_DFLT_VARIANT"], [Default XKB variant])
1401*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XKB_DFLT_OPTIONS, ["$XKB_DFLT_OPTIONS"], [Default XKB options])
1402*4882a593SmuzhiyunAC_SUBST([XKB_DFLT_RULES])
1403*4882a593SmuzhiyunAC_SUBST([XKB_DFLT_MODEL])
1404*4882a593SmuzhiyunAC_SUBST([XKB_DFLT_LAYOUT])
1405*4882a593SmuzhiyunAC_SUBST([XKB_DFLT_VARIANT])
1406*4882a593SmuzhiyunAC_SUBST([XKB_DFLT_OPTIONS])
1407*4882a593Smuzhiyun
1408*4882a593SmuzhiyunXKB_LIB='$(top_builddir)/xkb/libxkb.la'
1409*4882a593SmuzhiyunXKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
1410*4882a593SmuzhiyunREQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
1411*4882a593Smuzhiyun
1412*4882a593SmuzhiyunPKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
1413*4882a593Smuzhiyunif test "x$XDMCP" = xauto; then
1414*4882a593Smuzhiyun	if test "x$have_libxdmcp" = xyes; then
1415*4882a593Smuzhiyun		XDMCP=yes
1416*4882a593Smuzhiyun	else
1417*4882a593Smuzhiyun		XDMCP=no
1418*4882a593Smuzhiyun	fi
1419*4882a593Smuzhiyunfi
1420*4882a593Smuzhiyunif test "x$XDMAUTH" = xauto; then
1421*4882a593Smuzhiyun	if test "x$have_libxdmcp" = xyes; then
1422*4882a593Smuzhiyun		XDMAUTH=yes
1423*4882a593Smuzhiyun	else
1424*4882a593Smuzhiyun		XDMAUTH=no
1425*4882a593Smuzhiyun	fi
1426*4882a593Smuzhiyunfi
1427*4882a593Smuzhiyun
1428*4882a593SmuzhiyunAM_CONDITIONAL(XDMCP, [test "x$XDMCP" = xyes])
1429*4882a593Smuzhiyunif test "x$XDMCP" = xyes; then
1430*4882a593Smuzhiyun	AC_DEFINE(XDMCP, 1, [Support XDM Control Protocol])
1431*4882a593Smuzhiyun	REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
1432*4882a593Smuzhiyun	XDMCP_MODULES="xdmcp"
1433*4882a593Smuzhiyunfi
1434*4882a593Smuzhiyun
1435*4882a593SmuzhiyunAM_CONDITIONAL(XDMAUTH, [test "x$XDMAUTH" = xyes])
1436*4882a593Smuzhiyunif test "x$XDMAUTH" = xyes; then
1437*4882a593Smuzhiyun	AC_DEFINE(HASXDMAUTH,1,[Support XDM-AUTH*-1])
1438*4882a593Smuzhiyun	if ! test "x$XDMCP" = xyes; then
1439*4882a593Smuzhiyun		REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
1440*4882a593Smuzhiyun		XDMCP_MODULES="xdmcp"
1441*4882a593Smuzhiyun	fi
1442*4882a593Smuzhiyunfi
1443*4882a593Smuzhiyun
1444*4882a593Smuzhiyunif test "x$XF86VIDMODE" = xauto; then
1445*4882a593Smuzhiyun	PKG_CHECK_EXISTS($VIDMODEPROTO, [XF86VIDMODE=yes], [XF86VIDMODE=no])
1446*4882a593Smuzhiyunfi
1447*4882a593Smuzhiyunif test "x$XF86VIDMODE" = xyes; then
1448*4882a593Smuzhiyun	AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
1449*4882a593Smuzhiyunfi
1450*4882a593SmuzhiyunAM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
1451*4882a593Smuzhiyun
1452*4882a593SmuzhiyunAC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
1453*4882a593SmuzhiyunAC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
1454*4882a593SmuzhiyunAC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path])
1455*4882a593Smuzhiyundridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
1456*4882a593SmuzhiyunAC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path])
1457*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_NAME"], [Vendor name])
1458*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_NAME_SHORT"], [Short vendor name])
1459*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
1460*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
1461*4882a593Smuzhiyun
1462*4882a593Smuzhiyunif test -z "$OSNAME"; then
1463*4882a593Smuzhiyun    OSNAME="UNKNOWN"
1464*4882a593Smuzhiyunfi
1465*4882a593Smuzhiyun
1466*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
1467*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
1468*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
1469*4882a593Smuzhiyun
1470*4882a593SmuzhiyunAC_SUBST([VENDOR_NAME_SHORT])
1471*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(VENDOR_NAME, ["$VENDOR_NAME"], [Vendor name])
1472*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(VENDOR_NAME_SHORT, ["$VENDOR_NAME_SHORT"], [Vendor name])
1473*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(VENDOR_RELEASE, [$VENDOR_RELEASE], [Vendor release])
1474*4882a593SmuzhiyunAC_DEFINE_UNQUOTED(VENDOR_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
1475*4882a593Smuzhiyun
1476*4882a593Smuzhiyunif test "x$DEBUGGING" = xyes; then
1477*4882a593Smuzhiyun       AC_DEFINE(DEBUG, 1, [Enable debugging code])
1478*4882a593Smuzhiyunfi
1479*4882a593SmuzhiyunAM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
1480*4882a593Smuzhiyun
1481*4882a593SmuzhiyunAC_DEFINE(XTEST, 1, [Support XTest extension])
1482*4882a593SmuzhiyunAC_DEFINE(XSYNC, 1, [Support XSync extension])
1483*4882a593SmuzhiyunAC_DEFINE(XCMISC, 1, [Support XCMisc extension])
1484*4882a593SmuzhiyunAC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
1485*4882a593Smuzhiyun
1486*4882a593Smuzhiyunif test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
1487*4882a593Smuzhiyun  DIX_LIB='$(top_builddir)/dix/dix.O'
1488*4882a593Smuzhiyun  OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS) $(LIBUNWIND_LIBS)'
1489*4882a593Smuzhiyunelse
1490*4882a593Smuzhiyun  DIX_LIB='$(top_builddir)/dix/libdix.la'
1491*4882a593Smuzhiyun  OS_LIB='$(top_builddir)/os/libos.la'
1492*4882a593Smuzhiyunfi
1493*4882a593SmuzhiyunAC_SUBST([DIX_LIB])
1494*4882a593SmuzhiyunAC_SUBST([OS_LIB])
1495*4882a593Smuzhiyun
1496*4882a593SmuzhiyunMAIN_LIB='$(top_builddir)/dix/libmain.la'
1497*4882a593SmuzhiyunAC_SUBST([MAIN_LIB])
1498*4882a593Smuzhiyun
1499*4882a593SmuzhiyunMI_LIB='$(top_builddir)/mi/libmi.la'
1500*4882a593SmuzhiyunMI_EXT_LIB='$(top_builddir)/mi/libmiext.la'
1501*4882a593SmuzhiyunMI_INC='-I$(top_srcdir)/mi'
1502*4882a593SmuzhiyunFB_LIB='$(top_builddir)/fb/libfb.la'
1503*4882a593SmuzhiyunFB_INC='-I$(top_srcdir)/fb'
1504*4882a593SmuzhiyunMIEXT_SHADOW_INC='-I$(top_srcdir)/miext/shadow'
1505*4882a593SmuzhiyunMIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.la'
1506*4882a593SmuzhiyunMIEXT_SYNC_INC='-I$(top_srcdir)/miext/sync'
1507*4882a593SmuzhiyunMIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
1508*4882a593SmuzhiyunCORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
1509*4882a593Smuzhiyun
1510*4882a593Smuzhiyun# SHA1 hashing
1511*4882a593SmuzhiyunAC_ARG_WITH([sha1],
1512*4882a593Smuzhiyun            [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1513*4882a593Smuzhiyun                            [choose SHA1 implementation])])
1514*4882a593SmuzhiyunAC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1515*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1516*4882a593Smuzhiyun	with_sha1=libc
1517*4882a593Smuzhiyunfi
1518*4882a593Smuzhiyunif test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1519*4882a593Smuzhiyun	AC_MSG_ERROR([libc requested but not found])
1520*4882a593Smuzhiyunfi
1521*4882a593Smuzhiyunif test "x$with_sha1" = xlibc; then
1522*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1523*4882a593Smuzhiyun		[Use libc SHA1 functions])
1524*4882a593Smuzhiyun	SHA1_LIBS=""
1525*4882a593Smuzhiyunfi
1526*4882a593SmuzhiyunAC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1527*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1528*4882a593Smuzhiyun	with_sha1=CommonCrypto
1529*4882a593Smuzhiyunfi
1530*4882a593Smuzhiyunif test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1531*4882a593Smuzhiyun	AC_MSG_ERROR([CommonCrypto requested but not found])
1532*4882a593Smuzhiyunfi
1533*4882a593Smuzhiyunif test "x$with_sha1" = xCommonCrypto; then
1534*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1535*4882a593Smuzhiyun		[Use CommonCrypto SHA1 functions])
1536*4882a593Smuzhiyun	SHA1_LIBS=""
1537*4882a593Smuzhiyunfi
1538*4882a593Smuzhiyundnl stdcall functions cannot be tested with AC_CHECK_LIB
1539*4882a593SmuzhiyunAC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1540*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1541*4882a593Smuzhiyun	with_sha1=CryptoAPI
1542*4882a593Smuzhiyunfi
1543*4882a593Smuzhiyunif test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1544*4882a593Smuzhiyun	AC_MSG_ERROR([CryptoAPI requested but not found])
1545*4882a593Smuzhiyunfi
1546*4882a593Smuzhiyunif test "x$with_sha1" = xCryptoAPI; then
1547*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1548*4882a593Smuzhiyun		[Use CryptoAPI SHA1 functions])
1549*4882a593Smuzhiyun	SHA1_LIBS=""
1550*4882a593Smuzhiyunfi
1551*4882a593SmuzhiyunAC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1552*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1553*4882a593Smuzhiyun	with_sha1=libmd
1554*4882a593Smuzhiyunfi
1555*4882a593Smuzhiyunif test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1556*4882a593Smuzhiyun	AC_MSG_ERROR([libmd requested but not found])
1557*4882a593Smuzhiyunfi
1558*4882a593Smuzhiyunif test "x$with_sha1" = xlibmd; then
1559*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1560*4882a593Smuzhiyun	          [Use libmd SHA1 functions])
1561*4882a593Smuzhiyun	SHA1_LIBS=-lmd
1562*4882a593Smuzhiyunfi
1563*4882a593SmuzhiyunPKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1564*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1565*4882a593Smuzhiyun   with_sha1=libsha1
1566*4882a593Smuzhiyunfi
1567*4882a593Smuzhiyunif test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1568*4882a593Smuzhiyun	AC_MSG_ERROR([libsha1 requested but not found])
1569*4882a593Smuzhiyunfi
1570*4882a593Smuzhiyunif test "x$with_sha1" = xlibsha1; then
1571*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1572*4882a593Smuzhiyun	          [Use libsha1 for SHA1])
1573*4882a593Smuzhiyun	SHA1_LIBS=-lsha1
1574*4882a593Smuzhiyunfi
1575*4882a593SmuzhiyunAC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1576*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1577*4882a593Smuzhiyun	with_sha1=libnettle
1578*4882a593Smuzhiyunfi
1579*4882a593Smuzhiyunif test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1580*4882a593Smuzhiyun	AC_MSG_ERROR([libnettle requested but not found])
1581*4882a593Smuzhiyunfi
1582*4882a593Smuzhiyunif test "x$with_sha1" = xlibnettle; then
1583*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1584*4882a593Smuzhiyun	          [Use libnettle SHA1 functions])
1585*4882a593Smuzhiyun	SHA1_LIBS=-lnettle
1586*4882a593Smuzhiyunfi
1587*4882a593SmuzhiyunAC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1588*4882a593Smuzhiyunif test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1589*4882a593Smuzhiyun	with_sha1=libgcrypt
1590*4882a593Smuzhiyunfi
1591*4882a593Smuzhiyunif test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1592*4882a593Smuzhiyun	AC_MSG_ERROR([libgcrypt requested but not found])
1593*4882a593Smuzhiyunfi
1594*4882a593Smuzhiyunif test "x$with_sha1" = xlibgcrypt; then
1595*4882a593Smuzhiyun	AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1596*4882a593Smuzhiyun	          [Use libgcrypt SHA1 functions])
1597*4882a593Smuzhiyun	SHA1_LIBS=-lgcrypt
1598*4882a593Smuzhiyunfi
1599*4882a593Smuzhiyun# We don't need all of the OpenSSL libraries, just libcrypto
1600*4882a593SmuzhiyunAC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1601*4882a593SmuzhiyunPKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1602*4882a593Smuzhiyun                  [HAVE_OPENSSL_PKC=no])
1603*4882a593Smuzhiyunif test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1604*4882a593Smuzhiyun	if test "x$with_sha1" = x; then
1605*4882a593Smuzhiyun		with_sha1=libcrypto
1606*4882a593Smuzhiyun	fi
1607*4882a593Smuzhiyunelse
1608*4882a593Smuzhiyun	if test "x$with_sha1" = xlibcrypto; then
1609*4882a593Smuzhiyun		AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1610*4882a593Smuzhiyun	fi
1611*4882a593Smuzhiyunfi
1612*4882a593Smuzhiyunif test "x$with_sha1" = xlibcrypto; then
1613*4882a593Smuzhiyun	if test "x$HAVE_LIBCRYPTO" = xyes; then
1614*4882a593Smuzhiyun		SHA1_LIBS=-lcrypto
1615*4882a593Smuzhiyun	else
1616*4882a593Smuzhiyun		SHA1_LIBS="$OPENSSL_LIBS"
1617*4882a593Smuzhiyun		SHA1_CFLAGS="$OPENSSL_CFLAGS"
1618*4882a593Smuzhiyun	fi
1619*4882a593Smuzhiyunfi
1620*4882a593SmuzhiyunAC_MSG_CHECKING([for SHA1 implementation])
1621*4882a593Smuzhiyunif test "x$with_sha1" = x; then
1622*4882a593Smuzhiyun	AC_MSG_ERROR([No suitable SHA1 implementation found])
1623*4882a593Smuzhiyunfi
1624*4882a593SmuzhiyunAC_MSG_RESULT([$with_sha1])
1625*4882a593SmuzhiyunAC_SUBST(SHA1_LIBS)
1626*4882a593SmuzhiyunAC_SUBST(SHA1_CFLAGS)
1627*4882a593Smuzhiyun
1628*4882a593SmuzhiyunPKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
1629*4882a593SmuzhiyunPKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
1630*4882a593Smuzhiyun
1631*4882a593SmuzhiyunPKG_CHECK_MODULES(LIBUNWIND, libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
1632*4882a593Smuzhiyunif test "x$LIBUNWIND" = "xauto"; then
1633*4882a593Smuzhiyun    LIBUNWIND="$HAVE_LIBUNWIND"
1634*4882a593Smuzhiyunfi
1635*4882a593Smuzhiyun
1636*4882a593Smuzhiyunif test "x$LIBUNWIND" = "xyes"; then
1637*4882a593Smuzhiyun    if test "x$HAVE_LIBUNWIND" != "xyes"; then
1638*4882a593Smuzhiyun        AC_MSG_ERROR([libunwind requested but not installed.])
1639*4882a593Smuzhiyun    fi
1640*4882a593Smuzhiyun    AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
1641*4882a593Smuzhiyunfi
1642*4882a593Smuzhiyun
1643*4882a593SmuzhiyunAM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$LIBUNWIND" = xyes])
1644*4882a593Smuzhiyun
1645*4882a593Smuzhiyun# Autotools has some unfortunate issues with library handling.  In order to
1646*4882a593Smuzhiyun# get a server to rebuild when a dependency in the tree is changed, it must
1647*4882a593Smuzhiyun# be listed in SERVERNAME_DEPENDENCIES.  However, no system libraries may be
1648*4882a593Smuzhiyun# listed there, or some versions of autotools will break (especially if a -L
1649*4882a593Smuzhiyun# is required to find the library).  So, we keep two sets of libraries
1650*4882a593Smuzhiyun# detected: NAMESPACE_LIBS for in-tree libraries to be linked against, which
1651*4882a593Smuzhiyun# will go into the _DEPENDENCIES and _LDADD of the server, and
1652*4882a593Smuzhiyun# NAMESPACE_SYS_LIBS which will go into only the _LDADD.  The
1653*4882a593Smuzhiyun# NAMESPACEMODULES_LIBS detected from pkgconfig should always go in
1654*4882a593Smuzhiyun# NAMESPACE_SYS_LIBS.
1655*4882a593Smuzhiyun#
1656*4882a593Smuzhiyun# XSERVER_LIBS is the set of in-tree libraries which all servers require.
1657*4882a593Smuzhiyun# XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
1658*4882a593Smuzhiyun# require.
1659*4882a593Smuzhiyun#
1660*4882a593SmuzhiyunXSERVER_CFLAGS="${XSERVER_CFLAGS} ${XSERVERCFLAGS_CFLAGS}"
1661*4882a593SmuzhiyunXSERVER_LIBS="$DIX_LIB $MI_LIB $OS_LIB"
1662*4882a593SmuzhiyunXSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
1663*4882a593SmuzhiyunAC_SUBST([XSERVER_LIBS])
1664*4882a593SmuzhiyunAC_SUBST([XSERVER_SYS_LIBS])
1665*4882a593Smuzhiyun
1666*4882a593SmuzhiyunUTILS_SYS_LIBS="${SYS_LIBS}"
1667*4882a593SmuzhiyunAC_SUBST([UTILS_SYS_LIBS])
1668*4882a593Smuzhiyun
1669*4882a593Smuzhiyun# The Xorg binary needs to export symbols so that they can be used from modules
1670*4882a593Smuzhiyun# Some platforms require extra flags to do this.   libtool should set the
1671*4882a593Smuzhiyun# necessary flags for each platform when -export-dynamic is passed to it.
1672*4882a593SmuzhiyunLD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
1673*4882a593SmuzhiyunLD_NO_UNDEFINED_FLAG=
1674*4882a593SmuzhiyunXORG_DRIVER_LIBS=
1675*4882a593Smuzhiyuncase "$host_os" in
1676*4882a593Smuzhiyun    cygwin*)
1677*4882a593Smuzhiyun	LD_EXPORT_SYMBOLS_FLAG="-Wl,--export-all,--out-implib,lib\$@.a"
1678*4882a593Smuzhiyun	LD_NO_UNDEFINED_FLAG="-no-undefined -Wl,\$(top_builddir)/hw/xfree86/libXorg.exe.a"
1679*4882a593Smuzhiyun	XORG_DRIVER_LIBS="-lXorg.exe -L\${moduledir} -lshadow -lfb -no-undefined"
1680*4882a593Smuzhiyun	CYGWIN=yes
1681*4882a593Smuzhiyun	;;
1682*4882a593Smuzhiyun    solaris*)
1683*4882a593Smuzhiyun	# We use AC_LINK_IFELSE to generate a temporary program conftest$EXEEXT
1684*4882a593Smuzhiyun	# that we can link against for testing if the system linker is new
1685*4882a593Smuzhiyun	# enough to support -z parent=<program> for verifying loadable modules
1686*4882a593Smuzhiyun	# are only calling functions defined in either the loading program or
1687*4882a593Smuzhiyun	# the libraries they're linked with.
1688*4882a593Smuzhiyun	AC_LINK_IFELSE(
1689*4882a593Smuzhiyun	    [AC_LANG_SOURCE([int main(int argc, char **argv) { return 0; }])],
1690*4882a593Smuzhiyun	    [mv conftest$EXEEXT conftest.parent
1691*4882a593Smuzhiyun	     XORG_CHECK_LINKER_FLAGS([-Wl,-z,parent=conftest.parent -G],
1692*4882a593Smuzhiyun		[LD_NO_UNDEFINED_FLAG="-Wl,-z,defs -Wl,-z,parent=\$(top_builddir)/hw/xfree86/Xorg"
1693*4882a593Smuzhiyun# Not set yet, since this gets exported in xorg-server.pc to all the drivers,
1694*4882a593Smuzhiyun# and they're not all fixed to build correctly with it yet.
1695*4882a593Smuzhiyun#		 XORG_DRIVER_LIBS="-Wl,-z,defs -Wl,-z,parent=${bindir}/Xorg"
1696*4882a593Smuzhiyun         ],[],
1697*4882a593Smuzhiyun		[AC_LANG_SOURCE([extern int main(int argc, char **argv);
1698*4882a593Smuzhiyun			int call_main(void) { return main(0, (void *)0); }])])
1699*4882a593Smuzhiyun	     rm -f conftest.parent
1700*4882a593Smuzhiyun	    ])
1701*4882a593Smuzhiyun	;;
1702*4882a593Smuzhiyunesac
1703*4882a593SmuzhiyunAC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
1704*4882a593SmuzhiyunAC_SUBST([LD_NO_UNDEFINED_FLAG])
1705*4882a593SmuzhiyunAC_SUBST([XORG_DRIVER_LIBS])
1706*4882a593SmuzhiyunAM_CONDITIONAL([CYGWIN], [test x"$CYGWIN" = xyes])
1707*4882a593SmuzhiyunAM_CONDITIONAL([NO_UNDEFINED], [test x"$LD_NO_UNDEFINED_FLAG" != x])
1708*4882a593Smuzhiyun
1709*4882a593Smuzhiyundnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
1710*4882a593Smuzhiyundnl we need to replicate that here until those can all be fixed
1711*4882a593SmuzhiyunAC_MSG_CHECKING([if SVR4 needs to be defined])
1712*4882a593SmuzhiyunAC_EGREP_CPP([I_AM_SVR4],[
1713*4882a593Smuzhiyun#if defined(SVR4) || defined(__svr4__) || defined(__SVR4)
1714*4882a593Smuzhiyun I_AM_SVR4
1715*4882a593Smuzhiyun#endif
1716*4882a593Smuzhiyun],[
1717*4882a593SmuzhiyunAC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4])
1718*4882a593SmuzhiyunAC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
1719*4882a593Smuzhiyun
1720*4882a593SmuzhiyunXSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SYNC_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC $DBE_INC $PRESENT_INC"
1721*4882a593Smuzhiyun
1722*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
1723*4882a593Smuzhiyundnl DDX section.
1724*4882a593Smuzhiyundnl ---------------------------------------------------------------------------
1725*4882a593Smuzhiyun
1726*4882a593Smuzhiyundnl Xvfb DDX
1727*4882a593Smuzhiyun
1728*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build Xvfb DDX])
1729*4882a593SmuzhiyunAC_MSG_RESULT([$XVFB])
1730*4882a593SmuzhiyunAM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
1731*4882a593Smuzhiyun
1732*4882a593Smuzhiyunif test "x$XVFB" = xyes; then
1733*4882a593Smuzhiyun	XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
1734*4882a593Smuzhiyun	XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
1735*4882a593Smuzhiyun	AC_SUBST([XVFB_LIBS])
1736*4882a593Smuzhiyun	AC_SUBST([XVFB_SYS_LIBS])
1737*4882a593Smuzhiyunfi
1738*4882a593Smuzhiyun
1739*4882a593Smuzhiyun
1740*4882a593Smuzhiyundnl Xnest DDX
1741*4882a593Smuzhiyun
1742*4882a593SmuzhiyunPKG_CHECK_MODULES(XNESTMODULES, [$LIBXEXT x11 xau $XDMCP_MODULES], [have_xnest=yes], [have_xnest=no])
1743*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build Xnest DDX])
1744*4882a593Smuzhiyunif test "x$XNEST" = xauto; then
1745*4882a593Smuzhiyun	XNEST="$have_xnest"
1746*4882a593Smuzhiyunfi
1747*4882a593SmuzhiyunAC_MSG_RESULT([$XNEST])
1748*4882a593SmuzhiyunAM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
1749*4882a593Smuzhiyun
1750*4882a593Smuzhiyunif test "x$XNEST" = xyes; then
1751*4882a593Smuzhiyun	if test "x$have_xnest" = xno; then
1752*4882a593Smuzhiyun		AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
1753*4882a593Smuzhiyun	fi
1754*4882a593Smuzhiyun	XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $DAMAGE_LIB  $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $RENDER_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
1755*4882a593Smuzhiyun	XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
1756*4882a593Smuzhiyun	AC_SUBST([XNEST_LIBS])
1757*4882a593Smuzhiyun	AC_SUBST([XNEST_SYS_LIBS])
1758*4882a593Smuzhiyunfi
1759*4882a593Smuzhiyun
1760*4882a593Smuzhiyun
1761*4882a593Smuzhiyundnl Xorg DDX
1762*4882a593Smuzhiyun
1763*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build Xorg DDX])
1764*4882a593Smuzhiyunif test "x$XORG" = xauto; then
1765*4882a593Smuzhiyun	XORG="yes"
1766*4882a593Smuzhiyun	case $host_os in
1767*4882a593Smuzhiyun		cygwin*) XORG="no" ;;
1768*4882a593Smuzhiyun		mingw*)  XORG="no" ;;
1769*4882a593Smuzhiyun		darwin*) XORG="no" ;;
1770*4882a593Smuzhiyun	esac
1771*4882a593Smuzhiyunfi
1772*4882a593SmuzhiyunAC_MSG_RESULT([$XORG])
1773*4882a593Smuzhiyun
1774*4882a593Smuzhiyunif test "x$XORG" = xyes; then
1775*4882a593Smuzhiyun	XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
1776*4882a593Smuzhiyun	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
1777*4882a593Smuzhiyun	XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
1778*4882a593Smuzhiyun	XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
1779*4882a593Smuzhiyun	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $XI_LIB $XKB_LIB"
1780*4882a593Smuzhiyun
1781*4882a593Smuzhiyun	dnl ==================================================================
1782*4882a593Smuzhiyun	dnl symbol visibility
1783*4882a593Smuzhiyun	symbol_visibility=
1784*4882a593Smuzhiyun	have_visibility=disabled
1785*4882a593Smuzhiyun	if test x$SYMBOL_VISIBILITY != xno; then
1786*4882a593Smuzhiyun	    AC_MSG_CHECKING(for symbol visibility support)
1787*4882a593Smuzhiyun	    if test x$GCC = xyes; then
1788*4882a593Smuzhiyun		VISIBILITY_CFLAGS="-fvisibility=hidden"
1789*4882a593Smuzhiyun	    else
1790*4882a593Smuzhiyun		if test x$SUNCC = xyes; then
1791*4882a593Smuzhiyun		    VISIBILITY_CFLAGS="-xldscope=hidden"
1792*4882a593Smuzhiyun		else
1793*4882a593Smuzhiyun		    have_visibility=no
1794*4882a593Smuzhiyun		fi
1795*4882a593Smuzhiyun	    fi
1796*4882a593Smuzhiyun	    if test x$have_visibility != xno; then
1797*4882a593Smuzhiyun		save_CFLAGS="$CFLAGS"
1798*4882a593Smuzhiyun		proto_inc=`$PKG_CONFIG --cflags xproto`
1799*4882a593Smuzhiyun		CFLAGS="$CFLAGS $VISIBILITY_CFLAGS $proto_inc"
1800*4882a593Smuzhiyun		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
1801*4882a593Smuzhiyun		    [#include <X11/Xfuncproto.h>
1802*4882a593Smuzhiyun		     extern _X_HIDDEN int hidden_int;
1803*4882a593Smuzhiyun		     extern _X_EXPORT int public_int;
1804*4882a593Smuzhiyun		     extern _X_HIDDEN int hidden_int_func(void);
1805*4882a593Smuzhiyun		     extern _X_EXPORT int public_int_func(void);]],
1806*4882a593Smuzhiyun		    [])],
1807*4882a593Smuzhiyun		    have_visibility=yes,
1808*4882a593Smuzhiyun		    have_visibility=no)
1809*4882a593Smuzhiyun		CFLAGS=$save_CFLAGS
1810*4882a593Smuzhiyun	    fi
1811*4882a593Smuzhiyun	    AC_MSG_RESULT([$have_visibility])
1812*4882a593Smuzhiyun	    if test x$have_visibility != xno; then
1813*4882a593Smuzhiyun		symbol_visibility=$VISIBILITY_CFLAGS
1814*4882a593Smuzhiyun		XORG_CFLAGS="$XORG_CFLAGS $VISIBILITY_CFLAGS"
1815*4882a593Smuzhiyun		XSERVER_CFLAGS="$XSERVER_CFLAGS $VISIBILITY_CFLAGS"
1816*4882a593Smuzhiyun	    fi
1817*4882a593Smuzhiyun	fi
1818*4882a593Smuzhiyun	dnl added to xorg-server.pc
1819*4882a593Smuzhiyun	AC_SUBST([symbol_visibility])
1820*4882a593Smuzhiyun	dnl ===================================================================
1821*4882a593Smuzhiyun
1822*4882a593Smuzhiyun	dnl ===================================================================
1823*4882a593Smuzhiyun	dnl ================= beginning of PCI configuration ==================
1824*4882a593Smuzhiyun	dnl ===================================================================
1825*4882a593Smuzhiyun	xorg_bus_bsdpci=no
1826*4882a593Smuzhiyun	xorg_bus_sparc=no
1827*4882a593Smuzhiyun
1828*4882a593Smuzhiyun	AC_MSG_CHECKING([whether to build Xorg PCI functions])
1829*4882a593Smuzhiyun	if test "x$PCI" = xyes; then
1830*4882a593Smuzhiyun		PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
1831*4882a593Smuzhiyun		SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
1832*4882a593Smuzhiyun		XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $LIBDRM_LIBS"
1833*4882a593Smuzhiyun		XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS"
1834*4882a593Smuzhiyun
1835*4882a593Smuzhiyun		AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
1836*4882a593Smuzhiyun		AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
1837*4882a593Smuzhiyun		case $host_os in
1838*4882a593Smuzhiyun		  gnu* | freebsd* | kfreebsd*-gnu | netbsd* | openbsd* | solaris* | dragonfly*)
1839*4882a593Smuzhiyun			xorg_bus_bsdpci="yes"
1840*4882a593Smuzhiyun			;;
1841*4882a593Smuzhiyun		esac
1842*4882a593Smuzhiyun		case $host_cpu in
1843*4882a593Smuzhiyun		  sparc*)
1844*4882a593Smuzhiyun			xorg_bus_sparc="yes"
1845*4882a593Smuzhiyun			;;
1846*4882a593Smuzhiyun		esac
1847*4882a593Smuzhiyun	else
1848*4882a593Smuzhiyun		if test "x$CONFIG_UDEV_KMS" = xyes; then
1849*4882a593Smuzhiyun			AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
1850*4882a593Smuzhiyun		fi
1851*4882a593Smuzhiyun		if test "x$INT10MODULE" = xyes && test "x$INT10" != xstub; then
1852*4882a593Smuzhiyun			AC_MSG_ERROR([Cannot build int10 without libpciaccess])
1853*4882a593Smuzhiyun		fi
1854*4882a593Smuzhiyun	fi
1855*4882a593Smuzhiyun	AC_MSG_RESULT([$PCI])
1856*4882a593Smuzhiyun
1857*4882a593Smuzhiyun	if test "x$CONFIG_UDEV_KMS" = xyes; then
1858*4882a593Smuzhiyun		AC_DEFINE(XSERVER_PLATFORM_BUS, 1, [X server supports platform device enumeration])
1859*4882a593Smuzhiyun	fi
1860*4882a593Smuzhiyun	AC_MSG_RESULT([$XSERVER_PLATFORM_BUS])
1861*4882a593Smuzhiyun	dnl ===================================================================
1862*4882a593Smuzhiyun	dnl ==================== end of PCI configuration =====================
1863*4882a593Smuzhiyun	dnl ===================================================================
1864*4882a593Smuzhiyun
1865*4882a593Smuzhiyun	case $host_os in
1866*4882a593Smuzhiyun	  linux*)
1867*4882a593Smuzhiyun		XORG_OS_SUBDIR="linux"
1868*4882a593Smuzhiyun		linux_acpi="no"
1869*4882a593Smuzhiyun		case $host_cpu in
1870*4882a593Smuzhiyun		  i*86|amd64*|x86_64*|ia64*)
1871*4882a593Smuzhiyun			linux_acpi=$enable_linux_acpi
1872*4882a593Smuzhiyun			;;
1873*4882a593Smuzhiyun		  *)
1874*4882a593Smuzhiyun			;;
1875*4882a593Smuzhiyun		esac
1876*4882a593Smuzhiyun		dnl APM header
1877*4882a593Smuzhiyun		AC_CHECK_HEADERS([linux/apm_bios.h], [linux_apm=$enable_linux_apm])
1878*4882a593Smuzhiyun		if test "x$linux_apm" = xyes -o "x$linux_acpi" = xyes; then
1879*4882a593Smuzhiyun			AC_DEFINE(XF86PM, 1, [Support APM/ACPI power management in the server])
1880*4882a593Smuzhiyun		fi
1881*4882a593Smuzhiyun		;;
1882*4882a593Smuzhiyun	  freebsd* | kfreebsd*-gnu | dragonfly*)
1883*4882a593Smuzhiyun		XORG_OS_SUBDIR="bsd"
1884*4882a593Smuzhiyun		;;
1885*4882a593Smuzhiyun	  netbsd*)
1886*4882a593Smuzhiyun		XORG_OS_SUBDIR="bsd"
1887*4882a593Smuzhiyun		;;
1888*4882a593Smuzhiyun	  openbsd*)
1889*4882a593Smuzhiyun		if test "x$ac_cv_BSD_APM" = xyes \
1890*4882a593Smuzhiyun			-o "x$ac_cv_BSD_KQUEUE_APM" = xyes; then
1891*4882a593Smuzhiyun			XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
1892*4882a593Smuzhiyun		fi
1893*4882a593Smuzhiyun		XORG_OS_SUBDIR="bsd"
1894*4882a593Smuzhiyun		;;
1895*4882a593Smuzhiyun	  solaris*)
1896*4882a593Smuzhiyun		XORG_OS_SUBDIR="solaris"
1897*4882a593Smuzhiyun		XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
1898*4882a593Smuzhiyun		AC_CHECK_HEADERS([sys/kd.h])
1899*4882a593Smuzhiyun		AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
1900*4882a593Smuzhiyun		# Check for minimum supported release
1901*4882a593Smuzhiyun		AC_MSG_CHECKING([Solaris version])
1902*4882a593Smuzhiyun	        OS_MINOR=`echo ${host_os}|$SED -e 's/^.*solaris2\.//' -e s'/\..*$//'`
1903*4882a593Smuzhiyun		if test "${OS_MINOR}" -ge 7 ; then
1904*4882a593Smuzhiyun	        	AC_MSG_RESULT(Solaris ${OS_MINOR})
1905*4882a593Smuzhiyun		else
1906*4882a593Smuzhiyun			AC_MSG_RESULT(Solaris `echo ${host_os}|$SED -e 's/^.*solaris//`)
1907*4882a593Smuzhiyun		fi
1908*4882a593Smuzhiyun		if test "${OS_MINOR}" -lt 8 ; then
1909*4882a593Smuzhiyun			AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
1910*4882a593Smuzhiyun		fi
1911*4882a593Smuzhiyun		AC_CHECK_DECL([_LP64], [SOLARIS_64="yes"], [SOLARIS_64="no"])
1912*4882a593Smuzhiyun
1913*4882a593Smuzhiyun		case $host_cpu in
1914*4882a593Smuzhiyun		  sparc*)
1915*4882a593Smuzhiyun			SOLARIS_INOUT_ARCH="sparcv8plus"
1916*4882a593Smuzhiyun			;;
1917*4882a593Smuzhiyun		  i*86|x86_64*)
1918*4882a593Smuzhiyun			if test x$SOLARIS_64 = xyes ; then
1919*4882a593Smuzhiyun				SOLARIS_INOUT_ARCH="amd64"
1920*4882a593Smuzhiyun			else
1921*4882a593Smuzhiyun				SOLARIS_INOUT_ARCH="ia32"
1922*4882a593Smuzhiyun			fi
1923*4882a593Smuzhiyun			;;
1924*4882a593Smuzhiyun		  *)
1925*4882a593Smuzhiyun			AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \
1926*4882a593Smuzhiyun			are supported on Solaris in this release.   If you are \
1927*4882a593Smuzhiyun			interested in porting Xorg to your platform, please email \
1928*4882a593Smuzhiyun			xorg@lists.freedesktop.org.]) ;;
1929*4882a593Smuzhiyun		esac
1930*4882a593Smuzhiyun		AC_SUBST([SOLARIS_INOUT_ARCH])
1931*4882a593Smuzhiyun		;;
1932*4882a593Smuzhiyun	  gnu*)
1933*4882a593Smuzhiyun		XORG_OS_SUBDIR="hurd"
1934*4882a593Smuzhiyun		;;
1935*4882a593Smuzhiyun	  cygwin*)
1936*4882a593Smuzhiyun		XORG_OS_SUBDIR="stub"
1937*4882a593Smuzhiyun		;;
1938*4882a593Smuzhiyun	  *)
1939*4882a593Smuzhiyun		XORG_OS_SUBDIR="stub"
1940*4882a593Smuzhiyun		AC_MSG_NOTICE([m4_text_wrap(m4_join([ ],
1941*4882a593Smuzhiyun		[Your OS is unknown.],
1942*4882a593Smuzhiyun		[If you are interested in porting Xorg to your platform,],
1943*4882a593Smuzhiyun		[please email xorg@lists.freedesktop.org.]))])
1944*4882a593Smuzhiyun		;;
1945*4882a593Smuzhiyun	esac
1946*4882a593Smuzhiyun
1947*4882a593Smuzhiyun	if test "x$DGA" = xauto; then
1948*4882a593Smuzhiyun		PKG_CHECK_MODULES(DGA, $DGAPROTO, [DGA=yes], [DGA=no])
1949*4882a593Smuzhiyun	fi
1950*4882a593Smuzhiyun	if test "x$DGA" = xyes; then
1951*4882a593Smuzhiyun		XORG_MODULES="$XORG_MODULES $DGAPROTO"
1952*4882a593Smuzhiyun		PKG_CHECK_MODULES(DGA, $DGAPROTO)
1953*4882a593Smuzhiyun		AC_DEFINE(DGA, 1, [Support DGA extension])
1954*4882a593Smuzhiyun		AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
1955*4882a593Smuzhiyun	fi
1956*4882a593Smuzhiyun
1957*4882a593Smuzhiyun	if test "x$XF86VIDMODE" = xyes; then
1958*4882a593Smuzhiyun		XORG_MODULES="$XORG_MODULES $VIDMODEPROTO"
1959*4882a593Smuzhiyun	fi
1960*4882a593Smuzhiyun
1961*4882a593Smuzhiyun	if test -n "$XORG_MODULES"; then
1962*4882a593Smuzhiyun	        PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES])
1963*4882a593Smuzhiyun	        XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS"
1964*4882a593Smuzhiyun	        XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS"
1965*4882a593Smuzhiyun	fi
1966*4882a593Smuzhiyun
1967*4882a593Smuzhiyun	if test "x$DRM" = xyes; then
1968*4882a593Smuzhiyun		XORG_DRIVER_MODESETTING=yes
1969*4882a593Smuzhiyun	fi
1970*4882a593Smuzhiyun
1971*4882a593Smuzhiyun	AC_SUBST([XORG_LIBS])
1972*4882a593Smuzhiyun	AC_SUBST([XORG_SYS_LIBS])
1973*4882a593Smuzhiyun	AC_SUBST([XORG_INCS])
1974*4882a593Smuzhiyun	AC_SUBST([XORG_OS_SUBDIR])
1975*4882a593Smuzhiyun	AC_SUBST([XORG_CFLAGS])
1976*4882a593Smuzhiyun
1977*4882a593Smuzhiyun	dnl these only go in xorg-config.h
1978*4882a593Smuzhiyun	XF86CONFIGFILE="xorg.conf"
1979*4882a593Smuzhiyun	XF86CONFIGDIR="xorg.conf.d"
1980*4882a593Smuzhiyun	AC_SUBST(XF86CONFIGDIR)
1981*4882a593Smuzhiyun	CONFIGFILE="$sysconfdir/$XF86CONFIGFILE"
1982*4882a593Smuzhiyun	LOGPREFIX="Xorg."
1983*4882a593Smuzhiyun	XDG_DATA_HOME=".local/share"
1984*4882a593Smuzhiyun	XDG_DATA_HOME_LOGDIR="xorg"
1985*4882a593Smuzhiyun	AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
1986*4882a593Smuzhiyun	AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
1987*4882a593Smuzhiyun	AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
1988*4882a593Smuzhiyun	AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
1989*4882a593Smuzhiyun	AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
1990*4882a593Smuzhiyun	AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
1991*4882a593Smuzhiyun	AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
1992*4882a593Smuzhiyun	AC_DEFINE_DIR(XCONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
1993*4882a593Smuzhiyun	AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
1994*4882a593Smuzhiyun	AC_DEFINE_DIR(XCONFIGDIR, XF86CONFIGDIR, [Name of configuration directory])
1995*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
1996*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
1997*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
1998*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default logfile prefix])
1999*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_XDG_DATA_HOME, XDG_DATA_HOME, [Default XDG_DATA dir under HOME])
2000*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_XDG_DATA_HOME_LOGDIR, XDG_DATA_HOME_LOGDIR, [Default log dir under XDG_DATA_HOME])
2001*4882a593Smuzhiyun	AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
2002*4882a593Smuzhiyun	if test "x$VGAHW" = xyes; then
2003*4882a593Smuzhiyun		AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
2004*4882a593Smuzhiyun	fi
2005*4882a593Smuzhiyun
2006*4882a593Smuzhiyun	driverdir="$moduledir/drivers"
2007*4882a593Smuzhiyun	AC_SUBST([moduledir])
2008*4882a593Smuzhiyun	AC_SUBST([driverdir])
2009*4882a593Smuzhiyun	sdkdir="$includedir/xorg"
2010*4882a593Smuzhiyun	extdir="$includedir/X11/extensions"
2011*4882a593Smuzhiyun	sysconfigdir="$datadir/X11/$XF86CONFIGDIR"
2012*4882a593Smuzhiyun	AC_SUBST([sdkdir])
2013*4882a593Smuzhiyun	AC_SUBST([extdir])
2014*4882a593Smuzhiyun	AC_SUBST([sysconfigdir])
2015*4882a593Smuzhiyun	AC_SUBST([logdir])
2016*4882a593Smuzhiyun
2017*4882a593Smuzhiyun	# stuff the ABI versions into the pc file too
2018*4882a593Smuzhiyun	extract_abi() {
2019*4882a593Smuzhiyun	    grep ^.define.*${1}_VERSION ${srcdir}/hw/xfree86/common/xf86Module.h | tr '(),' '  .' | awk '{ print $4$5 }'
2020*4882a593Smuzhiyun	}
2021*4882a593Smuzhiyun	abi_ansic=`extract_abi ANSIC`
2022*4882a593Smuzhiyun	abi_videodrv=`extract_abi VIDEODRV`
2023*4882a593Smuzhiyun	abi_xinput=`extract_abi XINPUT`
2024*4882a593Smuzhiyun	abi_extension=`extract_abi EXTENSION`
2025*4882a593Smuzhiyun	AC_SUBST([abi_ansic])
2026*4882a593Smuzhiyun	AC_SUBST([abi_videodrv])
2027*4882a593Smuzhiyun	AC_SUBST([abi_xinput])
2028*4882a593Smuzhiyun	AC_SUBST([abi_extension])
2029*4882a593Smuzhiyunfi
2030*4882a593SmuzhiyunAM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
2031*4882a593SmuzhiyunAM_CONDITIONAL([XORG_BUS_PCI], [test "x$PCI" = xyes])
2032*4882a593SmuzhiyunAM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
2033*4882a593SmuzhiyunAM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
2034*4882a593SmuzhiyunAM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
2035*4882a593SmuzhiyunAM_CONDITIONAL([LNXAPM], [test "x$linux_apm" = xyes])
2036*4882a593SmuzhiyunAM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
2037*4882a593SmuzhiyunAM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
2038*4882a593SmuzhiyunAM_CONDITIONAL([XORG_BUS_PLATFORM], [test "x$CONFIG_UDEV_KMS" = xyes])
2039*4882a593SmuzhiyunAM_CONDITIONAL([XORG_DRIVER_MODESETTING], [test "x$XORG_DRIVER_MODESETTING" = xyes])
2040*4882a593Smuzhiyun
2041*4882a593Smuzhiyunif test "x$GLES_HIGHP" = xyes; then
2042*4882a593Smuzhiyun	AC_DEFINE(GLES_USE_HIGHP, 1, [Use highp as default precision for GLES])
2043*4882a593Smuzhiyunfi
2044*4882a593Smuzhiyun
2045*4882a593Smuzhiyundnl modesetting
2046*4882a593Smuzhiyunif test "x$XORG_DRIVER_MODESETTING" = xyes; then
2047*4882a593Smuzhiyun	RGA_LIBS=
2048*4882a593Smuzhiyun	RGA_HEADER=
2049*4882a593Smuzhiyun
2050*4882a593Smuzhiyun	AC_CHECK_LIB([rga], [c_RkRgaInit], RGA_LIBS="-lrga")
2051*4882a593Smuzhiyun	AC_CHECK_HEADERS([rga/RgaApi.h], RGA_HEADER="yes")
2052*4882a593Smuzhiyun
2053*4882a593Smuzhiyun	if test "x$RGA_LIBS" != "x" && test "x$RGA_HEADER" = "xyes"; then
2054*4882a593Smuzhiyun		AC_SUBST(RGA_LIBS)
2055*4882a593Smuzhiyun		AC_DEFINE(MODESETTING_WITH_RGA, 1, [Have rockchip rga])
2056*4882a593Smuzhiyun	fi
2057*4882a593Smuzhiyunfi
2058*4882a593Smuzhiyun
2059*4882a593Smuzhiyundnl glamor
2060*4882a593Smuzhiyunif test "x$GLAMOR" = xauto; then
2061*4882a593Smuzhiyun	if echo "$XORG" "$XEPHYR" "$XWAYLAND" | grep -q yes ; then
2062*4882a593Smuzhiyun		GLAMOR=yes
2063*4882a593Smuzhiyun	fi
2064*4882a593Smuzhiyunfi
2065*4882a593Smuzhiyun
2066*4882a593SmuzhiyunAM_CONDITIONAL([GLAMOR], [test "x$GLAMOR" = xyes])
2067*4882a593Smuzhiyun
2068*4882a593Smuzhiyunif test "x$GLAMOR" = xyes; then
2069*4882a593Smuzhiyun	AC_DEFINE(GLAMOR, 1, [Build glamor])
2070*4882a593Smuzhiyun	PKG_CHECK_MODULES([GLAMOR], [epoxy])
2071*4882a593Smuzhiyun
2072*4882a593Smuzhiyun	PKG_CHECK_EXISTS(epoxy >= 1.4.4,
2073*4882a593Smuzhiyun			 [AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DMABUF, 1, [Have GLAMOR_HAS_EGL_QUERY_DMABUF])],
2074*4882a593Smuzhiyun			 [])
2075*4882a593Smuzhiyun
2076*4882a593Smuzhiyun	PKG_CHECK_EXISTS(epoxy >= 1.5.4,
2077*4882a593Smuzhiyun			 [AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DRIVER, 1, [Have GLAMOR_HAS_EGL_QUERY_DRIVER])],
2078*4882a593Smuzhiyun			 [])
2079*4882a593Smuzhiyun
2080*4882a593Smuzhiyun	PKG_CHECK_MODULES(GBM, "$LIBGBM", [GBM=yes], [GBM=no])
2081*4882a593Smuzhiyun	if test "x$GBM" = xyes; then
2082*4882a593Smuzhiyun		AC_DEFINE(GLAMOR_HAS_GBM, 1,
2083*4882a593Smuzhiyun			  [Build glamor with GBM-based EGL support])
2084*4882a593Smuzhiyun		AC_CHECK_DECL(GBM_BO_USE_LINEAR,
2085*4882a593Smuzhiyun			[AC_DEFINE(GLAMOR_HAS_GBM_LINEAR, 1, [Have GBM_BO_USE_LINEAR])], [],
2086*4882a593Smuzhiyun			[#include <stdlib.h>
2087*4882a593Smuzhiyun			 #include <gbm.h>])
2088*4882a593Smuzhiyun		dnl 17.1.0 is required for gbm_bo_create_with_modifiers
2089*4882a593Smuzhiyun		PKG_CHECK_EXISTS(gbm >= 17.1.0,
2090*4882a593Smuzhiyun				 [AC_DEFINE(GBM_BO_WITH_MODIFIERS, 1, [Have gbm_bo_create_with_modifiers])],
2091*4882a593Smuzhiyun				 [])
2092*4882a593Smuzhiyun		AC_CHECK_HEADER([gbm.h],
2093*4882a593Smuzhiyun			[LDFLAGS="$LDFLAGS $GBM_LIBS"
2094*4882a593Smuzhiyun			 AC_CHECK_LIB(gbm, gbm_bo_map,
2095*4882a593Smuzhiyun				[AC_DEFINE(GLAMOR_HAS_GBM_MAP,1,[Have gbm_bo_map])])])
2096*4882a593Smuzhiyun	else
2097*4882a593Smuzhiyun		if test "x$XORG" = xyes; then
2098*4882a593Smuzhiyun			AC_MSG_ERROR([Glamor for Xorg requires $LIBGBM])
2099*4882a593Smuzhiyun		fi
2100*4882a593Smuzhiyun	fi
2101*4882a593Smuzhiyun
2102*4882a593Smuzhiyun	PKG_CHECK_MODULES(EGL, "$LIBEGL")
2103*4882a593Smuzhiyun
2104*4882a593Smuzhiyun	AC_CHECK_HEADER([GLES3/gl3.h],
2105*4882a593Smuzhiyun		[LDFLAGS="$LDFLAGS $EGL_LIBS"
2106*4882a593Smuzhiyun		 AC_CHECK_LIB(GLESv2, glFenceSync,
2107*4882a593Smuzhiyun			[AC_DEFINE(GLAMOR_HAS_GL_FENCE,1,[Have glFenceSync])])])
2108*4882a593Smuzhiyunfi
2109*4882a593SmuzhiyunAM_CONDITIONAL([GLAMOR_EGL], [test "x$GBM" = xyes])
2110*4882a593Smuzhiyun
2111*4882a593Smuzhiyundnl XWin DDX
2112*4882a593Smuzhiyun
2113*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build XWin DDX])
2114*4882a593Smuzhiyunif test "x$XWIN" = xauto; then
2115*4882a593Smuzhiyun	case $host_os in
2116*4882a593Smuzhiyun		cygwin*) XWIN="yes" ;;
2117*4882a593Smuzhiyun		mingw*) XWIN="yes" ;;
2118*4882a593Smuzhiyun		*) XWIN="no" ;;
2119*4882a593Smuzhiyun	esac
2120*4882a593Smuzhiyunfi
2121*4882a593SmuzhiyunAC_MSG_RESULT([$XWIN])
2122*4882a593Smuzhiyun
2123*4882a593Smuzhiyunif test "x$XWIN" = xyes; then
2124*4882a593Smuzhiyun	AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
2125*4882a593Smuzhiyun	AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
2126*4882a593Smuzhiyun	AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
2127*4882a593Smuzhiyun	AC_CHECK_TOOL(WINDRES, windres)
2128*4882a593Smuzhiyun
2129*4882a593Smuzhiyun	PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfixes x11-xcb xcb-aux xcb-image xcb-ewmh xcb-icccm])
2130*4882a593Smuzhiyun
2131*4882a593Smuzhiyun	if test "x$WINDOWSWM" = xauto; then
2132*4882a593Smuzhiyun		PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no])
2133*4882a593Smuzhiyun	fi
2134*4882a593Smuzhiyun	if test "x$WINDOWSWM" = xyes ; then
2135*4882a593Smuzhiyun		PKG_CHECK_MODULES(WINDOWSWM, $WINDOWSWMPROTO)
2136*4882a593Smuzhiyun		XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS $WINDOWSWM_CFLAGS"
2137*4882a593Smuzhiyun		AC_DEFINE(ROOTLESS,1,[Build Rootless code])
2138*4882a593Smuzhiyun	fi
2139*4882a593Smuzhiyun
2140*4882a593Smuzhiyun	if test "x$WINDOWSDRI" = xauto; then
2141*4882a593Smuzhiyun		PKG_CHECK_EXISTS([windowsdriproto], [WINDOWSDRI=yes], [WINDOWSDRI=no])
2142*4882a593Smuzhiyun	fi
2143*4882a593Smuzhiyun	if test "x$WINDOWSDRI" = xyes ; then
2144*4882a593Smuzhiyun		PKG_CHECK_MODULES(WINDOWSDRI, [windowsdriproto])
2145*4882a593Smuzhiyun	fi
2146*4882a593Smuzhiyun
2147*4882a593Smuzhiyun	case $host_os in
2148*4882a593Smuzhiyun		cygwin*)
2149*4882a593Smuzhiyun			XWIN_SERVER_NAME=XWin
2150*4882a593Smuzhiyun			AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
2151*4882a593Smuzhiyun			;;
2152*4882a593Smuzhiyun		mingw*)
2153*4882a593Smuzhiyun			XWIN_SERVER_NAME=Xming
2154*4882a593Smuzhiyun			AC_DEFINE(RELOCATE_PROJECTROOT,1,[Make PROJECT_ROOT relative to the xserver location])
2155*4882a593Smuzhiyun			AC_DEFINE(HAS_WINSOCK,1,[Use Windows sockets])
2156*4882a593Smuzhiyun			XWIN_SYS_LIBS="-lpthread -lws2_32"
2157*4882a593Smuzhiyun			;;
2158*4882a593Smuzhiyun	esac
2159*4882a593Smuzhiyun
2160*4882a593Smuzhiyun	XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
2161*4882a593Smuzhiyun	XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
2162*4882a593Smuzhiyun	AC_SUBST(XWIN_LIBS)
2163*4882a593Smuzhiyun	AC_SUBST(XWIN_SERVER_NAME)
2164*4882a593Smuzhiyun	AC_SUBST(XWIN_SYS_LIBS)
2165*4882a593Smuzhiyun
2166*4882a593Smuzhiyun	if test "x$DEBUGGING" = xyes; then
2167*4882a593Smuzhiyun		AC_DEFINE(CYGDEBUG, 1, [Simple debug messages])
2168*4882a593Smuzhiyun		AC_DEFINE(CYGWINDOWING_DEBUG, 1, [Debug messages for window handling])
2169*4882a593Smuzhiyun		AC_DEFINE(CYGMULTIWINDOW_DEBUG, 1, [Debug window manager])
2170*4882a593Smuzhiyun	fi
2171*4882a593Smuzhiyun
2172*4882a593Smuzhiyun	AC_DEFINE(DDXOSVERRORF, 1, [Use OsVendorVErrorF])
2173*4882a593Smuzhiyun	AC_DEFINE(DDXBEFORERESET, 1, [Use ddxBeforeReset ])
2174*4882a593Smuzhiyun
2175*4882a593Smuzhiyundnl XWin requires OpenGL spec files in order to generate wrapper code for native GL functions
2176*4882a593Smuzhiyun	if [test "x$XWIN" = xyes && test "x$GLX" = xyes] ; then
2177*4882a593Smuzhiyun           AC_CHECK_PROG(PYTHON3, python3, python3)
2178*4882a593Smuzhiyun           if test -z "$PYTHON3"; then
2179*4882a593Smuzhiyun                AC_MSG_ERROR([python3 not found])
2180*4882a593Smuzhiyun           fi
2181*4882a593Smuzhiyun           AC_MSG_CHECKING(for python module lxml)
2182*4882a593Smuzhiyun           $PYTHON3 -c "import lxml;"
2183*4882a593Smuzhiyun           if test $? -ne 0 ; then
2184*4882a593Smuzhiyun                AC_MSG_ERROR([not found])
2185*4882a593Smuzhiyun           fi
2186*4882a593Smuzhiyun           AC_MSG_RESULT(yes)
2187*4882a593Smuzhiyun           if test "x$KHRONOS_SPEC_DIR" = "xauto" ; then
2188*4882a593Smuzhiyun		PKG_CHECK_MODULES([KHRONOS_OPENGL_REGISTRY], [khronos-opengl-registry])
2189*4882a593Smuzhiyun		KHRONOS_SPEC_DIR=`pkg-config khronos-opengl-registry --variable=specdir`
2190*4882a593Smuzhiyun           fi
2191*4882a593Smuzhiyun           AC_SUBST(KHRONOS_SPEC_DIR)
2192*4882a593Smuzhiyun	fi
2193*4882a593Smuzhiyun
2194*4882a593Smuzhiyunfi
2195*4882a593SmuzhiyunAM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
2196*4882a593SmuzhiyunAM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes])
2197*4882a593SmuzhiyunAM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && test "x$GLX" = xyes])
2198*4882a593SmuzhiyunAM_CONDITIONAL(XWIN_WINDOWS_DRI, [test "x$XWIN" = xyes && test "x$WINDOWSDRI" = xyes])
2199*4882a593Smuzhiyun
2200*4882a593Smuzhiyundnl Darwin / OS X DDX
2201*4882a593Smuzhiyunif test "x$XQUARTZ" = xyes; then
2202*4882a593Smuzhiyun	AC_DEFINE(XQUARTZ,1,[Have Quartz])
2203*4882a593Smuzhiyun	AC_DEFINE(ROOTLESS,1,[Build Rootless code])
2204*4882a593Smuzhiyun
2205*4882a593Smuzhiyun	XQUARTZ_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB $PRESENT_LIB"
2206*4882a593Smuzhiyun	AC_SUBST([XQUARTZ_LIBS])
2207*4882a593Smuzhiyun
2208*4882a593Smuzhiyun	AC_CHECK_LIB([Xplugin],[xp_init],[:])
2209*4882a593Smuzhiyun
2210*4882a593Smuzhiyun	CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
2211*4882a593Smuzhiyun
2212*4882a593Smuzhiyun	PKG_CHECK_MODULES(XPBPROXY, $APPLEWMPROTO $LIBAPPLEWM xfixes x11)
2213*4882a593Smuzhiyun
2214*4882a593Smuzhiyun        if test "x$XQUARTZ_SPARKLE" = xyes ; then
2215*4882a593Smuzhiyun                AC_DEFINE(XQUARTZ_SPARKLE,1,[Support application updating through sparkle.])
2216*4882a593Smuzhiyun        fi
2217*4882a593Smuzhiyun
2218*4882a593Smuzhiyun	if test "x$STANDALONE_XPBPROXY" = xyes ; then
2219*4882a593Smuzhiyun		AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
2220*4882a593Smuzhiyun	fi
2221*4882a593Smuzhiyunfi
2222*4882a593Smuzhiyun
2223*4882a593SmuzhiyunAM_CONDITIONAL(PSEUDORAMIX, [test "x$XQUARTZ" = xyes -o "x$XWIN" = xyes ])
2224*4882a593Smuzhiyun
2225*4882a593Smuzhiyun# Support for objc in autotools is minimal and not documented.
2226*4882a593SmuzhiyunOBJC='$(CC)'
2227*4882a593SmuzhiyunOBJCLD='$(CCLD)'
2228*4882a593SmuzhiyunOBJCLINK='$(LINK)'
2229*4882a593SmuzhiyunOBJCFLAGS='$(CFLAGS)'
2230*4882a593SmuzhiyunAC_SUBST([OBJC])
2231*4882a593SmuzhiyunAC_SUBST([OBJCCLD])
2232*4882a593SmuzhiyunAC_SUBST([OBJCLINK])
2233*4882a593SmuzhiyunAC_SUBST([OBJCFLAGS])
2234*4882a593Smuzhiyun# internal, undocumented automake func follows :(
2235*4882a593Smuzhiyun_AM_DEPENDENCIES([OBJC])
2236*4882a593SmuzhiyunAM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
2237*4882a593SmuzhiyunAM_CONDITIONAL(XQUARTZ_SPARKLE, [test "x$XQUARTZ_SPARKLE" != "xno"])
2238*4882a593SmuzhiyunAM_CONDITIONAL(STANDALONE_XPBPROXY, [test "x$STANDALONE_XPBPROXY" = xyes])
2239*4882a593Smuzhiyun
2240*4882a593Smuzhiyundnl DMX DDX
2241*4882a593SmuzhiyunPKG_CHECK_MODULES(
2242*4882a593Smuzhiyun	[DMXMODULES],
2243*4882a593Smuzhiyun	[xmuu $LIBXEXT x11 >= 1.6 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES],
2244*4882a593Smuzhiyun	[PKG_CHECK_MODULES(
2245*4882a593Smuzhiyun		[XDMXCONFIG_DEP],
2246*4882a593Smuzhiyun		[xaw7 xmu xt xpm x11],
2247*4882a593Smuzhiyun		[have_dmx=yes],
2248*4882a593Smuzhiyun		[have_dmx=no])],
2249*4882a593Smuzhiyun	[have_dmx=no])
2250*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build Xdmx DDX])
2251*4882a593Smuzhiyunif test "x$DMX" = xauto; then
2252*4882a593Smuzhiyun	DMX="$have_dmx"
2253*4882a593Smuzhiyun	case $host_os in
2254*4882a593Smuzhiyun		cygwin*) DMX="no" ;;
2255*4882a593Smuzhiyun		mingw*)  DMX="no" ;;
2256*4882a593Smuzhiyun		darwin*) DMX="no" ;;
2257*4882a593Smuzhiyun	esac
2258*4882a593Smuzhiyunfi
2259*4882a593SmuzhiyunAC_MSG_RESULT([$DMX])
2260*4882a593SmuzhiyunAM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
2261*4882a593Smuzhiyun
2262*4882a593Smuzhiyunif test "x$DMX" = xyes; then
2263*4882a593Smuzhiyun	if test "x$have_dmx" = xno; then
2264*4882a593Smuzhiyun		AC_MSG_ERROR([Xdmx build explicitly requested, but required
2265*4882a593Smuzhiyun		              modules not found.])
2266*4882a593Smuzhiyun	fi
2267*4882a593Smuzhiyun	DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
2268*4882a593Smuzhiyun	XDMX_CFLAGS="$DMXMODULES_CFLAGS"
2269*4882a593Smuzhiyun	XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $RANDR_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
2270*4882a593Smuzhiyun	XDMX_SYS_LIBS="$DMXMODULES_LIBS"
2271*4882a593Smuzhiyun	AC_SUBST([XDMX_CFLAGS])
2272*4882a593Smuzhiyun	AC_SUBST([XDMX_LIBS])
2273*4882a593Smuzhiyun	AC_SUBST([XDMX_SYS_LIBS])
2274*4882a593Smuzhiyun
2275*4882a593Smuzhiyundnl USB sources in DMX require <linux/input.h>
2276*4882a593Smuzhiyun	AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
2277*4882a593Smuzhiyun			DMX_BUILD_USB="no")
2278*4882a593Smuzhiyun	AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
2279*4882a593Smuzhiyun	AC_SUBST(XDMXCONFIG_DEP_LIBS)
2280*4882a593Smuzhiyun	PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [$LIBDMX $LIBXEXT x11])
2281*4882a593Smuzhiyun	AC_SUBST(DMXEXAMPLES_DEP_LIBS)
2282*4882a593Smuzhiyun	PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [$LIBDMX xmu $LIBXEXT x11])
2283*4882a593Smuzhiyun	AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
2284*4882a593Smuzhiyun	PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
2285*4882a593Smuzhiyun	AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
2286*4882a593Smuzhiyun	PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
2287*4882a593Smuzhiyun	AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
2288*4882a593Smuzhiyun	PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
2289*4882a593Smuzhiyun	AC_SUBST(XRESEXAMPLES_DEP_LIBS)
2290*4882a593Smuzhiyun	PKG_CHECK_MODULES([X11EXAMPLES_DEP], [$LIBXEXT x11])
2291*4882a593Smuzhiyun	AC_SUBST(X11EXAMPLES_DEP_LIBS)
2292*4882a593Smuzhiyun
2293*4882a593Smuzhiyunfi
2294*4882a593SmuzhiyunAM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
2295*4882a593Smuzhiyun
2296*4882a593Smuzhiyundnl kdrive DDX
2297*4882a593Smuzhiyun
2298*4882a593SmuzhiyunXEPHYR_LIBS=
2299*4882a593SmuzhiyunXEPHYR_INCS=
2300*4882a593Smuzhiyun
2301*4882a593SmuzhiyunAM_CONDITIONAL(KDRIVE, [test x$KDRIVE = xyes])
2302*4882a593Smuzhiyun
2303*4882a593Smuzhiyunif test "$KDRIVE" = yes; then
2304*4882a593Smuzhiyun    XEPHYR_REQUIRED_LIBS="xau xdmcp xcb xcb-shape xcb-render xcb-renderutil xcb-aux xcb-image xcb-icccm xcb-shm >= 1.9.3 xcb-keysyms xcb-randr xcb-xkb"
2305*4882a593Smuzhiyun    if test "x$XV" = xyes; then
2306*4882a593Smuzhiyun        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
2307*4882a593Smuzhiyun    fi
2308*4882a593Smuzhiyun    if test "x$DRI" = xyes && test "x$GLX" = xyes; then
2309*4882a593Smuzhiyun        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBDRM xcb-glx xcb-xf86dri > 1.6"
2310*4882a593Smuzhiyun    fi
2311*4882a593Smuzhiyun    if test "x$GLAMOR" = xyes; then
2312*4882a593Smuzhiyun        XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS x11-xcb"
2313*4882a593Smuzhiyun    fi
2314*4882a593Smuzhiyun
2315*4882a593Smuzhiyun    if test "x$XEPHYR" = xauto; then
2316*4882a593Smuzhiyun        PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [XEPHYR="yes"], [XEPHYR="no"])
2317*4882a593Smuzhiyun    elif test "x$XEPHYR" = xyes ; then
2318*4882a593Smuzhiyun        PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS)
2319*4882a593Smuzhiyun    fi
2320*4882a593Smuzhiyun
2321*4882a593Smuzhiyun    # Xephyr needs nanosleep() which is in librt on Solaris
2322*4882a593Smuzhiyun    AC_CHECK_FUNC([nanosleep], [],
2323*4882a593Smuzhiyun        AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
2324*4882a593Smuzhiyun
2325*4882a593Smuzhiyun    # damage shadow extension glx (NOTYET) fb mi
2326*4882a593Smuzhiyun    KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
2327*4882a593Smuzhiyun    KDRIVE_PURE_INCS="$KDRIVE_INC $MIEXT_SYNC_INC $MIEXT_DAMAGE_INC $MIEXT_SHADOW_INC $XEXT_INC $FB_INC $MI_INC"
2328*4882a593Smuzhiyun    KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux'
2329*4882a593Smuzhiyun    KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC"
2330*4882a593Smuzhiyun
2331*4882a593Smuzhiyun    KDRIVE_CFLAGS="$XSERVER_CFLAGS"
2332*4882a593Smuzhiyun
2333*4882a593Smuzhiyun    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
2334*4882a593Smuzhiyun    KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
2335*4882a593Smuzhiyun    KDRIVE_MAIN_LIB="$MAIN_LIB"
2336*4882a593Smuzhiyun    KDRIVE_LOCAL_LIBS="$DIX_LIB $KDRIVE_LIB"
2337*4882a593Smuzhiyun    KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
2338*4882a593Smuzhiyun    KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
2339*4882a593Smuzhiyun    KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS"
2340*4882a593Smuzhiyun
2341*4882a593Smuzhiyun    AC_SUBST([XEPHYR_LIBS])
2342*4882a593Smuzhiyun    AC_SUBST([XEPHYR_INCS])
2343*4882a593Smuzhiyunfi
2344*4882a593SmuzhiyunAC_SUBST([KDRIVE_INCS])
2345*4882a593SmuzhiyunAC_SUBST([KDRIVE_PURE_INCS])
2346*4882a593SmuzhiyunAC_SUBST([KDRIVE_CFLAGS])
2347*4882a593SmuzhiyunAC_SUBST([KDRIVE_PURE_LIBS])
2348*4882a593SmuzhiyunAC_SUBST([KDRIVE_MAIN_LIB])
2349*4882a593SmuzhiyunAC_SUBST([KDRIVE_LOCAL_LIBS])
2350*4882a593SmuzhiyunAC_SUBST([KDRIVE_LIBS])
2351*4882a593SmuzhiyunAM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
2352*4882a593Smuzhiyun
2353*4882a593Smuzhiyundnl Xwayland DDX
2354*4882a593Smuzhiyun
2355*4882a593SmuzhiyunXWAYLANDMODULES="wayland-client >= 1.3.0 wayland-protocols >= 1.10 $LIBDRM epoxy"
2356*4882a593Smuzhiyunif test "x$XF86VIDMODE" = xyes; then
2357*4882a593Smuzhiyun	XWAYLANDMODULES="$XWAYLANDMODULES $VIDMODEPROTO"
2358*4882a593Smuzhiyunfi
2359*4882a593SmuzhiyunPKG_CHECK_MODULES(XWAYLANDMODULES, [$XWAYLANDMODULES], [have_xwayland=yes], [have_xwayland=no])
2360*4882a593SmuzhiyunAC_MSG_CHECKING([whether to build Xwayland DDX])
2361*4882a593Smuzhiyunif test "x$XWAYLAND" = xauto; then
2362*4882a593Smuzhiyun   XWAYLAND="$have_xwayland"
2363*4882a593Smuzhiyunfi
2364*4882a593SmuzhiyunAC_MSG_RESULT([$XWAYLAND])
2365*4882a593SmuzhiyunAM_CONDITIONAL(XWAYLAND, [test "x$XWAYLAND" = xyes])
2366*4882a593Smuzhiyun
2367*4882a593Smuzhiyunif test "x$XWAYLAND" = xyes; then
2368*4882a593Smuzhiyun	if test "x$have_xwayland" = xno; then
2369*4882a593Smuzhiyun		AC_MSG_ERROR([Xwayland build explicitly requested, but required modules not found.])
2370*4882a593Smuzhiyun	fi
2371*4882a593Smuzhiyun
2372*4882a593Smuzhiyun	if test "x$GLAMOR" = xyes && test "x$GBM" = xyes; then
2373*4882a593Smuzhiyun		AC_DEFINE(XWL_HAS_GLAMOR, 1,
2374*4882a593Smuzhiyun			  [Build xwayland with glamor support])
2375*4882a593Smuzhiyun	fi
2376*4882a593Smuzhiyun
2377*4882a593Smuzhiyun	PKG_CHECK_MODULES(WAYLAND_EGLSTREAM, [wayland-eglstream-protocols >= 1.0.2], [have_wl_eglstream=yes], [have_wl_eglstream=no])
2378*4882a593Smuzhiyun
2379*4882a593Smuzhiyun	if test "x$XWAYLAND_EGLSTREAM" = xauto; then
2380*4882a593Smuzhiyun		if test "x$have_wl_eglstream" = xyes && test "x$GLAMOR" = xyes; then
2381*4882a593Smuzhiyun			XWAYLAND_EGLSTREAM=yes
2382*4882a593Smuzhiyun		fi
2383*4882a593Smuzhiyun	fi
2384*4882a593Smuzhiyun
2385*4882a593Smuzhiyun	if test "x$XWAYLAND_EGLSTREAM" = xyes; then
2386*4882a593Smuzhiyun		if test "x$GLAMOR" != xyes; then
2387*4882a593Smuzhiyun			AC_MSG_ERROR([Xwayland eglstream support explicitly requested, but required modules not found.])
2388*4882a593Smuzhiyun		fi
2389*4882a593Smuzhiyun
2390*4882a593Smuzhiyun		if test "x$have_wl_eglstream" = xno; then
2391*4882a593Smuzhiyun			AC_MSG_ERROR([Xwayland eglstream support requires wayland-eglstream-protocols >= 1.0.2])
2392*4882a593Smuzhiyun		fi
2393*4882a593Smuzhiyun
2394*4882a593Smuzhiyun		AC_SUBST(WAYLAND_EGLSTREAM_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-eglstream-protocols`)
2395*4882a593Smuzhiyun		AC_DEFINE(XWL_HAS_EGLSTREAM, 1,
2396*4882a593Smuzhiyun			  [Build xwayland with eglstream support])
2397*4882a593Smuzhiyun	fi
2398*4882a593Smuzhiyun
2399*4882a593Smuzhiyun	XWAYLAND_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB"
2400*4882a593Smuzhiyun	XWAYLAND_SYS_LIBS="$XWAYLANDMODULES_LIBS $GLX_SYS_LIBS"
2401*4882a593Smuzhiyun	AC_SUBST([XWAYLAND_LIBS])
2402*4882a593Smuzhiyun	AC_SUBST([XWAYLAND_SYS_LIBS])
2403*4882a593Smuzhiyun
2404*4882a593Smuzhiyun	if test "x$MONOTONIC_CLOCK" != xyes; then
2405*4882a593Smuzhiyun		AC_MSG_ERROR([Xwayland requires CLOCK_MONOTONIC support.])
2406*4882a593Smuzhiyun	fi
2407*4882a593Smuzhiyun
2408*4882a593Smuzhiyun	AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
2409*4882a593Smuzhiyun	if test "x$WAYLAND_SCANNER" = x; then
2410*4882a593Smuzhiyun		PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner])
2411*4882a593Smuzhiyun		AC_SUBST(WAYLAND_SCANNER, `$PKG_CONFIG --variable=wayland_scanner wayland-scanner`)
2412*4882a593Smuzhiyun	fi
2413*4882a593Smuzhiyun
2414*4882a593Smuzhiyun        PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner >= 1.14.91],
2415*4882a593Smuzhiyun                          AC_SUBST(SCANNER_ARG, 'private-code'),
2416*4882a593Smuzhiyun                          AC_SUBST(SCANNER_ARG, 'code'))
2417*4882a593Smuzhiyun
2418*4882a593Smuzhiyun	AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
2419*4882a593Smuzhiyunfi
2420*4882a593SmuzhiyunAM_CONDITIONAL(XWAYLAND_EGLSTREAM, [test "x$XWAYLAND_EGLSTREAM" = "xyes"])
2421*4882a593Smuzhiyun
2422*4882a593Smuzhiyun
2423*4882a593Smuzhiyundnl and the rest of these are generic, so they're in config.h
2424*4882a593Smuzhiyundnl
2425*4882a593Smuzhiyundnl though, thanks to the passing of some significant amount of time, the
2426*4882a593Smuzhiyundnl above is probably a complete fallacy, and you should not rely on it.
2427*4882a593Smuzhiyundnl but this is still actually better than imake, honest. -daniels
2428*4882a593Smuzhiyun
2429*4882a593SmuzhiyunAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2430*4882a593Smuzhiyun#include <features.h>
2431*4882a593Smuzhiyun#ifndef __GLIBC__
2432*4882a593Smuzhiyun#error not glibc
2433*4882a593Smuzhiyun#endif
2434*4882a593Smuzhiyun]], [])], [AC_DEFINE(_GNU_SOURCE, 1,
2435*4882a593Smuzhiyun	[ Enable GNU and other extensions to the C environment for glibc])])
2436*4882a593Smuzhiyun
2437*4882a593SmuzhiyunAC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
2438*4882a593SmuzhiyunAC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [sysconfdir])
2439*4882a593Smuzhiyun
2440*4882a593SmuzhiyunAC_SUBST([RELEASE_DATE])
2441*4882a593SmuzhiyunDATE_FMT="%Y%m%d"
2442*4882a593SmuzhiyunTIME_FMT="1%H%M%S"
2443*4882a593SmuzhiyunBUILD_DATE="`date "+$DATE_FMT"`"
2444*4882a593SmuzhiyunBUILD_TIME="`date "+$TIME_FMT"`"
2445*4882a593Smuzhiyunif test "x$SOURCE_DATE_EPOCH" != "x"; then
2446*4882a593Smuzhiyun	BUILD_DATE="`date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT"`"
2447*4882a593Smuzhiyun	BUILD_TIME="`date -u -d "@$SOURCE_DATE_EPOCH" "+$TIME_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$TIME_FMT" 2>/dev/null || date -u "+$TIME_FMT"`"
2448*4882a593Smuzhiyunfi
2449*4882a593SmuzhiyunAC_SUBST([BUILD_DATE])
2450*4882a593SmuzhiyunAC_SUBST([BUILD_TIME])
2451*4882a593Smuzhiyun
2452*4882a593SmuzhiyunDIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
2453*4882a593Smuzhiyun
2454*4882a593SmuzhiyunAC_SUBST([DIX_CFLAGS])
2455*4882a593Smuzhiyun
2456*4882a593SmuzhiyunAC_SUBST([libdir])
2457*4882a593SmuzhiyunAC_SUBST([exec_prefix])
2458*4882a593SmuzhiyunAC_SUBST([prefix])
2459*4882a593Smuzhiyun
2460*4882a593SmuzhiyunAC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep])
2461*4882a593Smuzhiyun
2462*4882a593Smuzhiyunif test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
2463*4882a593Smuzhiyun    AC_MSG_WARN([
2464*4882a593Smuzhiyun             ***********************************************
2465*4882a593Smuzhiyun             Neither HAL nor udev backend will be enabled.
2466*4882a593Smuzhiyun             Input device hotplugging will not be available!
2467*4882a593Smuzhiyun             ***********************************************])
2468*4882a593Smuzhiyunfi
2469*4882a593Smuzhiyun
2470*4882a593SmuzhiyunAC_CONFIG_FILES([
2471*4882a593SmuzhiyunMakefile
2472*4882a593Smuzhiyunglx/Makefile
2473*4882a593Smuzhiyuninclude/Makefile
2474*4882a593Smuzhiyuncomposite/Makefile
2475*4882a593Smuzhiyundamageext/Makefile
2476*4882a593Smuzhiyundbe/Makefile
2477*4882a593Smuzhiyundix/Makefile
2478*4882a593Smuzhiyundoc/Makefile
2479*4882a593Smuzhiyundoc/dtrace/Makefile
2480*4882a593Smuzhiyunman/Makefile
2481*4882a593Smuzhiyunfb/Makefile
2482*4882a593Smuzhiyunglamor/Makefile
2483*4882a593Smuzhiyunrecord/Makefile
2484*4882a593Smuzhiyunconfig/Makefile
2485*4882a593Smuzhiyunmi/Makefile
2486*4882a593Smuzhiyunmiext/Makefile
2487*4882a593Smuzhiyunmiext/sync/Makefile
2488*4882a593Smuzhiyunmiext/damage/Makefile
2489*4882a593Smuzhiyunmiext/shadow/Makefile
2490*4882a593Smuzhiyunmiext/rootless/Makefile
2491*4882a593Smuzhiyunos/Makefile
2492*4882a593SmuzhiyunpseudoramiX/Makefile
2493*4882a593Smuzhiyunrandr/Makefile
2494*4882a593Smuzhiyunrender/Makefile
2495*4882a593Smuzhiyunxkb/Makefile
2496*4882a593SmuzhiyunXext/Makefile
2497*4882a593SmuzhiyunXi/Makefile
2498*4882a593Smuzhiyunxfixes/Makefile
2499*4882a593Smuzhiyunexa/Makefile
2500*4882a593Smuzhiyundri3/Makefile
2501*4882a593Smuzhiyunpresent/Makefile
2502*4882a593Smuzhiyunhw/Makefile
2503*4882a593Smuzhiyunhw/xfree86/Makefile
2504*4882a593Smuzhiyunhw/xfree86/Xorg.sh
2505*4882a593Smuzhiyunhw/xfree86/common/Makefile
2506*4882a593Smuzhiyunhw/xfree86/common/xf86Build.h
2507*4882a593Smuzhiyunhw/xfree86/ddc/Makefile
2508*4882a593Smuzhiyunhw/xfree86/dixmods/Makefile
2509*4882a593Smuzhiyunhw/xfree86/doc/Makefile
2510*4882a593Smuzhiyunhw/xfree86/dri/Makefile
2511*4882a593Smuzhiyunhw/xfree86/dri2/Makefile
2512*4882a593Smuzhiyunhw/xfree86/dri2/pci_ids/Makefile
2513*4882a593Smuzhiyunhw/xfree86/drivers/Makefile
2514*4882a593Smuzhiyunhw/xfree86/drivers/modesetting/Makefile
2515*4882a593Smuzhiyunhw/xfree86/exa/Makefile
2516*4882a593Smuzhiyunhw/xfree86/exa/man/Makefile
2517*4882a593Smuzhiyunhw/xfree86/fbdevhw/Makefile
2518*4882a593Smuzhiyunhw/xfree86/fbdevhw/man/Makefile
2519*4882a593Smuzhiyunhw/xfree86/glamor_egl/Makefile
2520*4882a593Smuzhiyunhw/xfree86/i2c/Makefile
2521*4882a593Smuzhiyunhw/xfree86/int10/Makefile
2522*4882a593Smuzhiyunhw/xfree86/loader/Makefile
2523*4882a593Smuzhiyunhw/xfree86/man/Makefile
2524*4882a593Smuzhiyunhw/xfree86/modes/Makefile
2525*4882a593Smuzhiyunhw/xfree86/os-support/Makefile
2526*4882a593Smuzhiyunhw/xfree86/os-support/bsd/Makefile
2527*4882a593Smuzhiyunhw/xfree86/os-support/bus/Makefile
2528*4882a593Smuzhiyunhw/xfree86/os-support/hurd/Makefile
2529*4882a593Smuzhiyunhw/xfree86/os-support/misc/Makefile
2530*4882a593Smuzhiyunhw/xfree86/os-support/linux/Makefile
2531*4882a593Smuzhiyunhw/xfree86/os-support/solaris/Makefile
2532*4882a593Smuzhiyunhw/xfree86/os-support/stub/Makefile
2533*4882a593Smuzhiyunhw/xfree86/parser/Makefile
2534*4882a593Smuzhiyunhw/xfree86/ramdac/Makefile
2535*4882a593Smuzhiyunhw/xfree86/shadowfb/Makefile
2536*4882a593Smuzhiyunhw/xfree86/vbe/Makefile
2537*4882a593Smuzhiyunhw/xfree86/vgahw/Makefile
2538*4882a593Smuzhiyunhw/xfree86/x86emu/Makefile
2539*4882a593Smuzhiyunhw/xfree86/xkb/Makefile
2540*4882a593Smuzhiyunhw/xfree86/utils/Makefile
2541*4882a593Smuzhiyunhw/xfree86/utils/man/Makefile
2542*4882a593Smuzhiyunhw/xfree86/utils/cvt/Makefile
2543*4882a593Smuzhiyunhw/xfree86/utils/gtf/Makefile
2544*4882a593Smuzhiyunhw/dmx/config/Makefile
2545*4882a593Smuzhiyunhw/dmx/config/man/Makefile
2546*4882a593Smuzhiyunhw/dmx/doc/Makefile
2547*4882a593Smuzhiyunhw/dmx/doxygen/doxygen.conf
2548*4882a593Smuzhiyunhw/dmx/doxygen/Makefile
2549*4882a593Smuzhiyunhw/dmx/examples/Makefile
2550*4882a593Smuzhiyunhw/dmx/input/Makefile
2551*4882a593Smuzhiyunhw/dmx/glxProxy/Makefile
2552*4882a593Smuzhiyunhw/dmx/Makefile
2553*4882a593Smuzhiyunhw/dmx/man/Makefile
2554*4882a593Smuzhiyunhw/vfb/Makefile
2555*4882a593Smuzhiyunhw/vfb/man/Makefile
2556*4882a593Smuzhiyunhw/xnest/Makefile
2557*4882a593Smuzhiyunhw/xnest/man/Makefile
2558*4882a593Smuzhiyunhw/xwin/Makefile
2559*4882a593Smuzhiyunhw/xwin/dri/Makefile
2560*4882a593Smuzhiyunhw/xwin/glx/Makefile
2561*4882a593Smuzhiyunhw/xwin/man/Makefile
2562*4882a593Smuzhiyunhw/xwin/winclipboard/Makefile
2563*4882a593Smuzhiyunhw/xquartz/Makefile
2564*4882a593Smuzhiyunhw/xquartz/GL/Makefile
2565*4882a593Smuzhiyunhw/xquartz/bundle/Makefile
2566*4882a593Smuzhiyunhw/xquartz/man/Makefile
2567*4882a593Smuzhiyunhw/xquartz/mach-startup/Makefile
2568*4882a593Smuzhiyunhw/xquartz/pbproxy/Makefile
2569*4882a593Smuzhiyunhw/xquartz/xpr/Makefile
2570*4882a593Smuzhiyunhw/kdrive/Makefile
2571*4882a593Smuzhiyunhw/kdrive/ephyr/Makefile
2572*4882a593Smuzhiyunhw/kdrive/ephyr/man/Makefile
2573*4882a593Smuzhiyunhw/kdrive/src/Makefile
2574*4882a593Smuzhiyunhw/xwayland/Makefile
2575*4882a593Smuzhiyuntest/Makefile
2576*4882a593Smuzhiyunxserver.ent
2577*4882a593Smuzhiyunxorg-server.pc
2578*4882a593Smuzhiyun])
2579*4882a593SmuzhiyunAC_OUTPUT
2580