summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/xf86-input-keyboard/ChangeLog339
-rw-r--r--driver/xf86-input-keyboard/Makefile.in6
-rw-r--r--driver/xf86-input-keyboard/aclocal.m4706
-rw-r--r--driver/xf86-input-keyboard/configure705
-rw-r--r--driver/xf86-input-keyboard/configure.ac15
-rw-r--r--driver/xf86-input-keyboard/man/Makefile.in3
-rw-r--r--driver/xf86-input-keyboard/man/kbd.man19
-rw-r--r--driver/xf86-input-keyboard/src/Makefile.in3
-rw-r--r--driver/xf86-input-keyboard/src/bsd_kbd.c47
-rw-r--r--driver/xf86-input-keyboard/src/hurd_kbd.c2
-rw-r--r--driver/xf86-input-keyboard/src/kbd.c480
-rw-r--r--driver/xf86-input-keyboard/src/lnx_kbd.c239
-rw-r--r--driver/xf86-input-keyboard/src/sco_kbd.c60
-rw-r--r--driver/xf86-input-keyboard/src/sun_kbd.c168
-rw-r--r--driver/xf86-input-keyboard/src/sun_kbd.h1
-rw-r--r--driver/xf86-input-keyboard/src/sun_kbdMap.c10
-rw-r--r--driver/xf86-input-keyboard/src/xf86Keymap.h3
-rw-r--r--driver/xf86-input-keyboard/src/xf86OSKbd.h11
18 files changed, 1730 insertions, 1087 deletions
diff --git a/driver/xf86-input-keyboard/ChangeLog b/driver/xf86-input-keyboard/ChangeLog
index ccd00005c..59b99e51a 100644
--- a/driver/xf86-input-keyboard/ChangeLog
+++ b/driver/xf86-input-keyboard/ChangeLog
@@ -1,3 +1,342 @@
+commit 0c75afb4895b60aa08209ccfee9dfad4e4495f4d
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Oct 6 17:02:33 2009 +1000
+
+ Remove now un-used autorepeat field.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit adc1048980113b329d97ebf5b974ca4a50fc86ba
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Oct 6 17:00:58 2009 +1000
+
+ Don't use XKB_DFLT_RULES from the server.
+
+ On Linux, the server uses default rules of "evdev" which doesn't apply for
+ this driver. For all other cases, the server uses "base", so let's just
+ hardcode it here too.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit ecd34ebd43d5a8c0db0a6dd132b61a4c663c7fd8
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Oct 6 17:05:56 2009 +1000
+
+ Require macros 1.3 for XORG_DEFAULT_OPTIONS
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 5427034948fd4d59d5d2d50f9188376f23119a72
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed Sep 9 11:48:43 2009 +1000
+
+ keyboard 1.3.99.1
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 158d33c15df60696946031a0319e2bd2ec8b9541
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Aug 19 18:56:05 2009 -0700
+
+ sun_kbd: Check if streams module is already on the stack before pushing it
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 891d55e759ff6a30f62809081a11c3da20fc0551
+Author: Aaron Zang <Aaron.Zang@Sun.COM>
+Date: Thu Aug 13 20:39:59 2009 -0700
+
+ sun_kbd: Use HID ioctl variants to get/set direct mode on usbhid devices
+
+ When opening a usb hid* device node directly (instead of via the
+ /dev/kbd virtual/coalescing device node), use the HIDIOCKMGDIRECT
+ and HIDIOCKMSDIRECT ioctls instead of the KIO* versions. When
+ closing the device, always reset back to direct mode, no matter
+ what state we found it in.
+
+ Signed-off-by: Aaron Zang <Aaron.Zang@Sun.COM>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 8e42e8f0034d89ef4b6cee44148961f808ba0602
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Aug 5 15:03:43 2009 -0700
+
+ sun_kbd: re-open keyboard if needed in KbdOn
+
+ If we closed keyboard in KbdOff, we need to reopen it in KbdOn, or
+ will not be able to type after VT switch.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit bba90b4e87be3ae5a13d69f6d9c60aa97761c8d5
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Tue Aug 4 21:31:23 2009 -0700
+
+ Sun bug 6852921: Recycling Xorg runs out of file descriptors in kbd driver
+
+ http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6852921
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 352aa83c416a78e59be4dfa7d8442e5eec50130a
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Tue Aug 4 21:04:24 2009 -0700
+
+ Stop checking for #ifdef __SOL8__ - assume Solaris is at least Solaris 8
+
+ If you want to run a pre-1999 kernel, you'll need a pre-2009 X server
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit fe8d1f70fc7edce4f030766159aebae8f8a89ffc
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Sat May 30 21:12:34 2009 +1000
+
+ Remove ModuleInfoRec.
+
+ This struct was removed with 2107becb0ce2ffda001be65728c53563496d8d50 from
+ the server.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 29f075db9f86aa7e5e01688a5fd5e0081210e16b
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon May 11 15:30:23 2009 +1000
+
+ Return BadValue if the server failed to init the keyboard. (#21278)
+
+ If keyboard init failed, we don't have a useful keymap and thus can't
+ continue.
+ This is essentially 0e15697b53c9448ce9911aa6499b2ea0bda92af6 from
+ xserver ported over here.
+
+ X.Org Bug 21278 <http://bugs.freedesktop.org/show_bug.cgi?id=21278>
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 7a4d6f396597c4b96e1402dadfcd2c0e5b7b0579
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Fri May 1 14:47:59 2009 -0700
+
+ Override HKTG & BSlash2 keycodes on Solaris
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 2bc18590e6b7b403dcec22a09820010748c48972
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Thu Apr 30 16:26:23 2009 -0700
+
+ Solaris keyboard fixes for HAL hotplugging support
+
+ - Handle hot-unplug by checking for ENODEV on read and removing device
+ - Make sure to re-push streams module on resume
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 810fe3a4afd7e77a645c312f9475e75c2f7e925c
+Author: Alan Curry <pacman@kosh.dhis.org>
+Date: Sat Feb 28 00:53:10 2009 -0500
+
+ KDGETLED needs a char, not an int.
+
+ KDGETLED actually only stores a single byte at the address indicated by
+ &real_leds, which on big-endian systems means the kernel's led state is put
+ into the most-significant byte of real_leds. The LED_CAP LED_NUM LED_SCR
+ macros then extract some bits from the least-significant byte, which still
+ contains stack garbage since real_leds hasn't been initialized.
+
+ Don't believe what the console_ioctl(4) man page says. It's wrong. Go read
+ drivers/char/vt_ioctl.c in the kernel source.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 0fafdc024624d27ddffdcc4ff0047dec59ef33e2
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Thu Apr 2 16:53:53 2009 -0700
+
+ Remove Initialised static variable (not used since xf86AddModuleInfo removal)
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 7b64df0a988674454522e353ea2b56485474af6e
+Author: David Miller <davem@davemloft.net>
+Date: Tue Feb 24 16:50:22 2009 -0800
+
+ Fix xf86-input-keyboard build on Linux/sparc
+
+ lnx_kbd.c: Fix Sparc build.
+
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+commit 62e663e7b107207b474713f22b6fec72f811dd86
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 17:24:21 2009 +1000
+
+ Switch to new XKB API
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit ae630aef17185dd8d2c23d0eb1b3287fa6e26268
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed Feb 11 09:09:59 2009 +1000
+
+ Really remove autorepeat.
+
+ This strips all autorepeat from the keyboard driver. If you need autorepeat,
+ use XKB.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 74ffb8e1897e7dd73f1adf3a2cba6b4214cfc77a
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed Feb 11 09:04:53 2009 +1000
+
+ Don't set xkb repeat rate from the driver.
+
+commit 39b34a293a1502be2529b83575d03a46c5b0f1b9
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 17:28:06 2009 +1000
+
+ No autorepeat handling in the driver.
+
+ It's bad enough in the server, let's not cook up a driver-specific
+ implementation on top of it.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 9234a0a91ef0c848dead86df831124429c7f528a
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue Feb 10 17:01:37 2009 +1000
+
+ unifdef XKB and remove all "noXkb" handling.
+
+ XKB is here to stay. Live with it.
+
+commit 9f95e38282164a617b68e4dedf7b72ebc0fedc3e
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 16:47:52 2009 +1000
+
+ nec/jp layout is just "jp" these days.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit db59771946ac53f78fecf2d75eb165275a45f6aa
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 16:43:46 2009 +1000
+
+ No more special sun keyboards anymore.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit ea428e52f599a6f575bc012b552e14535009d219
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 16:41:06 2009 +1000
+
+ Remove special support for Panix106
+
+ Let's pretend that if google doesn't know it, it doesn't exist.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 425c0494e7ff4b7ed0ee7aec3b07a3bce812b9b7
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 17:24:32 2009 +1000
+
+ Change KbdCtrlProc to a void
+
+ 6 years to follow an API surely is within reasonably response time, right?
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 218ec4b53cc3e557317e188caf8762eac5e06e71
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 16:39:51 2009 +1000
+
+ Remove leftover ifdef XINPUT.
+
+ XINPUT has been mandatory for a while now.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit d12d2d2c789e8439ae6f2e63526c49c76c385c8e
+Author: Daniel Stone <daniel@fooishbar.org>
+Date: Tue Feb 10 16:38:56 2009 +1000
+
+ Remove SpecialKey handling.
+
+ Are your keys really that special? Really?
+ No. They aren't. Take it from me.
+
+ Extracted into separate commits by Peter Hutterer.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 862314c8dfced80631b2c7a6e00799fd2956b6dc
+Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
+Date: Wed Feb 4 18:59:23 2009 -0200
+
+ Janitor: compiler warnings, .gitignore.
+
+ Correct common sparse warning about integer used where a pointer
+ is expected. Remaining warnings are about the symbols that the
+ X Server loader should "dlsym()" to load the module, and are
+ extern/exported, but have no declaration anywhere.
+
+ Use only one .gitignore file in the toplevel directory.
+
+ Signed-off-by: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 69d38cbda4ecff87dc63dd26cfae4262c1e6161c
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Fri Jan 30 20:23:32 2009 -0800
+
+ Add README with pointers to mailing list, bugzilla & git repos
+
+commit 14267d89087c21071fde1960f77cceee49a6e551
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Tue Jan 20 16:54:21 2009 -0800
+
+ Use XKB_DFLT_RULES from xorg-server.h for default xkb rules filename
+
+commit f9857c498803ce8e5902df7319d2928b0db8cd49
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Fri Jan 9 14:50:56 2009 -0800
+
+ Add note on hal-based configuration to man page
+
+commit ba47bfd9c4ebab0c71f7918127506817378d9eef
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Jan 7 10:02:23 2009 -0800
+
+ Move ifdefs to clear "warning: statement has no consequent: if"
+
+commit fb9c07cbf0339922816007f2d35c501266a439b1
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Jan 7 09:58:36 2009 -0800
+
+ Make LED masks more consistently unsigned long to clear compiler/lint warnings
+
+commit 2fde7c02565384ce774c20face9755359c5d5946
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Jan 7 09:56:12 2009 -0800
+
+ Remove unused variables from Solaris code
+
commit 708ecbf8557d9e676e3bb07c1f83170f6d9f7cd7
Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
Date: Wed Jan 7 15:09:01 2009 -0200
diff --git a/driver/xf86-input-keyboard/Makefile.in b/driver/xf86-input-keyboard/Makefile.in
index 426b03270..6ba70000e 100644
--- a/driver/xf86-input-keyboard/Makefile.in
+++ b/driver/xf86-input-keyboard/Makefile.in
@@ -55,7 +55,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure COPYING ChangeLog config.guess \
config.sub depcomp install-sh ltmain.sh missing
@@ -90,12 +90,14 @@ am__remove_distdir = \
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
@@ -136,6 +138,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@
HURD_FALSE = @HURD_FALSE@
HURD_TRUE = @HURD_TRUE@
+INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -198,7 +201,6 @@ build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
-distcleancheck_listfiles = @distcleancheck_listfiles@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
diff --git a/driver/xf86-input-keyboard/aclocal.m4 b/driver/xf86-input-keyboard/aclocal.m4
index 3ec9c2c92..3ecdba9f1 100644
--- a/driver/xf86-input-keyboard/aclocal.m4
+++ b/driver/xf86-input-keyboard/aclocal.m4
@@ -7631,34 +7631,28 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
-dnl xorg-macros.m4. Generated from xorg-macros.m4.in:xorgversion.m4 by configure.
+dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
dnl
dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved.
dnl
dnl Permission is hereby granted, free of charge, to any person obtaining a
-dnl copy of this software and associated documentation files (the
-dnl "Software"), to deal in the Software without restriction, including
-dnl without limitation the rights to use, copy, modify, merge, publish,
-dnl distribute, and/or sell copies of the Software, and to permit persons
-dnl to whom the Software is furnished to do so, provided that the above
-dnl copyright notice(s) and this permission notice appear in all copies of
-dnl the Software and that both the above copyright notice(s) and this
-dnl permission notice appear in supporting documentation.
+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:
dnl
-dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-dnl OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-dnl HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-dnl INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-dnl FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-dnl NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-dnl WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+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.
dnl
-dnl Except as contained in this notice, the name of a copyright holder
-dnl shall not be used in advertising or otherwise to promote the sale, use
-dnl or other dealings in this Software without prior written authorization
-dnl of the copyright holder.
+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.
# XORG_MACROS_VERSION(required-version)
# -------------------------------------
@@ -7668,27 +7662,24 @@ dnl of the copyright holder.
# your configure.ac with the minimum required version, such as:
# XORG_MACROS_VERSION(1.1)
#
-# To force at least a version with this macro defined, also add:
-# m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.1 or later before running autoconf/autogen])])
+# To ensure that this macro is defined, also add:
+# m4_ifndef([XORG_MACROS_VERSION],
+# [m4_fatal([must install xorg-macros 1.1 or later before running autoconf/autogen])])
#
#
# See the "minimum version" comment for each macro you use to see what
# version you require.
-AC_DEFUN([XORG_MACROS_VERSION],[
- [XORG_MACROS_needed_version=$1
- XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'`
- XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`]
- AC_MSG_CHECKING([if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}])
- [XORG_MACROS_version=1.2.1
- XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'`
- XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`]
- if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then
- AC_MSG_ERROR([configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x])
- fi
- if test $XORG_MACROS_minor -lt $XORG_MACROS_needed_minor ; then
- AC_MSG_ERROR([configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer])
- fi
- AC_MSG_RESULT([yes, $XORG_MACROS_version])
+m4_defun([XORG_MACROS_VERSION],[
+m4_define([vers_have], [1.7.0])
+m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
+m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
+m4_if(m4_cmp(maj_have, maj_needed), 0,,
+ [m4_fatal([xorg-macros major version ]maj_needed[ is required but ]vers_have[ found])])
+m4_if(m4_version_compare(vers_have, [$1]), -1,
+ [m4_fatal([xorg-macros version $1 or higher is required but ]vers_have[ found])])
+m4_undefine([vers_have])
+m4_undefine([maj_have])
+m4_undefine([maj_needed])
]) # XORG_MACROS_VERSION
# XORG_PROG_RAWCPP()
@@ -7820,6 +7811,31 @@ AC_SUBST([DRIVER_MAN_DIR])
AC_SUBST([ADMIN_MAN_DIR])
]) # XORG_MANPAGE_SECTIONS
+# XORG_CHECK_SGML_DOCTOOLS
+# ------------------------
+# Minimum version: 1.7.0
+#
+# Defines the variable XORG_SGML_PATH containing the location of X11/defs.ent
+# provided by xorg-sgml-doctools, if installed.
+AC_DEFUN([XORG_CHECK_SGML_DOCTOOLS],[
+AC_MSG_CHECKING([for X.Org SGML entities])
+XORG_SGML_PATH=
+PKG_CHECK_EXISTS([xorg-sgml-doctools],
+ [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`],
+ [if test x"$cross_compiling" != x"yes" ; then
+ AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent],
+ [XORG_SGML_PATH=$prefix/share/sgml])
+ fi])
+
+if test "x$XORG_SGML_PATH" != "x" ; then
+ AC_MSG_RESULT([$XORG_SGML_PATH])
+else
+ AC_MSG_RESULT([no])
+fi
+
+AC_SUBST(XORG_SGML_PATH)
+]) # XORG_CHECK_SGML_DOCTOOLS
+
# XORG_CHECK_LINUXDOC
# -------------------
# Minimum version: 1.0.0
@@ -7829,23 +7845,14 @@ AC_SUBST([ADMIN_MAN_DIR])
# Whether or not the necessary tools and files are found can be checked
# with the AM_CONDITIONAL "BUILD_LINUXDOC"
AC_DEFUN([XORG_CHECK_LINUXDOC],[
-if test x$XORG_SGML_PATH = x ; then
- XORG_SGML_PATH=$prefix/share/sgml
-fi
-HAVE_DEFS_ENT=
-
-if test x"$cross_compiling" = x"yes" ; then
- HAVE_DEFS_ENT=no
-else
- AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
-fi
+AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
AC_PATH_PROG(LINUXDOC, linuxdoc)
AC_PATH_PROG(PS2PDF, ps2pdf)
-AC_MSG_CHECKING([Whether to build documentation])
+AC_MSG_CHECKING([whether to build documentation])
-if test x$HAVE_DEFS_ENT != x && test x$LINUXDOC != x ; then
+if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then
BUILDDOC=yes
else
BUILDDOC=no
@@ -7855,7 +7862,7 @@ AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes])
AC_MSG_RESULT([$BUILDDOC])
-AC_MSG_CHECKING([Whether to build pdf documentation])
+AC_MSG_CHECKING([whether to build pdf documentation])
if test x$PS2PDF != x && test x$BUILD_PDFDOC != xno; then
BUILDPDFDOC=yes
@@ -7887,48 +7894,44 @@ AC_SUBST(MAKE_HTML)
# indicates whether the necessary tools and files are found and, if set,
# $(MAKE_XXX) blah.sgml will produce blah.xxx.
AC_DEFUN([XORG_CHECK_DOCBOOK],[
-if test x$XORG_SGML_PATH = x ; then
- XORG_SGML_PATH=$prefix/share/sgml
-fi
-HAVE_DEFS_ENT=
+AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
+
BUILDTXTDOC=no
BUILDPDFDOC=no
BUILDPSDOC=no
BUILDHTMLDOC=no
-AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
-
AC_PATH_PROG(DOCBOOKPS, docbook2ps)
AC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
AC_PATH_PROG(DOCBOOKHTML, docbook2html)
AC_PATH_PROG(DOCBOOKTXT, docbook2txt)
-AC_MSG_CHECKING([Whether to build text documentation])
-if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKTXT != x &&
+AC_MSG_CHECKING([whether to build text documentation])
+if test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x &&
test x$BUILD_TXTDOC != xno; then
BUILDTXTDOC=yes
fi
AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes])
AC_MSG_RESULT([$BUILDTXTDOC])
-AC_MSG_CHECKING([Whether to build PDF documentation])
-if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPDF != x &&
+AC_MSG_CHECKING([whether to build PDF documentation])
+if test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x &&
test x$BUILD_PDFDOC != xno; then
BUILDPDFDOC=yes
fi
AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
AC_MSG_RESULT([$BUILDPDFDOC])
-AC_MSG_CHECKING([Whether to build PostScript documentation])
-if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPS != x &&
+AC_MSG_CHECKING([whether to build PostScript documentation])
+if test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x &&
test x$BUILD_PSDOC != xno; then
BUILDPSDOC=yes
fi
AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes])
AC_MSG_RESULT([$BUILDPSDOC])
-AC_MSG_CHECKING([Whether to build HTML documentation])
-if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKHTML != x &&
+AC_MSG_CHECKING([whether to build HTML documentation])
+if test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x &&
test x$BUILD_HTMLDOC != xno; then
BUILDHTMLDOC=yes
fi
@@ -7946,6 +7949,490 @@ AC_SUBST(MAKE_PDF)
AC_SUBST(MAKE_HTML)
]) # XORG_CHECK_DOCBOOK
+# XORG_WITH_XMLTO([MIN-VERSION])
+# ----------------
+# Minimum version: 1.5.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-xmlto option, it allows maximum flexibilty in making decisions
+# as whether or not to use the xmlto package.
+#
+# Interface to module:
+# HAVE_XMLTO: used in makefiles to conditionally generate documentation
+# XMLTO: returns the path of the xmlto program found
+# returns the path set by the user in the environment
+# --with-xmlto: 'yes' user instructs the module to use xmlto
+# 'no' user instructs the module not to use xmlto
+#
+# If the user sets the value of XMLTO, AC_PATH_PROG skips testing the path.
+#
+AC_DEFUN([XORG_WITH_XMLTO],[
+AC_ARG_VAR([XMLTO], [Path to xmlto command])
+AC_ARG_WITH(xmlto,
+ AS_HELP_STRING([--with-xmlto],
+ [Use xmlto to regenerate documentation (default: yes, if installed)]),
+ [use_xmlto=$withval], [use_xmlto=auto])
+
+if test "x$use_xmlto" = x"auto"; then
+ AC_PATH_PROG([XMLTO], [xmlto])
+ if test "x$XMLTO" = "x"; then
+ AC_MSG_WARN([xmlto not found - documentation targets will be skipped])
+ have_xmlto=no
+ else
+ have_xmlto=yes
+ fi
+elif test "x$use_xmlto" = x"yes" ; then
+ AC_PATH_PROG([XMLTO], [xmlto])
+ if test "x$XMLTO" = "x"; then
+ AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH])
+ fi
+ have_xmlto=yes
+elif test "x$use_xmlto" = x"no" ; then
+ if test "x$XMLTO" != "x"; then
+ AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified])
+ fi
+ have_xmlto=no
+else
+ AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no'])
+fi
+m4_ifval([$1],
+[if test "$have_xmlto" = yes; then
+ # scrape the xmlto version
+ AC_MSG_CHECKING([the xmlto version])
+ xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3`
+ AC_MSG_RESULT([$xmlto_version])
+ AS_VERSION_COMPARE([$xmlto_version], [$1],
+ [if test "x$use_xmlto" = xauto; then
+ AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed])
+ have_xmlto=no
+ else
+ AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed])
+ fi])
+fi])
+AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
+]) # XORG_WITH_XMLTO
+
+# XORG_WITH_ASCIIDOC([MIN-VERSION])
+# ----------------
+# Minimum version: 1.5.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-asciidoc option, it allows maximum flexibilty in making decisions
+# as whether or not to use the asciidoc package.
+#
+# Interface to module:
+# HAVE_ASCIIDOC: used in makefiles to conditionally generate documentation
+# ASCIIDOC: returns the path of the asciidoc program found
+# returns the path set by the user in the environment
+# --with-asciidoc: 'yes' user instructs the module to use asciidoc
+# 'no' user instructs the module not to use asciidoc
+#
+# If the user sets the value of ASCIIDOC, AC_PATH_PROG skips testing the path.
+#
+AC_DEFUN([XORG_WITH_ASCIIDOC],[
+AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command])
+AC_ARG_WITH(asciidoc,
+ AS_HELP_STRING([--with-asciidoc],
+ [Use asciidoc to regenerate documentation (default: yes, if installed)]),
+ [use_asciidoc=$withval], [use_asciidoc=auto])
+
+if test "x$use_asciidoc" = x"auto"; then
+ AC_PATH_PROG([ASCIIDOC], [asciidoc])
+ if test "x$ASCIIDOC" = "x"; then
+ AC_MSG_WARN([asciidoc not found - documentation targets will be skipped])
+ have_asciidoc=no
+ else
+ have_asciidoc=yes
+ fi
+elif test "x$use_asciidoc" = x"yes" ; then
+ AC_PATH_PROG([ASCIIDOC], [asciidoc])
+ if test "x$ASCIIDOC" = "x"; then
+ AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH])
+ fi
+ have_asciidoc=yes
+elif test "x$use_asciidoc" = x"no" ; then
+ if test "x$ASCIIDOC" != "x"; then
+ AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified])
+ fi
+ have_asciidoc=no
+else
+ AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no'])
+fi
+m4_ifval([$1],
+[if test "$have_asciidoc" = yes; then
+ # scrape the asciidoc version
+ AC_MSG_CHECKING([the asciidoc version])
+ asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2`
+ AC_MSG_RESULT([$asciidoc_version])
+ AS_VERSION_COMPARE([$asciidoc_version], [$1],
+ [if test "x$use_asciidoc" = xauto; then
+ AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed])
+ have_asciidoc=no
+ else
+ AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed])
+ fi])
+fi])
+AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
+]) # XORG_WITH_ASCIIDOC
+
+# XORG_WITH_DOXYGEN([MIN-VERSION])
+# --------------------------------
+# Minimum version: 1.5.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-doxygen option, it allows maximum flexibilty in making decisions
+# as whether or not to use the doxygen package.
+#
+# Interface to module:
+# HAVE_DOXYGEN: used in makefiles to conditionally generate documentation
+# DOXYGEN: returns the path of the doxygen program found
+# returns the path set by the user in the environment
+# --with-doxygen: 'yes' user instructs the module to use doxygen
+# 'no' user instructs the module not to use doxygen
+#
+# If the user sets the value of DOXYGEN, AC_PATH_PROG skips testing the path.
+#
+AC_DEFUN([XORG_WITH_DOXYGEN],[
+AC_ARG_VAR([DOXYGEN], [Path to doxygen command])
+AC_ARG_WITH(doxygen,
+ AS_HELP_STRING([--with-doxygen],
+ [Use doxygen to regenerate documentation (default: yes, if installed)]),
+ [use_doxygen=$withval], [use_doxygen=auto])
+
+if test "x$use_doxygen" = x"auto"; then
+ AC_PATH_PROG([DOXYGEN], [doxygen])
+ if test "x$DOXYGEN" = "x"; then
+ AC_MSG_WARN([doxygen not found - documentation targets will be skipped])
+ have_doxygen=no
+ else
+ have_doxygen=yes
+ fi
+elif test "x$use_doxygen" = x"yes" ; then
+ AC_PATH_PROG([DOXYGEN], [doxygen])
+ if test "x$DOXYGEN" = "x"; then
+ AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH])
+ fi
+ have_doxygen=yes
+elif test "x$use_doxygen" = x"no" ; then
+ if test "x$DOXYGEN" != "x"; then
+ AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified])
+ fi
+ have_doxygen=no
+else
+ AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no'])
+fi
+m4_ifval([$1],
+[if test "$have_doxygen" = yes; then
+ # scrape the doxygen version
+ AC_MSG_CHECKING([the doxygen version])
+ doxygen_version=`$DOXYGEN --version 2>/dev/null`
+ AC_MSG_RESULT([$doxygen_version])
+ AS_VERSION_COMPARE([$doxygen_version], [$1],
+ [if test "x$use_doxygen" = xauto; then
+ AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed])
+ have_doxygen=no
+ else
+ AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed])
+ fi])
+fi])
+AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes])
+]) # XORG_WITH_DOXYGEN
+
+# XORG_WITH_GROFF
+# ----------------
+# Minimum version: 1.6.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-groff option, it allows maximum flexibilty in making decisions
+# as whether or not to use the groff package.
+#
+# Interface to module:
+# HAVE_GROFF: used in makefiles to conditionally generate documentation
+# HAVE_GROFF_MM: the memorandum macros (-mm) package
+# HAVE_GROFF_MS: the -ms macros package
+# GROFF: returns the path of the groff program found
+# returns the path set by the user in the environment
+# --with-groff: 'yes' user instructs the module to use groff
+# 'no' user instructs the module not to use groff
+#
+# If the user sets the value of GROFF, AC_PATH_PROG skips testing the path.
+#
+# OS and distros often splits groff in a basic and full package, the former
+# having the groff program and the later having devices, fonts and macros
+# Checking for the groff executable is not enough.
+#
+# If macros are missing, we cannot assume that groff is useless, so we don't
+# unset HAVE_GROFF or GROFF env variables.
+# HAVE_GROFF_?? can never be true while HAVE_GROFF is false.
+#
+AC_DEFUN([XORG_WITH_GROFF],[
+AC_ARG_VAR([GROFF], [Path to groff command])
+AC_ARG_WITH(groff,
+ AS_HELP_STRING([--with-groff],
+ [Use groff to regenerate documentation (default: yes, if installed)]),
+ [use_groff=$withval], [use_groff=auto])
+
+if test "x$use_groff" = x"auto"; then
+ AC_PATH_PROG([GROFF], [groff])
+ if test "x$GROFF" = "x"; then
+ AC_MSG_WARN([groff not found - documentation targets will be skipped])
+ have_groff=no
+ else
+ have_groff=yes
+ fi
+elif test "x$use_groff" = x"yes" ; then
+ AC_PATH_PROG([GROFF], [groff])
+ if test "x$GROFF" = "x"; then
+ AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH])
+ fi
+ have_groff=yes
+elif test "x$use_groff" = x"no" ; then
+ if test "x$GROFF" != "x"; then
+ AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified])
+ fi
+ have_groff=no
+else
+ AC_MSG_ERROR([--with-groff expects 'yes' or 'no'])
+fi
+# We have groff, test for the presence of the macro packages
+if test "x$have_groff" = x"yes"; then
+ AC_MSG_CHECKING([for ${GROFF} -ms macros])
+ if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then
+ groff_ms_works=yes
+ else
+ groff_ms_works=no
+ fi
+ AC_MSG_RESULT([$groff_ms_works])
+ AC_MSG_CHECKING([for ${GROFF} -mm macros])
+ if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then
+ groff_mm_works=yes
+ else
+ groff_mm_works=no
+ fi
+ AC_MSG_RESULT([$groff_mm_works])
+fi
+AM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes])
+AM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes])
+AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes])
+]) # XORG_WITH_GROFF
+
+# XORG_WITH_FOP
+# ----------------
+# Minimum version: 1.6.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-fop option, it allows maximum flexibilty in making decisions
+# as whether or not to use the fop package.
+#
+# Interface to module:
+# HAVE_FOP: used in makefiles to conditionally generate documentation
+# FOP: returns the path of the fop program found
+# returns the path set by the user in the environment
+# --with-fop: 'yes' user instructs the module to use fop
+# 'no' user instructs the module not to use fop
+#
+# If the user sets the value of FOP, AC_PATH_PROG skips testing the path.
+#
+AC_DEFUN([XORG_WITH_FOP],[
+AC_ARG_VAR([FOP], [Path to fop command])
+AC_ARG_WITH(fop,
+ AS_HELP_STRING([--with-fop],
+ [Use fop to regenerate documentation (default: yes, if installed)]),
+ [use_fop=$withval], [use_fop=auto])
+
+if test "x$use_fop" = x"auto"; then
+ AC_PATH_PROG([FOP], [fop])
+ if test "x$FOP" = "x"; then
+ AC_MSG_WARN([fop not found - documentation targets will be skipped])
+ have_fop=no
+ else
+ have_fop=yes
+ fi
+elif test "x$use_fop" = x"yes" ; then
+ AC_PATH_PROG([FOP], [fop])
+ if test "x$FOP" = "x"; then
+ AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH])
+ fi
+ have_fop=yes
+elif test "x$use_fop" = x"no" ; then
+ if test "x$FOP" != "x"; then
+ AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified])
+ fi
+ have_fop=no
+else
+ AC_MSG_ERROR([--with-fop expects 'yes' or 'no'])
+fi
+AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes])
+]) # XORG_WITH_FOP
+
+# XORG_WITH_PS2PDF
+# ----------------
+# Minimum version: 1.6.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a module to test for the
+# presence of the tool and obtain it's path in separate variables. Coupled with
+# the --with-ps2pdf option, it allows maximum flexibilty in making decisions
+# as whether or not to use the ps2pdf package.
+#
+# Interface to module:
+# HAVE_PS2PDF: used in makefiles to conditionally generate documentation
+# PS2PDF: returns the path of the ps2pdf program found
+# returns the path set by the user in the environment
+# --with-ps2pdf: 'yes' user instructs the module to use ps2pdf
+# 'no' user instructs the module not to use ps2pdf
+#
+# If the user sets the value of PS2PDF, AC_PATH_PROG skips testing the path.
+#
+AC_DEFUN([XORG_WITH_PS2PDF],[
+AC_ARG_VAR([PS2PDF], [Path to ps2pdf command])
+AC_ARG_WITH(ps2pdf,
+ AS_HELP_STRING([--with-ps2pdf],
+ [Use ps2pdf to regenerate documentation (default: yes, if installed)]),
+ [use_ps2pdf=$withval], [use_ps2pdf=auto])
+
+if test "x$use_ps2pdf" = x"auto"; then
+ AC_PATH_PROG([PS2PDF], [ps2pdf])
+ if test "x$PS2PDF" = "x"; then
+ AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped])
+ have_ps2pdf=no
+ else
+ have_ps2pdf=yes
+ fi
+elif test "x$use_ps2pdf" = x"yes" ; then
+ AC_PATH_PROG([PS2PDF], [ps2pdf])
+ if test "x$PS2PDF" = "x"; then
+ AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH])
+ fi
+ have_ps2pdf=yes
+elif test "x$use_ps2pdf" = x"no" ; then
+ if test "x$PS2PDF" != "x"; then
+ AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified])
+ fi
+ have_ps2pdf=no
+else
+ AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no'])
+fi
+AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes])
+]) # XORG_WITH_PS2PDF
+
+# XORG_ENABLE_DOCS (enable_docs=yes)
+# ----------------
+# Minimum version: 1.6.0
+#
+# Documentation tools are not always available on all platforms and sometimes
+# not at the appropriate level. This macro enables a builder to skip all
+# documentation targets except traditional man pages.
+# Combined with the specific tool checking macros XORG_WITH_*, it provides
+# maximum flexibilty in controlling documentation building.
+# Refer to:
+# XORG_WITH_XMLTO --with-xmlto
+# XORG_WITH_ASCIIDOC --with-asciidoc
+# XORG_WITH_DOXYGEN --with-doxygen
+# XORG_WITH_FOP --with-fop
+# XORG_WITH_GROFF --with-groff
+# XORG_WITH_PS2PDF --with-ps2pdf
+#
+# Interface to module:
+# ENABLE_DOCS: used in makefiles to conditionally generate documentation
+# --enable-docs: 'yes' user instructs the module to generate docs
+# 'no' user instructs the module not to generate docs
+# parm1: specify the default value, yes or no.
+#
+AC_DEFUN([XORG_ENABLE_DOCS],[
+default=$1
+if test "x$default" = x ; then
+ default="yes"
+fi
+AC_ARG_ENABLE(docs,
+ AS_HELP_STRING([--enable-docs],
+ [Enable building the documentation (default: yes)]),
+ [build_docs=$enableval], [build_docs=$default])
+AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes])
+AC_MSG_CHECKING([whether to build documentation])
+AC_MSG_RESULT([$build_docs])
+]) # XORG_ENABLE_DOCS
+
+# XORG_ENABLE_DEVEL_DOCS (enable_devel_docs=yes)
+# ----------------
+# Minimum version: 1.6.0
+#
+# This macro enables a builder to skip all developer documentation.
+# Combined with the specific tool checking macros XORG_WITH_*, it provides
+# maximum flexibilty in controlling documentation building.
+# Refer to:
+# XORG_WITH_XMLTO --with-xmlto
+# XORG_WITH_ASCIIDOC --with-asciidoc
+# XORG_WITH_DOXYGEN --with-doxygen
+# XORG_WITH_FOP --with-fop
+# XORG_WITH_GROFF --with-groff
+# XORG_WITH_PS2PDF --with-ps2pdf
+#
+# Interface to module:
+# ENABLE_DEVEL_DOCS: used in makefiles to conditionally generate developer docs
+# --enable-devel-docs: 'yes' user instructs the module to generate developer docs
+# 'no' user instructs the module not to generate developer docs
+# parm1: specify the default value, yes or no.
+#
+AC_DEFUN([XORG_ENABLE_DEVEL_DOCS],[
+devel_default=$1
+if test "x$devel_default" = x ; then
+ devel_default="yes"
+fi
+AC_ARG_ENABLE(devel-docs,
+ AS_HELP_STRING([--enable-devel-docs],
+ [Enable building the developer documentation (default: yes)]),
+ [build_devel_docs=$enableval], [build_devel_docs=$devel_default])
+AM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes])
+AC_MSG_CHECKING([whether to build developer documentation])
+AC_MSG_RESULT([$build_devel_docs])
+]) # XORG_ENABLE_DEVEL_DOCS
+
+# XORG_ENABLE_SPECS (enable_specs=yes)
+# ----------------
+# Minimum version: 1.6.0
+#
+# This macro enables a builder to skip all functional specification targets.
+# Combined with the specific tool checking macros XORG_WITH_*, it provides
+# maximum flexibilty in controlling documentation building.
+# Refer to:
+# XORG_WITH_XMLTO --with-xmlto
+# XORG_WITH_ASCIIDOC --with-asciidoc
+# XORG_WITH_DOXYGEN --with-doxygen
+# XORG_WITH_FOP --with-fop
+# XORG_WITH_GROFF --with-groff
+# XORG_WITH_PS2PDF --with-ps2pdf
+#
+# Interface to module:
+# ENABLE_SPECS: used in makefiles to conditionally generate specs
+# --enable-specs: 'yes' user instructs the module to generate specs
+# 'no' user instructs the module not to generate specs
+# parm1: specify the default value, yes or no.
+#
+AC_DEFUN([XORG_ENABLE_SPECS],[
+spec_default=$1
+if test "x$spec_default" = x ; then
+ spec_default="yes"
+fi
+AC_ARG_ENABLE(specs,
+ AS_HELP_STRING([--enable-specs],
+ [Enable building the specs (default: yes)]),
+ [build_specs=$enableval], [build_specs=$spec_default])
+AM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes])
+AC_MSG_CHECKING([whether to build functional specifications])
+AC_MSG_RESULT([$build_specs])
+]) # XORG_ENABLE_SPECS
+
# XORG_CHECK_MALLOC_ZERO
# ----------------------
# Minimum version: 1.0.0
@@ -7955,7 +8442,7 @@ AC_SUBST(MAKE_HTML)
# their AM_CFLAGS (or other appropriate *_CFLAGS) to use them.
AC_DEFUN([XORG_CHECK_MALLOC_ZERO],[
AC_ARG_ENABLE(malloc0returnsnull,
- AC_HELP_STRING([--enable-malloc0returnsnull],
+ AS_HELP_STRING([--enable-malloc0returnsnull],
[malloc(0) returns NULL (default: auto)]),
[MALLOC_ZERO_RETURNS_NULL=$enableval],
[MALLOC_ZERO_RETURNS_NULL=auto])
@@ -7975,7 +8462,8 @@ main() {
exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1);
}],
[MALLOC_ZERO_RETURNS_NULL=yes],
- [MALLOC_ZERO_RETURNS_NULL=no])
+ [MALLOC_ZERO_RETURNS_NULL=no],
+ [MALLOC_ZERO_RETURNS_NULL=yes])
fi
AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL])
@@ -8007,7 +8495,7 @@ AC_SUBST([XTMALLOC_ZERO_CFLAGS])
AC_DEFUN([XORG_WITH_LINT],[
# Allow checking code with lint, sparse, etc.
-AC_ARG_WITH(lint, [AC_HELP_STRING([--with-lint],
+AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint],
[Use a lint-style source code checker (default: disabled)])],
[use_lint=$withval], [use_lint=no])
if test "x$use_lint" = "xyes" ; then
@@ -8048,7 +8536,7 @@ AM_CONDITIONAL(LINT, [test x$LINT != xno])
AC_DEFUN([XORG_LINT_LIBRARY],[
AC_REQUIRE([XORG_WITH_LINT])
# Build lint "library" for more indepth checks of programs calling this library
-AC_ARG_ENABLE(lint-library, [AC_HELP_STRING([--enable-lint-library],
+AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library],
[Create lint library (default: disabled)])],
[make_lint_lib=$enableval], [make_lint_lib=no])
if test "x$make_lint_lib" != "xno" ; then
@@ -8077,10 +8565,10 @@ AC_REQUIRE([AC_PROG_CC])
if test "x$GCC" = xyes ; then
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
--Wbad-function-cast"
- case `gcc -dumpversion` in
+-Wbad-function-cast -Wformat=2"
+ case `$CC -dumpversion` in
3.4.* | 4.*)
- CWARNFLAGS+=" -Wold-style-definition -Wdeclaration-after-statement"
+ CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
;;
esac
else
@@ -8091,6 +8579,69 @@ else
fi
AC_SUBST(CWARNFLAGS)
]) # XORG_CWARNFLAGS
+
+# XORG_STRICT_OPTION
+# -----------------------
+# Minimum version: 1.3.0
+#
+# Add configure option to enable strict compilation
+AC_DEFUN([XORG_STRICT_OPTION], [
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_CC_C99])
+AC_REQUIRE([XORG_CWARNFLAGS])
+
+AC_ARG_ENABLE(strict-compilation,
+ AS_HELP_STRING([--enable-strict-compilation],
+ [Enable all warnings from compiler and make them errors (default: disabled)]),
+ [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
+if test "x$STRICT_COMPILE" = "xyes"; then
+ AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
+ AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
+ if test "x$GCC" = xyes ; then
+ STRICT_CFLAGS="-pedantic -Werror"
+ elif test "x$SUNCC" = "xyes"; then
+ STRICT_CFLAGS="-errwarn"
+ elif test "x$INTELCC" = "xyes"; then
+ STRICT_CFLAGS="-Werror"
+ fi
+fi
+CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
+AC_SUBST([CWARNFLAGS])
+]) # XORG_STRICT_OPTION
+
+# XORG_DEFAULT_OPTIONS
+# --------------------
+# Minimum version: 1.3.0
+#
+# Defines default options for X.Org modules.
+#
+AC_DEFUN([XORG_DEFAULT_OPTIONS], [
+XORG_CWARNFLAGS
+XORG_STRICT_OPTION
+XORG_RELEASE_VERSION
+XORG_CHANGELOG
+XORG_INSTALL
+XORG_MANPAGE_SECTIONS
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
+ [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
+]) # XORG_DEFAULT_OPTIONS
+
+# XORG_INSTALL()
+# ----------------
+# Minimum version: 1.4.0
+#
+# Defines the variable INSTALL_CMD as the command to copy
+# INSTALL from $prefix/share/util-macros.
+#
+AC_DEFUN([XORG_INSTALL], [
+AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
+INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
+mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
+echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
+AC_SUBST([INSTALL_CMD])
+]) # XORG_INSTALL
dnl Copyright 2005 Red Hat, Inc
dnl
dnl Permission to use, copy, modify, distribute, and sell this software and its
@@ -8125,7 +8676,7 @@ dnl
AC_DEFUN([XORG_RELEASE_VERSION],[
AC_ARG_WITH(release-version,
- AC_HELP_STRING([--with-release-version=STRING],
+ AS_HELP_STRING([--with-release-version=STRING],
[Use release version string in package name]),
[RELEASE_VERSION="$withval"],
[RELEASE_VERSION=""])
@@ -8160,14 +8711,13 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
# Defines the variable CHANGELOG_CMD as the command to generate
# ChangeLog from git.
#
-# Arrange that distcleancheck ignores ChangeLog left over by distclean.
#
AC_DEFUN([XORG_CHANGELOG], [
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
-mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
+CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
+|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
echo 'git directory not found: installing possibly empty changelog.' >&2)"
AC_SUBST([CHANGELOG_CMD])
-AC_SUBST([distcleancheck_listfiles], ['find . -type f ! -name ChangeLog -print'])
]) # XORG_CHANGELOG
dnl Copyright 2005 Red Hat, Inc
diff --git a/driver/xf86-input-keyboard/configure b/driver/xf86-input-keyboard/configure
index b88bd033e..7ed1f697d 100644
--- a/driver/xf86-input-keyboard/configure
+++ b/driver/xf86-input-keyboard/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.62 for xf86-input-keyboard 1.3.2.
+# Generated by GNU Autoconf 2.62 for xf86-input-keyboard 1.4.0.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='xf86-input-keyboard'
PACKAGE_TARNAME='xf86-input-keyboard'
-PACKAGE_VERSION='1.3.2'
-PACKAGE_STRING='xf86-input-keyboard 1.3.2'
+PACKAGE_VERSION='1.4.0'
+PACKAGE_STRING='xf86-input-keyboard 1.4.0'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
ac_unique_file="Makefile.am"
@@ -913,6 +913,8 @@ PKG_CONFIG
XORG_CFLAGS
XORG_LIBS
CWARNFLAGS
+CHANGELOG_CMD
+INSTALL_CMD
APP_MAN_SUFFIX
LIB_MAN_SUFFIX
FILE_MAN_SUFFIX
@@ -925,8 +927,7 @@ FILE_MAN_DIR
MISC_MAN_DIR
DRIVER_MAN_DIR
ADMIN_MAN_DIR
-CHANGELOG_CMD
-distcleancheck_listfiles
+AM_DEFAULT_VERBOSITY
LIBOBJS
LTLIBOBJS'
ac_subst_files=''
@@ -942,6 +943,7 @@ enable_libtool_lock
with_pic
with_tags
with_xorg_module_dir
+enable_strict_compilation
with_release_version
'
ac_precious_vars='build_alias
@@ -1514,7 +1516,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xf86-input-keyboard 1.3.2 to adapt to many kinds of systems.
+\`configure' configures xf86-input-keyboard 1.4.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1585,7 +1587,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xf86-input-keyboard 1.3.2:";;
+ short | recursive ) echo "Configuration of xf86-input-keyboard 1.4.0:";;
esac
cat <<\_ACEOF
@@ -1602,6 +1604,9 @@ Optional Features:
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-strict-compilation
+ Enable all warnings from compiler and make them
+ errors (default: disabled)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1700,7 +1705,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xf86-input-keyboard configure 1.3.2
+xf86-input-keyboard configure 1.4.0
generated by GNU Autoconf 2.62
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1714,7 +1719,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xf86-input-keyboard $as_me 1.3.2, which was
+It was created by xf86-input-keyboard $as_me 1.4.0, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0 $@
@@ -2081,30 +2086,17 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Require xorg-macros version 1.2 or newer for XORG_CWARNFLAGS and
-# XORG_CHANGELOG macros
+# Require xorg-macros version 1.3 or newer for XORG_DEFAULT_OPTIONS
+
+
+
+
+
+
+
+
- XORG_MACROS_needed_version=1.2.1
- XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'`
- XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`
- { $as_echo "$as_me:$LINENO: checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}" >&5
-$as_echo_n "checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}... " >&6; }
- XORG_MACROS_version=1.2.1
- XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'`
- XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`
- if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then
- { { $as_echo "$as_me:$LINENO: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&5
-$as_echo "$as_me: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&2;}
- { (exit 1); exit 1; }; }
- fi
- if test $XORG_MACROS_minor -lt $XORG_MACROS_needed_minor ; then
- { { $as_echo "$as_me:$LINENO: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&5
-$as_echo "$as_me: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&2;}
- { (exit 1); exit 1; }; }
- fi
- { $as_echo "$as_me:$LINENO: result: yes, $XORG_MACROS_version" >&5
-$as_echo "yes, $XORG_MACROS_version" >&6; }
@@ -2391,7 +2383,7 @@ fi
# Define the identity of the package.
PACKAGE='xf86-input-keyboard'
- VERSION='1.3.2'
+ VERSION='1.4.0'
cat >>confdefs.h <<_ACEOF
@@ -4456,7 +4448,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 4459 "configure"' > conftest.$ac_ext
+ echo '#line 4451 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7564,11 +7556,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7567: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7559: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7571: \$? = $ac_status" >&5
+ echo "$as_me:7563: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7854,11 +7846,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7857: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7849: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7861: \$? = $ac_status" >&5
+ echo "$as_me:7853: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7958,11 +7950,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7961: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7953: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7965: \$? = $ac_status" >&5
+ echo "$as_me:7957: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10358,7 +10350,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10361 "configure"
+#line 10353 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10458,7 +10450,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10461 "configure"
+#line 10453 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12867,11 +12859,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12870: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12862: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12874: \$? = $ac_status" >&5
+ echo "$as_me:12866: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -12971,11 +12963,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12974: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12966: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12978: \$? = $ac_status" >&5
+ echo "$as_me:12970: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14554,11 +14546,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14557: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14549: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14561: \$? = $ac_status" >&5
+ echo "$as_me:14553: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14658,11 +14650,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14661: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14653: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14665: \$? = $ac_status" >&5
+ echo "$as_me:14657: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16873,11 +16865,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16876: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16868: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16880: \$? = $ac_status" >&5
+ echo "$as_me:16872: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17163,11 +17155,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17166: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17158: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17170: \$? = $ac_status" >&5
+ echo "$as_me:17162: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17267,11 +17259,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17270: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17262: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17274: \$? = $ac_status" >&5
+ echo "$as_me:17266: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -21315,15 +21307,218 @@ $as_echo "yes" >&6; }
fi
sdkdir=$(pkg-config --variable=sdkdir xorg-server)
+ { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+ your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str;
+ int number;
+ float fnumber;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case 's': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case 'd': // int
+ number = va_arg (args_copy, int);
+ break;
+ case 'f': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+}
+
+int
+main ()
+{
+
+ // Check bool.
+ _Bool success = false;
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ test_varargs ("s, d' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+ || dynamic_array[ni.number - 1] != 543);
+
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c99=$ac_arg
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+ x)
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c99"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+
+
+
+
if test "x$GCC" = xyes ; then
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
--Wbad-function-cast"
- case `gcc -dumpversion` in
+-Wbad-function-cast -Wformat=2"
+ case `$CC -dumpversion` in
3.4.* | 4.*)
- CWARNFLAGS+=" -Wold-style-definition -Wdeclaration-after-statement"
+ CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
;;
esac
else
@@ -21392,6 +21587,277 @@ fi
fi
+
+
+
+
+
+# Check whether --enable-strict-compilation was given.
+if test "${enable_strict_compilation+set}" = set; then
+ enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval
+else
+ STRICT_COMPILE=no
+fi
+
+if test "x$STRICT_COMPILE" = "xyes"; then
+ { $as_echo "$as_me:$LINENO: checking whether __SUNPRO_C is declared" >&5
+$as_echo_n "checking whether __SUNPRO_C is declared... " >&6; }
+if test "${ac_cv_have_decl___SUNPRO_C+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef __SUNPRO_C
+ (void) __SUNPRO_C;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___SUNPRO_C=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___SUNPRO_C=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___SUNPRO_C" >&5
+$as_echo "$ac_cv_have_decl___SUNPRO_C" >&6; }
+if test $ac_cv_have_decl___SUNPRO_C = yes; then
+ SUNCC="yes"
+else
+ SUNCC="no"
+fi
+
+ { $as_echo "$as_me:$LINENO: checking whether __INTEL_COMPILER is declared" >&5
+$as_echo_n "checking whether __INTEL_COMPILER is declared... " >&6; }
+if test "${ac_cv_have_decl___INTEL_COMPILER+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef __INTEL_COMPILER
+ (void) __INTEL_COMPILER;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___INTEL_COMPILER=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___INTEL_COMPILER=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___INTEL_COMPILER" >&5
+$as_echo "$ac_cv_have_decl___INTEL_COMPILER" >&6; }
+if test $ac_cv_have_decl___INTEL_COMPILER = yes; then
+ INTELCC="yes"
+else
+ INTELCC="no"
+fi
+
+ if test "x$GCC" = xyes ; then
+ STRICT_CFLAGS="-pedantic -Werror"
+ elif test "x$SUNCC" = "xyes"; then
+ STRICT_CFLAGS="-errwarn"
+ elif test "x$INTELCC" = "xyes"; then
+ STRICT_CFLAGS="-Werror"
+ fi
+fi
+CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
+
+
+
+
+# Check whether --with-release-version was given.
+if test "${with_release_version+set}" = set; then
+ withval=$with_release_version; RELEASE_VERSION="$withval"
+else
+ RELEASE_VERSION=""
+fi
+
+ if test "x$RELEASE_VERSION" != "x"; then
+ PACKAGE="$PACKAGE-$RELEASE_VERSION"
+ PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION"
+ { $as_echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5
+$as_echo "$as_me: Building with package name set to $PACKAGE" >&6;}
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1`
+_ACEOF
+
+ PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1`
+ if test "x$PVM" = "x"; then
+ PVM="0"
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_MINOR $PVM
+_ACEOF
+
+ PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1`
+ if test "x$PVP" = "x"; then
+ PVP="0"
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_PATCHLEVEL $PVP
+_ACEOF
+
+
+
+CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
+|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
+echo 'git directory not found: installing possibly empty changelog.' >&2)"
+
+
+
+
+macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
+INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
+mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
+echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
+
+
+
+
+
+if test x$APP_MAN_SUFFIX = x ; then
+ APP_MAN_SUFFIX=1
+fi
+if test x$APP_MAN_DIR = x ; then
+ APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
+fi
+
+if test x$LIB_MAN_SUFFIX = x ; then
+ LIB_MAN_SUFFIX=3
+fi
+if test x$LIB_MAN_DIR = x ; then
+ LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
+fi
+
+if test x$FILE_MAN_SUFFIX = x ; then
+ case $host_os in
+ solaris*) FILE_MAN_SUFFIX=4 ;;
+ *) FILE_MAN_SUFFIX=5 ;;
+ esac
+fi
+if test x$FILE_MAN_DIR = x ; then
+ FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
+fi
+
+if test x$MISC_MAN_SUFFIX = x ; then
+ case $host_os in
+ solaris*) MISC_MAN_SUFFIX=5 ;;
+ *) MISC_MAN_SUFFIX=7 ;;
+ esac
+fi
+if test x$MISC_MAN_DIR = x ; then
+ MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
+fi
+
+if test x$DRIVER_MAN_SUFFIX = x ; then
+ case $host_os in
+ solaris*) DRIVER_MAN_SUFFIX=7 ;;
+ *) DRIVER_MAN_SUFFIX=4 ;;
+ esac
+fi
+if test x$DRIVER_MAN_DIR = x ; then
+ DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
+fi
+
+if test x$ADMIN_MAN_SUFFIX = x ; then
+ case $host_os in
+ solaris*) ADMIN_MAN_SUFFIX=1m ;;
+ *) ADMIN_MAN_SUFFIX=8 ;;
+ esac
+fi
+if test x$ADMIN_MAN_DIR = x ; then
+ ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+AM_DEFAULT_VERBOSITY=1
+
+
XORG_CFLAGS="$CWARNFLAGS $XORG_CFLAGS"
@@ -21577,125 +22043,6 @@ _ACEOF
fi
-
-
-
-if test x$APP_MAN_SUFFIX = x ; then
- APP_MAN_SUFFIX=1
-fi
-if test x$APP_MAN_DIR = x ; then
- APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
-fi
-
-if test x$LIB_MAN_SUFFIX = x ; then
- LIB_MAN_SUFFIX=3
-fi
-if test x$LIB_MAN_DIR = x ; then
- LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
-fi
-
-if test x$FILE_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) FILE_MAN_SUFFIX=4 ;;
- *) FILE_MAN_SUFFIX=5 ;;
- esac
-fi
-if test x$FILE_MAN_DIR = x ; then
- FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
-fi
-
-if test x$MISC_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) MISC_MAN_SUFFIX=5 ;;
- *) MISC_MAN_SUFFIX=7 ;;
- esac
-fi
-if test x$MISC_MAN_DIR = x ; then
- MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
-fi
-
-if test x$DRIVER_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) DRIVER_MAN_SUFFIX=7 ;;
- *) DRIVER_MAN_SUFFIX=4 ;;
- esac
-fi
-if test x$DRIVER_MAN_DIR = x ; then
- DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
-fi
-
-if test x$ADMIN_MAN_SUFFIX = x ; then
- case $host_os in
- solaris*) ADMIN_MAN_SUFFIX=1m ;;
- *) ADMIN_MAN_SUFFIX=8 ;;
- esac
-fi
-if test x$ADMIN_MAN_DIR = x ; then
- ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-release-version was given.
-if test "${with_release_version+set}" = set; then
- withval=$with_release_version; RELEASE_VERSION="$withval"
-else
- RELEASE_VERSION=""
-fi
-
- if test "x$RELEASE_VERSION" != "x"; then
- PACKAGE="$PACKAGE-$RELEASE_VERSION"
- PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION"
- { $as_echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5
-$as_echo "$as_me: Building with package name set to $PACKAGE" >&6;}
- fi
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1`
-_ACEOF
-
- PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1`
- if test "x$PVM" = "x"; then
- PVM="0"
- fi
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION_MINOR $PVM
-_ACEOF
-
- PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1`
- if test "x$PVP" = "x"; then
- PVP="0"
- fi
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION_PATCHLEVEL $PVP
-_ACEOF
-
-
-
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
-mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
-echo 'git directory not found: installing possibly empty changelog.' >&2)"
-
-distcleancheck_listfiles='find . -type f ! -name ChangeLog -print'
-
-
-
ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile"
cat >confcache <<\_ACEOF
@@ -22187,7 +22534,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xf86-input-keyboard $as_me 1.3.2, which was
+This file was extended by xf86-input-keyboard $as_me 1.4.0, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -22240,7 +22587,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-xf86-input-keyboard config.status 1.3.2
+xf86-input-keyboard config.status 1.4.0
configured by $0, generated by GNU Autoconf 2.62,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/driver/xf86-input-keyboard/configure.ac b/driver/xf86-input-keyboard/configure.ac
index aab639c83..c26e4022e 100644
--- a/driver/xf86-input-keyboard/configure.ac
+++ b/driver/xf86-input-keyboard/configure.ac
@@ -22,14 +22,13 @@
AC_PREREQ(2.57)
AC_INIT([xf86-input-keyboard],
- 1.3.2,
+ 1.4.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-input-keyboard)
-# Require xorg-macros version 1.2 or newer for XORG_CWARNFLAGS and
-# XORG_CHANGELOG macros
-m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2.1 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.2.1)
+# Require xorg-macros version 1.3 or newer for XORG_DEFAULT_OPTIONS
+m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.3)
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_AUX_DIR(.)
@@ -112,7 +111,7 @@ XORG_DRIVER_CHECK_EXT(XKB, kbproto)
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.2.99.0] xproto $REQUIRED_MODULES)
sdkdir=$(pkg-config --variable=sdkdir xorg-server)
-XORG_CWARNFLAGS
+XORG_DEFAULT_OPTIONS
XORG_CFLAGS="$CWARNFLAGS $XORG_CFLAGS"
AC_SUBST([XORG_CFLAGS])
@@ -121,8 +120,4 @@ AC_SUBST([XORG_CFLAGS])
# Checks for header files.
AC_HEADER_STDC
-XORG_MANPAGE_SECTIONS
-XORG_RELEASE_VERSION
-XORG_CHANGELOG
-
AC_OUTPUT([Makefile src/Makefile man/Makefile])
diff --git a/driver/xf86-input-keyboard/man/Makefile.in b/driver/xf86-input-keyboard/man/Makefile.in
index 016a3f426..3cec76254 100644
--- a/driver/xf86-input-keyboard/man/Makefile.in
+++ b/driver/xf86-input-keyboard/man/Makefile.in
@@ -89,6 +89,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
@@ -129,6 +130,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@
HURD_FALSE = @HURD_FALSE@
HURD_TRUE = @HURD_TRUE@
+INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -191,7 +193,6 @@ build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
-distcleancheck_listfiles = @distcleancheck_listfiles@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
diff --git a/driver/xf86-input-keyboard/man/kbd.man b/driver/xf86-input-keyboard/man/kbd.man
index 9971b91c7..564430c32 100644
--- a/driver/xf86-input-keyboard/man/kbd.man
+++ b/driver/xf86-input-keyboard/man/kbd.man
@@ -27,6 +27,11 @@ The
driver functions as a keyboard input device, and may be used as the
X server's core keyboard.
.SH CONFIGURATION DETAILS
+.PP
+Depending on the X server version in use, input device options may be set
+in either a __xconfigfile__ file, or in the configuration files read by the
+Hardware Abstraction Layer (HAL) daemon, hald(1).
+.PP
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
details and for options that can be used with all input drivers. This
section only covers configuration details specific to this driver.
@@ -50,14 +55,6 @@ Standard, Xqueue.
Not all protocols are supported on all platforms. Default: "Standard".
.RE
.TP 7
-.BI "Option \*qAutoRepeat\*q \*q" "delay rate" \*q
-sets the auto repeat behaviour for the keyboard. This is not implemented
-on all platforms.
-.I delay
-is the time in milliseconds before a key starts repeating.
-.I rate
-is the number of times a key repeats per second. Default: "500 30".
-.TP 7
.BI "Option \*qXLeds\*q \*q" ledlist \*q
makes the keyboard LEDs specified in
.I ledlist
@@ -86,7 +83,7 @@ but "pc98" for the Japanese PC-98 platforms.
.BI "Option \*qXkbLayout\*q \*q" layoutname \*q
specifies the XKB keyboard layout name. This is usually the country or
language type of the keyboard. Default: "us" for most platforms, but
-"nec/jp" for the Japanese PC-98 platforms.
+"jp" for the Japanese PC-98 platforms.
.TP 7
.BI "Option \*qXkbVariant\*q \*q" variants \*q
specifies the XKB keyboard variant components. These can be used to
@@ -136,4 +133,6 @@ EndSection
.fi
.SH "SEE ALSO"
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__),
-xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__).
+Xserver(__appmansuffix__), X(__miscmansuffix__).
+
+hal(__miscmansuffix__), hald(__adminmansuffix__), fdi(__filemansuffix__).
diff --git a/driver/xf86-input-keyboard/src/Makefile.in b/driver/xf86-input-keyboard/src/Makefile.in
index f38d49423..fb6e53fd5 100644
--- a/driver/xf86-input-keyboard/src/Makefile.in
+++ b/driver/xf86-input-keyboard/src/Makefile.in
@@ -119,6 +119,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
@@ -159,6 +160,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@
HURD_FALSE = @HURD_FALSE@
HURD_TRUE = @HURD_TRUE@
+INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -221,7 +223,6 @@ build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
-distcleancheck_listfiles = @distcleancheck_listfiles@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
diff --git a/driver/xf86-input-keyboard/src/bsd_kbd.c b/driver/xf86-input-keyboard/src/bsd_kbd.c
index 4f2ace159..b981e1289 100644
--- a/driver/xf86-input-keyboard/src/bsd_kbd.c
+++ b/driver/xf86-input-keyboard/src/bsd_kbd.c
@@ -328,51 +328,6 @@ SoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
}
}
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static
-Bool SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
-#ifdef VT_ACTIVATE
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- return TRUE;
- }
-#endif
- case KEY_F11:
- case KEY_F12:
-#ifdef VT_ACTIVATE
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- return TRUE;
- }
-#endif
- }
- }
- }
-
- return FALSE;
-}
-
static void
stdReadInput(InputInfoPtr pInfo)
{
@@ -594,10 +549,8 @@ xf86OSKbdPreInit(InputInfoPtr pInfo)
pKbd->GetLeds = GetKbdLeds;
pKbd->SetKbdRepeat = SetKbdRepeat;
pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = NULL;
pKbd->OpenKeyboard = OpenKeyboard;
pKbd->vtSwitchSupported = FALSE;
diff --git a/driver/xf86-input-keyboard/src/hurd_kbd.c b/driver/xf86-input-keyboard/src/hurd_kbd.c
index 77f84cecb..ef339b560 100644
--- a/driver/xf86-input-keyboard/src/hurd_kbd.c
+++ b/driver/xf86-input-keyboard/src/hurd_kbd.c
@@ -164,9 +164,7 @@ xf86OSKbdPreInit(InputInfoPtr pInfo)
pKbd->GetLeds = GetKbdLeds;
pKbd->SetKbdRepeat = SetKbdRepeat;
pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = NULL;
pKbd->RemapScanCode = ATScancode;
- pKbd->GetSpecialKey = NULL;
pKbd->OpenKeyboard = OpenKeyboard;
pKbd->vtSwitchSupported = FALSE;
pKbd->CustomKeycodes = FALSE;
diff --git a/driver/xf86-input-keyboard/src/kbd.c b/driver/xf86-input-keyboard/src/kbd.c
index da164801b..c6f119291 100644
--- a/driver/xf86-input-keyboard/src/kbd.c
+++ b/driver/xf86-input-keyboard/src/kbd.c
@@ -27,28 +27,19 @@
#include "atKeynames.h"
#include "xf86Privstr.h"
-#ifdef XINPUT
#include <X11/extensions/XI.h>
#include <X11/extensions/XIproto.h>
#include "extnsionst.h"
#include "extinit.h"
-#else
#include "inputstr.h"
-#endif
#include "xf86Xinput.h"
#include "xf86_OSproc.h"
#include "xf86OSKbd.h"
#include "compiler.h"
-#ifdef XKB
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-#include <X11/extensions/XKBsrv.h>
-#endif
-
-extern int XkbDfltRepeatDelay;
-extern int XkbDfltRepeatInterval;
+#include "xkbstr.h"
+#include "xkbsrv.h"
#define CAPSFLAG 1
#define NUMFLAG 2
@@ -56,11 +47,11 @@ extern int XkbDfltRepeatInterval;
#define MODEFLAG 8
#define COMPOSEFLAG 16
/* Used to know when the first DEVICE_ON after a DEVICE_INIT is called */
-#define INITFLAG (1 << 31)
+#define INITFLAG (1U << 31)
static InputInfoPtr KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags);
static int KbdProc(DeviceIntPtr device, int what);
-static int KbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl);
+static void KbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl);
static void KbdBell(int percent, DeviceIntPtr dev, pointer ctrl, int unused);
static void PostKbdEvent(InputInfoPtr pInfo, unsigned int key, Bool down);
@@ -96,19 +87,11 @@ typedef enum {
OPTION_PROTOCOL,
OPTION_AUTOREPEAT,
OPTION_XLEDS,
- OPTION_XKB_DISABLE,
- OPTION_XKB_KEYMAP,
- OPTION_XKB_KEYCODES,
- OPTION_XKB_TYPES,
- OPTION_XKB_COMPAT,
- OPTION_XKB_SYMBOLS,
- OPTION_XKB_GEOMETRY,
OPTION_XKB_RULES,
OPTION_XKB_MODEL,
OPTION_XKB_LAYOUT,
OPTION_XKB_VARIANT,
OPTION_XKB_OPTIONS,
- OPTION_PANIX106,
OPTION_CUSTOM_KEYCODES
} KeyboardOpts;
@@ -121,19 +104,11 @@ static const OptionInfoRec KeyboardOptions[] = {
{ OPTION_PROTOCOL, "Protocol", OPTV_STRING, {0}, FALSE },
{ OPTION_AUTOREPEAT, "AutoRepeat", OPTV_STRING, {0}, FALSE },
{ OPTION_XLEDS, "XLeds", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_DISABLE, "XkbDisable", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_XKB_KEYMAP, "XkbKeymap", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_KEYCODES, "XkbKeycodes", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_TYPES, "XkbTypes", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_COMPAT, "XkbCompat", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_SYMBOLS, "XkbSymbols", OPTV_STRING, {0}, FALSE },
- { OPTION_XKB_GEOMETRY, "XkbGeometry", OPTV_STRING, {0}, FALSE },
{ OPTION_XKB_RULES, "XkbRules", OPTV_STRING, {0}, FALSE },
{ OPTION_XKB_MODEL, "XkbModel", OPTV_STRING, {0}, FALSE },
{ OPTION_XKB_LAYOUT, "XkbLayout", OPTV_STRING, {0}, FALSE },
{ OPTION_XKB_VARIANT, "XkbVariant", OPTV_STRING, {0}, FALSE },
{ OPTION_XKB_OPTIONS, "XkbOptions", OPTV_STRING, {0}, FALSE },
- { OPTION_PANIX106, "Panix106", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_CUSTOM_KEYCODES, "CustomKeycodes", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -145,15 +120,12 @@ static const char *kbdDefaults[] = {
"Protocol", "standard",
#endif
"AutoRepeat", "500 30",
- "XkbRules", __XKBDEFRULES__,
+ "XkbRules", "xorg",
"XkbModel", "pc105",
- "Panix106", "off",
"CustomKeycodes", "off",
NULL
};
-static const char *kbdLayout = "us";
-
static const char *kbd98Defaults[] = {
#ifdef XQUEUE
"Protocol", "Xqueue",
@@ -163,35 +135,17 @@ static const char *kbd98Defaults[] = {
"AutoRepeat", "500 30",
"XkbRules", "xfree98",
"XkbModel", "pc98",
- "XkbLayout", "nec/jp",
- "Panix106", "off",
+ "XkbLayout", "jp",
"CustomKeycodes", "off",
NULL
};
-const char *xkbSymbols[] = {
- "XkbDfltRepeatDelay",
- "XkbDfltRepeatInterval",
- NULL,
-};
-
-#ifdef XKB
static char *xkb_rules;
static char *xkb_model;
static char *xkb_layout;
static char *xkb_variant;
static char *xkb_options;
-static XkbComponentNamesRec xkbnames;
-#endif /* XKB */
-
-/*ARGSUSED*/
-static const OptionInfoRec *
-KeyboardAvailableOptions(void *unused)
-{
- return (KeyboardOptions);
-}
-
static void
SetXkbOption(InputInfoPtr pInfo, char *name, char **option)
{
@@ -208,39 +162,6 @@ SetXkbOption(InputInfoPtr pInfo, char *name, char **option)
}
}
-
-#define ModifierIsSet(k) ((modifiers & (k)) == (k))
-
-static Bool
-CommonSpecialKey(int key, Bool down, int modifiers)
-{
- if ((!ModifierIsSet(ShiftMask)) &&
- (((ModifierIsSet(ControlMask | AltMask)) ||
- (ModifierIsSet(ControlMask | AltLangMask))))) {
- switch (key) {
-
- case KEY_BackSpace:
- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
- break;
-
- /*
- * The idea here is to pass the scancode down to a list of
- * registered routines. There should be some standard conventions
- * for processing certain keys.
- */
- case KEY_KP_Minus: /* Keypad - */
- if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
- break;
-
- case KEY_KP_Plus: /* Keypad + */
- if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
- break;
- }
- }
- return FALSE;
-}
-
-
static InputInfoPtr
KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
{
@@ -270,7 +191,7 @@ KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
pInfo->fd = -1;
pInfo->dev = NULL;
pInfo->private_flags = 0;
- pInfo->always_core_feedback = 0;
+ pInfo->always_core_feedback = NULL;
pInfo->conf_idev = dev;
if (!xf86IsPc98())
@@ -285,8 +206,6 @@ KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
pInfo->private = pKbd;
pKbd->PostEvent = PostKbdEvent;
- xf86LoaderReqSymLists(xkbSymbols, NULL);
-
if (!xf86OSKbdPreInit(pInfo))
return pInfo;
@@ -294,25 +213,6 @@ KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
return pInfo;
}
- if (xf86findOption(pInfo->options, "XkbLayout") == NULL) {
- xf86Msg(X_INFO, "%s: adding default layout %s\n",
- pInfo->name, kbdLayout);
- xf86addNewOption(pInfo->options, "XkbLayout", kbdLayout);
- }
-
- if ((s = xf86SetStrOption(pInfo->options, "AutoRepeat", NULL))) {
- int delay, rate;
- if (sscanf(s, "%d %d", &delay, &rate) != 2) {
- xf86Msg(X_ERROR, "\"%s\" is not a valid AutoRepeat value", s);
- } else {
- pKbd->delay = delay;
- XkbDfltRepeatDelay = delay;
- pKbd->rate = rate;
- XkbDfltRepeatInterval = 1000/rate;
- }
- xfree(s);
- }
-
if ((s = xf86SetStrOption(pInfo->options, "XLeds", NULL))) {
char *l, *end;
unsigned int i;
@@ -329,49 +229,11 @@ KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
xfree(s);
}
-#ifdef XKB
-
-/* XkbDisable must be a server flag but for compatibility we check it here */
-
- if (xf86FindOption(pInfo->options, "XkbDisable"))
- xf86Msg(X_WARNING,
- "%s: XKB can't be disabled here. Use \"ServerFlags\" section.\n",
- pInfo->name);
-
- pKbd->noXkb = noXkbExtension;
- if (pKbd->noXkb) {
- xf86Msg(X_CONFIG, "XKB: disabled\n");
- } else {
- SetXkbOption(pInfo, "XkbKeymap", &xkbnames.keymap);
- if (xkbnames.keymap) {
- xf86Msg(X_CONFIG, "%s: XkbKeymap overrides all other XKB settings\n",
- pInfo->name);
- } else {
- SetXkbOption(pInfo, "XkbRules", &xkb_rules);
- SetXkbOption(pInfo, "XkbModel", &xkb_model);
- SetXkbOption(pInfo, "XkbLayout", &xkb_layout);
- SetXkbOption(pInfo, "XkbVariant", &xkb_variant);
- SetXkbOption(pInfo, "XkbOptions", &xkb_options);
-
- SetXkbOption(pInfo, "XkbKeycodes", &xkbnames.keycodes);
- SetXkbOption(pInfo, "XkbTypes", &xkbnames.types);
- SetXkbOption(pInfo, "XkbCompat", &xkbnames.compat);
- SetXkbOption(pInfo, "XkbSymbols", &xkbnames.symbols);
- SetXkbOption(pInfo, "XkbGeometry", &xkbnames.geometry);
- }
- }
-
- if ((xkb_model && !strcmp(xkb_model, "sun")) ||
- (xkb_rules && !strcmp(xkb_rules, "sun")))
- pKbd->sunKbd = TRUE;
-#endif
-
-#if defined(SVR4) && defined(i386)
- if ((pKbd->Panix106 =
- xf86SetBoolOption(pInfo->options, "Panix106", FALSE))) {
- xf86Msg(X_CONFIG, "%s: PANIX106: enabled\n", pInfo->name);
- }
-#endif
+ SetXkbOption(pInfo, "XkbRules", &xkb_rules);
+ SetXkbOption(pInfo, "XkbModel", &xkb_model);
+ SetXkbOption(pInfo, "XkbLayout", &xkb_layout);
+ SetXkbOption(pInfo, "XkbVariant", &xkb_variant);
+ SetXkbOption(pInfo, "XkbOptions", &xkb_options);
pKbd->CustomKeycodes = FALSE;
from = X_DEFAULT;
@@ -402,7 +264,7 @@ static void
UpdateLeds(InputInfoPtr pInfo)
{
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int leds = 0;
+ unsigned long leds = 0;
if (pKbd->keyLeds & CAPSFLAG) leds |= XLED1;
if (pKbd->keyLeds & NUMFLAG) leds |= XLED2;
@@ -414,10 +276,10 @@ UpdateLeds(InputInfoPtr pInfo)
pKbd->SetLeds(pInfo, pKbd->leds);
}
-static int
+static void
KbdCtrl( DeviceIntPtr device, KeybdCtrl *ctrl)
{
- int leds;
+ unsigned long leds;
InputInfoPtr pInfo = (InputInfoPtr) device->public.devicePrivate;
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
@@ -442,25 +304,13 @@ KbdCtrl( DeviceIntPtr device, KeybdCtrl *ctrl)
pKbd->keyLeds &= ~COMPOSEFLAG;
}
leds = ctrl->leds & ~(XCAPS | XNUM | XSCR); /* ??? */
-#ifdef XKB
- if (pKbd->noXkb) {
-#endif
- pKbd->leds = (leds & pKbd->xledsMask) | (pKbd->leds & ~pKbd->xledsMask);
-#ifdef XKB
- } else {
- pKbd->leds = leds;
- }
-#endif
+ pKbd->leds = leds;
pKbd->SetLeds(pInfo, pKbd->leds);
- pKbd->autoRepeat = ctrl->autoRepeat;
-
- return (Success);
}
static void
InitKBD(InputInfoPtr pInfo, Bool init)
{
- char rad;
xEvent kevent;
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 1
@@ -513,16 +363,8 @@ InitKBD(InputInfoPtr pInfo, Bool init)
pKbd->keyLeds = pKbd->GetLeds(pInfo);
UpdateLeds(pInfo);
pKbd->keyLeds |= INITFLAG;
- if( pKbd->delay <= 375) rad = 0x00;
- else if (pKbd->delay <= 625) rad = 0x20;
- else if (pKbd->delay <= 875) rad = 0x40;
- else rad = 0x60;
- if (pKbd->rate <= 2) rad |= 0x1F;
- else if (pKbd->rate >= 30) rad |= 0x00;
- else rad |= ((58 / pKbd->rate) - 2);
- pKbd->SetKbdRepeat(pInfo, rad);
} else {
- int leds = pKbd->keyLeds;
+ unsigned long leds = pKbd->keyLeds;
pKbd->keyLeds = pKbd->GetLeds(pInfo);
UpdateLeds(pInfo);
@@ -551,37 +393,44 @@ KbdProc(DeviceIntPtr device, int what)
switch (what) {
case DEVICE_INIT:
- ret = pKbd->KbdInit(pInfo, what);
- if (ret != Success)
- return ret;
-
- pKbd->KbdGetMapping(pInfo, &keySyms, modMap);
-
- device->public.on = FALSE;
-#ifdef XKB
- if (pKbd->noXkb) {
-#endif
- InitKeyboardDeviceStruct((DevicePtr) device,
- &keySyms,
- modMap,
- KbdBell,
- (KbdCtrlProcPtr)KbdCtrl);
-#ifdef XKB
- } else {
- if (xkbnames.keymap)
- xkb_rules = NULL;
- XkbSetRulesDflts(xkb_rules, xkb_model, xkb_layout,
- xkb_variant, xkb_options);
- XkbInitKeyboardDeviceStruct(device,
- &xkbnames,
- &keySyms,
- modMap,
- KbdBell,
- (KbdCtrlProcPtr)KbdCtrl);
- }
-#endif
- InitKBD(pInfo, TRUE);
- break;
+ ret = pKbd->KbdInit(pInfo, what);
+ if (ret != Success)
+ return ret;
+
+ pKbd->KbdGetMapping(pInfo, &keySyms, modMap);
+
+ device->public.on = FALSE;
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 5
+ {
+ XkbRMLVOSet rmlvo;
+ rmlvo.rules = xkb_rules;
+ rmlvo.model = xkb_model;
+ rmlvo.layout = xkb_layout;
+ rmlvo.variant = xkb_variant;
+ rmlvo.options = xkb_options;
+
+ if (!InitKeyboardDeviceStruct(device, &rmlvo, KbdBell, KbdCtrl))
+ {
+ xf86Msg(X_ERROR, "%s: Keyboard initialization failed. This "
+ "could be a missing or incorrect setup of "
+ "xkeyboard-config.\n", device->name);
+
+ return BadValue;
+ }
+ }
+#else
+ {
+ XkbComponentNamesRec xkbnames;
+ memset(&xkbnames, 0, sizeof(xkbnames));
+ XkbSetRulesDflts(xkb_rules, xkb_model, xkb_layout,
+ xkb_variant, xkb_options);
+ XkbInitKeyboardDeviceStruct(device, &xkbnames, &keySyms,
+ modMap, KbdBell,
+ (KbdCtrlProcPtr)KbdCtrl);
+ }
+#endif /* XINPUT ABI 5*/
+ InitKBD(pInfo, TRUE);
+ break;
case DEVICE_ON:
if (device->public.on)
break;
@@ -626,14 +475,6 @@ PostKbdEvent(InputInfoPtr pInfo, unsigned int scanCode, Bool down)
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
DeviceIntPtr device = pInfo->dev;
KeyClassRec *keyc = device->key;
- KbdFeedbackClassRec *kbdfeed = device->kbdfeed;
- int specialkey = 0;
-
- Bool UsePrefix = FALSE;
- KeySym *keysym;
- int keycode;
- unsigned long changeLock = 0;
- static int lockkeys = 0;
#ifdef DEBUG
ErrorF("kbd driver rec scancode: 0x02%x %s\n", scanCode, down?"down":"up");
@@ -643,21 +484,6 @@ PostKbdEvent(InputInfoPtr pInfo, unsigned int scanCode, Bool down)
if (xf86inSuspend)
return;
-#ifndef __OpenBSD__
- if (pKbd->sunKbd) {
- /*
- * XXX XXX XXX:
- *
- * I really don't know what's wrong here, but passing the real
- * scanCode offsets by one from XKB's point of view.
- *
- * (ecd@skynet.be, 980405)
- */
- scanCode--;
- goto sunKeyboards;
- }
-#endif
-
/*
* First do some special scancode remapping ...
*/
@@ -673,203 +499,26 @@ PostKbdEvent(InputInfoPtr pInfo, unsigned int scanCode, Bool down)
}
/*
- * and now get some special keysequences
- */
-
- specialkey = scanCode;
-
- if (pKbd->GetSpecialKey != NULL) {
- specialkey = pKbd->GetSpecialKey(pInfo, scanCode);
- } else {
- if (pKbd->specialMap != NULL) {
- TransMapPtr map = pKbd->specialMap;
- if (scanCode >= map->begin && scanCode < map->end)
- specialkey = map->map[scanCode - map->begin];
- }
- }
-
-#ifndef TERMINATE_FALLBACK
-#define TERMINATE_FALLBACK 0
-#endif
-#ifdef XKB
- if (noXkbExtension
-#if TERMINATE_FALLBACK
- || specialkey == KEY_BackSpace
-#endif
- )
-#endif
- {
- if (CommonSpecialKey(specialkey, down, keyc->state))
- return;
- if (pKbd->SpecialKey != NULL)
- if (pKbd->SpecialKey(pInfo, specialkey, down, keyc->state))
- return;
- }
-
-#ifndef __sparc64__
- /*
* PC keyboards generate separate key codes for
* Alt+Print and Control+Pause but in the X keyboard model
* they need to get the same key code as the base key on the same
* physical keyboard key.
*/
+
if (!xf86IsPc98()) {
- if (ModifierDown(AltMask) && (scanCode == KEY_SysReqest))
+ int state;
+
+ state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
+
+ if (((state & AltMask) == AltMask) && (scanCode == KEY_SysReqest))
scanCode = KEY_Print;
else if (scanCode == KEY_Break)
scanCode = KEY_Pause;
}
-#endif
-
-sunKeyboards:
- /*
- * Now map the scancodes to real X-keycodes ...
- */
- keycode = scanCode + MIN_KEYCODE;
- keysym = (keyc->curKeySyms.map +
- keyc->curKeySyms.mapWidth *
- (keycode - keyc->curKeySyms.minKeyCode));
-
-#ifdef XKB
- if (pKbd->noXkb) {
-#endif
- /*
- * Filter autorepeated caps/num/scroll lock keycodes.
- */
- if( down ) {
- switch( keysym[0] ) {
- case XK_Caps_Lock :
- if (lockkeys & CAPSFLAG)
- return;
- else
- lockkeys |= CAPSFLAG;
- break;
-
- case XK_Num_Lock :
- if (lockkeys & NUMFLAG)
- return;
- else
- lockkeys |= NUMFLAG;
- break;
-
- case XK_Scroll_Lock :
- if (lockkeys & SCROLLFLAG)
- return;
- else
- lockkeys |= SCROLLFLAG;
- break;
- }
- if (keysym[1] == XF86XK_ModeLock)
- {
- if (lockkeys & MODEFLAG)
- return;
- else
- lockkeys |= MODEFLAG;
- }
- }
- else {
- switch( keysym[0] ) {
- case XK_Caps_Lock :
- lockkeys &= ~CAPSFLAG;
- break;
-
- case XK_Num_Lock :
- lockkeys &= ~NUMFLAG;
- break;
-
- case XK_Scroll_Lock :
- lockkeys &= ~SCROLLFLAG;
- break;
- }
- if (keysym[1] == XF86XK_ModeLock)
- lockkeys &= ~MODEFLAG;
- }
-
- /*
- * LockKey special handling:
- * ignore releases, toggle on & off on presses.
- * Don't deal with the Caps_Lock keysym directly, but check the lock modifier
- */
-
- if (keyc->modifierMap[keycode] & LockMask)
- changeLock = CAPSFLAG;
- if (keysym[0] == XK_Num_Lock)
- changeLock = NUMFLAG;
- if (keysym[0] == XK_Scroll_Lock)
- changeLock = SCROLLFLAG;
- if (keysym[1] == XF86XK_ModeLock)
- changeLock = MODEFLAG;
-
- if (changeLock) {
- if (!down)
- return;
-
- pKbd->keyLeds &= ~changeLock;
-
- if (KeyPressed(keycode)) {
- down = !down;
- } else {
- pKbd->keyLeds |= changeLock;
- }
- UpdateLeds(pInfo);
- }
-
- if (!pKbd->CustomKeycodes) {
- /*
- * normal, non-keypad keys
- */
- if (scanCode < KEY_KP_7 || scanCode > KEY_KP_Decimal) {
-#if !defined(CSRG_BASED) && \
- !defined(__GNU__) && \
- defined(KB_84)
- /*
- * magic ALT_L key on AT84 keyboards for multilingual support
- */
- if (pKbd->kbdType == KB_84 &&
- ModifierDown(AltMask) &&
- keysym[2] != NoSymbol)
- {
- UsePrefix = TRUE;
- }
-#endif /* !CSRG_BASED && ... */
- }
- }
-#ifdef XKB
- }
-#endif
- /*
- * check for an autorepeat-event
- */
- if (down && KeyPressed(keycode)) {
- int num = keycode >> 3;
- int bit = 1 << (keycode & 7);
-
- if ((pKbd->autoRepeat != AutoRepeatModeOn) ||
- keyc->modifierMap[keycode] ||
- !(kbdfeed->ctrl.autoRepeats[num] & bit))
- return;
- }
-
- if (UsePrefix) {
- xf86PostKeyboardEvent(device,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7], TRUE);
- xf86PostKeyboardEvent(device, keycode, down);
- xf86PostKeyboardEvent(device,
- keyc->modifierKeyMap[keyc->maxKeysPerModifier*7], FALSE);
- } else {
- xf86PostKeyboardEvent(device, keycode, down);
- }
+ xf86PostKeyboardEvent(device, scanCode + MIN_KEYCODE, down);
}
-ModuleInfoRec KbdInfo = {
- 1,
- "KBD",
- NULL,
- 0,
- KeyboardAvailableOptions,
-};
-
static void
xf86KbdUnplug(pointer p)
{
@@ -881,11 +530,6 @@ xf86KbdPlug(pointer module,
int *errmaj,
int *errmin)
{
- static Bool Initialised = FALSE;
-
- if (!Initialised)
- Initialised = TRUE;
-
xf86AddInputDriver(&KBD, module, 0);
return module;
diff --git a/driver/xf86-input-keyboard/src/lnx_kbd.c b/driver/xf86-input-keyboard/src/lnx_kbd.c
index d3f29e55b..914446452 100644
--- a/driver/xf86-input-keyboard/src/lnx_kbd.c
+++ b/driver/xf86-input-keyboard/src/lnx_kbd.c
@@ -57,17 +57,6 @@ SetKbdLeds(InputInfoPtr pInfo, int leds)
{
int real_leds = 0;
-#if defined (__sparc__)
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- if (pKbd->sunKbd) {
- if (leds & 0x08) real_leds |= XLED1;
- if (leds & 0x04) real_leds |= XLED3;
- if (leds & 0x02) real_leds |= XLED4;
- if (leds & 0x01) real_leds |= XLED2;
- leds = real_leds;
- real_leds = 0;
- }
-#endif /* defined (__sparc__) */
#ifdef LED_CAP
if (leds & XLED1) real_leds |= LED_CAP;
if (leds & XLED2) real_leds |= LED_NUM;
@@ -84,7 +73,8 @@ SetKbdLeds(InputInfoPtr pInfo, int leds)
static int
GetKbdLeds(InputInfoPtr pInfo)
{
- int real_leds, leds = 0;
+ char real_leds;
+ int leds = 0;
ioctl(pInfo->fd, KDGETLED, &real_leds);
@@ -95,151 +85,6 @@ GetKbdLeds(InputInfoPtr pInfo)
return(leds);
}
-static int
-KDKBDREP_ioctl_ok(int rate, int delay) {
-#if defined(KDKBDREP) && !defined(__sparc__)
- /* This ioctl is defined in <linux/kd.h> but is not
- implemented anywhere - must be in some m68k patches. */
- struct kbd_repeat kbdrep_s;
-
- /* don't change, just test */
- kbdrep_s.LNX_KBD_PERIOD_NAME = -1;
- kbdrep_s.delay = -1;
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
-
- /* do the change */
- if (rate == 0) /* switch repeat off */
- kbdrep_s.LNX_KBD_PERIOD_NAME = 0;
- else
- kbdrep_s.LNX_KBD_PERIOD_NAME = 10000 / rate; /* convert cps to msec */
- if (kbdrep_s.LNX_KBD_PERIOD_NAME < 1)
- kbdrep_s.LNX_KBD_PERIOD_NAME = 1;
- kbdrep_s.delay = delay;
- if (kbdrep_s.delay < 1)
- kbdrep_s.delay = 1;
-
- if (ioctl( xf86Info.consoleFd, KDKBDREP, &kbdrep_s )) {
- return 0;
- }
-
- return 1; /* success! */
-#else /* no KDKBDREP */
- return 0;
-#endif /* KDKBDREP */
-}
-
-static int
-KIOCSRATE_ioctl_ok(int rate, int delay) {
-#ifdef KIOCSRATE
- struct kbd_rate kbdrate_s;
- int fd;
-
- fd = open("/dev/kbd", O_RDONLY);
- if (fd == -1)
- return 0;
-
- kbdrate_s.rate = (rate + 5) / 10; /* must be integer, so round up */
- kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
- if (kbdrate_s.rate > 50)
- kbdrate_s.rate = 50;
-
- if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
- return 0;
- }
-
- close( fd );
-
- return 1;
-#else /* no KIOCSRATE */
- return 0;
-#endif /* KIOCSRATE */
-}
-
-#undef rate
-
-static void
-SetKbdRepeat(InputInfoPtr pInfo, char rad)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int i;
- int timeout;
- int value = 0x7f; /* Maximum delay with slowest rate */
-
-#ifdef __sparc__
- int rate = 500; /* Default rate */
- int delay = 200; /* Default delay */
-#else
- int rate = 300; /* Default rate */
- int delay = 250; /* Default delay */
-#endif
-
- static int valid_rates[] = { 300, 267, 240, 218, 200, 185, 171, 160, 150,
- 133, 120, 109, 100, 92, 86, 80, 75, 67,
- 60, 55, 50, 46, 43, 40, 37, 33, 30, 27,
- 25, 23, 21, 20 };
-#define RATE_COUNT (sizeof( valid_rates ) / sizeof( int ))
-
- static int valid_delays[] = { 250, 500, 750, 1000 };
-#define DELAY_COUNT (sizeof( valid_delays ) / sizeof( int ))
-
- if (pKbd->rate >= 0)
- rate = pKbd->rate * 10;
- if (pKbd->delay >= 0)
- delay = pKbd->delay;
-
- if(KDKBDREP_ioctl_ok(rate, delay)) /* m68k? */
- return;
-
- if(KIOCSRATE_ioctl_ok(rate, delay)) /* sparc? */
- return;
-
- if (xf86IsPc98())
- return;
-
-#if defined(__alpha__) || defined (__i386__) || defined(__ia64__)
-
- if (!xorgHWAccess) {
- if (xf86EnableIO())
- xorgHWAccess = TRUE;
- else
- return;
- }
-
- /* The ioport way */
-
- for (i = 0; i < RATE_COUNT; i++)
- if (rate >= valid_rates[i]) {
- value &= 0x60;
- value |= i;
- break;
- }
-
- for (i = 0; i < DELAY_COUNT; i++)
- if (delay <= valid_delays[i]) {
- value &= 0x1f;
- value |= i << 5;
- break;
- }
-
- timeout = KBC_TIMEOUT;
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- if (timeout == 0)
- return;
-
- outb(0x60, 0xf3); /* set typematic rate */
- while (((inb(0x64) & 2) == 2) && --timeout)
- usleep(1000); /* wait */
-
- usleep(10000);
- outb(0x60, value);
-
-#endif /* __alpha__ || __i386__ || __ia64__ */
-}
-
typedef struct {
int kbdtrans;
struct termios kbdtty;
@@ -302,83 +147,6 @@ KbdOff(InputInfoPtr pInfo, int what)
return Success;
}
-static int
-GetSpecialKey(InputInfoPtr pInfo, int scanCode)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int specialkey = scanCode;
-
-#if defined (__sparc__)
- if (pKbd->sunKbd) {
- switch (scanCode) {
- case 0x2b: specialkey = KEY_BackSpace; break;
- case 0x47: specialkey = KEY_KP_Minus; break;
- case 0x7d: specialkey = KEY_KP_Plus; break;
- /* XXX needs cases for KEY_KP_Divide and KEY_KP_Multiply */
- case 0x05: specialkey = KEY_F1; break;
- case 0x06: specialkey = KEY_F2; break;
- case 0x08: specialkey = KEY_F3; break;
- case 0x0a: specialkey = KEY_F4; break;
- case 0x0c: specialkey = KEY_F5; break;
- case 0x0e: specialkey = KEY_F6; break;
- case 0x10: specialkey = KEY_F7; break;
- case 0x11: specialkey = KEY_F8; break;
- case 0x12: specialkey = KEY_F9; break;
- case 0x07: specialkey = KEY_F10; break;
- case 0x09: specialkey = KEY_F11; break;
- case 0x0b: specialkey = KEY_F12; break;
- default: specialkey = 0; break;
- }
- return specialkey;
- }
-#endif
-
- if (pKbd->CustomKeycodes) {
- specialkey = pKbd->specialMap->map[scanCode];
- }
- return specialkey;
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static
-Bool SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq && !xf86Info.dontVTSwitch) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F1 + 1);
- return TRUE;
- }
- case KEY_F11:
- case KEY_F12:
- if (down) {
- ioctl(xf86Info.consoleFd, VT_ACTIVATE, key - KEY_F11 + 11);
- return TRUE;
- }
- }
- }
- }
- return FALSE;
-}
-
static void
stdReadInput(InputInfoPtr pInfo)
{
@@ -453,12 +221,9 @@ xf86OSKbdPreInit(InputInfoPtr pInfo)
pKbd->Bell = SoundBell;
pKbd->SetLeds = SetKbdLeds;
pKbd->GetLeds = GetKbdLeds;
- pKbd->SetKbdRepeat = SetKbdRepeat;
pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = GetSpecialKey;
pKbd->OpenKeyboard = OpenKeyboard;
pKbd->vtSwitchSupported = FALSE;
diff --git a/driver/xf86-input-keyboard/src/sco_kbd.c b/driver/xf86-input-keyboard/src/sco_kbd.c
index b6731c703..dcdc93b69 100644
--- a/driver/xf86-input-keyboard/src/sco_kbd.c
+++ b/driver/xf86-input-keyboard/src/sco_kbd.c
@@ -334,64 +334,6 @@ KbdOff(InputInfoPtr pInfo, int what)
return Success;
}
-static int
-GetSpecialKey(InputInfoPtr pInfo, int scanCode)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- int specialkey = scanCode;
-
- if (pKbd->CustomKeycodes) {
- specialkey = pKbd->specialMap->map[scanCode];
- }
- return specialkey;
-}
-
-#define ModifierSet(k) ((modifiers & (k)) == (k))
-
-static Bool
-SpecialKey(InputInfoPtr pInfo, int key, Bool down, int modifiers)
-{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-
- if(!pKbd->vtSwitchSupported)
- return FALSE;
-
- if ((!ModifierSet(ShiftMask)) && ((ModifierSet(ControlMask | AltMask)) ||
- (ModifierSet(ControlMask | AltLangMask)))) {
- if (VTSwitchEnabled && !xf86Info.vtSysreq) {
- switch (key) {
- case KEY_F1:
- case KEY_F2:
- case KEY_F3:
- case KEY_F4:
- case KEY_F5:
- case KEY_F6:
- case KEY_F7:
- case KEY_F8:
- case KEY_F9:
- case KEY_F10:
- if (down) {
- int sts = key - KEY_F1;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_ACTIVATE, sts);
- }
- return TRUE;
- }
- case KEY_F11:
- case KEY_F12:
- if (down) {
- int sts = key - KEY_F11 + 10;
- if (sts != xf86Info.vtno) {
- ioctl(pInfo->fd, VT_ACTIVATE, sts);
- }
- return TRUE;
- }
- }
- }
- }
- return FALSE;
-}
-
static void
stdReadInput(InputInfoPtr pInfo)
{
@@ -469,8 +411,6 @@ xf86OSKbdPreInit(InputInfoPtr pInfo)
pKbd->GetLeds = GetKbdLeds;
pKbd->SetKbdRepeat = SetKbdRepeat;
pKbd->KbdGetMapping = KbdGetMapping;
- pKbd->SpecialKey = SpecialKey;
- pKbd->GetSpecialKey = GetSpecialKey;
pKbd->OpenKeyboard = OpenKeyboard;
pKbd->RemapScanCode = ATScancode;
pKbd->vtSwitchSupported = FALSE;
diff --git a/driver/xf86-input-keyboard/src/sun_kbd.c b/driver/xf86-input-keyboard/src/sun_kbd.c
index cc43022e5..614835e3c 100644
--- a/driver/xf86-input-keyboard/src/sun_kbd.c
+++ b/driver/xf86-input-keyboard/src/sun_kbd.c
@@ -22,7 +22,7 @@
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* Copyright 2004-2007 Sun Microsystems, Inc. All rights reserved.
+/* Copyright 2004-2009 Sun Microsystems, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
@@ -63,6 +63,12 @@
#include <sys/stropts.h>
#include <sys/vuid_event.h>
#include <sys/kbd.h>
+#include <sys/note.h> /* needed before including older versions of hid.h */
+#include <sys/usb/clients/hid/hid.h>
+
+static int KbdOn(InputInfoPtr pInfo, int what);
+static Bool OpenKeyboard(InputInfoPtr pInfo);
+static void CloseKeyboard(InputInfoPtr pInfo);
static void
sunKbdSetLeds(InputInfoPtr pInfo, int leds)
@@ -105,6 +111,7 @@ KbdInit(InputInfoPtr pInfo, int what)
int ktype, klayout, i;
const char *ktype_name;
+ priv->kbdActive = FALSE;
priv->otranslation = -1;
priv->odirect = -1;
@@ -114,15 +121,11 @@ KbdInit(InputInfoPtr pInfo, int what)
priv->strmod = NULL;
}
- if (priv->strmod) {
- SYSCALL(i = ioctl(pInfo->fd, I_PUSH, priv->strmod));
- if (i < 0) {
- xf86Msg(X_ERROR,
- "%s: cannot push module '%s' onto keyboard device: %s\n",
- pInfo->name, priv->strmod, strerror(errno));
- }
+ i = KbdOn(pInfo, DEVICE_INIT);
+ if (i != Success) {
+ return i;
}
-
+
SYSCALL(i = ioctl(pInfo->fd, KIOCTYPE, &ktype));
if (i < 0) {
xf86Msg(X_ERROR, "%s: Unable to determine keyboard type: %s\n",
@@ -155,7 +158,6 @@ KbdInit(InputInfoPtr pInfo, int what)
xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", pInfo->name, klayout);
priv->ktype = ktype;
- priv->oleds = sunKbdGetLeds(pInfo);
return Success;
}
@@ -168,8 +170,41 @@ KbdOn(InputInfoPtr pInfo, int what)
sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
int ktrans, kdirect, i;
+ int io_get_direct = KIOCGDIRECT;
+ int io_set_direct = KIOCSDIRECT;
+
+ if (priv->kbdActive) {
+ return Success;
+ }
- SYSCALL(i = ioctl(pInfo->fd, KIOCGDIRECT, &kdirect));
+ if (pInfo->fd == -1) {
+ if (!OpenKeyboard(pInfo)) {
+ return BadImplementation;
+ }
+ }
+
+ if (priv->strmod) {
+ /* Check to see if module is already pushed */
+ SYSCALL(i = ioctl(pInfo->fd, I_FIND, priv->strmod));
+
+ if (i == 0) { /* Not already pushed */
+ SYSCALL(i = ioctl(pInfo->fd, I_PUSH, priv->strmod));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: cannot push module '%s' onto "
+ "keyboard device: %s\n",
+ pInfo->name, priv->strmod, strerror(errno));
+ }
+ }
+
+#ifdef HIDIOCKMSDIRECT
+ if (strcmp(priv->strmod, "usbkbm") == 0) {
+ io_get_direct = HIDIOCKMGDIRECT;
+ io_set_direct = HIDIOCKMSDIRECT;
+ }
+#endif
+ }
+
+ SYSCALL(i = ioctl(pInfo->fd, io_get_direct, &kdirect));
if (i < 0) {
xf86Msg(X_ERROR,
"%s: Unable to determine keyboard direct setting: %s\n",
@@ -180,7 +215,7 @@ KbdOn(InputInfoPtr pInfo, int what)
priv->odirect = kdirect;
kdirect = 1;
- SYSCALL(i = ioctl(pInfo->fd, KIOCSDIRECT, &kdirect));
+ SYSCALL(i = ioctl(pInfo->fd, io_set_direct, &kdirect));
if (i < 0) {
xf86Msg(X_ERROR, "%s: Failed turning keyboard direct mode on: %s\n",
pInfo->name, strerror(errno));
@@ -207,6 +242,13 @@ KbdOn(InputInfoPtr pInfo, int what)
return BadImplementation;
}
+ priv->oleds = sunKbdGetLeds(pInfo);
+
+ /* Allocate here so we don't alloc in ReadInput which may be called
+ from SIGIO handler. */
+ priv->remove_timer = TimerSet(priv->remove_timer, 0, 0, NULL, NULL);
+
+ priv->kbdActive = TRUE;
return Success;
}
@@ -217,6 +259,21 @@ KbdOff(InputInfoPtr pInfo, int what)
sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
int i;
+ int io_set_direct, kdirect;
+
+ if (priv->remove_timer) {
+ TimerFree(priv->remove_timer);
+ priv->remove_timer = NULL;
+ }
+
+ if (!priv->kbdActive) {
+ return Success;
+ }
+
+ if (pInfo->fd == -1) {
+ priv->kbdActive = FALSE;
+ return Success;
+ }
/* restore original state */
@@ -236,8 +293,18 @@ KbdOff(InputInfoPtr pInfo, int what)
priv->otranslation = -1;
}
- if (priv->odirect != -1) {
- SYSCALL(i = ioctl(pInfo->fd, KIOCSDIRECT, &priv->odirect));
+ io_set_direct = KIOCSDIRECT;
+ kdirect = priv->odirect;
+
+#ifdef HIDIOCKMSDIRECT
+ if ((priv->strmod != NULL) && (strcmp(priv->strmod, "usbkbm") == 0)) {
+ io_set_direct = HIDIOCKMSDIRECT;
+ kdirect = 0;
+ }
+#endif
+
+ if (kdirect != -1) {
+ SYSCALL(i = ioctl(pInfo->fd, io_set_direct, &kdirect));
if (i < 0) {
xf86Msg(X_ERROR,
"%s: Unable to restore keyboard direct setting: %s\n",
@@ -254,9 +321,9 @@ KbdOff(InputInfoPtr pInfo, int what)
"%s: cannot pop module '%s' off keyboard device: %s\n",
pInfo->name, priv->strmod, strerror(errno));
}
- priv->strmod = NULL;
}
+ CloseKeyboard(pInfo);
return Success;
}
@@ -264,9 +331,6 @@ KbdOff(InputInfoPtr pInfo, int what)
static void
SoundKbdBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
{
- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
-
int kbdCmd, i;
#ifdef KIOCMKTONE
int cycles;
@@ -357,19 +421,71 @@ SetKbdRepeat(InputInfoPtr pInfo, char rad)
}
static void
+CloseKeyboard(InputInfoPtr pInfo)
+{
+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+
+ close(pInfo->fd);
+ pInfo->fd = -1;
+ priv->kbdActive = FALSE;
+}
+
+/* Called from OsTimer callback, since removing a device from the device
+ list or changing pInfo->fd while xf86Wakeup is looping through the list
+ causes server crashes */
+static CARD32
+RemoveKeyboard(OsTimerPtr timer, CARD32 time, pointer arg)
+{
+ InputInfoPtr pInfo = (InputInfoPtr) arg;
+
+ CloseKeyboard(pInfo);
+ xf86DisableDevice(pInfo->dev, TRUE);
+
+ return 0; /* All done, don't set to run again */
+}
+
+static void
ReadInput(InputInfoPtr pInfo)
{
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
Firm_event event[64];
int nBytes, i;
- /* I certainly hope its not possible to read partial events */
-
- if ((nBytes = read(pInfo->fd, (char *)event, sizeof(event))) > 0)
- {
- for (i = 0; i < (nBytes / sizeof(Firm_event)); i++) {
- pKbd->PostEvent(pInfo, event[i].id & 0xFF,
- event[i].value == VKEY_DOWN ? TRUE : FALSE);
+ while (TRUE) {
+ /* I certainly hope it's not possible to read partial events */
+ nBytes = read(pInfo->fd, (char *)event, sizeof(event));
+ if (nBytes > 0) {
+ for (i = 0; i < (nBytes / sizeof(Firm_event)); i++) {
+ pKbd->PostEvent(pInfo, event[i].id & 0xFF,
+ event[i].value == VKEY_DOWN ? TRUE : FALSE);
+ }
+ } else if (nBytes == -1) {
+ switch (errno) {
+ case EAGAIN: /* Nothing to read now */
+ return;
+ case EINTR: /* Interrupted, try again */
+ break;
+ case ENODEV: /* May happen when USB kbd is unplugged */
+ /* We use X_NONE here because it doesn't alloc since we
+ may be called from SIGIO handler */
+ xf86MsgVerb(X_NONE, 0,
+ "%s: Device no longer present - removing.\n",
+ pInfo->name);
+ xf86RemoveEnabledDevice(pInfo);
+ priv->remove_timer = TimerSet(priv->remove_timer, 0, 1,
+ RemoveKeyboard, pInfo);
+ return;
+ default: /* All other errors */
+ /* We use X_NONE here because it doesn't alloc since we
+ may be called from SIGIO handler */
+ xf86MsgVerb(X_NONE, 0, "%s: Read error: %s\n", pInfo->name,
+ strerror(errno));
+ return;
+ }
+ } else { /* nBytes == 0, so nothing more to read */
+ return;
}
}
}
@@ -423,8 +539,6 @@ xf86OSKbdPreInit(InputInfoPtr pInfo)
pKbd->KbdGetMapping = KbdGetMapping;
pKbd->RemapScanCode = NULL;
- pKbd->GetSpecialKey = NULL;
- pKbd->SpecialKey = NULL;
pKbd->OpenKeyboard = OpenKeyboard;
diff --git a/driver/xf86-input-keyboard/src/sun_kbd.h b/driver/xf86-input-keyboard/src/sun_kbd.h
index a73e20115..080cbb5b2 100644
--- a/driver/xf86-input-keyboard/src/sun_kbd.h
+++ b/driver/xf86-input-keyboard/src/sun_kbd.h
@@ -36,6 +36,7 @@ typedef struct {
int odirect; /* Original "direct" mode setting */
int oleds; /* Original LED state */
const char * strmod; /* Streams module pushed on kbd device */
+ OsTimerPtr remove_timer; /* Callback for removal on ENODEV */
} sunKbdPrivRec, *sunKbdPrivPtr;
/* sun_kbdMap.c */
diff --git a/driver/xf86-input-keyboard/src/sun_kbdMap.c b/driver/xf86-input-keyboard/src/sun_kbdMap.c
index 7ab3d7d1b..50d7585a0 100644
--- a/driver/xf86-input-keyboard/src/sun_kbdMap.c
+++ b/driver/xf86-input-keyboard/src/sun_kbdMap.c
@@ -36,10 +36,17 @@
/* Map the Solaris keycodes to the "XFree86" keycodes. */
-/* Additional Sun Japanese Keyboard Keys not defined in common/atKeynames.h */
+/* Additional Sun Japanese Keyboard Keys not defined in atKeynames.h */
#define KEY_Kanji 0x82
#define KEY_Execute 0x83
+/* Override atKeynames.h values with unique keycodes, so we can distinguish
+ KEY_F15 from KEY_HKTG & KEY_KP_DEC from KEY_BSlash2 */
+#undef KEY_HKTG
+#define KEY_HKTG /* Hirugana/Katakana tog 0xC8 */ 200 /* was 112 */
+#undef KEY_BSlash2
+#define KEY_BSlash2 /* \ _ 0xCB */ 203 /* was 115 */
+
static unsigned char sunmap[256] = {
#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__x86)
KEY_NOTUSED, /* 0 */
@@ -571,7 +578,6 @@ KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
{
KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
- const unsigned char *keymap;
int i;
KeySym *k;
diff --git a/driver/xf86-input-keyboard/src/xf86Keymap.h b/driver/xf86-input-keyboard/src/xf86Keymap.h
index 2bd22052b..5f6a79234 100644
--- a/driver/xf86-input-keyboard/src/xf86Keymap.h
+++ b/driver/xf86-input-keyboard/src/xf86Keymap.h
@@ -173,8 +173,7 @@ static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
!defined(linux) && \
!defined(CSRG_BASED) && \
!defined(__CYGWIN__) && \
- !defined(__SOL8__) && \
- (!defined(sun) || defined(i386))
+ !defined(sun)
static KeySym map84[NUM_KEYCODES * GLYPHS_PER_KEY] = {
/* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
diff --git a/driver/xf86-input-keyboard/src/xf86OSKbd.h b/driver/xf86-input-keyboard/src/xf86OSKbd.h
index 4ab722ca3..daeabf1b3 100644
--- a/driver/xf86-input-keyboard/src/xf86OSKbd.h
+++ b/driver/xf86-input-keyboard/src/xf86OSKbd.h
@@ -43,9 +43,6 @@ typedef int (*GetLedsProc)(InputInfoPtr pInfo);
typedef void (*SetKbdRepeatProc)(InputInfoPtr pInfo, char rad);
typedef void (*KbdGetMappingProc)(InputInfoPtr pInfo,
KeySymsPtr pKeySyms, CARD8* pModMap);
-typedef int (*GetSpecialKeyProc)(InputInfoPtr pInfo, int scanCode);
-typedef Bool (*SpecialKeyProc)(InputInfoPtr pInfo,
- int key, Bool down, int modifiers);
typedef int (*RemapScanCodeProc)(InputInfoPtr pInfo, int *scanCode);
typedef Bool (*OpenKeyboardProc)(InputInfoPtr pInfo);
typedef void (*PostEventProc)(InputInfoPtr pInfo,
@@ -66,24 +63,18 @@ typedef struct {
SetKbdRepeatProc SetKbdRepeat;
KbdGetMappingProc KbdGetMapping;
RemapScanCodeProc RemapScanCode;
- GetSpecialKeyProc GetSpecialKey;
- SpecialKeyProc SpecialKey;
OpenKeyboardProc OpenKeyboard;
PostEventProc PostEvent;
- int rate;
- int delay;
int bell_pitch;
int bell_duration;
- Bool autoRepeat;
unsigned long leds;
unsigned long xledsMask;
unsigned long keyLeds;
int scanPrefix;
Bool vtSwitchSupported;
Bool CustomKeycodes;
- Bool noXkb;
Bool isConsole;
TransMapPtr scancodeMap;
TransMapPtr specialMap;
@@ -93,8 +84,6 @@ typedef struct {
int kbdType;
int consType;
int wsKbdType;
- Bool sunKbd;
- Bool Panix106;
} KbdDevRec, *KbdDevPtr;