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