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