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