2007-08-01 00:52:20 +02:00
dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
2005-07-01 22:29:53 +02:00
dnl
2007-08-01 00:52:20 +02:00
dnl Permission is hereby granted, free of charge, to any person obtaining a
dnl copy of this software and associated documentation files (the "Software"),
dnl to deal in the Software without restriction, including without limitation
dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
dnl and/or sell copies of the Software, and to permit persons to whom the
dnl Software is furnished to do so, subject to the following conditions:
2005-07-01 22:29:53 +02:00
dnl
2007-08-01 00:52:20 +02:00
dnl The above copyright notice and this permission notice (including the next
dnl paragraph) shall be included in all copies or substantial portions of the
dnl Software.
2005-07-01 22:29:53 +02:00
dnl
2007-08-01 00:52:20 +02:00
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
dnl DEALINGS IN THE SOFTWARE.
dnl
dnl Authors: Keith Packard <keithp@keithp.com>
dnl Daniel Stone <daniel@fooishbar.org>
dnl an unwitting cast of miscellaneous others
2005-07-01 22:29:53 +02:00
dnl
dnl Process this file with autoconf to create configure.
2011-12-04 03:23:51 +01:00
AC_PREREQ(2.60)
2018-11-25 21:56:29 +01:00
AC_INIT([xorg-server], 1.20.99.1, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
2018-05-14 20:08:01 +02:00
RELEASE_DATE="2018-05-14"
RELEASE_NAME="Carrot and Ginger Soup"
2005-07-01 22:29:53 +02:00
AC_CONFIG_SRCDIR([Makefile.am])
2013-12-04 19:28:04 +01:00
AC_CONFIG_MACRO_DIR([m4])
2009-10-28 19:09:11 +01:00
AM_INIT_AUTOMAKE([foreign dist-bzip2])
2013-11-08 06:08:56 +01:00
AC_USE_SYSTEM_EXTENSIONS
2005-08-21 21:15:11 +02:00
2011-05-03 04:47:44 +02:00
# Require xorg-macros minimum of 1.14 for XORG_COMPILER_BRAND in XORG_DEFAULT_OPTIONS
2009-10-27 20:07:26 +01:00
m4_ifndef([XORG_MACROS_VERSION],
2011-05-03 04:47:44 +02:00
[m4_fatal([must install xorg-macros 1.14 or later before running autoconf/autogen])])
XORG_MACROS_VERSION(1.14)
2009-10-27 20:07:26 +01:00
XORG_DEFAULT_OPTIONS
2010-04-06 01:12:22 +02:00
XORG_WITH_DOXYGEN(1.6.1)
2011-06-17 02:11:52 +02:00
XORG_CHECK_SGML_DOCTOOLS(1.8)
2011-03-18 00:26:35 +01:00
XORG_ENABLE_DOCS
XORG_ENABLE_DEVEL_DOCS
XORG_WITH_XMLTO(0.0.20)
XORG_WITH_FOP
2011-05-14 19:30:18 +02:00
XORG_WITH_XSLTPROC
2011-03-18 00:26:36 +01:00
XORG_ENABLE_UNIT_TESTS
2011-10-25 09:12:48 +02:00
XORG_LD_WRAP([optional])
2008-12-07 21:52:23 +01:00
2013-09-04 20:06:07 +02:00
m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install font-util 1.1 or later before running autoconf/autogen])])
2009-10-16 05:40:02 +02:00
XORG_FONT_MACROS_VERSION(1.1)
2005-07-01 22:29:53 +02:00
dnl this gets generated by autoheader, and thus contains all the defines. we
dnl don't ever actually use it, internally.
AC_CONFIG_HEADERS(include/do-not-use-config.h)
dnl xorg-server.h is an external header, designed to be included by loadable
dnl drivers.
AC_CONFIG_HEADERS(include/xorg-server.h)
dnl dix-config.h covers most of the DIX (i.e. everything but the DDX, not just
dnl dix/).
2009-01-31 01:17:58 +01:00
AC_CONFIG_HEADERS(include/dix-config.h)
2005-07-05 00:18:40 +02:00
dnl xorg-config.h covers the Xorg DDX.
AC_CONFIG_HEADERS(include/xorg-config.h)
2005-07-14 05:32:09 +02:00
dnl xkb-config.h covers XKB for the Xorg and Xnest DDXs.
AC_CONFIG_HEADERS(include/xkb-config.h)
2008-04-20 17:35:42 +02:00
dnl xwin-config.h covers the XWin DDX.
AC_CONFIG_HEADERS(include/xwin-config.h)
2018-04-20 20:38:04 +02:00
dnl xwayland-config.h covers Xwayland.
AC_CONFIG_HEADERS(include/xwayland-config.h)
2009-04-08 23:17:39 +02:00
dnl version-config.h covers the version numbers so they can be bumped without
dnl forcing an entire recompile.x
AC_CONFIG_HEADERS(include/version-config.h)
2005-08-21 21:15:11 +02:00
2005-07-01 22:29:53 +02:00
AM_PROG_AS
AC_PROG_LN_S
2013-12-04 19:28:04 +01:00
LT_PREREQ([2.2])
LT_INIT([disable-static win32-dll])
2005-07-01 22:29:53 +02:00
PKG_PROG_PKG_CONFIG
2005-07-05 00:18:40 +02:00
AC_PROG_LEX
AC_PROG_YACC
2006-10-27 18:26:30 +02:00
AC_SYS_LARGEFILE
2005-09-24 04:40:51 +02:00
XORG_PROG_RAWCPP
2005-07-01 22:29:53 +02:00
2009-10-03 01:51:24 +02:00
# Quoted so that make will expand $(CWARNFLAGS) in makefiles to allow
# easier overrides at build time.
XSERVER_CFLAGS='$(CWARNFLAGS)'
2010-10-30 23:55:06 +02:00
dnl Explicitly add -fno-strict-aliasing since this option should disappear
dnl from util-macros CWARNFLAGS
if test "x$GCC" = xyes ; then
XSERVER_CFLAGS="$XSERVER_CFLAGS -fno-strict-aliasing"
fi
2006-11-03 21:54:43 +01:00
dnl Check for dtrace program (needed to build Xserver dtrace probes)
2007-12-08 02:28:37 +01:00
dnl Also checks for <sys/sdt.h>, since some Linux distros have an
dnl ISDN trace program named dtrace
2006-11-03 21:54:43 +01:00
AC_ARG_WITH(dtrace, AS_HELP_STRING([--with-dtrace=PATH],
[Enable dtrace probes (default: enabled if dtrace found)]),
[WDTRACE=$withval], [WDTRACE=auto])
if test "x$WDTRACE" = "xyes" -o "x$WDTRACE" = "xauto" ; then
AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
if test "x$DTRACE" = "xnot_found" ; then
if test "x$WDTRACE" = "xyes" ; then
AC_MSG_FAILURE([dtrace requested but not found])
fi
WDTRACE="no"
2007-12-08 02:28:37 +01:00
else
AC_CHECK_HEADER(sys/sdt.h, [HAS_SDT_H="yes"], [HAS_SDT_H="no"])
if test "x$WDTRACE" = "xauto" -a "x$HAS_SDT_H" = "xno" ; then
WDTRACE="no"
fi
2006-11-03 21:54:43 +01:00
fi
fi
if test "x$WDTRACE" != "xno" ; then
AC_DEFINE(XSERVER_DTRACE, 1,
[Define to 1 if the DTrace Xserver provider probes should be built in.])
2009-10-06 01:52:19 +02:00
# Solaris/OpenSolaris require dtrace -G to build dtrace probe information into
# object files, and require linking with those as relocatable objects, not .a
# archives. MacOS X handles all this in the normal compiler toolchain, and on
# some releases (like Tiger), will error out on dtrace -G. For now, other
# platforms with Dtrace ports are assumed to support -G (the FreeBSD and Linux
# ports appear to, based on my web searches, but have not yet been tested).
case $host_os in
darwin*) SPECIAL_DTRACE_OBJECTS=no ;;
*) SPECIAL_DTRACE_OBJECTS=yes ;;
esac
2006-11-03 21:54:43 +01:00
fi
AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
2009-10-06 01:52:19 +02:00
AM_CONDITIONAL(SPECIAL_DTRACE_OBJECTS, [test "x$SPECIAL_DTRACE_OBJECTS" = "xyes"])
2007-08-16 01:44:49 +02:00
2005-07-01 22:29:53 +02:00
AC_HEADER_DIRENT
AC_HEADER_STDC
2014-03-22 22:30:04 +01:00
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h stropts.h \
2017-04-27 20:45:25 +02:00
fnmatch.h sys/mkdev.h sys/sysmacros.h sys/utsname.h])
2005-07-01 22:29:53 +02:00
2005-08-21 21:15:11 +02:00
dnl Checks for typedefs, structures, and compiler characteristics.
2005-07-01 22:29:53 +02:00
AC_C_CONST
2012-08-28 19:06:51 +02:00
AC_C_TYPEOF
2014-07-21 16:06:53 +02:00
AC_C_BIGENDIAN(AC_DEFINE(X_BYTE_ORDER, X_BIG_ENDIAN, [byte order]),
AC_DEFINE(X_BYTE_ORDER, X_LITTLE_ENDIAN, [byte order]))
2005-08-21 21:15:11 +02:00
AC_CHECK_SIZEOF([unsigned long])
if test "$ac_cv_sizeof_unsigned_long" = 8; then
AC_DEFINE(_XSERVER64, 1, [Define to 1 if unsigned long is 64 bits.])
fi
2005-08-06 21:14:24 +02:00
2005-07-01 22:29:53 +02:00
AC_TYPE_PID_T
2007-11-21 03:27:12 +01:00
dnl Check to see if dlopen is in default libraries (like Solaris, which
dnl has it in libc), or if libdl is needed to get it.
2007-08-31 21:24:07 +02:00
AC_CHECK_FUNC([dlopen], [],
AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
2009-10-29 19:46:22 +01:00
AC_SUBST(DLOPEN_LIBS)
2007-08-31 21:24:07 +02:00
2005-08-21 21:15:11 +02:00
dnl Checks for library functions.
2017-11-06 21:25:34 +01:00
AC_CHECK_FUNCS([backtrace geteuid getuid issetugid getresuid \
2014-09-21 18:49:06 +02:00
getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \
2016-03-08 13:05:33 +01:00
mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \
2016-07-28 15:46:15 +02:00
walkcontext setitimer poll epoll_create1 mkostemp memfd_create \
sigprocmask])
2016-06-29 20:07:32 +02:00
AC_CONFIG_LIBOBJ_DIR([os])
2017-02-28 19:18:25 +01:00
AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\
timingsafe_memcmp])
2016-07-12 00:30:05 +02:00
AM_CONDITIONAL(POLL, [test "x$ac_cv_func_poll" = "xyes"])
2011-12-01 07:20:09 +01:00
2017-02-28 19:18:43 +01:00
AC_CHECK_LIB([bsd], [arc4random_buf])
2017-03-01 20:28:34 +01:00
AC_CHECK_FUNCS([arc4random_buf])
2017-02-28 19:18:43 +01:00
2014-09-21 18:49:06 +02:00
AC_CHECK_DECLS([program_invocation_short_name], [], [], [[#include <errno.h>]])
2015-07-06 18:15:44 +02:00
dnl Check for SO_PEERCRED #define
AC_CACHE_CHECK([for SO_PEERCRED in sys/socket.h],
[xorg_cv_sys_have_so_peercred],
[AC_EGREP_CPP(yes_have_so_peercred,[
#include <sys/types.h>
#include <sys/socket.h>
#ifdef SO_PEERCRED
yes_have_so_peercred
#endif
],
[xorg_cv_sys_have_so_peercred=yes],
[xorg_cv_sys_have_so_peercred=no])])
dnl define NO_LOCAL_CLIENT_CRED if no getpeereid, getpeerucred or SO_PEERCRED
if test "x$ac_cv_func_getpeereid" = xno && test "x$ac_cv_func_getpeerucred" = xno && test "x$xorg_cv_sys_have_so_peercred" = xno ; then
AC_DEFINE([NO_LOCAL_CLIENT_CRED], 1, [Define to 1 if no local socket credentials interface exists])
fi
2011-12-01 07:20:09 +01:00
dnl Find the math libary, then check for cbrt function in it.
2005-07-01 22:29:53 +02:00
AC_CHECK_LIB(m, sqrt)
2011-12-01 07:20:09 +01:00
AC_CHECK_FUNCS([cbrt])
2005-07-01 22:29:53 +02:00
2005-08-21 21:15:11 +02:00
dnl AGPGART headers
2018-10-30 16:37:32 +01:00
AC_ARG_ENABLE(agp, AS_HELP_STRING([--enable-agp],
[Enable AGP support (default: auto)]),
[AGP=$enableval], [AGP=auto])
if test "x$AGP" = "xauto" ; then
AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
fi
2005-10-16 05:02:53 +02:00
AM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
2005-07-01 22:29:53 +02:00
2005-08-21 21:15:11 +02:00
dnl fbdev header
2005-07-14 00:54:02 +02:00
AC_CHECK_HEADERS([linux/fb.h], FBDEV=yes)
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(FBDEVHW, [test "x$FBDEV" = xyes])
2005-07-01 22:29:53 +02:00
2005-09-13 20:37:35 +02:00
dnl FreeBSD kldload support (sys/linker.h)
2005-12-30 13:05:47 +01:00
AC_CHECK_HEADERS([sys/linker.h],
2005-09-13 20:37:35 +02:00
[ac_cv_sys_linker_h=yes],
2005-12-30 13:05:47 +01:00
[ac_cv_sys_linker_h=no],
[#include <sys/param.h>])
2005-10-16 05:02:53 +02:00
AM_CONDITIONAL(FREEBSD_KLDLOAD, [test "x$ac_cv_sys_linker_h" = xyes])
2005-09-13 20:37:35 +02:00
2005-07-01 22:29:53 +02:00
AC_CACHE_CHECK([for SYSV IPC],
ac_cv_sysv_ipc,
2013-12-22 01:58:29 +01:00
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2008-05-19 06:12:04 +02:00
#include <sys/types.h>
#include <sys/ipc.h>
2005-07-01 22:29:53 +02:00
#include <sys/shm.h>
2011-11-04 19:30:43 +01:00
#include <sys/stat.h>
2013-12-22 01:58:29 +01:00
]],[[
2006-12-02 01:42:37 +01:00
{
2005-07-01 22:29:53 +02:00
int id;
2011-11-04 19:30:43 +01:00
id = shmget(IPC_PRIVATE, 512, S_IRUSR | S_IWUSR);
2005-07-01 22:29:53 +02:00
if (id < 0) return -1;
return shmctl(id, IPC_RMID, 0);
2013-12-22 01:58:29 +01:00
}]])],
[ac_cv_sysv_ipc=yes],
[ac_cv_sysv_ipc=no])])
2005-08-21 21:15:11 +02:00
if test "x$ac_cv_sysv_ipc" = xyes; then
AC_DEFINE(HAVE_SYSV_IPC, 1, [Define to 1 if SYSV IPC is available])
2005-07-01 22:29:53 +02:00
fi
2006-03-15 22:25:38 +01:00
dnl OpenBSD /dev/xf86 aperture driver
if test -c /dev/xf86 ; then
AC_DEFINE(HAS_APERTURE_DRV, 1, [System has /dev/xf86 aperture driver])
fi
2008-05-19 05:15:30 +02:00
dnl BSD APM support
AC_CHECK_HEADER([machine/apmvar.h],[
AC_CHECK_HEADER([sys/event.h],
ac_cv_BSD_KQUEUE_APM=yes,
ac_cv_BSD_APM=yes)])
AM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes])
AM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes])
2013-10-29 06:24:11 +01:00
dnl glibc backtrace support check
2005-10-03 08:31:48 +02:00
AC_CHECK_HEADER([execinfo.h],[
AC_CHECK_LIB(c, backtrace, [
AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
2006-08-12 18:25:06 +02:00
AC_DEFINE(HAVE_EXECINFO_H, 1, [Have execinfo.h])
2005-10-03 17:37:57 +02:00
])]
2005-10-03 08:31:48 +02:00
)
2005-08-21 21:15:11 +02:00
dnl ---------------------------------------------------------------------------
dnl Bus options and CPU capabilities. Replaces logic in
dnl hw/xfree86/os-support/bus/Makefile.am, among others.
dnl ---------------------------------------------------------------------------
2005-08-03 01:57:52 +02:00
DEFAULT_INT10="x86emu"
2005-08-21 21:15:11 +02:00
dnl Override defaults as needed for specific platforms:
2005-08-03 01:57:52 +02:00
2005-07-01 22:29:53 +02:00
case $host_cpu in
2005-09-13 20:37:35 +02:00
alpha*)
ALPHA_VIDEO=yes
case $host_os in
2007-10-10 00:25:16 +02:00
*freebsd*) SYS_LIBS=-lio ;;
2005-09-13 20:37:35 +02:00
*netbsd*) AC_DEFINE(USE_ALPHA_PIO, 1, [NetBSD PIO alpha IO]) ;;
esac
2007-12-28 22:59:53 +01:00
GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
2005-09-13 20:37:35 +02:00
;;
arm*)
ARM_VIDEO=yes
2014-04-03 20:54:02 +02:00
DEFAULT_INT10="stub"
2005-07-01 22:29:53 +02:00
;;
i*86)
2005-09-13 20:37:35 +02:00
I386_VIDEO=yes
2005-07-14 00:54:02 +02:00
case $host_os in
2005-12-01 06:04:07 +01:00
*freebsd*) AC_DEFINE(USE_DEV_IO) ;;
2008-04-07 13:09:04 +02:00
*dragonfly*) AC_DEFINE(USE_DEV_IO) ;;
2006-05-25 00:43:13 +02:00
*netbsd*) AC_DEFINE(USE_I386_IOPL)
SYS_LIBS=-li386
;;
2006-03-05 17:35:08 +01:00
*openbsd*) AC_DEFINE(USE_I386_IOPL)
SYS_LIBS=-li386
;;
2005-07-14 00:54:02 +02:00
esac
2005-07-01 22:29:53 +02:00
;;
2005-09-13 20:37:35 +02:00
powerpc*)
PPC_VIDEO=yes
case $host_os in
*freebsd*) DEFAULT_INT10=stub ;;
esac
;;
sparc*)
SPARC64_VIDEO=yes
BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c"
2007-12-28 22:59:53 +01:00
GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
2005-09-13 20:37:35 +02:00
;;
x86_64*|amd64*)
I386_VIDEO=yes
case $host_os in
*freebsd*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
2008-04-07 13:09:04 +02:00
*dragonfly*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
2006-05-25 00:43:13 +02:00
*netbsd*) AC_DEFINE(USE_I386_IOPL, 1, [BSD i386 iopl])
SYS_LIBS=-lx86_64
;;
2006-03-05 17:35:08 +01:00
*openbsd*) AC_DEFINE(USE_AMD64_IOPL, 1, [BSD AMD64 iopl])
SYS_LIBS=-lamd64
;;
2005-09-13 20:37:35 +02:00
esac
2007-12-28 22:59:53 +01:00
GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
;;
ia64*)
GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
;;
s390*)
GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
2005-09-13 20:37:35 +02:00
;;
esac
2007-12-28 22:59:53 +01:00
AC_SUBST(GLX_ARCH_DEFINES)
2005-09-13 20:37:35 +02:00
dnl BSD *_video.c selection
2005-10-16 05:02:53 +02:00
AM_CONDITIONAL(ALPHA_VIDEO, [test "x$ALPHA_VIDEO" = xyes])
AM_CONDITIONAL(ARM_VIDEO, [test "x$ARM_VIDEO" = xyes])
AM_CONDITIONAL(I386_VIDEO, [test "x$I386_VIDEO" = xyes])
AM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes])
AM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes])
2005-09-13 20:37:35 +02:00
2005-09-13 22:59:05 +02:00
DRI=no
2005-09-13 20:37:35 +02:00
dnl it would be nice to autodetect these *CONS_SUPPORTs
case $host_os in
2008-04-07 13:09:04 +02:00
*freebsd* | *dragonfly*)
2006-06-03 12:48:37 +02:00
case $host_os in
kfreebsd*-gnu) ;;
*) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) ;;
esac
2005-09-13 20:37:35 +02:00
AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
AC_DEFINE(SYSCONS_SUPPORT, 1, [System has syscons console])
2005-09-13 22:59:05 +02:00
DRI=yes
2005-09-13 20:37:35 +02:00
;;
*netbsd*)
AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
2006-11-14 23:37:18 +01:00
AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
2005-09-13 20:37:35 +02:00
AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
2005-09-13 22:59:05 +02:00
DRI=yes
2005-09-13 20:37:35 +02:00
;;
*openbsd*)
AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
2006-02-24 18:01:57 +01:00
AC_DEFINE(PCVT_SUPPORT, 1, [System has PC console])
2005-09-13 20:37:35 +02:00
AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
2005-08-03 01:57:52 +02:00
;;
2005-09-13 22:59:05 +02:00
*linux*)
DRI=yes
;;
2007-01-09 02:36:07 +01:00
*solaris*)
2016-09-29 19:35:01 +02:00
DRI=yes
2007-01-09 02:36:07 +01:00
;;
2008-05-07 01:07:33 +02:00
darwin*)
AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
;;
2012-10-15 06:38:20 +02:00
cygwin*|mingw*)
2015-07-07 18:19:50 +02:00
CFLAGS="$CFLAGS -DFD_SETSIZE=512"
2010-02-01 18:12:57 +01:00
;;
2005-07-01 22:29:53 +02:00
esac
2007-09-05 21:34:29 +02:00
dnl augment XORG_RELEASE_VERSION for our snapshot number and to expose the
dnl major number
PVMAJOR=`echo $PACKAGE_VERSION | cut -d . -f 1`
2009-02-18 08:25:14 +01:00
PVS=`echo $PACKAGE_VERSION | cut -d . -f 4 | cut -d - -f 1`
2007-09-05 21:34:29 +02:00
if test "x$PVS" = "x"; then
PVS="0"
fi
VENDOR_RELEASE="((($PVMAJOR) * 10000000) + (($PVM) * 100000) + (($PVP) * 1000) + $PVS)"
VENDOR_MAN_VERSION="Version ${PACKAGE_VERSION}"
VENDOR_NAME="The X.Org Foundation"
VENDOR_NAME_SHORT="X.Org"
VENDOR_WEB="http://wiki.x.org"
2005-07-01 22:29:53 +02:00
2005-08-21 21:15:11 +02:00
dnl Build options.
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],
2009-10-03 01:51:24 +02:00
[Obsolete - use --enable-strict-compilation instead]),
AC_MSG_ERROR([--enable-werror has been replaced by --enable-strict-compilation]))
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
[Enable debugging (default: disabled)]),
[DEBUGGING=$enableval], [DEBUGGING=no])
2005-08-21 21:15:11 +02:00
AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
2005-07-01 22:29:53 +02:00
[INT10="$withval"],
[INT10="$DEFAULT_INT10"])
2007-01-25 03:54:38 +01:00
AC_ARG_WITH(vendor-name, AS_HELP_STRING([--with-vendor-name=VENDOR],
2005-10-17 19:11:12 +02:00
[Vendor string reported by the server]),
2007-09-05 21:34:29 +02:00
[ VENDOR_NAME="$withval" ], [])
2007-01-25 03:54:38 +01:00
AC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-name-short=VENDOR],
2005-11-03 18:08:06 +01:00
[Short version of vendor string reported by the server]),
2007-09-05 21:34:29 +02:00
[ VENDOR_NAME_SHORT="$withval" ], [])
2005-10-17 19:11:12 +02:00
AC_ARG_WITH(vendor-web, AS_HELP_STRING([--with-vendor-web=URL],
[Vendor web address reported by the server]),
2007-09-05 21:34:29 +02:00
[ VENDOR_WEB="$withval" ], [])
2005-09-15 07:06:54 +02:00
AC_ARG_WITH(module-dir, AS_HELP_STRING([--with-module-dir=DIR],
2005-10-17 19:11:12 +02:00
[Directory where modules are installed (default: $libdir/xorg/modules)]),
2005-07-01 22:29:53 +02:00
[ moduledir="$withval" ],
2005-08-21 21:15:11 +02:00
[ moduledir="${libdir}/xorg/modules" ])
2005-10-17 19:11:12 +02:00
AC_ARG_WITH(log-dir, AS_HELP_STRING([--with-log-dir=DIR],
[Directory where log files are kept (default: $localstatedir/log)]),
2005-09-15 07:06:54 +02:00
[ logdir="$withval" ],
[ logdir="$localstatedir/log" ])
2005-10-17 19:11:12 +02:00
AC_ARG_WITH(builder-addr, AS_HELP_STRING([--with-builder-addr=ADDRESS],
[Builder address (default: xorg@lists.freedesktop.org)]),
2005-07-01 22:29:53 +02:00
[ BUILDERADDR="$withval" ],
[ BUILDERADDR="xorg@lists.freedesktop.org" ])
2007-02-12 23:22:39 +01:00
AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
[ BUILDERSTRING="$withval" ]
[ ])
2014-09-12 20:33:48 +02:00
AC_ARG_ENABLE(listen-tcp, AS_HELP_STRING([--enable-listen-tcp],
[Listen on TCP by default (default:disabled)]),
[LISTEN_TCP=$enableval], [LISTEN_TCP=no])
AC_ARG_ENABLE(listen-unix, AS_HELP_STRING([--disable-listen-unix],
[Listen on Unix by default (default:enabled)]),
[LISTEN_UNIX=$enableval], [LISTEN_UNIX=yes])
AC_ARG_ENABLE(listen-local, AS_HELP_STRING([--disable-listen-local],
[Listen on local by default (default:enabled)]),
[LISTEN_LOCAL=$enableval], [LISTEN_LOCAL=yes])
2009-10-16 05:40:02 +02:00
Allow compile-time selection of a fallback input driver
A new --with-fallback-input-driver=foo option allows selecting a
fallback driver for the server if the driver configured for the device
is not found. Note that this only applies when the device has a driver
assigned and that module fails to load, devices without a driver are
ignored as usual.
This avoids the situation where a configuration assigns e.g. the
synaptics driver but that driver is not available on the system,
resulting in a dead device. A fallback driver can at least provides some
functionality.
This becomes more important as we move towards making other driver true
leaf nodes that can be installed/uninstalled as requested. Specifically,
wacom and synaptics, a config that assigns either driver should be
viable even when the driver itself is not (yet) installed on the system.
It is up to the distributions to make sure that the fallback driver is
always installed. The fallback driver can be disabled with
--without-fallback-input-driver and is disabled by default on non-Linux
systems because we don't have generic drivers on those platforms.
Default driver on Linux is libinput, evdev is the only other serious
candidate here.
Sample log output:
[ 3274.421] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/event4)
[ 3274.421] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad weird driver"
[ 3274.421] (II) LoadModule: "banana"
[ 3274.422] (WW) Warning, couldn't open module banana
[ 3274.422] (II) UnloadModule: "banana"
[ 3274.422] (II) Unloading banana
[ 3274.422] (EE) Failed to load module "banana" (module does not exist, 0)
[ 3274.422] (EE) No input driver matching `banana'
[ 3274.422] (II) Falling back to input driver `libinput'
.. server proceeds to assign libinput, init the device, world peace and rainbows
everywhere, truly what a sight. Shame about the banana though.
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-06-01 06:38:54 +02:00
case $host_os in
linux*)
FALLBACK_INPUT_DRIVER="libinput"
;;
*)
FALLBACK_INPUT_DRIVER=""
;;
esac
AC_ARG_WITH(fallback-input-driver,
AC_HELP_STRING([--with-fallback-input-driver=$FALLBACK_INPUT_DRIVER],
[Input driver fallback if the requested driver for a device is unavailable]),
[ FALLBACK_INPUT_DRIVER=$withval ], [])
if test "x$FALLBACK_INPUT_DRIVER" = "xno"; then
FALLBACK_INPUT_DRIVER=""
fi
AC_MSG_CHECKING([for fallback input driver])
AC_MSG_RESULT([$FALLBACK_INPUT_DRIVER])
AC_DEFINE_UNQUOTED(FALLBACK_INPUT_DRIVER, ["$FALLBACK_INPUT_DRIVER"], [ Fallback input driver ])
2009-10-16 05:40:02 +02:00
dnl Determine font path
XORG_FONTROOTDIR
XORG_FONTSUBDIR(FONTMISCDIR, fontmiscdir, misc)
XORG_FONTSUBDIR(FONTOTFDIR, fontotfdir, OTF)
XORG_FONTSUBDIR(FONTTTFDIR, fontttfdir, TTF)
XORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
XORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
XORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
2014-01-17 15:54:01 +01:00
dnl Uses --with-default-font-path if set, otherwise uses standard
dnl subdirectories of FONTROOTDIR. Some distros set the default font path to
dnl "catalogue:/etc/X11/fontpath.d,built-ins"
2010-01-14 07:42:16 +01:00
DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
2014-01-17 15:54:01 +01:00
case $host_os in
darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
esac
2005-10-17 19:11:12 +02:00
AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
2005-08-21 08:56:19 +02:00
[ FONTPATH="$withval" ],
2005-10-15 00:19:51 +02:00
[ FONTPATH="${DEFAULT_FONT_PATH}" ])
2009-09-16 06:13:48 +02:00
2010-01-14 07:42:16 +01:00
AC_MSG_CHECKING([for default font path])
AC_MSG_RESULT([$FONTPATH])
2018-03-28 22:11:18 +02:00
AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: auto)]),
2005-08-21 21:15:11 +02:00
[ XKBPATH="$withval" ],
2018-03-28 22:11:18 +02:00
[ XKBPATH="auto" ])
2005-10-17 19:11:12 +02:00
AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
2005-09-21 20:14:32 +02:00
[ XKBOUTPUT="$withval" ],
2005-11-21 00:01:02 +01:00
[ XKBOUTPUT="compiled" ])
2009-01-10 13:36:16 +01:00
AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
[Keyboard ruleset (default: base/evdev)]),
2009-01-21 01:50:43 +01:00
[ XKB_DFLT_RULES="$withval" ],
[ XKB_DFLT_RULES="" ])
2009-01-10 13:36:16 +01:00
AC_ARG_WITH(default-xkb-model, AS_HELP_STRING([--with-default-xkb-model=MODEL],
2009-12-18 03:24:40 +01:00
[Keyboard model (default: pc105)]),
2009-01-21 01:50:43 +01:00
[ XKB_DFLT_MODEL="$withval" ],
2009-12-18 03:24:40 +01:00
[ XKB_DFLT_MODEL="pc105" ])
2009-01-10 13:36:16 +01:00
AC_ARG_WITH(default-xkb-layout, AS_HELP_STRING([--with-default-xkb-layout=LAYOUT],
[Keyboard layout (default: us)]),
2009-01-21 01:50:43 +01:00
[ XKB_DFLT_LAYOUT="$withval" ],
[ XKB_DFLT_LAYOUT="us" ])
2009-01-10 13:36:16 +01:00
AC_ARG_WITH(default-xkb-variant, AS_HELP_STRING([--with-default-xkb-variant=VARIANT],
[Keyboard variant (default: (none))]),
2009-01-21 01:50:43 +01:00
[ XKB_DFLT_VARIANT="$withval" ],
[ XKB_DFLT_VARIANT="" ])
2009-01-10 13:36:16 +01:00
AC_ARG_WITH(default-xkb-options, AS_HELP_STRING([--with-default-xkb-options=OPTIONS],
[Keyboard layout options (default: (none))]),
2009-01-21 01:50:43 +01:00
[ XKB_DFLT_OPTIONS="$withval" ],
[ XKB_DFLT_OPTIONS="" ])
2007-11-26 21:24:15 +01:00
AC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH],
[Directory where ancillary server config files are installed (default: ${libdir}/xorg)]),
2007-05-29 03:53:02 +02:00
[ SERVERCONFIG="$withval" ],
2007-11-26 21:24:15 +01:00
[ SERVERCONFIG="${libdir}/xorg" ])
2007-11-22 04:51:14 +01:00
AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]),
2007-12-14 00:56:31 +01:00
[ APPLE_APPLICATIONS_DIR="${withval}" ],
2007-11-22 04:51:14 +01:00
[ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
2007-12-14 00:56:31 +01:00
AC_SUBST([APPLE_APPLICATIONS_DIR])
2008-12-09 06:00:11 +01:00
AC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name=NAME], [Name for the .app (default: X11)]),
[ APPLE_APPLICATION_NAME="${withval}" ],
[ APPLE_APPLICATION_NAME="X11" ])
AC_SUBST([APPLE_APPLICATION_NAME])
2016-05-04 08:24:44 +02:00
AC_ARG_WITH(bundle-id-prefix, AS_HELP_STRING([--with-bundle-id-prefix=RDNS_PREFIX], [Prefix to use for bundle identifiers (default: org.x)]),
2011-05-12 02:27:52 +02:00
[ BUNDLE_ID_PREFIX="${withval}" ])
2011-04-25 06:35:04 +02:00
AC_SUBST([BUNDLE_ID_PREFIX])
AC_DEFINE_UNQUOTED(BUNDLE_ID_PREFIX, "$BUNDLE_ID_PREFIX", [Prefix to use for bundle identifiers])
2016-05-07 09:43:33 +02:00
m4_define(DEFAULT_BUNDLE_VERSION, m4_esyscmd([echo ]AC_PACKAGE_VERSION[ | cut -f1-3 -d. | tr -d '\n']))
2016-05-04 08:42:34 +02:00
AC_ARG_WITH(bundle-version, AS_HELP_STRING([--with-bundle-version=VERSION], [Version to use for X11.app's CFBundleVersion (default: ]DEFAULT_BUNDLE_VERSION[)]),
[ BUNDLE_VERSION="${withval}" ],
2016-05-07 09:43:33 +02:00
[ BUNDLE_VERSION="DEFAULT_BUNDLE_VERSION" ])
2016-05-04 08:42:34 +02:00
AC_SUBST([BUNDLE_VERSION])
AC_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[)]),
[ BUNDLE_VERSION_STRING="${withval}" ],
[ BUNDLE_VERSION_STRING="${PACKAGE_VERSION}" ])
AC_SUBST([BUNDLE_VERSION_STRING])
2009-07-19 00:51:29 +02:00
AC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]),
[ XQUARTZ_SPARKLE="${enableval}" ],
[ XQUARTZ_SPARKLE="no" ])
AC_SUBST([XQUARTZ_SPARKLE])
2016-05-04 08:21:38 +02:00
AC_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)]),
[ XQUARTZ_SPARKLE_FEED_URL="${withval}" ],
[ XQUARTZ_SPARKLE_FEED_URL="https://www.xquartz.org/releases/sparkle/release.xml" ])
AC_SUBST([XQUARTZ_SPARKLE_FEED_URL])
2013-12-22 01:58:28 +01:00
AC_ARG_ENABLE(visibility, AS_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]),
2008-11-28 05:01:57 +01:00
[SYMBOL_VISIBILITY=$enableval],
[SYMBOL_VISIBILITY=auto])
2005-08-21 21:15:11 +02:00
2007-04-05 18:14:31 +02:00
dnl GLX build options
2011-04-06 17:23:45 +02:00
AC_ARG_WITH(khronos-spec-dir, AS_HELP_STRING([--with-khronos-spec-dir=PATH], [Path to Khronos OpenGL registry database files (default: auto)]),
[KHRONOS_SPEC_DIR="${withval}"],
[KHRONOS_SPEC_DIR=auto])
2007-04-05 18:14:31 +02:00
2005-08-21 21:15:11 +02:00
dnl Extensions.
2008-04-29 00:42:02 +02:00
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
2011-11-04 19:30:43 +01:00
AC_ARG_ENABLE(mitshm, AS_HELP_STRING([--disable-mitshm], [Build SHM extension (default: auto)]), [MITSHM=$enableval], [MITSHM=auto])
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes extension (default: enabled)]), [RES=$enableval], [RES=yes])
2010-04-09 04:55:45 +02:00
AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes])
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes])
2005-12-01 23:06:49 +01:00
AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])
2006-08-10 19:28:06 +02:00
AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto])
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes])
AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
AC_ARG_ENABLE(glx, AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
2008-08-11 22:59:17 +02:00
AC_ARG_ENABLE(dri2, AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
2013-04-10 04:59:39 +02:00
AC_ARG_ENABLE(dri3, AS_HELP_STRING([--enable-dri3], [Build DRI3 extension (default: auto)]), [DRI3=$enableval], [DRI3=auto])
2013-07-12 01:11:57 +02:00
AC_ARG_ENABLE(present, AS_HELP_STRING([--disable-present], [Build Present extension (default: enabled)]), [PRESENT=$enableval], [PRESENT=yes])
2005-10-17 19:11:12 +02:00
AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
2006-08-10 19:28:06 +02:00
AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
2007-04-05 18:14:31 +02:00
AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
2010-04-26 18:39:19 +02:00
AC_ARG_ENABLE(xselinux, AS_HELP_STRING([--enable-xselinux], [Build SELinux extension (default: disabled)]), [XSELINUX=$enableval], [XSELINUX=no])
AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--enable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
2005-11-02 16:56:40 +01:00
AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
2010-04-26 18:39:19 +02:00
AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
2006-07-11 01:37:53 +02:00
AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
2010-03-24 02:08:55 +01:00
AC_ARG_ENABLE(config-udev, AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto])
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
AC_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])
2007-08-01 00:10:50 +02:00
AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
2011-09-18 12:46:52 +02:00
AC_ARG_ENABLE(config-wscons, AS_HELP_STRING([--enable-config-wscons], [Build wscons config support (default: auto)]), [CONFIG_WSCONS=$enableval], [CONFIG_WSCONS=auto])
2006-09-22 05:58:32 +02:00
AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
2009-07-10 14:38:51 +02:00
AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
2009-07-10 14:54:07 +02:00
AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes])
2009-07-10 15:09:08 +02:00
AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes])
Add Windows-DRI extension
If windowsdriproto headers are available, build a Windows-DRI extension,
which supports requests to enable local clients to directly render GL to a
Windows drawable:
- a query to check if WGL is being used on a screen
- a query to map a fbconfigID to a native pixelformatindex
- a query to map a drawable to a native handle
Windows-DRI can only be useful if we are using WGL, so make an note if WGL
is active on a screen.
Make validGlxDrawable() public
Adjust glxWinSetPixelFormat() so it doesn't require a context, just a
screen and config.
That enables factoring out the deferred drawable creation code as
glxWinDeferredCreateDrawable()
Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a
file mapping, so they exist in memory which can be shared with the direct
rendering process.
Currently, this file mapping is accessed by a name generated from the XID.
This will not be unique across multiple server instances. It would perhaps
be better, although more complicated, to use an anonymous file mapping, and
then duplicate the handle for the direct rendering process.
Use glxWinDeferredCreateDrawable() to ensure the native handle exists for
the Windows-DRI query to map a drawable to native handle.
v2:
Various printf format warning fixes
v3:
Fix format warnings on x86
Move some uninteresting windows-dri output to debug log level
v4:
check for windowsdriproto when --enable-windowsdri
use windowsdriproto_CFLAGS
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-07-24 13:29:41 +02:00
AC_ARG_ENABLE(windowsdri, AS_HELP_STRING([--enable-windowsdri], [Build XWin with WindowsDRI extension (default: auto)]), [WINDOWSDRI=$enableval], [WINDOWSDRI=auto])
2010-01-22 17:34:36 +01:00
AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
2010-12-22 15:51:09 +01:00
AC_ARG_ENABLE(clientids, AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
2010-06-01 12:05:47 +02:00
AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
2013-12-22 01:58:28 +01:00
AC_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])
AC_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])
2014-03-25 18:48:52 +01:00
AC_ARG_ENABLE(systemd-logind, AS_HELP_STRING([--enable-systemd-logind], [Build systemd-logind support (default: auto)]), [SYSTEMD_LOGIND=$enableval], [SYSTEMD_LOGIND=auto])
AC_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])
2005-08-21 21:15:11 +02:00
dnl DDXes.
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
2014-04-13 19:14:34 +02:00
AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: no)]), [DMX=$enableval], [DMX=no])
2005-08-21 21:15:11 +02:00
AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
2009-09-24 12:57:02 +02:00
AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
2007-11-22 04:51:14 +01:00
AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
2014-03-12 00:11:39 +01:00
AC_ARG_ENABLE(xwayland, AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto])
xwayland: Add glamor egl_backend for EGLStreams
This adds initial support for displaying Xwayland applications through
the use of EGLStreams and nvidia's custom wayland protocol by adding
another egl_backend driver. This also adds some additional egl_backend
hooks that are required to make things work properly.
EGLStreams work a lot differently then the traditional way of handling
buffers with wayland. Unfortunately, there are also a LOT of various
pitfalls baked into it's design that need to be explained.
This has a very large and unfortunate implication: direct rendering is,
for the time being at least, impossible to do through EGLStreams. The
main reason being that the EGLStream spec mandates that we lose the
entire color buffer contents with each eglSwapBuffers(), which goes
against X's requirement of not losing data with pixmaps. no way to use
an allocated EGLSurface as the storage for glamor rendering like we do
with GBM, we have to rely on blitting each pixmap to it's respective
EGLSurface producer each frame. In order to pull this off, we add two
different additional egl_backend hooks that GBM opts out of
implementing:
- egl_backend.allow_commits for holding off displaying any EGLStream
backed pixmaps until the point where it's stream is completely
initialized and ready for use
- egl_backend.post_damage for blitting the content of the EGLStream
surface producer before Xwayland actually damages and commits the
wl_surface to the screen.
The other big pitfall here is that using nvidia's wayland-eglstreams
helper library is also not possible for the most part. All of it's API
for creating and destroying streams rely on being able to perform a
roundtrip in order to bring each stream to completion since the wayland
compositor must perform it's job of connecting a consumer to each
EGLstream. Because Xwayland has to potentially handle both responding to
the wayland compositor and it's own X clients, the situation of the
wayland compositor being one of our X clients must be considered. If we
perform a roundtrip with the Wayland compositor, it's possible that the
wayland compositor might currently be connected to us as an X client and
thus hang while both Xwayland and the wayland compositor await responses
from eachother. To avoid this, we work directly with the wayland
protocol and use wl_display_sync() events along with release() events to
set up and destroy EGLStreams asynchronously alongside handling X
clients.
Additionally, since setting up EGLStreams is not an atomic operation we
have to take into consideration the fact that an EGLStream can
potentially be created in response to a window resize, then immediately
deleted due to another pending window resize in the same X client's
pending reqests before Xwayland hits the part of it's event loop where
we read from the wayland compositor. To make this even more painful, we
also have to take into consideration that since EGLStreams are not
atomic that it's possible we could delete wayland resources for an
EGLStream before the compositor even finishes using them and thus run
into errors. So, we use quite a bit of tracking logic to keep EGLStream
objects alive until we know the compositor isn't using them (even if
this means the stream outlives the pixmap it backed).
While the default backend for glamor remains GBM, this patch exists for
users who have had to deal with the reprecussion of their GPU
manufacturers ignoring the advice of upstream and the standardization of
GBM across most major GPU manufacturers. It is not intended to be a
final solution to the GBM debate, but merely a baindaid so our users
don't have to suffer from the consequences of companies avoiding working
upstream. New drivers are strongly encouraged not to use this as a
backend, and use GBM like everyone else. We even spit this out as an
error from Xwayland when using the eglstream backend.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-04-20 20:38:05 +02:00
AC_ARG_ENABLE(xwayland-eglstream, AS_HELP_STRING([--enable-xwayland-eglstream], [Build Xwayland eglstream support (default: no)]), [XWAYLAND_EGLSTREAM=$enableval], [XWAYLAND_EGLSTREAM=no])
2009-06-02 19:49:09 +02:00
AC_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])
2008-04-20 17:35:42 +02:00
AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
2016-08-12 02:28:38 +02:00
AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: auto)]), [GLAMOR=$enableval], [GLAMOR=auto])
2006-04-01 23:02:40 +02:00
dnl kdrive and its subsystems
2005-12-27 09:31:37 +01:00
AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
2005-12-28 02:01:06 +01:00
AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
2010-01-04 09:07:04 +01:00
dnl kdrive options
2013-11-18 23:07:09 +01:00
AC_ARG_ENABLE(libunwind, AS_HELP_STRING([--enable-libunwind], [Use libunwind for backtracing (default: auto)]), [LIBUNWIND="$enableval"], [LIBUNWIND="auto"])
2014-07-09 12:33:23 +02:00
AC_ARG_ENABLE(xshmfence, AS_HELP_STRING([--disable-xshmfence], [Disable xshmfence (default: auto)]), [XSHMFENCE="$enableval"], [XSHMFENCE="auto"])
2006-04-01 23:02:40 +02:00
2005-08-21 21:15:11 +02:00
2005-09-20 17:50:31 +02:00
dnl chown/chmod to be setuid root as part of build
dnl Replaces InstallXserverSetUID in imake
AC_ARG_ENABLE(install-setuid,
AS_HELP_STRING([--enable-install-setuid],
[Install Xorg server as owned by root with setuid bit (default: auto)]),
[SETUID=$enableval], [SETUID=auto])
2005-09-27 16:09:31 +02:00
AC_MSG_CHECKING([to see if we can install the Xorg server as root])
2005-09-20 17:50:31 +02:00
if test "x$SETUID" = "xauto" ; then
case $host_os in
2010-03-22 18:47:52 +01:00
cygwin*) SETUID="no" ;;
2011-11-04 19:26:14 +01:00
mingw*) SETUID="no" ;;
2005-09-20 17:50:31 +02:00
darwin*) SETUID="no" ;;
*)
case $host_cpu in
sparc) SETUID="no" ;;
*) SETUID="yes" ;;
esac
esac
2005-09-27 16:09:31 +02:00
if test "x$SETUID" = xyes; then
touch testfile
chown root testfile > /dev/null 2>&1 || SETUID="no"
rm -f testfile
fi
2005-09-20 17:50:31 +02:00
fi
2005-09-27 16:09:31 +02:00
AC_MSG_RESULT([$SETUID])
2005-09-20 17:50:31 +02:00
AM_CONDITIONAL(INSTALL_SETUID, [test "x$SETUID" = "xyes"])
2005-09-03 05:27:55 +02:00
dnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro
2006-07-19 23:01:20 +02:00
dnl was not expanded, since xorg-server with no transport types is rather useless.
2005-09-03 05:27:55 +02:00
dnl
dnl If you're seeing an error here, be sure you installed the lib/xtrans module
dnl first and if it's not in the default location, that you set the ACLOCAL
dnl environment variable to find it, such as:
dnl ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
2009-10-06 16:08:42 +02:00
m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
2005-09-03 05:27:55 +02:00
# Transport selection macro from xtrans.m4
XTRANS_CONNECTION_FLAGS
2005-07-01 22:29:53 +02:00
2005-09-03 05:27:55 +02:00
# Secure RPC detection macro from xtrans.m4
XTRANS_SECURE_RPC_FLAGS
2007-08-18 00:29:16 +02:00
AM_CONDITIONAL(SECURE_RPC, [test "x$SECURE_RPC" = xyes])
2005-07-12 03:20:36 +02:00
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(INT10_VM86, [test "x$INT10" = xvm86])
AM_CONDITIONAL(INT10_X86EMU, [test "x$INT10" = xx86emu])
AM_CONDITIONAL(INT10_STUB, [test "x$INT10" = xstub])
2005-07-14 05:32:09 +02:00
2010-03-24 06:08:23 +01:00
dnl DDX Detection... Yes, it's ugly to have it here... but we need to
dnl handle this early on so that we don't require unsupported extensions
2008-04-29 00:42:02 +02:00
case $host_os in
2012-01-03 01:14:32 +01:00
cygwin* | mingw*)
2012-03-29 09:06:36 +02:00
CONFIG_HAL=no
CONFIG_UDEV=no
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
CONFIG_UDEV_KMS=no
2010-03-24 06:08:23 +01:00
DGA=no
2014-09-19 14:37:50 +02:00
DRM=no
2010-03-24 06:08:23 +01:00
DRI2=no
2013-04-10 04:59:39 +02:00
DRI3=no
2012-03-29 09:06:36 +02:00
INT10MODULE=no
PCI=no
VGAHW=no
VBE=no
XF86UTILS=no
2010-03-24 06:08:23 +01:00
XF86VIDMODE=no
XSELINUX=no
2012-03-29 09:06:36 +02:00
SYMBOL_VISIBILITY=no
2010-03-24 06:08:23 +01:00
;;
2008-04-29 00:42:02 +02:00
darwin*)
2011-09-14 17:37:38 +02:00
PCI=no
INT10MODULE=no
VGAHW=no
VBE=no
DRM=no
2009-01-10 10:39:08 +01:00
DRI2=no
2013-04-10 04:59:39 +02:00
DRI3=no
2009-01-10 10:39:08 +01:00
2008-04-29 00:42:02 +02:00
if test x$XQUARTZ = xauto; then
AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -framework Carbon"
2011-10-03 20:23:16 +02:00
AC_LINK_IFELSE([AC_LANG_SOURCE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}])],
2011-04-22 00:51:32 +02:00
[xorg_cv_Carbon_framework=yes],
[xorg_cv_Carbon_framework=no])
LDFLAGS=$save_LDFLAGS])
2008-04-29 00:42:02 +02:00
if test "X$xorg_cv_Carbon_framework" = Xyes; then
XQUARTZ=yes
else
XQUARTZ=no
fi
fi
2011-04-22 00:51:32 +02:00
AC_CHECK_FUNC(dispatch_async,
AC_DEFINE([HAVE_LIBDISPATCH], 1, [Define to 1 if you have the libdispatch (GCD) available]),
[])
2008-04-29 00:42:02 +02:00
if test "x$XQUARTZ" = xyes ; then
XQUARTZ=yes
XVFB=no
XNEST=no
2014-03-12 00:11:39 +01:00
XWAYLAND=no
2008-04-29 00:42:02 +02:00
COMPOSITE=no
DGA=no
DPMSExtension=no
XF86VIDMODE=no
fi
;;
2015-10-19 14:47:42 +02:00
gnu*)
DRM=no
DRI2=no
DRI3=no
;;
2009-10-03 05:44:19 +02:00
*) XQUARTZ=no ;;
2008-04-29 00:42:02 +02:00
esac
2005-08-21 21:15:11 +02:00
dnl ---------------------------------------------------------------------------
dnl Extension section
dnl ---------------------------------------------------------------------------
XEXT_INC='-I$(top_srcdir)/Xext'
XEXT_LIB='$(top_builddir)/Xext/libXext.la'
2005-07-05 00:18:40 +02:00
2009-09-15 07:05:27 +02:00
dnl Optional modules
VIDEOPROTO="videoproto"
COMPOSITEPROTO="compositeproto >= 0.4"
RECORDPROTO="recordproto >= 1.13.99.1"
SCRNSAVERPROTO="scrnsaverproto >= 1.1"
2011-04-07 11:53:51 +02:00
RESOURCEPROTO="resourceproto >= 1.2.0"
2009-09-15 07:05:27 +02:00
DRIPROTO="xf86driproto >= 2.1.0"
2012-07-07 11:20:58 +02:00
DRI2PROTO="dri2proto >= 2.8"
2018-02-28 02:19:35 +01:00
DRI3PROTO="dri3proto >= 1.2"
2009-09-15 07:05:27 +02:00
XINERAMAPROTO="xineramaproto"
BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
DGAPROTO="xf86dgaproto >= 2.0.99.1"
2013-12-10 16:09:17 +01:00
GLPROTO="glproto >= 1.4.17"
2009-09-16 02:58:52 +02:00
DMXPROTO="dmxproto >= 2.2.99.1"
2009-09-15 07:05:27 +02:00
VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
APPLEWMPROTO="applewmproto >= 1.4"
2014-07-09 12:33:23 +02:00
LIBXSHMFENCE="xshmfence >= 1.1"
2009-09-15 07:05:27 +02:00
2011-12-14 01:31:23 +01:00
dnl Required modules
2016-09-23 08:52:21 +02:00
XPROTO="xproto >= 7.0.31"
2018-02-12 22:51:53 +01:00
RANDRPROTO="randrproto >= 1.6.0"
2011-12-14 01:31:23 +01:00
RENDERPROTO="renderproto >= 0.11"
2013-11-07 08:06:28 +01:00
XEXTPROTO="xextproto >= 7.2.99.901"
2013-03-12 17:37:43 +01:00
INPUTPROTO="inputproto >= 2.3"
2011-12-14 01:31:23 +01:00
KBPROTO="kbproto >= 1.0.3"
2014-04-14 15:27:18 +02:00
FONTSPROTO="fontsproto >= 2.1.3"
2011-12-14 01:31:23 +01:00
FIXESPROTO="fixesproto >= 5.0"
DAMAGEPROTO="damageproto >= 1.1"
XCMISCPROTO="xcmiscproto >= 1.2.0"
BIGREQSPROTO="bigreqsproto >= 1.1.0"
2014-09-20 19:04:11 +02:00
XTRANS="xtrans >= 1.3.5"
2019-06-20 18:15:31 +02:00
PRESENTPROTO="presentproto >= 1.2"
2011-12-14 01:31:23 +01:00
2009-09-23 13:49:11 +02:00
dnl List of libraries that require a specific version
LIBAPPLEWM="applewm >= 1.4"
2009-10-05 02:44:43 +02:00
LIBDMX="dmx >= 1.0.99.1"
2010-01-27 18:10:41 +01:00
LIBDRI="dri >= 7.8.0"
Add RandR leases with modesetting driver support [v6]
This adds support for RandR CRTC/Output leases through the modesetting
driver, creating a lease using new kernel infrastructure and returning
that to a client through an fd which will have access to only those
resources.
v2: Restore CRTC mode when leases terminate
When a lease terminates for a crtc we have saved data for, go
ahead and restore the saved mode.
v3: Report RR_Rotate_0 rotations for leased crtcs.
Ignore leased CRTCs when selecting screen size.
Stop leasing encoders, the kernel doesn't do that anymore.
Turn off crtc->enabled while leased so that modesetting
ignores them.
Check lease status before calling any driver mode functions
When starting a lease, mark leased CRTCs as disabled and hide
their cursors. Also, check to see if there are other
non-leased CRTCs which are driving leased Outputs and mark
them as disabled as well. Sometimes an application will lease
an idle crtc instead of the one already associated with the
leased output.
When terminating a lease, reset any CRTCs which are driving
outputs that are no longer leased so that they start working
again.
This required splitting the DIX level lease termination code
into two pieces, one to remove the lease from the system
(RRLeaseTerminated) and a new function that frees the lease
data structure (RRLeaseFree).
v4: Report RR_Rotate_0 rotation for leased crtcs.
v5: Terminate all leases on server reset.
Leases hang around after the associated client exits so that
the client doesn't need to occupy an X server client slot and
consume a file descriptor once it has gotten the output
resources necessary.
Any leases still hanging around when the X server resets or
shuts down need to be cleaned up by calling the kernel to
terminate the lease and freeing any DIX structures.
Note that we cannot simply use the existing
drmmode_terminate_lease function on each lease as that wants
to also reset the video mode, and during server shut down that
modesetting: Validate leases on VT enter
The kernel doesn't allow any master ioctls to run when another
VT is active, including simple things like listing the active
leases. To deal with that, we check the list of leases
whenever the X server VT is activated.
xfree86: hide disabled cursors when resetting after lease termination
The lessee may well have played with cursors and left one
active on our screen. Just tell the kernel to turn it off.
v6: Add meson build infrastructure
[Also bumped libdrm requirement - ajax]
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-02-12 22:51:56 +01:00
LIBDRM="libdrm >= 2.4.89"
2013-12-28 01:44:15 +01:00
LIBEGL="egl"
2014-06-16 20:34:55 +02:00
LIBGBM="gbm >= 10.2.0"
2013-11-04 21:13:45 +01:00
LIBGL="gl >= 7.1.0"
2009-09-22 12:34:54 +02:00
LIBXEXT="xext >= 1.0.99.4"
2015-09-02 03:50:55 +02:00
LIBXFONT="xfont2 >= 2.0.0"
2009-09-23 13:49:11 +02:00
LIBXI="xi >= 1.2.99.1"
2009-10-05 02:44:43 +02:00
LIBXTST="xtst >= 1.0.99.2"
2011-05-10 23:34:23 +02:00
LIBPCIACCESS="pciaccess >= 0.12.901"
2009-09-27 14:45:47 +02:00
LIBUDEV="libudev >= 143"
2010-02-26 02:41:38 +01:00
LIBSELINUX="libselinux >= 2.0.86"
2010-06-10 06:31:48 +02:00
LIBDBUS="dbus-1 >= 1.0"
2012-05-30 11:19:08 +02:00
LIBPIXMAN="pixman-1 >= 0.27.2"
2010-06-04 04:28:43 +02:00
dnl Pixman is always required, but we separate it out so we can link
dnl specific modules against it
PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
2010-06-23 14:18:03 +02:00
REQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
2011-09-14 20:45:18 +02:00
dnl Core modules for most extensions, et al.
2011-12-14 01:31:23 +01:00
SDK_REQUIRED_MODULES="$XPROTO $RANDRPROTO $RENDERPROTO $XEXTPROTO $INPUTPROTO $KBPROTO $FONTSPROTO $LIBPIXMAN"
2011-09-14 20:45:18 +02:00
# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
AC_SUBST(SDK_REQUIRED_MODULES)
2015-12-08 20:37:51 +01:00
AC_CHECK_DECL([PTHREAD_MUTEX_RECURSIVE], [HAVE_RECURSIVE_MUTEX=yes], [HAVE_RECURSIVE_MUTEX=no], [[#include <pthread.h>]])
THREAD_DEFAULT=no
if test "x$HAVE_RECURSIVE_MUTEX" = "xyes" ; then
THREAD_DEFAULT=yes
fi
2016-07-28 15:26:38 +02:00
case $host_os in
mingw*) THREAD_DEFAULT=no ;;
*)
esac
2015-12-08 20:37:51 +01:00
AC_ARG_ENABLE(input-thread, AS_HELP_STRING([--enable-input-thread],
[Enable input threads]),
[INPUTTHREAD=$enableval], [INPUTTHREAD=$THREAD_DEFAULT])
if test "x$INPUTTHREAD" = "xyes" ; then
AX_PTHREAD(,AC_MSG_ERROR([threaded input requested but no pthread support has been found]))
SYS_LIBS="$SYS_LIBS $PTHREAD_LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
AC_DEFINE(INPUTTHREAD, 1, [Use a separate input thread])
2016-09-11 06:14:19 +02:00
save_LIBS="$LIBS"
LIBS="$LIBS $SYS_LIBS"
dnl MacOS X 10.6 & higher
AC_MSG_CHECKING(for pthread_setname_np(const char*))
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
[pthread_setname_np("example")])],
[AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID,1,
[Have function pthread_setname_np(const char*)])],
[AC_MSG_RESULT(no)])
dnl GNU libc 2.12 & higher, Solaris 11.3 & higher
AC_MSG_CHECKING(for pthread_setname_np(pthread_t, const char*))
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
[pthread_setname_np(pthread_self(), "example")])],
[AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITH_TID,1,
[Have function pthread_setname_np(pthread_t, const char*)])],
[AC_MSG_RESULT(no)])
LIBS="$save_LIBS"
2015-12-08 20:37:51 +01:00
fi
2011-12-14 01:31:23 +01:00
REQUIRED_MODULES="$FIXESPROTO $DAMAGEPROTO $XCMISCPROTO $XTRANS $BIGREQSPROTO $SDK_REQUIRED_MODULES"
2009-09-27 14:45:47 +02:00
2013-11-25 11:54:07 +01:00
dnl systemd socket activation
dnl activate the code in libxtrans that grabs systemd's socket fds
2015-12-04 13:30:47 +01:00
dnl libsystemd-daemon was moved into libsystemd in version 209
LIBSYSTEMD="libsystemd >= 209"
2013-11-25 11:54:07 +01:00
AC_ARG_WITH([systemd-daemon],
AS_HELP_STRING([--with-systemd-daemon],
[support systemd socket activation (default: auto)]),
[WITH_SYSTEMD_DAEMON=$withval], [WITH_SYSTEMD_DAEMON=auto])
2015-12-04 13:30:47 +01:00
if test "x$WITH_SYSTEMD_DAEMON" = "xyes" -o "x$WITH_SYSTEMD_DAEMON" = "xauto" ; then
PKG_CHECK_MODULES([SYSTEMD_DAEMON], [$LIBSYSTEMD],
[HAVE_SYSTEMD_DAEMON=yes;
LIBSYSTEMD_DAEMON="$LIBSYSTEMD"],
[PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
[HAVE_SYSTEMD_DAEMON=yes;
LIBSYSTEMD_DAEMON=libsystemd-daemon],
[HAVE_SYSTEMD_DAEMON=no])])
if test "x$HAVE_SYSTEMD_DAEMON" = xyes; then
AC_DEFINE(HAVE_SYSTEMD_DAEMON, 1, [Define to 1 if libsystemd-daemon is available])
REQUIRED_LIBS="$REQUIRED_LIBS $LIBSYSTEMD_DAEMON"
elif test "x$WITH_SYSTEMD_DAEMON" = xyes; then
2013-11-25 11:54:07 +01:00
AC_MSG_ERROR([systemd support requested but no library has been found])
fi
fi
AM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = "xyes"])
2013-12-12 03:48:57 +01:00
if test "x$CONFIG_UDEV" = xyes && test "x$CONFIG_HAL" = xyes; then
AC_MSG_ERROR([Hotplugging through both libudev and hal not allowed])
2009-09-27 14:45:47 +02:00
fi
PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
if test "x$CONFIG_UDEV" = xauto; then
CONFIG_UDEV="$HAVE_LIBUDEV"
fi
AM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" = xyes])
if test "x$CONFIG_UDEV" = xyes; then
CONFIG_HAL=no
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
if test "x$CONFIG_UDEV_KMS" = xauto; then
CONFIG_UDEV_KMS="$HAVE_LIBUDEV"
fi
2009-09-27 14:45:47 +02:00
if ! test "x$HAVE_LIBUDEV" = xyes; then
AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
fi
AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
if test "x$CONFIG_UDEV_KMS" = xyes; then
AC_DEFINE(CONFIG_UDEV_KMS, 1, [Use libudev for kms enumeration])
fi
2011-09-27 19:04:06 +02:00
SAVE_LIBS=$LIBS
SAVE_CFLAGS=$CFLAGS
2016-03-23 05:47:37 +01:00
CFLAGS="$CFLAGS $UDEV_CFLAGS"
2011-09-27 19:04:06 +02:00
LIBS=$UDEV_LIBS
AC_CHECK_FUNCS([udev_monitor_filter_add_match_tag])
AC_CHECK_FUNCS([udev_enumerate_add_match_tag])
LIBS=$SAVE_LIBS
CFLAGS=$SAVE_CFLAGS
2009-09-27 14:45:47 +02:00
fi
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
AM_CONDITIONAL(CONFIG_UDEV_KMS, [test "x$CONFIG_UDEV_KMS" = xyes])
2009-09-22 12:34:54 +02:00
2010-06-10 06:31:48 +02:00
PKG_CHECK_MODULES(DBUS, $LIBDBUS, [HAVE_DBUS=yes], [HAVE_DBUS=no])
2007-07-08 13:28:58 +02:00
if test "x$HAVE_DBUS" = xyes; then
AC_DEFINE(HAVE_DBUS, 1, [Have D-Bus support])
2006-07-19 16:05:12 +02:00
fi
2007-07-08 13:28:58 +02:00
AM_CONDITIONAL(HAVE_DBUS, [test "x$HAVE_DBUS" = xyes])
2007-08-01 00:10:50 +02:00
PKG_CHECK_MODULES(HAL, hal, [HAVE_HAL=yes], [HAVE_HAL=no])
if test "x$CONFIG_HAL" = xauto; then
CONFIG_HAL="$HAVE_HAL"
fi
if test "x$CONFIG_HAL" = xyes; then
if ! test "x$HAVE_HAL" = xyes; then
AC_MSG_ERROR([HAL hotplug API requested, but HAL is not installed.])
fi
AC_DEFINE(CONFIG_HAL, 1, [Use the HAL hotplug API])
2013-12-04 11:10:06 +01:00
NEED_DBUS="yes"
2007-08-01 00:10:50 +02:00
fi
AM_CONDITIONAL(CONFIG_HAL, [test "x$CONFIG_HAL" = xyes])
2014-01-07 12:15:12 +01:00
if test "x$SYSTEMD_LOGIND" = xauto; then
if test "x$HAVE_DBUS" = xyes -a "x$CONFIG_UDEV" = xyes ; then
SYSTEMD_LOGIND=yes
else
SYSTEMD_LOGIND=no
fi
fi
if test "x$SYSTEMD_LOGIND" = xyes; then
if ! test "x$HAVE_DBUS" = xyes; then
AC_MSG_ERROR([systemd-logind requested, but D-Bus is not installed.])
fi
if ! test "x$CONFIG_UDEV" = xyes ; then
AC_MSG_ERROR([systemd-logind is only supported in combination with udev configuration.])
fi
AC_DEFINE(SYSTEMD_LOGIND, 1, [Enable systemd-logind integration])
NEED_DBUS="yes"
fi
AM_CONDITIONAL(SYSTEMD_LOGIND, [test "x$SYSTEMD_LOGIND" = xyes])
Xorg: Add a suid root wrapper
With the recent systemd-logind changes it is possible to install the Xorg
binary without suid root rights and still have everything working as it
should *if* the user only has cards which are supported by kms.
This commit adds a little suid root wrapper, which is a bit weird, first we
strip the suid-root bit of the Xorg binary, and then we add a wrapper ?
The function of this wrapper is to see if a system still needs root-rights,
if it does not (it supports kms and the kms drivers are properly loaded),
then it will immediately drop all elevated rights before executing the real
Xorg binary. If it finds (some) cards which don't support kms, or no cards
at all, then it will execute the Xorg server with elevated rights so that
ie the nvidia binary driver and the vesa driver can keep working normally.
To make it possible for security concious users who don't need the root
rights to completely remove the wrapper, Xorg is started in a 3 step process
when the wrapper is enabled during build time:
1) A simple shell script which checks if the wrapper is there, if it is
it executes the wrapper, if not it directly executes the real Xorg binary
2) The wrapper gets executed, does its checks, normally drops all elevated
rights and then executes the real Xorg binary
3) The real Xorg binary does its thing
This allows distributions to put the wrapper binary in a separate package, and
will allow users to remove this package. IE the plan with Fedora is to make
"legacy" drivers depend on the wrapper pkg, and since our default install
contains some legacy drivers it will be part of the default install, but
users can later yum remove it (which will also automatically remove the
legacy driver packages as those won't work without it anyways).
The wrapper is loosely modelled after the existing Debian Xwrapper, it
uses the same config-file + config-file format, and also allows restricting
Xserver execution (through the wrapper) to console users only.
There also is a new needs_root_rights config file directive, which can
be used to override the auto-detection the wrapper does.
Hopefully this will allow Debian to replace their own wrapper with this
upstream one.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-05 16:41:14 +01:00
if test "x$SUID_WRAPPER" = xyes; then
dnl This is a define so that if some platforms want to put the wrapper
dnl somewhere else this can be easily changed
2014-12-16 04:59:45 +01:00
AC_DEFINE_DIR(SUID_WRAPPER_DIR, libexecdir, [Where to install the Xorg binary and Xorg.wrap])
Xorg: Add a suid root wrapper
With the recent systemd-logind changes it is possible to install the Xorg
binary without suid root rights and still have everything working as it
should *if* the user only has cards which are supported by kms.
This commit adds a little suid root wrapper, which is a bit weird, first we
strip the suid-root bit of the Xorg binary, and then we add a wrapper ?
The function of this wrapper is to see if a system still needs root-rights,
if it does not (it supports kms and the kms drivers are properly loaded),
then it will immediately drop all elevated rights before executing the real
Xorg binary. If it finds (some) cards which don't support kms, or no cards
at all, then it will execute the Xorg server with elevated rights so that
ie the nvidia binary driver and the vesa driver can keep working normally.
To make it possible for security concious users who don't need the root
rights to completely remove the wrapper, Xorg is started in a 3 step process
when the wrapper is enabled during build time:
1) A simple shell script which checks if the wrapper is there, if it is
it executes the wrapper, if not it directly executes the real Xorg binary
2) The wrapper gets executed, does its checks, normally drops all elevated
rights and then executes the real Xorg binary
3) The real Xorg binary does its thing
This allows distributions to put the wrapper binary in a separate package, and
will allow users to remove this package. IE the plan with Fedora is to make
"legacy" drivers depend on the wrapper pkg, and since our default install
contains some legacy drivers it will be part of the default install, but
users can later yum remove it (which will also automatically remove the
legacy driver packages as those won't work without it anyways).
The wrapper is loosely modelled after the existing Debian Xwrapper, it
uses the same config-file + config-file format, and also allows restricting
Xserver execution (through the wrapper) to console users only.
There also is a new needs_root_rights config file directive, which can
be used to override the auto-detection the wrapper does.
Hopefully this will allow Debian to replace their own wrapper with this
upstream one.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-05 16:41:14 +01:00
SETUID="no"
fi
AM_CONDITIONAL(SUID_WRAPPER, [test "x$SUID_WRAPPER" = xyes])
2013-12-04 11:10:06 +01:00
if test "x$NEED_DBUS" = xyes; then
AC_DEFINE(NEED_DBUS, 1, [Enable D-Bus core])
2006-07-19 16:05:12 +02:00
fi
2013-12-04 11:10:06 +01:00
AM_CONDITIONAL(NEED_DBUS, [test "x$NEED_DBUS" = xyes])
2006-07-19 16:05:12 +02:00
2011-09-18 12:46:52 +02:00
if test "x$CONFIG_WSCONS" = xauto; then
case $host_os in
*openbsd*)
CONFIG_WSCONS=yes;
;;
*)
CONFIG_WSCONS=no;
;;
esac
fi
AM_CONDITIONAL(CONFIG_WSCONS, [test "x$CONFIG_WSCONS" = xyes])
if test "x$CONFIG_WSCONS" = xyes; then
AC_DEFINE(CONFIG_WSCONS, 1, [Use wscons for input auto configuration])
fi
2009-09-16 06:13:48 +02:00
2008-04-04 19:01:40 +02:00
AC_MSG_CHECKING([for glibc...])
2011-10-03 20:23:16 +02:00
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
2008-04-04 19:01:40 +02:00
#include <features.h>
#ifndef __GLIBC__
#error
#endif
2011-10-03 20:23:16 +02:00
])], glibc=yes, glibc=no)
2008-04-04 19:01:40 +02:00
AC_MSG_RESULT([$glibc])
2007-08-31 21:24:07 +02:00
AC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes],
[AC_CHECK_LIB([rt], [clock_gettime], [have_clock_gettime=-lrt],
[have_clock_gettime=no])])
AC_MSG_CHECKING([for a useful monotonic clock ...])
if ! test "x$have_clock_gettime" = xno; then
if ! test "x$have_clock_gettime" = xyes; then
CLOCK_LIBS="$have_clock_gettime"
else
CLOCK_LIBS=""
fi
LIBS_SAVE="$LIBS"
LIBS="$CLOCK_LIBS"
2008-04-04 19:01:40 +02:00
CPPFLAGS_SAVE="$CPPFLAGS"
if test x"$glibc" = xyes; then
2008-04-08 12:00:38 +02:00
CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
2008-04-04 19:01:40 +02:00
fi
2007-08-31 21:24:07 +02:00
2011-10-03 20:23:16 +02:00
AC_RUN_IFELSE([AC_LANG_SOURCE([
2007-08-31 21:24:07 +02:00
#include <time.h>
int main(int argc, char *argv[[]]) {
struct timespec tp;
if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
return 0;
else
return 1;
}
2011-10-03 20:23:16 +02:00
])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
2007-08-31 21:24:07 +02:00
[MONOTONIC_CLOCK="cross compiling"])
2017-12-21 11:48:15 +01:00
if test "$MONOTONIC_CLOCK" = "cross compiling"; then
AC_CHECK_DECL([CLOCK_MONOTONIC],[MONOTONIC_CLOCK="guessing yes"],[MONOTONIC_CLOCK=no],[#include <time.h>])
fi
2007-08-31 21:24:07 +02:00
LIBS="$LIBS_SAVE"
2008-04-04 19:01:40 +02:00
CPPFLAGS="$CPPFLAGS_SAVE"
2007-08-31 21:24:07 +02:00
else
MONOTONIC_CLOCK=no
fi
AC_MSG_RESULT([$MONOTONIC_CLOCK])
2017-12-21 11:48:15 +01:00
if test "$MONOTONIC_CLOCK" = "guessing yes"; then
MONOTONIC_CLOCK=yes
fi
2007-08-31 21:24:07 +02:00
if test "x$MONOTONIC_CLOCK" = xyes; then
AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
LIBS="$LIBS $CLOCK_LIBS"
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(XV, [test "x$XV" = xyes])
if test "x$XV" = xyes; then
AC_DEFINE(XV, 1, [Support Xv extension])
2005-12-01 23:06:49 +01:00
AC_DEFINE(XvExtension, 1, [Build Xv extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $VIDEOPROTO"
2010-06-21 02:37:26 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $VIDEOPROTO"
2006-02-16 22:35:32 +01:00
else
XVMC=no
fi
AM_CONDITIONAL(XVMC, [test "x$XVMC" = xyes])
if test "x$XVMC" = xyes; then
AC_DEFINE(XvMCExtension, 1, [Build XvMC extension])
2005-07-05 00:18:40 +02:00
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes])
if test "x$COMPOSITE" = xyes; then
AC_DEFINE(COMPOSITE, 1, [Support Composite Extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $COMPOSITEPROTO"
2005-08-21 21:15:11 +02:00
COMPOSITE_LIB='$(top_builddir)/composite/libcomposite.la'
COMPOSITE_INC='-I$(top_srcdir)/composite'
2005-07-01 22:29:53 +02:00
fi
2011-11-04 19:30:43 +01:00
if test "x$MITSHM" = xauto; then
MITSHM="$ac_cv_sysv_ipc"
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
if test "x$MITSHM" = xyes; then
AC_DEFINE(MITSHM, 1, [Support MIT-SHM extension])
AC_DEFINE(HAS_SHM, 1, [Support SHM])
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(RECORD, [test "x$RECORD" = xyes])
if test "x$RECORD" = xyes; then
AC_DEFINE(XRECORD, 1, [Support Record extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $RECORDPROTO"
2005-08-21 21:15:11 +02:00
RECORD_LIB='$(top_builddir)/record/librecord.la'
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes])
if test "x$SCREENSAVER" = xyes; then
AC_DEFINE(SCREENSAVER, 1, [Support MIT-SCREEN-SAVER extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $SCRNSAVERPROTO"
2013-10-07 19:29:25 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $SCRNSAVERPROTO"
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(RES, [test "x$RES" = xyes])
2005-10-21 20:23:33 +02:00
if test "x$RES" = xyes; then
2005-08-21 21:15:11 +02:00
AC_DEFINE(RES, 1, [Support X resource extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
2013-10-07 19:29:25 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO"
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
2014-09-12 20:33:48 +02:00
if test "x$LISTEN_TCP" = xyes; then
AC_DEFINE(LISTEN_TCP, 1, [Listen on TCP socket])
fi
if test "x$LISTEN_UNIX" = xyes; then
AC_DEFINE(LISTEN_UNIX, 1, [Listen on Unix socket])
fi
if test "x$LISTEN_LOCAL" = xyes; then
AC_DEFINE(LISTEN_LOCAL, 1, [Listen on local socket])
fi
2010-12-22 15:51:09 +01:00
# The XRes extension may support client ID tracking only if it has
# been specifically enabled. Client ID tracking is implicitly not
# supported if XRes extension is disabled.
AC_MSG_CHECKING([whether to track client ids])
if test "x$RES" = xyes && test "x$CLIENTIDS" = xyes; then
AC_DEFINE(CLIENTIDS, 1, [Support client ID tracking])
else
CLIENTIDS=no
fi
2012-01-02 14:23:59 +01:00
if test "x$CLIENTIDS" = xyes; then
case $host_os in
openbsd*)
SYS_LIBS="$SYS_LIBS -lkvm"
;;
esac
fi
2010-12-22 15:51:09 +01:00
AC_MSG_RESULT([$CLIENTIDS])
AM_CONDITIONAL(CLIENTIDS, [test "x$CLIENTIDS" = xyes])
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
if test "x$DRI" = xyes; then
AC_DEFINE(XF86DRI, 1, [Build DRI extension])
2012-07-10 03:03:15 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $DRIPROTO $GLPROTO $LIBDRI"
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRIPROTO $GLPROTO $LIBDRI"
2005-07-01 22:29:53 +02:00
fi
2009-09-15 07:05:27 +02:00
PKG_CHECK_MODULES([DRI2PROTO], $DRI2PROTO,
2008-08-11 22:59:17 +02:00
[HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no])
case "$DRI2,$HAVE_DRI2PROTO" in
yes,no)
AC_MSG_ERROR([DRI2 requested, but dri2proto not found.])
;;
yes,yes | auto,yes)
AC_DEFINE(DRI2, 1, [Build DRI2 extension])
DRI2=yes
2013-11-04 21:13:45 +01:00
LIBGL="gl >= 9.2.0"
2010-06-21 02:37:26 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
2008-08-11 22:59:17 +02:00
;;
esac
2009-04-15 19:06:19 +02:00
AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
2008-02-04 17:58:24 +01:00
2013-11-07 08:05:46 +01:00
AC_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])
case "x$XTRANS_SEND_FDS" in
xauto)
case "$host_os" in
2016-09-23 11:36:49 +02:00
linux*|solaris*|freebsd*|dragonfly*|openbsd*)
2013-11-07 08:05:46 +01:00
XTRANS_SEND_FDS=yes
;;
*)
XTRANS_SEND_FDS=no
;;
esac
esac
case "x$XTRANS_SEND_FDS" in
xyes)
AC_DEFINE(XTRANS_SEND_FDS, 1, [Enable xtrans fd passing support])
;;
esac
case "$DRI3,$XTRANS_SEND_FDS" in
yes,yes | auto,yes)
;;
yes,no)
AC_MSG_ERROR([DRI3 requested, but xtrans fd passing support not found.])
DRI3=no
;;
no,*)
;;
*)
AC_MSG_NOTICE([DRI3 disabled because xtrans fd passing support not found.])
DRI3=no
;;
esac
2013-04-10 04:59:39 +02:00
PKG_CHECK_MODULES([DRI3PROTO], $DRI3PROTO,
[HAVE_DRI3PROTO=yes], [HAVE_DRI3PROTO=no])
2013-11-03 18:56:02 +01:00
2013-04-10 04:59:39 +02:00
case "$DRI3,$HAVE_DRI3PROTO" in
2013-11-03 18:56:02 +01:00
yes,yes | auto,yes)
2017-09-20 16:22:12 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES dri3proto"
2013-11-03 18:56:02 +01:00
;;
2013-04-10 04:59:39 +02:00
yes,no)
AC_MSG_ERROR([DRI3 requested, but dri3proto not found.])
2013-11-03 18:56:02 +01:00
DRI3=no
;;
no,*)
;;
*)
AC_MSG_NOTICE([DRI3 disabled because dri3proto not found.])
DRI3=no
2013-04-10 04:59:39 +02:00
;;
2013-11-03 18:56:02 +01:00
esac
2013-11-03 22:12:40 +01:00
AC_CHECK_FUNCS([sigaction])
BUSFAULT=no
case x"$ac_cv_func_sigaction" in
xyes)
AC_DEFINE(HAVE_SIGACTION, 1, [Have sigaction function])
BUSFAULT=yes
;;
esac
case x"$BUSFAULT" in
xyes)
AC_DEFINE(BUSFAULT, 1, [Include busfault OS API])
;;
esac
AM_CONDITIONAL(BUSFAULT, test x"$BUSFAULT" = xyes)
2013-11-03 18:56:02 +01:00
2014-07-09 12:33:23 +02:00
PKG_CHECK_MODULES([XSHMFENCE], $LIBXSHMFENCE, [HAVE_XSHMFENCE=yes], [HAVE_XSHMFENCE=no])
if test "x$XSHMFENCE" = "xauto"; then
XSHMFENCE="$HAVE_XSHMFENCE"
fi
2013-11-03 18:56:02 +01:00
2014-07-09 12:33:23 +02:00
if test "x$XSHMFENCE" = "xyes"; then
if test "x$HAVE_XSHMFENCE" != "xyes"; then
AC_MSG_ERROR([xshmfence requested but not installed.])
fi
AC_DEFINE(HAVE_XSHMFENCE, 1, [Have xshmfence support])
REQUIRED_LIBS="$REQUIRED_LIBS $LIBXSHMFENCE"
fi
2013-11-03 18:56:02 +01:00
2014-07-09 12:33:23 +02:00
AM_CONDITIONAL(XSHMFENCE, [test "x$XSHMFENCE" = xyes])
2013-11-03 18:56:02 +01:00
2014-07-09 12:33:23 +02:00
case "$DRI3,$XSHMFENCE" in
2013-04-10 04:59:39 +02:00
yes,yes | auto,yes)
2013-11-03 18:56:02 +01:00
;;
yes,no)
2013-12-12 16:57:40 +01:00
AC_MSG_ERROR([DRI3 requested, but xshmfence not found.])
2013-11-03 18:56:02 +01:00
DRI3=no
;;
no,*)
;;
*)
AC_MSG_NOTICE([DRI3 disabled because xshmfence not found.])
DRI3=no
;;
esac
case x"$DRI3" in
xyes|xauto)
2013-04-10 04:59:39 +02:00
DRI3=yes
2013-11-03 18:56:02 +01:00
AC_DEFINE(DRI3, 1, [Build DRI3 extension])
2013-04-10 04:59:39 +02:00
DRI3_LIB='$(top_builddir)/dri3/libdri3.la'
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI3PROTO"
2013-11-03 18:56:02 +01:00
AC_MSG_NOTICE([DRI3 enabled]);
2013-04-10 04:59:39 +02:00
;;
esac
2013-11-03 18:56:02 +01:00
2013-04-10 04:59:39 +02:00
AM_CONDITIONAL(DRI3, test "x$DRI3" = xyes)
if test "x$DRI" = xyes || test "x$DRI2" = xyes || test "x$DRI3" = xyes || test "x$CONFIG_UDEV_KMS" = xyes; then
2010-01-22 17:34:36 +01:00
if test "x$DRM" = xyes; then
AC_DEFINE(WITH_LIBDRM, 1, [Building with libdrm support])
2018-03-03 02:05:04 +01:00
PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
2010-01-22 17:34:36 +01:00
fi
2008-11-15 13:27:42 +01:00
fi
2013-11-04 21:13:45 +01:00
if test "x$GLX" = xyes; then
PKG_CHECK_MODULES([XLIB], [x11])
PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
AC_SUBST(XLIB_CFLAGS)
AC_DEFINE(GLXEXT, 1, [Build GLX extension])
2018-01-10 19:05:45 +01:00
GLX_LIBS='$(top_builddir)/glx/libglx.la $(top_builddir)/glx/libglxvnd.la'
2013-11-04 21:13:45 +01:00
GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
else
GLX=no
fi
AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
AC_SUBST([GLX_DEFINES])
AC_SUBST([GLX_SYS_LIBS])
2013-07-12 01:11:57 +02:00
AM_CONDITIONAL(PRESENT, [test "x$PRESENT" = xyes])
if test "x$PRESENT" = xyes; then
AC_DEFINE(PRESENT, 1, [Support Present extension])
REQUIRED_MODULES="$REQUIRED_MODULES $PRESENTPROTO"
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $PRESENTPROTO"
PRESENT_INC='-I$(top_srcdir)/present'
PRESENT_LIB='$(top_builddir)/present/libpresent.la'
fi
2008-12-03 17:22:38 +01:00
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
if test "x$XINERAMA" = xyes; then
AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $XINERAMAPROTO"
2010-06-21 02:37:26 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
2006-06-21 04:01:34 +02:00
AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
if test "x$XACE" = xyes; then
AC_DEFINE(XACE, 1, [Build X-ACE extension])
fi
2006-09-08 21:15:19 +02:00
AM_CONDITIONAL(XSELINUX, [test "x$XSELINUX" = xyes])
if test "x$XSELINUX" = xyes; then
if test "x$XACE" != xyes; then
AC_MSG_ERROR([cannot build SELinux extension without X-ACE])
fi
AC_CHECK_HEADERS([libaudit.h], [], AC_MSG_ERROR([SELinux extension requires audit system headers]))
2006-10-27 02:20:57 +02:00
AC_CHECK_LIB(audit, audit_open, [], AC_MSG_ERROR([SELinux extension requires audit system library]))
2010-02-26 02:41:38 +01:00
PKG_CHECK_MODULES([SELINUX], $LIBSELINUX)
2009-10-22 01:28:26 +02:00
SELINUX_LIBS="$SELINUX_LIBS -laudit"
2006-09-08 21:15:19 +02:00
AC_DEFINE(XSELINUX, 1, [Build SELinux extension])
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(XCSECURITY, [test "x$XCSECURITY" = xyes])
if test "x$XCSECURITY" = xyes; then
2006-06-21 04:01:34 +02:00
if test "x$XACE" != xyes; then
AC_MSG_ERROR([cannot build Security extension without X-ACE])
fi
2005-08-21 21:15:11 +02:00
AC_DEFINE(XCSECURITY, 1, [Build Security extension])
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
2005-11-02 16:56:40 +01:00
AM_CONDITIONAL(DBE, [test "x$DBE" = xyes])
if test "x$DBE" = xyes; then
AC_DEFINE(DBE, 1, [Support DBE extension])
DBE_LIB='$(top_builddir)/dbe/libdbe.la'
2012-07-10 03:03:01 +02:00
DBE_INC='-I$(top_srcdir)/dbe'
2005-11-02 16:56:40 +01:00
fi
2006-02-16 08:17:31 +01:00
AM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
if test "x$XF86BIGFONT" = xyes; then
AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
2009-09-15 07:05:27 +02:00
REQUIRED_MODULES="$REQUIRED_MODULES $BIGFONTPROTO"
2013-10-07 19:29:25 +02:00
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $BIGFONTPROTO"
2006-02-16 08:17:31 +01:00
fi
AM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
if test "x$DPMSExtension" = xyes; then
AC_DEFINE(DPMSExtension, 1, [Support DPMS extension])
fi
2005-08-21 21:15:11 +02:00
AC_DEFINE(RENDER, 1, [Support RENDER extension])
RENDER_LIB='$(top_builddir)/render/librender.la'
RENDER_INC='-I$(top_srcdir)/render'
AC_DEFINE(RANDR, 1, [Support RANDR extension])
RANDR_LIB='$(top_builddir)/randr/librandr.la'
RANDR_INC='-I$(top_srcdir)/randr'
AC_DEFINE(XFIXES,1,[Support XFixes extension])
FIXES_LIB='$(top_builddir)/xfixes/libxfixes.la'
FIXES_INC='-I$(top_srcdir)/xfixes'
AC_DEFINE(DAMAGE,1,[Support Damage extension])
DAMAGE_LIB='$(top_builddir)/damageext/libdamageext.la'
DAMAGE_INC='-I$(top_srcdir)/damageext'
MIEXT_DAMAGE_LIB='$(top_builddir)/miext/damage/libdamage.la'
MIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
2008-04-25 09:19:35 +02:00
# XINPUT extension is integral part of the server
2010-03-22 00:20:49 +01:00
AC_DEFINE(XINPUT, 1, [Support X Input extension])
2006-07-19 23:00:23 +02:00
XI_LIB='$(top_builddir)/Xi/libXi.la'
XI_INC='-I$(top_srcdir)/Xi'
2005-08-21 21:15:11 +02:00
2006-09-22 05:58:32 +02:00
AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
2009-07-10 14:38:51 +02:00
AM_CONDITIONAL(VGAHW, test "x$VGAHW" = xyes)
2009-07-10 14:54:07 +02:00
AM_CONDITIONAL(VBE, test "x$VBE" = xyes)
2009-07-10 15:09:08 +02:00
AM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
2006-09-22 05:58:32 +02:00
2005-08-21 21:15:11 +02:00
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
2018-03-28 22:11:18 +02:00
if test "x$XKBPATH" = "xauto"; then
XKBPATH=$(pkg-config --variable datadir xkbcomp || echo ${datadir})/X11/xkb
fi
2009-01-10 13:36:16 +01:00
AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
2009-10-21 09:46:55 +02:00
AC_ARG_WITH(xkb-bin-directory,
2018-03-28 22:11:18 +02:00
AS_HELP_STRING([--with-xkb-bin-directory=DIR], [Directory containing xkbcomp program (default: auto)]),
2009-10-21 09:46:55 +02:00
[XKB_BIN_DIRECTORY="$withval"],
2018-03-28 22:11:18 +02:00
[XKB_BIN_DIRECTORY="auto"])
if test "x$XKB_BIN_DIRECTORY" = "xauto"; then
2018-08-09 18:25:08 +02:00
XKB_BIN_DIRECTORY=$(pkg-config --variable bindir xkbcomp)
if test -z $XKB_BIN_DIRECTORY; then
XKB_BIN_DIRECTORY="$bindir"
fi
2018-03-28 22:11:18 +02:00
fi
2009-10-21 09:46:55 +02:00
AC_DEFINE_DIR(XKB_BIN_DIRECTORY, XKB_BIN_DIRECTORY, [Path to XKB bin dir])
2009-01-10 13:36:16 +01:00
dnl Make sure XKM_OUTPUT_DIR is an absolute path
XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
2009-10-21 09:46:55 +02:00
if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
2009-01-10 13:36:16 +01:00
XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
fi
dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
dnl XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
2010-03-23 10:47:27 +01:00
XKBOUTPUT=`echo $XKBOUTPUT/ | $SED 's|/*$|/|'`
XKB_COMPILED_DIR=`echo $XKBOUTPUT | $SED 's|/*$||'`
2009-01-10 13:36:16 +01:00
AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
AC_SUBST(XKB_COMPILED_DIR)
if test "x$XKB_DFLT_RULES" = x; then
case $host_os in
linux*)
dnl doesn't take AutoAddDevices into account, but whatever.
2011-07-26 20:40:38 +02:00
XKB_DFLT_RULES="evdev"
2009-01-10 13:36:16 +01:00
;;
*)
XKB_DFLT_RULES="base"
;;
esac
fi
AC_DEFINE_UNQUOTED(XKB_DFLT_RULES, ["$XKB_DFLT_RULES"], [Default XKB ruleset])
AC_DEFINE_UNQUOTED(XKB_DFLT_MODEL, ["$XKB_DFLT_MODEL"], [Default XKB model])
AC_DEFINE_UNQUOTED(XKB_DFLT_LAYOUT, ["$XKB_DFLT_LAYOUT"], [Default XKB layout])
AC_DEFINE_UNQUOTED(XKB_DFLT_VARIANT, ["$XKB_DFLT_VARIANT"], [Default XKB variant])
AC_DEFINE_UNQUOTED(XKB_DFLT_OPTIONS, ["$XKB_DFLT_OPTIONS"], [Default XKB options])
2011-06-11 19:41:48 +02:00
AC_SUBST([XKB_DFLT_RULES])
AC_SUBST([XKB_DFLT_MODEL])
AC_SUBST([XKB_DFLT_LAYOUT])
AC_SUBST([XKB_DFLT_VARIANT])
AC_SUBST([XKB_DFLT_OPTIONS])
2009-01-10 13:36:16 +01:00
2005-08-21 21:15:11 +02:00
XKB_LIB='$(top_builddir)/xkb/libxkb.la'
XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
2009-01-10 13:36:16 +01:00
REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
2005-07-01 22:29:53 +02:00
2005-08-21 21:15:11 +02:00
PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
if test "x$XDMCP" = xauto; then
if test "x$have_libxdmcp" = xyes; then
2005-07-01 22:29:53 +02:00
XDMCP=yes
else
XDMCP=no
fi
fi
2005-08-21 21:15:11 +02:00
if test "x$XDMAUTH" = xauto; then
2017-03-24 01:06:17 +01:00
if test "x$have_libxdmcp" = xyes; then
2005-07-01 22:29:53 +02:00
XDMAUTH=yes
else
XDMAUTH=no
fi
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(XDMCP, [test "x$XDMCP" = xyes])
if test "x$XDMCP" = xyes; then
AC_DEFINE(XDMCP, 1, [Support XDM Control Protocol])
2005-11-29 17:39:33 +01:00
REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
2005-10-05 17:33:40 +02:00
XDMCP_MODULES="xdmcp"
2005-07-01 22:29:53 +02:00
fi
2005-08-21 21:15:11 +02:00
AM_CONDITIONAL(XDMAUTH, [test "x$XDMAUTH" = xyes])
if test "x$XDMAUTH" = xyes; then
2005-07-01 22:29:53 +02:00
AC_DEFINE(HASXDMAUTH,1,[Support XDM-AUTH*-1])
2005-08-21 21:15:11 +02:00
if ! test "x$XDMCP" = xyes; then
2005-11-29 17:39:33 +01:00
REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
2005-10-05 17:33:40 +02:00
XDMCP_MODULES="xdmcp"
2005-07-01 22:29:53 +02:00
fi
fi
2016-03-04 16:24:48 +01:00
if test "x$XF86VIDMODE" = xauto; then
PKG_CHECK_EXISTS($VIDMODEPROTO, [XF86VIDMODE=yes], [XF86VIDMODE=no])
fi
if test "x$XF86VIDMODE" = xyes; then
AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
fi
AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
2005-09-01 16:56:35 +02:00
AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
2007-11-26 21:24:15 +01:00
AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
2009-10-16 05:40:02 +02:00
AC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path])
2010-09-25 16:05:10 +02:00
dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path])
2007-09-05 21:34:29 +02:00
AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_NAME"], [Vendor name])
AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_NAME_SHORT"], [Short vendor name])
2005-11-03 18:08:06 +01:00
AC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
2005-07-01 22:29:53 +02:00
AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
2007-05-02 17:20:48 +02:00
2007-02-12 23:22:39 +01:00
AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
2007-09-05 21:34:29 +02:00
AC_SUBST([VENDOR_NAME_SHORT])
2009-04-08 23:17:39 +02:00
AC_DEFINE_UNQUOTED(VENDOR_NAME, ["$VENDOR_NAME"], [Vendor name])
AC_DEFINE_UNQUOTED(VENDOR_NAME_SHORT, ["$VENDOR_NAME_SHORT"], [Vendor name])
AC_DEFINE_UNQUOTED(VENDOR_RELEASE, [$VENDOR_RELEASE], [Vendor release])
AC_DEFINE_UNQUOTED(VENDOR_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
2005-07-01 22:29:53 +02:00
2006-07-19 22:51:04 +02:00
if test "x$DEBUGGING" = xyes; then
AC_DEFINE(DEBUG, 1, [Enable debugging code])
fi
AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
2005-08-21 21:15:11 +02:00
AC_DEFINE(XTEST, 1, [Support XTest extension])
AC_DEFINE(XSYNC, 1, [Support XSync extension])
AC_DEFINE(XCMISC, 1, [Support XCMisc extension])
AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
2009-10-06 01:52:19 +02:00
if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
2006-11-03 21:54:43 +01:00
DIX_LIB='$(top_builddir)/dix/dix.O'
2013-02-21 00:02:44 +01:00
OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS) $(LIBUNWIND_LIBS)'
2006-11-03 21:54:43 +01:00
else
DIX_LIB='$(top_builddir)/dix/libdix.la'
OS_LIB='$(top_builddir)/os/libos.la'
fi
2009-09-16 04:17:48 +02:00
AC_SUBST([DIX_LIB])
AC_SUBST([OS_LIB])
2009-04-22 05:26:40 +02:00
MAIN_LIB='$(top_builddir)/dix/libmain.la'
AC_SUBST([MAIN_LIB])
2005-07-01 22:29:53 +02:00
MI_LIB='$(top_builddir)/mi/libmi.la'
MI_EXT_LIB='$(top_builddir)/mi/libmiext.la'
MI_INC='-I$(top_srcdir)/mi'
2005-07-12 03:20:36 +02:00
FB_LIB='$(top_builddir)/fb/libfb.la'
2005-07-01 22:29:53 +02:00
FB_INC='-I$(top_srcdir)/fb'
2005-08-21 21:15:11 +02:00
MIEXT_SHADOW_INC='-I$(top_srcdir)/miext/shadow'
MIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.la'
2010-06-29 00:39:04 +02:00
MIEXT_SYNC_INC='-I$(top_srcdir)/miext/sync'
MIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
2005-07-03 14:17:04 +02:00
CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
2005-07-01 22:29:53 +02:00
2009-10-14 23:30:55 +02:00
# SHA1 hashing
AC_ARG_WITH([sha1],
2012-10-30 04:37:37 +01:00
[AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
2009-10-14 23:30:55 +02:00
[choose SHA1 implementation])])
2009-11-02 11:11:24 +01:00
AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
with_sha1=libc
fi
if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
AC_MSG_ERROR([libc requested but not found])
fi
if test "x$with_sha1" = xlibc; then
AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
[Use libc SHA1 functions])
SHA1_LIBS=""
fi
2009-11-06 03:13:07 +01:00
AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
with_sha1=CommonCrypto
fi
if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
AC_MSG_ERROR([CommonCrypto requested but not found])
fi
if test "x$with_sha1" = xCommonCrypto; then
AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
[Use CommonCrypto SHA1 functions])
SHA1_LIBS=""
fi
2012-04-26 08:49:06 +02:00
dnl stdcall functions cannot be tested with AC_CHECK_LIB
AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
with_sha1=CryptoAPI
fi
if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
AC_MSG_ERROR([CryptoAPI requested but not found])
fi
if test "x$with_sha1" = xCryptoAPI; then
AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
[Use CryptoAPI SHA1 functions])
SHA1_LIBS=""
fi
2009-10-14 23:30:55 +02:00
AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
with_sha1=libmd
2008-09-23 18:22:07 +02:00
fi
2009-10-14 23:30:55 +02:00
if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
AC_MSG_ERROR([libmd requested but not found])
fi
if test "x$with_sha1" = xlibmd; then
AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
[Use libmd SHA1 functions])
SHA1_LIBS=-lmd
fi
2010-06-04 15:27:28 +02:00
PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
2009-10-28 20:54:00 +01:00
if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
with_sha1=libsha1
fi
2010-04-14 20:18:28 +02:00
if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
AC_MSG_ERROR([libsha1 requested but not found])
fi
2009-10-28 20:54:00 +01:00
if test "x$with_sha1" = xlibsha1; then
AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
[Use libsha1 for SHA1])
SHA1_LIBS=-lsha1
fi
2012-10-30 04:37:37 +01:00
AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
with_sha1=libnettle
fi
if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
AC_MSG_ERROR([libnettle requested but not found])
fi
if test "x$with_sha1" = xlibnettle; then
AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
[Use libnettle SHA1 functions])
SHA1_LIBS=-lnettle
fi
2010-04-13 20:32:51 +02:00
AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
with_sha1=libgcrypt
fi
2010-04-14 20:18:28 +02:00
if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
AC_MSG_ERROR([libgcrypt requested but not found])
fi
2010-04-13 20:32:51 +02:00
if test "x$with_sha1" = xlibgcrypt; then
AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
[Use libgcrypt SHA1 functions])
SHA1_LIBS=-lgcrypt
fi
2009-10-14 23:30:55 +02:00
# We don't need all of the OpenSSL libraries, just libcrypto
AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
[HAVE_OPENSSL_PKC=no])
if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
if test "x$with_sha1" = x; then
with_sha1=libcrypto
fi
else
if test "x$with_sha1" = xlibcrypto; then
AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
fi
fi
if test "x$with_sha1" = xlibcrypto; then
if test "x$HAVE_LIBCRYPTO" = xyes; then
SHA1_LIBS=-lcrypto
else
SHA1_LIBS="$OPENSSL_LIBS"
SHA1_CFLAGS="$OPENSSL_CFLAGS"
fi
fi
2009-11-06 03:28:28 +01:00
AC_MSG_CHECKING([for SHA1 implementation])
2009-10-14 23:30:55 +02:00
if test "x$with_sha1" = x; then
AC_MSG_ERROR([No suitable SHA1 implementation found])
2008-09-23 18:22:07 +02:00
fi
2009-11-06 03:28:28 +01:00
AC_MSG_RESULT([$with_sha1])
2009-10-14 23:20:44 +02:00
AC_SUBST(SHA1_LIBS)
AC_SUBST(SHA1_CFLAGS)
2008-09-23 18:22:07 +02:00
2008-07-16 01:54:41 +02:00
PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
2013-11-18 23:07:09 +01:00
PKG_CHECK_MODULES(LIBUNWIND, libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
if test "x$LIBUNWIND" = "xauto"; then
LIBUNWIND="$HAVE_LIBUNWIND"
fi
if test "x$LIBUNWIND" = "xyes"; then
if test "x$HAVE_LIBUNWIND" != "xyes"; then
AC_MSG_ERROR([libunwind requested but not installed.])
fi
AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
fi
AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$LIBUNWIND" = xyes])
2007-08-31 21:24:07 +02:00
# Autotools has some unfortunate issues with library handling. In order to
# get a server to rebuild when a dependency in the tree is changed, it must
# be listed in SERVERNAME_DEPENDENCIES. However, no system libraries may be
2008-05-07 02:06:34 +02:00
# listed there, or some versions of autotools will break (especially if a -L
2007-08-31 21:24:07 +02:00
# is required to find the library). So, we keep two sets of libraries
# detected: NAMESPACE_LIBS for in-tree libraries to be linked against, which
# will go into the _DEPENDENCIES and _LDADD of the server, and
# NAMESPACE_SYS_LIBS which will go into only the _LDADD. The
# NAMESPACEMODULES_LIBS detected from pkgconfig should always go in
# NAMESPACE_SYS_LIBS.
#
# XSERVER_LIBS is the set of in-tree libraries which all servers require.
# XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
# require.
#
2009-10-14 23:20:44 +02:00
XSERVER_CFLAGS="${XSERVER_CFLAGS} ${XSERVERCFLAGS_CFLAGS}"
2010-05-16 21:29:02 +02:00
XSERVER_LIBS="$DIX_LIB $MI_LIB $OS_LIB"
2010-03-08 22:33:37 +01:00
XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
2007-08-31 21:24:07 +02:00
AC_SUBST([XSERVER_LIBS])
AC_SUBST([XSERVER_SYS_LIBS])
2005-07-29 23:55:57 +02:00
2008-03-02 19:27:53 +01:00
UTILS_SYS_LIBS="${SYS_LIBS}"
AC_SUBST([UTILS_SYS_LIBS])
2006-10-08 15:32:15 +02:00
# The Xorg binary needs to export symbols so that they can be used from modules
2010-02-24 09:56:59 +01:00
# Some platforms require extra flags to do this. libtool should set the
# necessary flags for each platform when -export-dynamic is passed to it.
LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
2012-03-29 09:13:27 +02:00
LD_NO_UNDEFINED_FLAG=
2012-03-29 09:26:41 +02:00
XORG_DRIVER_LIBS=
case "$host_os" in
cygwin*)
LD_EXPORT_SYMBOLS_FLAG="-Wl,--export-all,--out-implib,lib\$@.a"
LD_NO_UNDEFINED_FLAG="-no-undefined -Wl,\$(top_builddir)/hw/xfree86/libXorg.exe.a"
XORG_DRIVER_LIBS="-lXorg.exe -L\${moduledir} -lshadow -lfb -no-undefined"
CYGWIN=yes
;;
2012-05-12 19:11:33 +02:00
solaris*)
# We use AC_LINK_IFELSE to generate a temporary program conftest$EXEEXT
# that we can link against for testing if the system linker is new
# enough to support -z parent=<program> for verifying loadable modules
# are only calling functions defined in either the loading program or
# the libraries they're linked with.
AC_LINK_IFELSE(
[AC_LANG_SOURCE([int main(int argc, char **argv) { return 0; }])],
[mv conftest$EXEEXT conftest.parent
XORG_CHECK_LINKER_FLAGS([-Wl,-z,parent=conftest.parent -G],
[LD_NO_UNDEFINED_FLAG="-Wl,-z,defs -Wl,-z,parent=\$(top_builddir)/hw/xfree86/Xorg"
# Not set yet, since this gets exported in xorg-server.pc to all the drivers,
# and they're not all fixed to build correctly with it yet.
# XORG_DRIVER_LIBS="-Wl,-z,defs -Wl,-z,parent=${bindir}/Xorg"
],[],
[AC_LANG_SOURCE([extern int main(int argc, char **argv);
2015-05-15 19:25:46 +02:00
int call_main(void) { return main(0, (void *)0); }])])
2012-05-12 19:11:33 +02:00
rm -f conftest.parent
])
;;
2012-03-29 09:26:41 +02:00
esac
2006-10-08 15:32:15 +02:00
AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
2012-03-29 09:13:27 +02:00
AC_SUBST([LD_NO_UNDEFINED_FLAG])
2012-03-29 09:26:41 +02:00
AC_SUBST([XORG_DRIVER_LIBS])
AM_CONDITIONAL([CYGWIN], [test x"$CYGWIN" = xyes])
2012-03-29 09:13:27 +02:00
AM_CONDITIONAL([NO_UNDEFINED], [test x"$LD_NO_UNDEFINED_FLAG" != x])
2006-10-08 15:32:15 +02:00
2005-08-21 21:15:11 +02:00
dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
dnl we need to replicate that here until those can all be fixed
2005-07-29 23:55:57 +02:00
AC_MSG_CHECKING([if SVR4 needs to be defined])
AC_EGREP_CPP([I_AM_SVR4],[
#if defined(SVR4) || defined(__svr4__) || defined(__SVR4)
I_AM_SVR4
#endif
],[
AC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4])
AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
2013-07-12 01:11:57 +02:00
XSERVER_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"
2005-08-21 21:15:11 +02:00
dnl ---------------------------------------------------------------------------
dnl DDX section.
dnl ---------------------------------------------------------------------------
dnl Xvfb DDX
AC_MSG_CHECKING([whether to build Xvfb DDX])
AC_MSG_RESULT([$XVFB])
AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
if test "x$XVFB" = xyes; then
2013-07-12 01:11:57 +02:00
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"
2008-05-19 07:35:05 +02:00
XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
2005-08-21 21:15:11 +02:00
AC_SUBST([XVFB_LIBS])
2007-08-31 21:24:07 +02:00
AC_SUBST([XVFB_SYS_LIBS])
2005-08-21 21:15:11 +02:00
fi
dnl Xnest DDX
2010-06-23 14:18:04 +02:00
PKG_CHECK_MODULES(XNESTMODULES, [$LIBXEXT x11 xau $XDMCP_MODULES], [have_xnest=yes], [have_xnest=no])
2008-07-31 19:46:06 +02:00
AC_MSG_CHECKING([whether to build Xnest DDX])
2005-08-21 21:15:11 +02:00
if test "x$XNEST" = xauto; then
2005-08-23 10:59:30 +02:00
XNEST="$have_xnest"
2005-08-21 21:15:11 +02:00
fi
AC_MSG_RESULT([$XNEST])
AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
if test "x$XNEST" = xyes; then
2009-10-02 01:34:24 +02:00
if test "x$have_xnest" = xno; then
AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
fi
2017-02-07 09:38:23 +01:00
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"
2008-05-19 07:35:05 +02:00
XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
2005-08-21 21:15:11 +02:00
AC_SUBST([XNEST_LIBS])
2007-08-31 21:24:07 +02:00
AC_SUBST([XNEST_SYS_LIBS])
2005-08-21 21:15:11 +02:00
fi
dnl Xorg DDX
AC_MSG_CHECKING([whether to build Xorg DDX])
if test "x$XORG" = xauto; then
XORG="yes"
case $host_os in
cygwin*) XORG="no" ;;
2012-01-03 01:14:32 +01:00
mingw*) XORG="no" ;;
2007-09-06 00:51:11 +02:00
darwin*) XORG="no" ;;
2005-08-21 21:15:11 +02:00
esac
fi
AC_MSG_RESULT([$XORG])
2008-06-12 22:00:50 +02:00
if test "x$XORG" = xyes; then
2005-08-21 21:15:11 +02:00
XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
2013-07-12 01:11:57 +02:00
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"
2005-09-13 20:37:35 +02:00
2008-11-28 05:01:57 +01:00
dnl ==================================================================
dnl symbol visibility
symbol_visibility=
have_visibility=disabled
if test x$SYMBOL_VISIBILITY != xno; then
AC_MSG_CHECKING(for symbol visibility support)
if test x$GCC = xyes; then
VISIBILITY_CFLAGS="-fvisibility=hidden"
else
if test x$SUNCC = xyes; then
VISIBILITY_CFLAGS="-xldscope=hidden"
else
have_visibility=no
fi
fi
if test x$have_visibility != xno; then
save_CFLAGS="$CFLAGS"
2011-12-01 22:24:12 +01:00
proto_inc=`$PKG_CONFIG --cflags xproto`
CFLAGS="$CFLAGS $VISIBILITY_CFLAGS $proto_inc"
2013-12-22 01:58:30 +01:00
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
2008-11-28 05:01:57 +01:00
[#include <X11/Xfuncproto.h>
extern _X_HIDDEN int hidden_int;
extern _X_EXPORT int public_int;
extern _X_HIDDEN int hidden_int_func(void);
2013-12-22 01:58:30 +01:00
extern _X_EXPORT int public_int_func(void);]],
[])],
2008-11-28 05:01:57 +01:00
have_visibility=yes,
have_visibility=no)
CFLAGS=$save_CFLAGS
fi
AC_MSG_RESULT([$have_visibility])
if test x$have_visibility != xno; then
symbol_visibility=$VISIBILITY_CFLAGS
XORG_CFLAGS="$XORG_CFLAGS $VISIBILITY_CFLAGS"
2008-12-02 05:50:45 +01:00
XSERVER_CFLAGS="$XSERVER_CFLAGS $VISIBILITY_CFLAGS"
2008-11-28 05:01:57 +01:00
fi
fi
dnl added to xorg-server.pc
AC_SUBST([symbol_visibility])
dnl ===================================================================
2010-05-31 18:27:07 +02:00
dnl ===================================================================
dnl ================= beginning of PCI configuration ==================
dnl ===================================================================
xorg_bus_bsdpci=no
xorg_bus_sparc=no
2010-06-01 12:05:47 +02:00
AC_MSG_CHECKING([whether to build Xorg PCI functions])
if test "x$PCI" = xyes; then
2013-11-16 02:00:00 +01:00
PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
2014-02-05 17:10:47 +01:00
XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $LIBDRM_LIBS"
2013-11-16 02:00:00 +01:00
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS"
AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
case $host_os in
gnu* | freebsd* | kfreebsd*-gnu | netbsd* | openbsd* | solaris* | dragonfly*)
xorg_bus_bsdpci="yes"
;;
esac
case $host_cpu in
sparc*)
xorg_bus_sparc="yes"
;;
esac
2013-11-16 02:00:20 +01:00
else
if test "x$CONFIG_UDEV_KMS" = xyes; then
AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
fi
2013-11-29 13:26:43 +01:00
if test "x$INT10MODULE" = xyes && test "x$INT10" != xstub; then
2013-11-16 02:00:40 +01:00
AC_MSG_ERROR([Cannot build int10 without libpciaccess])
fi
2010-06-01 12:05:47 +02:00
fi
AC_MSG_RESULT([$PCI])
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
if test "x$CONFIG_UDEV_KMS" = xyes; then
AC_DEFINE(XSERVER_PLATFORM_BUS, 1, [X server supports platform device enumeration])
fi
AC_MSG_RESULT([$XSERVER_PLATFORM_BUS])
2010-05-31 18:27:07 +02:00
dnl ===================================================================
dnl ==================== end of PCI configuration =====================
dnl ===================================================================
2005-08-21 21:15:11 +02:00
case $host_os in
linux*)
XORG_OS_SUBDIR="linux"
2006-05-14 18:22:24 +02:00
linux_acpi="no"
2005-08-21 21:15:11 +02:00
case $host_cpu in
2011-01-07 22:57:15 +01:00
i*86|amd64*|x86_64*|ia64*)
2013-08-14 18:18:39 +02:00
linux_acpi=$enable_linux_acpi
2006-05-09 20:04:29 +02:00
;;
2005-08-21 21:15:11 +02:00
*)
;;
esac
2013-08-14 18:18:56 +02:00
dnl APM header
AC_CHECK_HEADERS([linux/apm_bios.h], [linux_apm=$enable_linux_apm])
2005-08-02 02:41:07 +02:00
;;
2008-04-07 13:09:04 +02:00
freebsd* | kfreebsd*-gnu | dragonfly*)
2005-08-21 21:15:11 +02:00
XORG_OS_SUBDIR="bsd"
2005-08-21 08:56:19 +02:00
;;
2005-08-21 21:15:11 +02:00
netbsd*)
XORG_OS_SUBDIR="bsd"
2005-08-02 02:41:07 +02:00
;;
2005-08-21 21:15:11 +02:00
openbsd*)
XORG_OS_SUBDIR="bsd"
2005-08-04 04:39:56 +02:00
;;
2005-08-21 21:15:11 +02:00
solaris*)
XORG_OS_SUBDIR="solaris"
2008-08-22 19:14:11 +02:00
AC_CHECK_HEADERS([sys/kd.h])
2009-08-04 08:21:39 +02:00
AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
2009-08-04 06:38:51 +02:00
# Check for minimum supported release
2005-08-21 21:15:11 +02:00
AC_MSG_CHECKING([Solaris version])
2010-03-23 10:47:27 +01:00
OS_MINOR=`echo ${host_os}|$SED -e 's/^.*solaris2\.//' -e s'/\..*$//'`
2005-08-21 21:15:11 +02:00
if test "${OS_MINOR}" -ge 7 ; then
AC_MSG_RESULT(Solaris ${OS_MINOR})
2005-08-04 04:39:56 +02:00
else
2010-03-23 10:47:27 +01:00
AC_MSG_RESULT(Solaris `echo ${host_os}|$SED -e 's/^.*solaris//`)
2005-08-04 04:39:56 +02:00
fi
2009-08-04 06:38:51 +02:00
if test "${OS_MINOR}" -lt 8 ; then
AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
2005-08-21 21:15:11 +02:00
fi
AC_CHECK_DECL([_LP64], [SOLARIS_64="yes"], [SOLARIS_64="no"])
case $host_cpu in
sparc*)
SOLARIS_INOUT_ARCH="sparcv8plus"
;;
2015-04-04 04:01:40 +02:00
i*86|x86_64*)
2005-08-21 21:15:11 +02:00
if test x$SOLARIS_64 = xyes ; then
SOLARIS_INOUT_ARCH="amd64"
else
SOLARIS_INOUT_ARCH="ia32"
fi
;;
*)
AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \
are supported on Solaris in this release. If you are \
interested in porting Xorg to your platform, please email \
xorg@lists.freedesktop.org.]) ;;
esac
AC_SUBST([SOLARIS_INOUT_ARCH])
2005-08-04 04:39:56 +02:00
;;
2006-08-12 18:41:59 +02:00
gnu*)
XORG_OS_SUBDIR="hurd"
;;
2014-09-30 14:55:59 +02:00
cygwin*)
XORG_OS_SUBDIR="stub"
;;
2005-07-14 00:54:02 +02:00
*)
2011-09-13 22:38:45 +02:00
XORG_OS_SUBDIR="stub"
AC_MSG_NOTICE([m4_text_wrap(m4_join([ ],
2014-09-30 14:55:59 +02:00
[Your OS is unknown.],
2010-05-10 22:44:30 +02:00
[If you are interested in porting Xorg to your platform,],
[please email xorg@lists.freedesktop.org.]))])
2005-08-21 21:15:11 +02:00
;;
2005-07-14 00:54:02 +02:00
esac
2005-12-01 06:04:07 +01:00
2007-02-18 23:09:51 +01:00
if test "x$DGA" = xauto; then
2009-09-15 07:05:27 +02:00
PKG_CHECK_MODULES(DGA, $DGAPROTO, [DGA=yes], [DGA=no])
2007-02-18 23:09:51 +01:00
fi
if test "x$DGA" = xyes; then
2009-09-15 07:05:27 +02:00
XORG_MODULES="$XORG_MODULES $DGAPROTO"
PKG_CHECK_MODULES(DGA, $DGAPROTO)
2007-02-18 23:09:51 +01:00
AC_DEFINE(DGA, 1, [Support DGA extension])
AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
fi
if test "x$XF86VIDMODE" = xyes; then
2009-09-15 07:05:27 +02:00
XORG_MODULES="$XORG_MODULES $VIDMODEPROTO"
2007-02-18 23:09:51 +01:00
fi
if test -n "$XORG_MODULES"; then
PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES])
XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS"
2007-08-31 21:24:07 +02:00
XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS"
2007-02-18 23:09:51 +01:00
fi
2014-08-26 20:06:23 +02:00
if test "x$DRM" = xyes; then
2018-03-07 19:45:29 +01:00
XORG_DRIVER_MODESETTING=yes
2014-08-26 20:06:23 +02:00
fi
2005-08-21 21:15:11 +02:00
AC_SUBST([XORG_LIBS])
2007-08-31 21:24:07 +02:00
AC_SUBST([XORG_SYS_LIBS])
2005-08-21 21:15:11 +02:00
AC_SUBST([XORG_INCS])
AC_SUBST([XORG_OS_SUBDIR])
AC_SUBST([XORG_CFLAGS])
dnl these only go in xorg-config.h
2005-09-24 04:40:51 +02:00
XF86CONFIGFILE="xorg.conf"
2009-12-21 09:04:16 +01:00
XF86CONFIGDIR="xorg.conf.d"
2010-04-02 08:44:24 +02:00
AC_SUBST(XF86CONFIGDIR)
2014-03-26 12:24:49 +01:00
LOGPREFIX="Xorg."
2014-04-01 11:24:17 +02:00
XDG_DATA_HOME=".local/share"
XDG_DATA_HOME_LOGDIR="xorg"
2005-08-21 21:15:11 +02:00
AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
2005-11-03 18:08:06 +01:00
AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
2005-08-21 21:15:11 +02:00
AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
2017-04-01 02:33:52 +02:00
AC_DEFINE_DIR(XCONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
2005-12-09 04:57:41 +01:00
AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
2017-04-01 02:33:52 +02:00
AC_DEFINE_DIR(XCONFIGDIR, XF86CONFIGDIR, [Name of configuration directory])
2005-08-21 21:15:11 +02:00
AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
2006-11-22 23:46:51 +01:00
AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
2014-03-26 12:24:49 +01:00
AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default logfile prefix])
2014-04-01 11:24:17 +02:00
AC_DEFINE_DIR(DEFAULT_XDG_DATA_HOME, XDG_DATA_HOME, [Default XDG_DATA dir under HOME])
AC_DEFINE_DIR(DEFAULT_XDG_DATA_HOME_LOGDIR, XDG_DATA_HOME_LOGDIR, [Default log dir under XDG_DATA_HOME])
2005-08-21 21:15:11 +02:00
AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
2009-07-10 14:38:51 +02:00
if test "x$VGAHW" = xyes; then
AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
fi
2005-08-21 21:15:11 +02:00
driverdir="$moduledir/drivers"
AC_SUBST([moduledir])
AC_SUBST([driverdir])
sdkdir="$includedir/xorg"
extdir="$includedir/X11/extensions"
2010-04-03 19:08:25 +02:00
sysconfigdir="$datadir/X11/$XF86CONFIGDIR"
2005-08-21 21:15:11 +02:00
AC_SUBST([sdkdir])
AC_SUBST([extdir])
2010-04-03 19:08:25 +02:00
AC_SUBST([sysconfigdir])
2005-09-15 07:06:54 +02:00
AC_SUBST([logdir])
2007-11-05 23:17:25 +01:00
# stuff the ABI versions into the pc file too
extract_abi() {
grep ^.define.*${1}_VERSION ${srcdir}/hw/xfree86/common/xf86Module.h | tr '(),' ' .' | awk '{ print $4$5 }'
}
abi_ansic=`extract_abi ANSIC`
abi_videodrv=`extract_abi VIDEODRV`
abi_xinput=`extract_abi XINPUT`
abi_extension=`extract_abi EXTENSION`
2008-04-10 21:36:19 +02:00
AC_SUBST([abi_ansic])
AC_SUBST([abi_videodrv])
AC_SUBST([abi_xinput])
AC_SUBST([abi_extension])
2005-08-21 21:15:11 +02:00
fi
AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
2010-06-01 12:05:47 +02:00
AM_CONDITIONAL([XORG_BUS_PCI], [test "x$PCI" = xyes])
2007-08-28 19:08:38 +02:00
AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
2005-08-21 10:43:46 +02:00
AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
2006-05-14 18:22:24 +02:00
AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
2013-08-14 18:18:56 +02:00
AM_CONDITIONAL([LNXAPM], [test "x$linux_apm" = xyes])
2009-08-04 08:21:39 +02:00
AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
2007-10-28 14:46:26 +01:00
AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
xfree86: use udev to provide device enumeration for kms devices (v10)
On Linux in order for future hotplug work, we are required to interface
to udev to detect device creation/removal. In order to try and get
some earlier testing on this, this patch adds the ability to use
udev for device enumeration on Linux.
At startup the list of drm/kms devices is probed and this info is
used to load drivers.
A new driver probing method is introduced that passes the udev
device info to the driver for probing.
The probing integrates with the pci probing code and will fallback
to the pci probe and old school probe functions in turn.
The flags parameter to the probe function will be used later
to provide hotplug and gpu screen flags for the driver to behave
in a different way.
This patch changes the driver ABI, all drivers should at least
be set with a NULL udev probe function after this commit.
v2: rename to platform bus, now with 100% less udev specific,
this version passes config_odev_attribs around which are an array
of id/string pairs, then the udev code can attach the set of attribs
it understands, the OS specific code can attach its attrib, and then
the core/drivers can lookup the required attribs.
also add MATCH_PCI_DEVICES macro.
This version is mainly to address concerns raised by ajax.
v3: Address comments from Peter.
fix whitespace that snuck in.
rework to use a linked list with some core functions that
xf86 wraps.
v4: add free list, fix struct whitespace.
ajax this address most of your issues?
v5: drop probe ifdef, fix logic issue
v6: some overhaul after more testing.
Implement primaryBus for platform devices.
document hotplug.h dev attribs - drop sysname attrib
fix build with udev kms disabled
make probing work like the PCI probe code,
match against bus id if one exists, or primary device.
RFC: add new bus id support "PLAT:syspath". we probably
want to match on this a bit different, or use a different
property maybe. I was mainly wanting this for use with
specifying usb devices in xorg.conf directly, but PLAT:path
could also work I suppose.
v6.1: add missing noop platform function
v7: fix two interactions with pci probing and slot claiming, prevents
pci and platform trying to load two drivers for same slot.
v8: test with zaphod mode on -ati driver, fixup resulting issue
clean up common probe code into another function, change busid
matching to allow dropping end of strings.
v9: fix platform probing logic so it actually works.
v9.1: fix pdev init to NULL properly.
v10: address most of Keith's concerns.
v4 was thanks to Reviewed-by: Adam Jackson <ajax@redhat.com>
v5 was Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-05-08 15:26:47 +02:00
AM_CONDITIONAL([XORG_BUS_PLATFORM], [test "x$CONFIG_UDEV_KMS" = xyes])
2014-08-26 20:06:23 +02:00
AM_CONDITIONAL([XORG_DRIVER_MODESETTING], [test "x$XORG_DRIVER_MODESETTING" = xyes])
2013-12-18 20:35:53 +01:00
dnl glamor
2016-08-12 02:28:38 +02:00
if test "x$GLAMOR" = xauto; then
2016-11-22 16:51:24 +01:00
if echo "$XORG" "$XEPHYR" "$XWAYLAND" | grep -q yes ; then
2016-08-12 02:28:38 +02:00
GLAMOR=yes
fi
fi
2013-12-18 20:35:53 +01:00
AM_CONDITIONAL([GLAMOR], [test "x$GLAMOR" = xyes])
2016-08-12 02:28:38 +02:00
2013-12-18 20:35:53 +01:00
if test "x$GLAMOR" = xyes; then
AC_DEFINE(GLAMOR, 1, [Build glamor])
2013-12-18 21:18:20 +01:00
PKG_CHECK_MODULES([GLAMOR], [epoxy])
2013-12-28 01:44:15 +01:00
2018-02-28 02:19:44 +01:00
PKG_CHECK_EXISTS(epoxy >= 1.4.4,
[AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DMABUF, 1, [Have GLAMOR_HAS_EGL_QUERY_DMABUF])],
[])
2013-12-28 01:44:15 +01:00
PKG_CHECK_MODULES(GBM, "$LIBGBM", [GBM=yes], [GBM=no])
if test "x$GBM" = xyes; then
AC_DEFINE(GLAMOR_HAS_GBM, 1,
[Build glamor with GBM-based EGL support])
2015-06-10 06:46:22 +02:00
AC_CHECK_DECL(GBM_BO_USE_LINEAR,
[AC_DEFINE(GLAMOR_HAS_GBM_LINEAR, 1, [Have GBM_BO_USE_LINEAR])], [],
[#include <stdlib.h>
#include <gbm.h>])
2018-02-28 02:19:43 +01:00
dnl 17.1.0 is required for gbm_bo_create_with_modifiers
PKG_CHECK_EXISTS(gbm >= 17.1.0,
[AC_DEFINE(GBM_BO_WITH_MODIFIERS, 1, [Have gbm_bo_create_with_modifiers])],
[])
2016-08-12 02:28:38 +02:00
else
if test "x$XORG" = xyes; then
AC_MSG_ERROR([Glamor for Xorg requires $LIBGBM])
fi
2013-12-28 01:44:15 +01:00
fi
2013-12-18 20:35:53 +01:00
fi
2013-12-28 01:44:15 +01:00
AM_CONDITIONAL([GLAMOR_EGL], [test "x$GBM" = xyes])
2013-12-18 20:35:53 +01:00
2008-04-20 17:35:42 +02:00
dnl XWin DDX
AC_MSG_CHECKING([whether to build XWin DDX])
if test "x$XWIN" = xauto; then
case $host_os in
cygwin*) XWIN="yes" ;;
mingw*) XWIN="yes" ;;
*) XWIN="no" ;;
esac
fi
AC_MSG_RESULT([$XWIN])
if test "x$XWIN" = xyes; then
2010-02-01 18:11:51 +01:00
AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
2008-12-17 20:18:38 +01:00
AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
2010-02-02 17:21:44 +01:00
AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
2008-11-02 19:27:09 +01:00
AC_CHECK_TOOL(WINDRES, windres)
2010-02-24 22:17:42 +01:00
2015-08-03 17:47:38 +02:00
PKG_CHECK_MODULES([XWINMODULES],[x11 xau xdmcp xfixes x11-xcb xcb-aux xcb-composite xcb-image xcb-ewmh xcb-icccm])
2010-02-24 22:17:42 +01:00
Add Windows-DRI extension
If windowsdriproto headers are available, build a Windows-DRI extension,
which supports requests to enable local clients to directly render GL to a
Windows drawable:
- a query to check if WGL is being used on a screen
- a query to map a fbconfigID to a native pixelformatindex
- a query to map a drawable to a native handle
Windows-DRI can only be useful if we are using WGL, so make an note if WGL
is active on a screen.
Make validGlxDrawable() public
Adjust glxWinSetPixelFormat() so it doesn't require a context, just a
screen and config.
That enables factoring out the deferred drawable creation code as
glxWinDeferredCreateDrawable()
Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a
file mapping, so they exist in memory which can be shared with the direct
rendering process.
Currently, this file mapping is accessed by a name generated from the XID.
This will not be unique across multiple server instances. It would perhaps
be better, although more complicated, to use an anonymous file mapping, and
then duplicate the handle for the direct rendering process.
Use glxWinDeferredCreateDrawable() to ensure the native handle exists for
the Windows-DRI query to map a drawable to native handle.
v2:
Various printf format warning fixes
v3:
Fix format warnings on x86
Move some uninteresting windows-dri output to debug log level
v4:
check for windowsdriproto when --enable-windowsdri
use windowsdriproto_CFLAGS
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-07-24 13:29:41 +02:00
if test "x$WINDOWSDRI" = xauto; then
PKG_CHECK_EXISTS([windowsdriproto], [WINDOWSDRI=yes], [WINDOWSDRI=no])
fi
if test "x$WINDOWSDRI" = xyes ; then
PKG_CHECK_MODULES(WINDOWSDRI, [windowsdriproto])
fi
2008-04-20 17:35:42 +02:00
case $host_os in
cygwin*)
XWIN_SERVER_NAME=XWin
AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
;;
mingw*)
XWIN_SERVER_NAME=Xming
AC_DEFINE(RELOCATE_PROJECTROOT,1,[Make PROJECT_ROOT relative to the xserver location])
AC_DEFINE(HAS_WINSOCK,1,[Use Windows sockets])
2012-10-15 06:38:20 +02:00
XWIN_SYS_LIBS="-lpthread -lws2_32"
2008-04-20 17:35:42 +02:00
;;
esac
2012-06-21 21:01:49 +02:00
2013-11-29 15:29:20 +01:00
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"
2012-09-27 19:59:45 +02:00
XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
2009-10-15 08:53:41 +02:00
AC_SUBST(XWIN_LIBS)
2008-04-20 17:35:42 +02:00
AC_SUBST(XWIN_SERVER_NAME)
AC_SUBST(XWIN_SYS_LIBS)
if test "x$DEBUGGING" = xyes; then
AC_DEFINE(CYGDEBUG, 1, [Simple debug messages])
AC_DEFINE(CYGWINDOWING_DEBUG, 1, [Debug messages for window handling])
AC_DEFINE(CYGMULTIWINDOW_DEBUG, 1, [Debug window manager])
fi
AC_DEFINE(DDXOSVERRORF, 1, [Use OsVendorVErrorF])
AC_DEFINE(DDXBEFORERESET, 1, [Use ddxBeforeReset ])
2011-04-06 17:23:45 +02:00
2016-09-29 19:41:19 +02:00
dnl XWin requires OpenGL spec files in order to generate wrapper code for native GL functions
2016-10-14 04:40:59 +02:00
if [test "x$XWIN" = xyes && test "x$GLX" = xyes] ; then
2012-09-27 19:59:45 +02:00
AC_CHECK_PROG(PYTHON3, python3, python3)
if test -z "$PYTHON3"; then
AC_MSG_ERROR([python3 not found])
2013-06-18 19:03:05 +02:00
fi
2012-09-27 19:59:45 +02:00
AC_MSG_CHECKING(for python module lxml)
$PYTHON3 -c "import lxml;"
if test $? -ne 0 ; then
AC_MSG_ERROR([not found])
fi
AC_MSG_RESULT(yes)
2011-04-06 17:23:45 +02:00
if test "x$KHRONOS_SPEC_DIR" = "xauto" ; then
PKG_CHECK_MODULES([KHRONOS_OPENGL_REGISTRY], [khronos-opengl-registry])
KHRONOS_SPEC_DIR=`pkg-config khronos-opengl-registry --variable=specdir`
fi
AC_SUBST(KHRONOS_SPEC_DIR)
fi
2008-04-20 17:35:42 +02:00
fi
AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
2016-10-14 04:40:59 +02:00
AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && test "x$GLX" = xyes])
Add Windows-DRI extension
If windowsdriproto headers are available, build a Windows-DRI extension,
which supports requests to enable local clients to directly render GL to a
Windows drawable:
- a query to check if WGL is being used on a screen
- a query to map a fbconfigID to a native pixelformatindex
- a query to map a drawable to a native handle
Windows-DRI can only be useful if we are using WGL, so make an note if WGL
is active on a screen.
Make validGlxDrawable() public
Adjust glxWinSetPixelFormat() so it doesn't require a context, just a
screen and config.
That enables factoring out the deferred drawable creation code as
glxWinDeferredCreateDrawable()
Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a
file mapping, so they exist in memory which can be shared with the direct
rendering process.
Currently, this file mapping is accessed by a name generated from the XID.
This will not be unique across multiple server instances. It would perhaps
be better, although more complicated, to use an anonymous file mapping, and
then duplicate the handle for the direct rendering process.
Use glxWinDeferredCreateDrawable() to ensure the native handle exists for
the Windows-DRI query to map a drawable to native handle.
v2:
Various printf format warning fixes
v3:
Fix format warnings on x86
Move some uninteresting windows-dri output to debug log level
v4:
check for windowsdriproto when --enable-windowsdri
use windowsdriproto_CFLAGS
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-07-24 13:29:41 +02:00
AM_CONDITIONAL(XWIN_WINDOWS_DRI, [test "x$XWIN" = xyes && test "x$WINDOWSDRI" = xyes])
2008-04-20 17:35:42 +02:00
2007-02-17 11:23:11 +01:00
dnl Darwin / OS X DDX
2007-11-22 04:51:14 +01:00
if test "x$XQUARTZ" = xyes; then
2008-04-09 02:02:56 +02:00
AC_DEFINE(XQUARTZ,1,[Have Quartz])
AC_DEFINE(ROOTLESS,1,[Build Rootless code])
2007-11-22 04:51:14 +01:00
2013-12-13 10:39:44 +01:00
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"
2011-06-25 20:29:53 +02:00
AC_SUBST([XQUARTZ_LIBS])
2008-04-23 19:22:34 +02:00
2007-12-08 08:26:11 +01:00
AC_CHECK_LIB([Xplugin],[xp_init],[:])
2008-04-23 19:22:34 +02:00
2011-02-28 00:49:10 +01:00
CFLAGS="${CFLAGS} -DROOTLESS_WORKAROUND -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
2008-10-03 20:11:37 +02:00
2009-09-23 13:49:11 +02:00
PKG_CHECK_MODULES(XPBPROXY, $APPLEWMPROTO $LIBAPPLEWM xfixes x11)
2008-10-03 20:09:26 +02:00
2009-07-19 00:51:29 +02:00
if test "x$XQUARTZ_SPARKLE" = xyes ; then
AC_DEFINE(XQUARTZ_SPARKLE,1,[Support application updating through sparkle.])
fi
2008-11-16 04:52:34 +01:00
if test "x$STANDALONE_XPBPROXY" = xyes ; then
AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
2008-10-03 20:09:26 +02:00
fi
2007-09-06 14:34:14 +02:00
fi
2007-11-22 04:51:14 +01:00
2014-01-23 04:17:24 +01:00
AM_CONDITIONAL(PSEUDORAMIX, [test "x$XQUARTZ" = xyes -o "x$XWIN" = xyes ])
2007-09-06 14:34:14 +02:00
# Support for objc in autotools is minimal and not documented.
2007-02-17 11:23:11 +01:00
OBJC='$(CC)'
OBJCLD='$(CCLD)'
OBJCLINK='$(LINK)'
OBJCFLAGS='$(CFLAGS)'
AC_SUBST([OBJC])
AC_SUBST([OBJCCLD])
AC_SUBST([OBJCLINK])
AC_SUBST([OBJCFLAGS])
# internal, undocumented automake func follows :(
_AM_DEPENDENCIES([OBJC])
2007-09-06 14:34:14 +02:00
AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
2009-07-19 00:51:29 +02:00
AM_CONDITIONAL(XQUARTZ_SPARKLE, [test "x$XQUARTZ_SPARKLE" != "xno"])
2008-11-16 04:52:34 +01:00
AM_CONDITIONAL(STANDALONE_XPBPROXY, [test "x$STANDALONE_XPBPROXY" = xyes])
2007-09-19 06:40:32 +02:00
2008-03-01 14:57:57 +01:00
dnl DMX DDX
2009-11-29 03:32:47 +01:00
PKG_CHECK_MODULES(
[DMXMODULES],
2013-07-06 07:35:32 +02:00
[xmuu $LIBXEXT x11 >= 1.6 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES],
2009-11-29 03:32:47 +01:00
[PKG_CHECK_MODULES(
[XDMXCONFIG_DEP],
[xaw7 xmu xt xpm x11],
[have_dmx=yes],
[have_dmx=no])],
[have_dmx=no])
2008-07-31 19:46:06 +02:00
AC_MSG_CHECKING([whether to build Xdmx DDX])
2007-12-17 04:45:15 +01:00
if test "x$DMX" = xauto; then
2008-03-01 14:57:57 +01:00
DMX="$have_dmx"
case $host_os in
cygwin*) DMX="no" ;;
2012-01-03 01:14:32 +01:00
mingw*) DMX="no" ;;
2008-03-01 14:57:57 +01:00
darwin*) DMX="no" ;;
esac
2007-12-17 04:45:15 +01:00
fi
2007-12-15 23:00:19 +01:00
AC_MSG_RESULT([$DMX])
AM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
2007-12-17 04:45:15 +01:00
if test "x$DMX" = xyes; then
2008-03-01 14:57:57 +01:00
if test "x$have_dmx" = xno; then
AC_MSG_ERROR([Xdmx build explicitly requested, but required
modules not found.])
fi
2008-06-25 15:52:36 +02:00
DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
2008-03-01 14:57:57 +01:00
XDMX_CFLAGS="$DMXMODULES_CFLAGS"
2015-05-01 18:06:47 +02:00
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"
2008-03-01 14:57:57 +01:00
XDMX_SYS_LIBS="$DMXMODULES_LIBS"
AC_SUBST([XDMX_CFLAGS])
AC_SUBST([XDMX_LIBS])
AC_SUBST([XDMX_SYS_LIBS])
2007-12-17 04:45:15 +01:00
dnl USB sources in DMX require <linux/input.h>
2008-03-01 14:57:57 +01:00
AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
DMX_BUILD_USB="no")
AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
AC_SUBST(XDMXCONFIG_DEP_LIBS)
2009-10-05 02:44:43 +02:00
PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [$LIBDMX $LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(DMXEXAMPLES_DEP_LIBS)
2009-10-05 02:44:43 +02:00
PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [$LIBDMX xmu $LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
2009-10-05 02:44:43 +02:00
PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
2009-10-05 02:44:43 +02:00
PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
2009-09-22 12:34:54 +02:00
PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(XRESEXAMPLES_DEP_LIBS)
2009-09-22 12:34:54 +02:00
PKG_CHECK_MODULES([X11EXAMPLES_DEP], [$LIBXEXT x11])
2008-03-01 14:57:57 +01:00
AC_SUBST(X11EXAMPLES_DEP_LIBS)
2009-10-16 02:01:13 +02:00
2007-12-17 04:45:15 +01:00
fi
AM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
2005-12-27 09:31:37 +01:00
dnl kdrive DDX
2007-07-05 07:28:14 +02:00
XEPHYR_LIBS=
2005-12-28 02:01:06 +01:00
XEPHYR_INCS=
2005-12-27 09:31:37 +01:00
AM_CONDITIONAL(KDRIVE, [test x$KDRIVE = xyes])
2010-01-04 09:07:04 +01:00
2005-12-27 09:31:37 +01:00
if test "$KDRIVE" = yes; then
2018-02-07 12:08:50 +01:00
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"
2008-03-01 14:57:57 +01:00
if test "x$XV" = xyes; then
2010-06-20 12:13:26 +02:00
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
2008-03-01 14:57:57 +01:00
fi
2008-04-23 16:45:54 +02:00
if test "x$DRI" = xyes && test "x$GLX" = xyes; then
2016-09-29 19:35:02 +02:00
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBDRM xcb-glx xcb-xf86dri > 1.6"
2008-04-23 16:45:54 +02:00
fi
2013-12-18 22:24:14 +01:00
if test "x$GLAMOR" = xyes; then
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS x11-xcb"
fi
2008-04-23 16:45:54 +02:00
2006-07-19 22:51:04 +02:00
if test "x$XEPHYR" = xauto; then
2011-12-17 21:25:26 +01:00
PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [XEPHYR="yes"], [XEPHYR="no"])
elif test "x$XEPHYR" = xyes ; then
PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS)
2010-06-24 19:45:11 +02:00
fi
2006-08-10 19:29:57 +02:00
2006-07-19 22:51:04 +02:00
# Xephyr needs nanosleep() which is in librt on Solaris
AC_CHECK_FUNC([nanosleep], [],
AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
2007-07-05 07:28:14 +02:00
2005-12-27 09:31:37 +01:00
# damage shadow extension glx (NOTYET) fb mi
KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
2010-06-29 00:39:04 +02:00
KDRIVE_PURE_INCS="$KDRIVE_INC $MIEXT_SYNC_INC $MIEXT_DAMAGE_INC $MIEXT_SHADOW_INC $XEXT_INC $FB_INC $MI_INC"
2005-12-27 09:31:37 +01:00
KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux'
2005-12-28 02:01:06 +01:00
KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC"
2005-12-27 09:31:37 +01:00
2017-03-22 23:11:32 +01:00
KDRIVE_CFLAGS="$XSERVER_CFLAGS"
2005-12-27 09:31:37 +01:00
2013-07-12 01:11:57 +02:00
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"
2009-01-27 06:13:28 +01:00
KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
2015-03-31 09:14:25 +02:00
KDRIVE_MAIN_LIB="$MAIN_LIB"
KDRIVE_LOCAL_LIBS="$DIX_LIB $KDRIVE_LIB"
2007-09-05 17:46:49 +02:00
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
2010-11-24 00:11:11 +01:00
KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
2017-03-22 23:11:31 +01:00
KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS"
2006-07-19 22:51:04 +02:00
AC_SUBST([XEPHYR_LIBS])
AC_SUBST([XEPHYR_INCS])
fi
AC_SUBST([KDRIVE_INCS])
AC_SUBST([KDRIVE_PURE_INCS])
AC_SUBST([KDRIVE_CFLAGS])
AC_SUBST([KDRIVE_PURE_LIBS])
2015-03-31 09:14:25 +02:00
AC_SUBST([KDRIVE_MAIN_LIB])
2007-06-27 21:24:42 +02:00
AC_SUBST([KDRIVE_LOCAL_LIBS])
2006-07-19 22:51:04 +02:00
AC_SUBST([KDRIVE_LIBS])
2006-08-10 19:29:57 +02:00
AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
2005-12-28 02:01:06 +01:00
2014-03-12 00:11:39 +01:00
dnl Xwayland DDX
2019-08-01 13:39:47 +02:00
XWAYLANDMODULES="wayland-client >= 1.3.0 wayland-protocols >= 1.10"
2016-03-04 16:24:48 +01:00
if test "x$XF86VIDMODE" = xyes; then
XWAYLANDMODULES="$XWAYLANDMODULES $VIDMODEPROTO"
fi
2019-08-01 13:39:47 +02:00
if test "x$DRM" = xyes; then
XWAYLANDMODULES="$XWAYLANDMODULES $LIBDRM"
fi
if test "x$GLAMOR" = xyes; then
XWAYLANDMODULES="$XWAYLANDMODULES epoxy"
fi
2016-03-04 16:24:48 +01:00
PKG_CHECK_MODULES(XWAYLANDMODULES, [$XWAYLANDMODULES], [have_xwayland=yes], [have_xwayland=no])
2014-03-12 00:11:39 +01:00
AC_MSG_CHECKING([whether to build Xwayland DDX])
if test "x$XWAYLAND" = xauto; then
XWAYLAND="$have_xwayland"
fi
AC_MSG_RESULT([$XWAYLAND])
AM_CONDITIONAL(XWAYLAND, [test "x$XWAYLAND" = xyes])
if test "x$XWAYLAND" = xyes; then
if test "x$have_xwayland" = xno; then
AC_MSG_ERROR([Xwayland build explicitly requested, but required modules not found.])
fi
2018-04-20 20:38:04 +02:00
if test "x$GLAMOR" = xyes && test "x$GBM" = xyes; then
AC_DEFINE(XWL_HAS_GLAMOR, 1,
[Build xwayland with glamor support])
fi
xwayland: Add glamor egl_backend for EGLStreams
This adds initial support for displaying Xwayland applications through
the use of EGLStreams and nvidia's custom wayland protocol by adding
another egl_backend driver. This also adds some additional egl_backend
hooks that are required to make things work properly.
EGLStreams work a lot differently then the traditional way of handling
buffers with wayland. Unfortunately, there are also a LOT of various
pitfalls baked into it's design that need to be explained.
This has a very large and unfortunate implication: direct rendering is,
for the time being at least, impossible to do through EGLStreams. The
main reason being that the EGLStream spec mandates that we lose the
entire color buffer contents with each eglSwapBuffers(), which goes
against X's requirement of not losing data with pixmaps. no way to use
an allocated EGLSurface as the storage for glamor rendering like we do
with GBM, we have to rely on blitting each pixmap to it's respective
EGLSurface producer each frame. In order to pull this off, we add two
different additional egl_backend hooks that GBM opts out of
implementing:
- egl_backend.allow_commits for holding off displaying any EGLStream
backed pixmaps until the point where it's stream is completely
initialized and ready for use
- egl_backend.post_damage for blitting the content of the EGLStream
surface producer before Xwayland actually damages and commits the
wl_surface to the screen.
The other big pitfall here is that using nvidia's wayland-eglstreams
helper library is also not possible for the most part. All of it's API
for creating and destroying streams rely on being able to perform a
roundtrip in order to bring each stream to completion since the wayland
compositor must perform it's job of connecting a consumer to each
EGLstream. Because Xwayland has to potentially handle both responding to
the wayland compositor and it's own X clients, the situation of the
wayland compositor being one of our X clients must be considered. If we
perform a roundtrip with the Wayland compositor, it's possible that the
wayland compositor might currently be connected to us as an X client and
thus hang while both Xwayland and the wayland compositor await responses
from eachother. To avoid this, we work directly with the wayland
protocol and use wl_display_sync() events along with release() events to
set up and destroy EGLStreams asynchronously alongside handling X
clients.
Additionally, since setting up EGLStreams is not an atomic operation we
have to take into consideration the fact that an EGLStream can
potentially be created in response to a window resize, then immediately
deleted due to another pending window resize in the same X client's
pending reqests before Xwayland hits the part of it's event loop where
we read from the wayland compositor. To make this even more painful, we
also have to take into consideration that since EGLStreams are not
atomic that it's possible we could delete wayland resources for an
EGLStream before the compositor even finishes using them and thus run
into errors. So, we use quite a bit of tracking logic to keep EGLStream
objects alive until we know the compositor isn't using them (even if
this means the stream outlives the pixmap it backed).
While the default backend for glamor remains GBM, this patch exists for
users who have had to deal with the reprecussion of their GPU
manufacturers ignoring the advice of upstream and the standardization of
GBM across most major GPU manufacturers. It is not intended to be a
final solution to the GBM debate, but merely a baindaid so our users
don't have to suffer from the consequences of companies avoiding working
upstream. New drivers are strongly encouraged not to use this as a
backend, and use GBM like everyone else. We even spit this out as an
error from Xwayland when using the eglstream backend.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-04-20 20:38:05 +02:00
PKG_CHECK_MODULES(WAYLAND_EGLSTREAM, [wayland-eglstream-protocols >= 1.0.2], [have_wl_eglstream=yes], [have_wl_eglstream=no])
if test "x$XWAYLAND_EGLSTREAM" = xauto; then
if test "x$have_wl_eglstream" = xyes && test "x$GLAMOR" = xyes; then
XWAYLAND_EGLSTREAM=yes
fi
fi
if test "x$XWAYLAND_EGLSTREAM" = xyes; then
if test "x$GLAMOR" != xyes; then
AC_MSG_ERROR([Xwayland eglstream support explicitly requested, but required modules not found.])
fi
if test "x$have_wl_eglstream" = xno; then
AC_MSG_ERROR([Xwayland eglstream support requires wayland-eglstream-protocols >= 1.0.2])
fi
AC_SUBST(WAYLAND_EGLSTREAM_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-eglstream-protocols`)
AC_DEFINE(XWL_HAS_EGLSTREAM, 1,
[Build xwayland with eglstream support])
fi
2014-03-12 00:11:39 +01:00
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"
XWAYLAND_SYS_LIBS="$XWAYLANDMODULES_LIBS $GLX_SYS_LIBS"
AC_SUBST([XWAYLAND_LIBS])
AC_SUBST([XWAYLAND_SYS_LIBS])
2014-06-16 20:34:55 +02:00
2016-05-24 12:46:42 +02:00
if test "x$MONOTONIC_CLOCK" != xyes; then
AC_MSG_ERROR([Xwayland requires CLOCK_MONOTONIC support.])
fi
2018-04-11 19:51:16 +02:00
AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
if test "x$WAYLAND_SCANNER" = x; then
PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner])
AC_SUBST(WAYLAND_SCANNER, `$PKG_CONFIG --variable=wayland_scanner wayland-scanner`)
fi
2016-09-29 04:40:01 +02:00
2018-04-05 19:24:13 +02:00
PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner >= 1.14.91],
AC_SUBST(SCANNER_ARG, 'private-code'),
AC_SUBST(SCANNER_ARG, 'code'))
2016-09-29 04:40:01 +02:00
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
2014-03-12 00:11:39 +01:00
fi
xwayland: Add glamor egl_backend for EGLStreams
This adds initial support for displaying Xwayland applications through
the use of EGLStreams and nvidia's custom wayland protocol by adding
another egl_backend driver. This also adds some additional egl_backend
hooks that are required to make things work properly.
EGLStreams work a lot differently then the traditional way of handling
buffers with wayland. Unfortunately, there are also a LOT of various
pitfalls baked into it's design that need to be explained.
This has a very large and unfortunate implication: direct rendering is,
for the time being at least, impossible to do through EGLStreams. The
main reason being that the EGLStream spec mandates that we lose the
entire color buffer contents with each eglSwapBuffers(), which goes
against X's requirement of not losing data with pixmaps. no way to use
an allocated EGLSurface as the storage for glamor rendering like we do
with GBM, we have to rely on blitting each pixmap to it's respective
EGLSurface producer each frame. In order to pull this off, we add two
different additional egl_backend hooks that GBM opts out of
implementing:
- egl_backend.allow_commits for holding off displaying any EGLStream
backed pixmaps until the point where it's stream is completely
initialized and ready for use
- egl_backend.post_damage for blitting the content of the EGLStream
surface producer before Xwayland actually damages and commits the
wl_surface to the screen.
The other big pitfall here is that using nvidia's wayland-eglstreams
helper library is also not possible for the most part. All of it's API
for creating and destroying streams rely on being able to perform a
roundtrip in order to bring each stream to completion since the wayland
compositor must perform it's job of connecting a consumer to each
EGLstream. Because Xwayland has to potentially handle both responding to
the wayland compositor and it's own X clients, the situation of the
wayland compositor being one of our X clients must be considered. If we
perform a roundtrip with the Wayland compositor, it's possible that the
wayland compositor might currently be connected to us as an X client and
thus hang while both Xwayland and the wayland compositor await responses
from eachother. To avoid this, we work directly with the wayland
protocol and use wl_display_sync() events along with release() events to
set up and destroy EGLStreams asynchronously alongside handling X
clients.
Additionally, since setting up EGLStreams is not an atomic operation we
have to take into consideration the fact that an EGLStream can
potentially be created in response to a window resize, then immediately
deleted due to another pending window resize in the same X client's
pending reqests before Xwayland hits the part of it's event loop where
we read from the wayland compositor. To make this even more painful, we
also have to take into consideration that since EGLStreams are not
atomic that it's possible we could delete wayland resources for an
EGLStream before the compositor even finishes using them and thus run
into errors. So, we use quite a bit of tracking logic to keep EGLStream
objects alive until we know the compositor isn't using them (even if
this means the stream outlives the pixmap it backed).
While the default backend for glamor remains GBM, this patch exists for
users who have had to deal with the reprecussion of their GPU
manufacturers ignoring the advice of upstream and the standardization of
GBM across most major GPU manufacturers. It is not intended to be a
final solution to the GBM debate, but merely a baindaid so our users
don't have to suffer from the consequences of companies avoiding working
upstream. New drivers are strongly encouraged not to use this as a
backend, and use GBM like everyone else. We even spit this out as an
error from Xwayland when using the eglstream backend.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2018-04-20 20:38:05 +02:00
AM_CONDITIONAL(XWAYLAND_EGLSTREAM, [test "x$XWAYLAND_EGLSTREAM" = "xyes"])
2014-03-12 00:11:39 +01:00
2005-07-01 22:29:53 +02:00
dnl and the rest of these are generic, so they're in config.h
2008-07-17 21:37:31 +02:00
dnl
dnl though, thanks to the passing of some significant amount of time, the
dnl above is probably a complete fallacy, and you should not rely on it.
dnl but this is still actually better than imake, honest. -daniels
2005-08-21 21:15:11 +02:00
2013-12-22 01:58:30 +01:00
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2007-01-10 22:10:43 +01:00
#include <features.h>
#ifndef __GLIBC__
#error not glibc
#endif
2013-12-22 01:58:30 +01:00
]], [])], [AC_DEFINE(_GNU_SOURCE, 1,
2007-01-10 22:10:43 +01:00
[ Enable GNU and other extensions to the C environment for glibc])])
2005-07-01 22:29:53 +02:00
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
Xorg: Add a suid root wrapper
With the recent systemd-logind changes it is possible to install the Xorg
binary without suid root rights and still have everything working as it
should *if* the user only has cards which are supported by kms.
This commit adds a little suid root wrapper, which is a bit weird, first we
strip the suid-root bit of the Xorg binary, and then we add a wrapper ?
The function of this wrapper is to see if a system still needs root-rights,
if it does not (it supports kms and the kms drivers are properly loaded),
then it will immediately drop all elevated rights before executing the real
Xorg binary. If it finds (some) cards which don't support kms, or no cards
at all, then it will execute the Xorg server with elevated rights so that
ie the nvidia binary driver and the vesa driver can keep working normally.
To make it possible for security concious users who don't need the root
rights to completely remove the wrapper, Xorg is started in a 3 step process
when the wrapper is enabled during build time:
1) A simple shell script which checks if the wrapper is there, if it is
it executes the wrapper, if not it directly executes the real Xorg binary
2) The wrapper gets executed, does its checks, normally drops all elevated
rights and then executes the real Xorg binary
3) The real Xorg binary does its thing
This allows distributions to put the wrapper binary in a separate package, and
will allow users to remove this package. IE the plan with Fedora is to make
"legacy" drivers depend on the wrapper pkg, and since our default install
contains some legacy drivers it will be part of the default install, but
users can later yum remove it (which will also automatically remove the
legacy driver packages as those won't work without it anyways).
The wrapper is loosely modelled after the existing Debian Xwrapper, it
uses the same config-file + config-file format, and also allows restricting
Xserver execution (through the wrapper) to console users only.
There also is a new needs_root_rights config file directive, which can
be used to override the auto-detection the wrapper does.
Hopefully this will allow Debian to replace their own wrapper with this
upstream one.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-05 16:41:14 +01:00
AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [sysconfdir])
2005-07-01 22:29:53 +02:00
2010-05-18 05:27:10 +02:00
AC_SUBST([RELEASE_DATE])
2005-07-01 22:29:53 +02:00
2006-09-18 21:11:18 +02:00
DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
2005-07-02 20:59:44 +02:00
AC_SUBST([DIX_CFLAGS])
2008-04-10 21:36:19 +02:00
AC_SUBST([libdir])
AC_SUBST([exec_prefix])
AC_SUBST([prefix])
2005-07-01 22:29:53 +02:00
2011-06-28 18:33:25 +02:00
AC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep])
2011-02-15 15:03:28 +01:00
2013-02-01 00:06:20 +01:00
if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
2013-12-22 01:58:32 +01:00
AC_MSG_WARN([
2013-02-01 00:06:20 +01:00
***********************************************
Neither HAL nor udev backend will be enabled.
Input device hotplugging will not be available!
***********************************************])
fi
2013-10-28 23:32:36 +01:00
AC_CONFIG_FILES([
2005-07-01 22:29:53 +02:00
Makefile
2008-05-21 19:33:36 +02:00
glx/Makefile
2005-07-01 22:29:53 +02:00
include/Makefile
composite/Makefile
damageext/Makefile
2005-07-13 23:41:02 +02:00
dbe/Makefile
2005-07-01 22:29:53 +02:00
dix/Makefile
2005-09-30 04:37:57 +02:00
doc/Makefile
2011-05-14 19:30:18 +02:00
doc/dtrace/Makefile
2011-04-29 03:16:13 +02:00
man/Makefile
2005-07-01 22:29:53 +02:00
fb/Makefile
2013-12-18 20:35:53 +01:00
glamor/Makefile
2005-07-01 22:29:53 +02:00
record/Makefile
2006-07-19 16:05:12 +02:00
config/Makefile
2005-07-01 22:29:53 +02:00
mi/Makefile
miext/Makefile
2010-06-29 00:39:04 +02:00
miext/sync/Makefile
2005-07-01 22:29:53 +02:00
miext/damage/Makefile
miext/shadow/Makefile
2005-10-15 22:44:44 +02:00
miext/rootless/Makefile
2005-07-01 22:29:53 +02:00
os/Makefile
2012-03-31 15:42:45 +02:00
pseudoramiX/Makefile
2005-07-01 22:29:53 +02:00
randr/Makefile
render/Makefile
xkb/Makefile
Xext/Makefile
Xi/Makefile
xfixes/Makefile
2006-02-16 01:14:11 +01:00
exa/Makefile
2013-04-10 04:59:39 +02:00
dri3/Makefile
2013-07-12 01:11:57 +02:00
present/Makefile
2005-07-01 22:29:53 +02:00
hw/Makefile
hw/xfree86/Makefile
Xorg: Add a suid root wrapper
With the recent systemd-logind changes it is possible to install the Xorg
binary without suid root rights and still have everything working as it
should *if* the user only has cards which are supported by kms.
This commit adds a little suid root wrapper, which is a bit weird, first we
strip the suid-root bit of the Xorg binary, and then we add a wrapper ?
The function of this wrapper is to see if a system still needs root-rights,
if it does not (it supports kms and the kms drivers are properly loaded),
then it will immediately drop all elevated rights before executing the real
Xorg binary. If it finds (some) cards which don't support kms, or no cards
at all, then it will execute the Xorg server with elevated rights so that
ie the nvidia binary driver and the vesa driver can keep working normally.
To make it possible for security concious users who don't need the root
rights to completely remove the wrapper, Xorg is started in a 3 step process
when the wrapper is enabled during build time:
1) A simple shell script which checks if the wrapper is there, if it is
it executes the wrapper, if not it directly executes the real Xorg binary
2) The wrapper gets executed, does its checks, normally drops all elevated
rights and then executes the real Xorg binary
3) The real Xorg binary does its thing
This allows distributions to put the wrapper binary in a separate package, and
will allow users to remove this package. IE the plan with Fedora is to make
"legacy" drivers depend on the wrapper pkg, and since our default install
contains some legacy drivers it will be part of the default install, but
users can later yum remove it (which will also automatically remove the
legacy driver packages as those won't work without it anyways).
The wrapper is loosely modelled after the existing Debian Xwrapper, it
uses the same config-file + config-file format, and also allows restricting
Xserver execution (through the wrapper) to console users only.
There also is a new needs_root_rights config file directive, which can
be used to override the auto-detection the wrapper does.
Hopefully this will allow Debian to replace their own wrapper with this
upstream one.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-05 16:41:14 +01:00
hw/xfree86/Xorg.sh
2005-07-01 22:29:53 +02:00
hw/xfree86/common/Makefile
hw/xfree86/ddc/Makefile
hw/xfree86/dixmods/Makefile
2005-09-27 16:09:31 +02:00
hw/xfree86/doc/Makefile
2005-07-14 02:28:47 +02:00
hw/xfree86/dri/Makefile
2008-02-04 17:58:24 +01:00
hw/xfree86/dri2/Makefile
2014-10-29 05:30:23 +01:00
hw/xfree86/dri2/pci_ids/Makefile
2014-08-26 20:06:23 +02:00
hw/xfree86/drivers/Makefile
hw/xfree86/drivers/modesetting/Makefile
2005-08-07 01:34:09 +02:00
hw/xfree86/exa/Makefile
2011-01-10 02:28:27 +01:00
hw/xfree86/exa/man/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/fbdevhw/Makefile
2011-01-10 02:28:26 +01:00
hw/xfree86/fbdevhw/man/Makefile
2013-12-28 01:44:15 +01:00
hw/xfree86/glamor_egl/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/i2c/Makefile
hw/xfree86/int10/Makefile
hw/xfree86/loader/Makefile
2011-03-12 13:29:34 +01:00
hw/xfree86/man/Makefile
2007-02-16 05:36:20 +01:00
hw/xfree86/modes/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/os-support/Makefile
2005-09-13 20:37:35 +02:00
hw/xfree86/os-support/bsd/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/os-support/bus/Makefile
2006-08-12 18:41:59 +02:00
hw/xfree86/os-support/hurd/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/os-support/misc/Makefile
hw/xfree86/os-support/linux/Makefile
2005-07-14 03:00:39 +02:00
hw/xfree86/os-support/solaris/Makefile
2011-09-13 22:38:45 +02:00
hw/xfree86/os-support/stub/Makefile
2005-07-01 22:29:53 +02:00
hw/xfree86/parser/Makefile
hw/xfree86/ramdac/Makefile
hw/xfree86/shadowfb/Makefile
hw/xfree86/vbe/Makefile
hw/xfree86/vgahw/Makefile
2005-07-12 16:50:10 +02:00
hw/xfree86/x86emu/Makefile
2017-06-26 15:54:04 +02:00
hw/xfree86/xkb/Makefile
2005-09-24 04:40:51 +02:00
hw/xfree86/utils/Makefile
2011-01-10 02:27:53 +01:00
hw/xfree86/utils/man/Makefile
2005-12-28 16:22:21 +01:00
hw/xfree86/utils/cvt/Makefile
2005-10-04 02:43:16 +02:00
hw/xfree86/utils/gtf/Makefile
2005-07-12 03:20:36 +02:00
hw/dmx/config/Makefile
2011-01-10 02:28:28 +01:00
hw/dmx/config/man/Makefile
2005-09-27 16:09:31 +02:00
hw/dmx/doc/Makefile
2011-04-29 03:16:10 +02:00
hw/dmx/doxygen/doxygen.conf
hw/dmx/doxygen/Makefile
2005-10-06 04:35:22 +02:00
hw/dmx/examples/Makefile
2005-07-01 22:29:53 +02:00
hw/dmx/input/Makefile
hw/dmx/glxProxy/Makefile
hw/dmx/Makefile
2011-01-10 02:28:28 +01:00
hw/dmx/man/Makefile
2005-07-12 03:20:36 +02:00
hw/vfb/Makefile
2011-01-10 02:27:51 +01:00
hw/vfb/man/Makefile
2005-07-14 05:32:09 +02:00
hw/xnest/Makefile
2011-01-10 02:27:49 +01:00
hw/xnest/man/Makefile
2008-04-20 17:35:42 +02:00
hw/xwin/Makefile
Add Windows-DRI extension
If windowsdriproto headers are available, build a Windows-DRI extension,
which supports requests to enable local clients to directly render GL to a
Windows drawable:
- a query to check if WGL is being used on a screen
- a query to map a fbconfigID to a native pixelformatindex
- a query to map a drawable to a native handle
Windows-DRI can only be useful if we are using WGL, so make an note if WGL
is active on a screen.
Make validGlxDrawable() public
Adjust glxWinSetPixelFormat() so it doesn't require a context, just a
screen and config.
That enables factoring out the deferred drawable creation code as
glxWinDeferredCreateDrawable()
Enhance glxWinDeferredCreateDrawable(), so that pixmaps are placed into a
file mapping, so they exist in memory which can be shared with the direct
rendering process.
Currently, this file mapping is accessed by a name generated from the XID.
This will not be unique across multiple server instances. It would perhaps
be better, although more complicated, to use an anonymous file mapping, and
then duplicate the handle for the direct rendering process.
Use glxWinDeferredCreateDrawable() to ensure the native handle exists for
the Windows-DRI query to map a drawable to native handle.
v2:
Various printf format warning fixes
v3:
Fix format warnings on x86
Move some uninteresting windows-dri output to debug log level
v4:
check for windowsdriproto when --enable-windowsdri
use windowsdriproto_CFLAGS
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
2014-07-24 13:29:41 +02:00
hw/xwin/dri/Makefile
2009-11-07 20:28:18 +01:00
hw/xwin/glx/Makefile
2011-01-10 02:27:50 +01:00
hw/xwin/man/Makefile
2013-06-17 01:38:47 +02:00
hw/xwin/winclipboard/Makefile
2007-12-06 04:43:49 +01:00
hw/xquartz/Makefile
2008-11-22 22:57:45 +01:00
hw/xquartz/GL/Makefile
2007-12-06 04:43:49 +01:00
hw/xquartz/bundle/Makefile
2011-01-10 02:28:31 +01:00
hw/xquartz/man/Makefile
2008-05-09 04:46:03 +02:00
hw/xquartz/mach-startup/Makefile
2008-09-03 18:23:06 +02:00
hw/xquartz/pbproxy/Makefile
2007-12-06 04:43:49 +01:00
hw/xquartz/xpr/Makefile
2005-12-27 09:31:37 +01:00
hw/kdrive/Makefile
hw/kdrive/ephyr/Makefile
2011-01-10 02:27:52 +01:00
hw/kdrive/ephyr/man/Makefile
2005-12-27 09:31:37 +01:00
hw/kdrive/src/Makefile
2014-03-12 00:11:39 +01:00
hw/xwayland/Makefile
2009-04-15 09:21:08 +02:00
test/Makefile
2011-05-14 19:30:19 +02:00
xserver.ent
2005-07-01 22:29:53 +02:00
xorg-server.pc
])
2013-10-28 23:32:36 +01:00
AC_OUTPUT