xorg-docs-1.7.3/0000755014310600000120000000000014600067630007162 5xorg-docs-1.7.3/install-sh0000755014310600000120000003577614600067626011135 #!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 # Create dirs (including intermediate dirs) using mode 755. # This is like GNU 'install' as of coreutils 8.32 (2020). mkdir_umask=22 backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -p pass -p to $cpprog. -s $stripprog installed files. -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG By default, rm is invoked with -f; when overridden with RMPROG, it's up to you to specify -f if you want it. If -S is not specified, no backups are attempted. Email bug reports to bug-automake@gnu.org. Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; -S) backupsuffix="$2" shift;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false # The $RANDOM variable is not portable (e.g., dash). Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap ' ret=$? rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null exit $ret ' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p'. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # If $backupsuffix is set, and the file being installed # already exists, attempt a backup. Don't worry if it fails, # e.g., if mv doesn't support -f. if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: xorg-docs-1.7.3/missing0000755014310600000120000001533614600067626010516 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: xorg-docs-1.7.3/aclocal.m40000644014310600000120000033046014600067625010754 # generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, [m4_warning([this file was generated for autoconf 2.72. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl m4_ifdef([_$0_ALREADY_INIT], [m4_fatal([$0 expanded multiple times ]m4_defn([_$0_ALREADY_INIT]))], [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi AC_SUBST([CTAGS]) if test -z "$ETAGS"; then ETAGS=etags fi AC_SUBST([ETAGS]) if test -z "$CSCOPE"; then CSCOPE=cscope fi AC_SUBST([CSCOPE]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure. dnl dnl Copyright (c) 2005, 2023, Oracle and/or its affiliates. dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the "Software"), dnl to deal in the Software without restriction, including without limitation dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, dnl and/or sell copies of the Software, and to permit persons to whom the dnl Software is furnished to do so, subject to the following conditions: dnl 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 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) # ------------------------------------- # Minimum version: 1.1.0 # # If you're using a macro added in Version 1.1 or newer, include this in # your configure.ac with the minimum required version, such as: # XORG_MACROS_VERSION(1.1) # # 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. m4_defun([XORG_MACROS_VERSION],[ m4_define([vers_have], [1.20.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() # ------------------ # Minimum version: 1.0.0 # # Find cpp program and necessary flags for use in pre-processing text files # such as man pages and config files AC_DEFUN([XORG_PROG_RAWCPP],[ AC_REQUIRE([AC_PROG_CPP]) AC_PATH_TOOL(RAWCPP, [cpp], [${CPP}], [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib]) # Check for flag to avoid builtin definitions - assumes unix is predefined, # which is not the best choice for supporting other OS'es, but covers most # of the ones we need for now. AC_MSG_CHECKING([if $RAWCPP requires -undef]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])]) if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then AC_MSG_RESULT([no]) else if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS=-undef AC_MSG_RESULT([yes]) # under Cygwin unix is still defined even with -undef elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS="-undef -ansi" AC_MSG_RESULT([yes, with -ansi]) else AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) fi fi rm -f conftest.$ac_ext AC_MSG_CHECKING([if $RAWCPP requires -traditional]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])]) if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then AC_MSG_RESULT([no]) else if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve "'` -eq 1 ; then TRADITIONALCPPFLAGS="-traditional" RAWCPPFLAGS="${RAWCPPFLAGS} -traditional" AC_MSG_RESULT([yes]) else AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional. I don't know what to do.]) fi fi rm -f conftest.$ac_ext AC_SUBST(RAWCPPFLAGS) AC_SUBST(TRADITIONALCPPFLAGS) ]) # XORG_PROG_RAWCPP # XORG_MANPAGE_SECTIONS() # ----------------------- # Minimum version: 1.0.0 # # Determine which sections man pages go in for the different man page types # on this OS - replaces *ManSuffix settings in old Imake *.cf per-os files. # Not sure if there's any better way than just hardcoding by OS name. # Override default settings by setting environment variables # Added MAN_SUBSTS in version 1.8 # Added AC_PROG_SED in version 1.8 AC_DEFUN([XORG_MANPAGE_SECTIONS],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_SED]) case $host_os in solaris*) # Solaris 2.0 - 11.3 use SysV man page section numbers, so we # check for a man page file found in later versions that use # traditional section numbers instead AC_CHECK_FILE([/usr/share/man/man7/attributes.7], [SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true]) ;; *) SYSV_MAN_SECTIONS=false ;; esac 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 AC_SUBST([APP_MAN_SUFFIX]) AC_SUBST([LIB_MAN_SUFFIX]) AC_SUBST([FILE_MAN_SUFFIX]) AC_SUBST([MISC_MAN_SUFFIX]) AC_SUBST([DRIVER_MAN_SUFFIX]) AC_SUBST([ADMIN_MAN_SUFFIX]) AC_SUBST([APP_MAN_DIR]) AC_SUBST([LIB_MAN_DIR]) AC_SUBST([FILE_MAN_DIR]) AC_SUBST([MISC_MAN_DIR]) AC_SUBST([DRIVER_MAN_DIR]) AC_SUBST([ADMIN_MAN_DIR]) XORG_MAN_PAGE="X Version 11" AC_SUBST([XORG_MAN_PAGE]) MAN_SUBSTS="\ -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xservername__|Xorg|g' \ -e 's|__xconfigfile__|xorg.conf|g' \ -e 's|__projectroot__|\$(prefix)|g' \ -e 's|__apploaddir__|\$(appdefaultdir)|g' \ -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" AC_SUBST([MAN_SUBSTS]) ]) # XORG_MANPAGE_SECTIONS # XORG_CHECK_SGML_DOCTOOLS([MIN-VERSION]) # ------------------------ # 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 m4_ifval([$1],[>= $1])]) XORG_SGML_PATH= PKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])], [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`], [m4_ifval([$1],[:], [if test x"$cross_compiling" != x"yes" ; then AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent], [XORG_SGML_PATH=$prefix/share/sgml]) fi]) ]) # Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing # the path and the name of the doc stylesheet if test "x$XORG_SGML_PATH" != "x" ; then AC_MSG_RESULT([$XORG_SGML_PATH]) STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl else AC_MSG_RESULT([no]) fi AC_SUBST(XORG_SGML_PATH) AC_SUBST(STYLESHEET_SRCDIR) AC_SUBST(XSL_STYLESHEET) AM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"]) ]) # XORG_CHECK_SGML_DOCTOOLS # XORG_CHECK_LINUXDOC # ------------------- # Minimum version: 1.0.0 # # Defines the variable MAKE_TEXT if the necessary tools and # files are found. $(MAKE_TEXT) blah.sgml will then produce blah.txt. # Whether or not the necessary tools and files are found can be checked # with the AM_CONDITIONAL "BUILD_LINUXDOC" AC_DEFUN([XORG_CHECK_LINUXDOC],[ AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) AC_REQUIRE([XORG_WITH_PS2PDF]) AC_PATH_PROG(LINUXDOC, linuxdoc) AC_MSG_CHECKING([whether to build documentation]) if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then BUILDDOC=yes else BUILDDOC=no fi AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes]) AC_MSG_RESULT([$BUILDDOC]) AC_MSG_CHECKING([whether to build pdf documentation]) if test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then BUILDPDFDOC=yes else BUILDPDFDOC=no fi AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes]) AC_MSG_RESULT([$BUILDPDFDOC]) MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f" MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" MAKE_PDF="$PS2PDF" MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" AC_SUBST(MAKE_TEXT) AC_SUBST(MAKE_PS) AC_SUBST(MAKE_PDF) AC_SUBST(MAKE_HTML) ]) # XORG_CHECK_LINUXDOC # XORG_CHECK_DOCBOOK # ------------------- # Minimum version: 1.0.0 # # Checks for the ability to build output formats from SGML DocBook source. # For XXX in {TXT, PDF, PS, HTML}, the AM_CONDITIONAL "BUILD_XXXDOC" # 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],[ AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS]) BUILDTXTDOC=no BUILDPDFDOC=no BUILDPSDOC=no BUILDHTMLDOC=no 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$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$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$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$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x && test x$BUILD_HTMLDOC != xno; then BUILDHTMLDOC=yes fi AM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes]) AC_MSG_RESULT([$BUILDHTMLDOC]) MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT" MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS" MAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF" MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML" AC_SUBST(MAKE_TEXT) AC_SUBST(MAKE_PS) AC_SUBST(MAKE_PDF) AC_SUBST(MAKE_HTML) ]) # XORG_CHECK_DOCBOOK # XORG_WITH_XMLTO([MIN-VERSION], [DEFAULT]) # ---------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.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 flexibility in making decisions # as whether or not to use the xmlto package. When DEFAULT is not specified, # --with-xmlto assumes 'auto'. # # 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 # # Added in version 1.10.0 # HAVE_XMLTO_TEXT: used in makefiles to conditionally generate text documentation # xmlto for text output requires either lynx, links, or w3m browsers # # 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]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(xmlto, AS_HELP_STRING([--with-xmlto], [Use xmlto to regenerate documentation (default: ]_defopt[)]), [use_xmlto=$withval], [use_xmlto=]_defopt) m4_undefine([_defopt]) 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 # Test for a minimum version of xmlto, if provided. 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]) # Test for the ability of xmlto to generate a text target # # NOTE: xmlto 0.0.27 or higher return a non-zero return code in the # following test for empty XML docbook files. # For compatibility reasons use the following empty XML docbook file and if # it fails try it again with a non-empty XML file. have_xmlto_text=no cat > conftest.xml << "EOF" EOF AS_IF([test "$have_xmlto" = yes], [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], [have_xmlto_text=yes], [# Try it again with a non-empty XML file. cat > conftest.xml << "EOF" EOF AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], [have_xmlto_text=yes], [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])]) rm -f conftest.xml AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) ]) # XORG_WITH_XMLTO # XORG_WITH_XSLTPROC([MIN-VERSION], [DEFAULT]) # -------------------------------------------- # Minimum version: 1.12.0 # Minimum version for optional DEFAULT argument: 1.12.0 # # XSLT (Extensible Stylesheet Language Transformations) is a declarative, # XML-based language used for the transformation of XML documents. # The xsltproc command line tool is for applying XSLT stylesheets to XML documents. # It is used under the cover by xmlto to generate html files from DocBook/XML. # The XSLT processor is often used as a standalone tool for transformations. # It should not be assumed that this tool is used only to work with documnetation. # When DEFAULT is not specified, --with-xsltproc assumes 'auto'. # # Interface to module: # HAVE_XSLTPROC: used in makefiles to conditionally generate documentation # XSLTPROC: returns the path of the xsltproc program found # returns the path set by the user in the environment # --with-xsltproc: 'yes' user instructs the module to use xsltproc # 'no' user instructs the module not to use xsltproc # have_xsltproc: returns yes if xsltproc found in PATH or no # # If the user sets the value of XSLTPROC, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_XSLTPROC],[ AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) # Preserves the interface, should it be implemented later m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(xsltproc, AS_HELP_STRING([--with-xsltproc], [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]), [use_xsltproc=$withval], [use_xsltproc=]_defopt) m4_undefine([_defopt]) if test "x$use_xsltproc" = x"auto"; then AC_PATH_PROG([XSLTPROC], [xsltproc]) if test "x$XSLTPROC" = "x"; then AC_MSG_WARN([xsltproc not found - cannot transform XML documents]) have_xsltproc=no else have_xsltproc=yes fi elif test "x$use_xsltproc" = x"yes" ; then AC_PATH_PROG([XSLTPROC], [xsltproc]) if test "x$XSLTPROC" = "x"; then AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH]) fi have_xsltproc=yes elif test "x$use_xsltproc" = x"no" ; then if test "x$XSLTPROC" != "x"; then AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified]) fi have_xsltproc=no else AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) fi AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) ]) # XORG_WITH_XSLTPROC # XORG_WITH_PERL([MIN-VERSION], [DEFAULT]) # ---------------------------------------- # Minimum version: 1.15.0 # # PERL (Practical Extraction and Report Language) is a language optimized for # scanning arbitrary text files, extracting information from those text files, # and printing reports based on that information. # # When DEFAULT is not specified, --with-perl assumes 'auto'. # # Interface to module: # HAVE_PERL: used in makefiles to conditionally scan text files # PERL: returns the path of the perl program found # returns the path set by the user in the environment # --with-perl: 'yes' user instructs the module to use perl # 'no' user instructs the module not to use perl # have_perl: returns yes if perl found in PATH or no # # If the user sets the value of PERL, AC_PATH_PROG skips testing the path. # AC_DEFUN([XORG_WITH_PERL],[ AC_ARG_VAR([PERL], [Path to perl command]) # Preserves the interface, should it be implemented later m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(perl, AS_HELP_STRING([--with-perl], [Use perl for extracting information from files (default: ]_defopt[)]), [use_perl=$withval], [use_perl=]_defopt) m4_undefine([_defopt]) if test "x$use_perl" = x"auto"; then AC_PATH_PROG([PERL], [perl]) if test "x$PERL" = "x"; then AC_MSG_WARN([perl not found - cannot extract information and report]) have_perl=no else have_perl=yes fi elif test "x$use_perl" = x"yes" ; then AC_PATH_PROG([PERL], [perl]) if test "x$PERL" = "x"; then AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH]) fi have_perl=yes elif test "x$use_perl" = x"no" ; then if test "x$PERL" != "x"; then AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified]) fi have_perl=no else AC_MSG_ERROR([--with-perl expects 'yes' or 'no']) fi AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes]) ]) # XORG_WITH_PERL # XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) # ---------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.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 flexibility in making decisions # as whether or not to use the asciidoc package. When DEFAULT is not specified, # --with-asciidoc assumes 'auto'. # # 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]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(asciidoc, AS_HELP_STRING([--with-asciidoc], [Use asciidoc to regenerate documentation (default: ]_defopt[)]), [use_asciidoc=$withval], [use_asciidoc=]_defopt) m4_undefine([_defopt]) 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], [DEFAULT]) # ------------------------------------------- # Minimum version: 1.5.0 # Minimum version for optional DEFAULT argument: 1.11.0 # Minimum version for optional DOT checking: 1.18.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 flexibility in making decisions # as whether or not to use the doxygen package. When DEFAULT is not specified, # --with-doxygen assumes 'auto'. # # 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_VAR([DOT], [Path to the dot graphics utility]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(doxygen, AS_HELP_STRING([--with-doxygen], [Use doxygen to regenerate documentation (default: ]_defopt[)]), [use_doxygen=$withval], [use_doxygen=]_defopt) m4_undefine([_defopt]) 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]) dnl Check for DOT if we have doxygen. The caller decides if it is mandatory dnl HAVE_DOT is a variable that can be used in your doxygen.in config file: dnl HAVE_DOT = @HAVE_DOT@ HAVE_DOT=no if test "x$have_doxygen" = "xyes"; then AC_PATH_PROG([DOT], [dot]) if test "x$DOT" != "x"; then HAVE_DOT=yes fi fi AC_SUBST([HAVE_DOT]) AM_CONDITIONAL([HAVE_DOT], [test "$HAVE_DOT" = "yes"]) AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes]) ]) # XORG_WITH_DOXYGEN # XORG_WITH_GROFF([DEFAULT]) # ---------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.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 flexibility in making decisions # as whether or not to use the groff package. When DEFAULT is not specified, # --with-groff assumes 'auto'. # # 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 # # Added in version 1.9.0: # HAVE_GROFF_HTML: groff has dependencies to output HTML format: # pnmcut pnmcrop pnmtopng pnmtops from the netpbm package. # psselect from the psutils package. # the ghostcript package. Refer to the grohtml man pages # # 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]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_WITH(groff, AS_HELP_STRING([--with-groff], [Use groff to regenerate documentation (default: ]_defopt[)]), [use_groff=$withval], [use_groff=]_defopt) m4_undefine([_defopt]) 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 # We have groff, test for HTML dependencies, one command per package if test "x$have_groff" = x"yes"; then AC_PATH_PROGS(GS_PATH, [gs gswin32c]) AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng]) AC_PATH_PROG(PSSELECT_PATH, [psselect]) if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then have_groff_html=yes else have_groff_html=no AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages]) fi fi # Set Automake conditionals for Makefiles 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]) AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) ]) # XORG_WITH_GROFF # XORG_WITH_FOP([MIN-VERSION], [DEFAULT]) # --------------------------------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.0 # Minimum version for optional MIN-VERSION argument: 1.15.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 flexibility in making decisions # as whether or not to use the fop package. When DEFAULT is not specified, # --with-fop assumes 'auto'. # # 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]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(fop, AS_HELP_STRING([--with-fop], [Use fop to regenerate documentation (default: ]_defopt[)]), [use_fop=$withval], [use_fop=]_defopt) m4_undefine([_defopt]) 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 # Test for a minimum version of fop, if provided. m4_ifval([$1], [if test "$have_fop" = yes; then # scrape the fop version AC_MSG_CHECKING([for fop minimum version]) fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3` AC_MSG_RESULT([$fop_version]) AS_VERSION_COMPARE([$fop_version], [$1], [if test "x$use_fop" = xauto; then AC_MSG_WARN([fop version $fop_version found, but $1 needed]) have_fop=no else AC_MSG_ERROR([fop version $fop_version found, but $1 needed]) fi]) fi]) AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) ]) # XORG_WITH_FOP # XORG_WITH_M4([MIN-VERSION]) # --------------------------- # Minimum version: 1.19.0 # # This macro attempts to locate an m4 macro processor which supports # -I option and is only useful for modules relying on M4 in order to # expand macros in source code files. # # Interface to module: # M4: returns the path of the m4 program found # returns the path set by the user in the environment # AC_DEFUN([XORG_WITH_M4], [ AC_CACHE_CHECK([for m4 that supports -I option], [ac_cv_path_M4], [AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4], [[$ac_path_M4 -I. /dev/null > /dev/null 2>&1 && \ ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], [AC_MSG_ERROR([could not find m4 that supports -I option])], [$PATH:/usr/gnu/bin])]) AC_SUBST([M4], [$ac_cv_path_M4]) ]) # XORG_WITH_M4 # XORG_WITH_PS2PDF([DEFAULT]) # ---------------- # Minimum version: 1.6.0 # Minimum version for optional DEFAULT argument: 1.11.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 flexibility in making decisions # as whether or not to use the ps2pdf package. When DEFAULT is not specified, # --with-ps2pdf assumes 'auto'. # # 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]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_WITH(ps2pdf, AS_HELP_STRING([--with-ps2pdf], [Use ps2pdf to regenerate documentation (default: ]_defopt[)]), [use_ps2pdf=$withval], [use_ps2pdf=]_defopt) m4_undefine([_defopt]) 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 flexibility 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],[ m4_define([docs_default], m4_default([$1], [yes])) AC_ARG_ENABLE(docs, AS_HELP_STRING([--enable-docs], [Enable building the documentation (default: ]docs_default[)]), [build_docs=$enableval], [build_docs=]docs_default) m4_undefine([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 flexibility 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],[ m4_define([devel_default], m4_default([$1], [yes])) AC_ARG_ENABLE(devel-docs, AS_HELP_STRING([--enable-devel-docs], [Enable building the developer documentation (default: ]devel_default[)]), [build_devel_docs=$enableval], [build_devel_docs=]devel_default) m4_undefine([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 flexibility 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],[ m4_define([spec_default], m4_default([$1], [yes])) AC_ARG_ENABLE(specs, AS_HELP_STRING([--enable-specs], [Enable building the specs (default: ]spec_default[)]), [build_specs=$enableval], [build_specs=]spec_default) m4_undefine([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_ENABLE_UNIT_TESTS (enable_unit_tests=auto) # ---------------------------------------------- # Minimum version: 1.13.0 # # This macro enables a builder to enable/disable unit testing # It makes no assumption about the test cases implementation # Test cases may or may not use Automake "Support for test suites" # They may or may not use the software utility library GLib # # When used in conjunction with XORG_WITH_GLIB, use both AM_CONDITIONAL # ENABLE_UNIT_TESTS and HAVE_GLIB. Not all unit tests may use glib. # The variable enable_unit_tests is used by other macros in this file. # # Interface to module: # ENABLE_UNIT_TESTS: used in makefiles to conditionally build tests # enable_unit_tests: used in configure.ac for additional configuration # --enable-unit-tests: 'yes' user instructs the module to build tests # 'no' user instructs the module not to build tests # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_UNIT_TESTS],[ AC_BEFORE([$0], [XORG_WITH_GLIB]) AC_BEFORE([$0], [XORG_LD_WRAP]) AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests], [Enable building unit test cases (default: ]_defopt[)]), [enable_unit_tests=$enableval], [enable_unit_tests=]_defopt) m4_undefine([_defopt]) AM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno]) AC_MSG_CHECKING([whether to build unit test cases]) AC_MSG_RESULT([$enable_unit_tests]) ]) # XORG_ENABLE_UNIT_TESTS # XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto) # ------------------------------------------------------ # Minimum version: 1.17.0 # # This macro enables a builder to enable/disable integration testing # It makes no assumption about the test cases' implementation # Test cases may or may not use Automake "Support for test suites" # # Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support # usually requires less dependencies and may be built and run under less # stringent environments than integration tests. # # Interface to module: # ENABLE_INTEGRATION_TESTS: used in makefiles to conditionally build tests # enable_integration_tests: used in configure.ac for additional configuration # --enable-integration-tests: 'yes' user instructs the module to build tests # 'no' user instructs the module not to build tests # parm1: specify the default value, yes or no. # AC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[ AC_REQUIRE([XORG_MEMORY_CHECK_FLAGS]) m4_define([_defopt], m4_default([$1], [auto])) AC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests], [Enable building integration test cases (default: ]_defopt[)]), [enable_integration_tests=$enableval], [enable_integration_tests=]_defopt) m4_undefine([_defopt]) AM_CONDITIONAL([ENABLE_INTEGRATION_TESTS], [test "x$enable_integration_tests" != xno]) AC_MSG_CHECKING([whether to build unit test cases]) AC_MSG_RESULT([$enable_integration_tests]) ]) # XORG_ENABLE_INTEGRATION_TESTS # XORG_WITH_GLIB([MIN-VERSION], [DEFAULT]) # ---------------------------------------- # Minimum version: 1.13.0 # # GLib is a library which provides advanced data structures and functions. # This macro enables a module to test for the presence of Glib. # # When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # # Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit # test support usually requires less dependencies and may be built and run under # less stringent environments than integration tests. # # Interface to module: # HAVE_GLIB: used in makefiles to conditionally build targets # with_glib: used in configure.ac to know if GLib has been found # --with-glib: 'yes' user instructs the module to use glib # 'no' user instructs the module not to use glib # AC_DEFUN([XORG_WITH_GLIB],[ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) m4_define([_defopt], m4_default([$2], [auto])) AC_ARG_WITH(glib, AS_HELP_STRING([--with-glib], [Use GLib library for unit testing (default: ]_defopt[)]), [with_glib=$withval], [with_glib=]_defopt) m4_undefine([_defopt]) have_glib=no # Do not probe GLib if user explicitly disabled unit testing if test "x$enable_unit_tests" != x"no"; then # Do not probe GLib if user explicitly disabled it if test "x$with_glib" != x"no"; then m4_ifval( [$1], [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])], [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])] ) fi fi # Not having GLib when unit testing has been explicitly requested is an error if test "x$enable_unit_tests" = x"yes"; then if test "x$have_glib" = x"no"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) fi fi # Having unit testing disabled when GLib has been explicitly requested is an error if test "x$enable_unit_tests" = x"no"; then if test "x$with_glib" = x"yes"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found]) fi fi # Not having GLib when it has been explicitly requested is an error if test "x$with_glib" = x"yes"; then if test "x$have_glib" = x"no"; then AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found]) fi fi AM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes]) ]) # XORG_WITH_GLIB # XORG_LD_WRAP([required|optional]) # --------------------------------- # Minimum version: 1.13.0 # # Check if linker supports -wrap, passed via compiler flags # # When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing. # Otherwise the value of $enable_unit_tests is blank. # # Argument added in 1.16.0 - default is "required", to match existing behavior # of returning an error if enable_unit_tests is yes, and ld -wrap is not # available, an argument of "optional" allows use when some unit tests require # ld -wrap and others do not. # AC_DEFUN([XORG_LD_WRAP],[ XORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no], [AC_LANG_PROGRAM([#include void __wrap_exit(int status) { return; }], [exit(0);])]) # Not having ld wrap when unit testing has been explicitly requested is an error if test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then if test "x$have_ld_wrap" = x"no"; then AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available]) fi fi AM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes]) # ]) # XORG_LD_WRAP # XORG_CHECK_LINKER_FLAGS # ----------------------- # SYNOPSIS # # XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE]) # # DESCRIPTION # # Check whether the given linker FLAGS work with the current language's # linker, or whether they give an error. # # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # # PROGRAM-SOURCE is the program source to link with, if needed # # NOTE: Based on AX_CHECK_COMPILER_FLAGS. # # LICENSE # # Copyright (c) 2009 Mike Frysinger # Copyright (c) 2009 Steven G. Johnson # Copyright (c) 2009 Matteo Frigo # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well.# AC_DEFUN([XORG_CHECK_LINKER_FLAGS], [AC_MSG_CHECKING([whether the linker accepts $1]) dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: AS_LITERAL_IF([$1], [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [ ax_save_FLAGS=$LDFLAGS LDFLAGS="$1" AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])], AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, AS_TR_SH(xorg_cv_linker_flags_[$1])=no) LDFLAGS=$ax_save_FLAGS])], [ax_save_FLAGS=$LDFLAGS LDFLAGS="$1" AC_LINK_IFELSE([AC_LANG_PROGRAM()], eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes, eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no) LDFLAGS=$ax_save_FLAGS]) eval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1]) AC_MSG_RESULT($xorg_check_linker_flags) if test "x$xorg_check_linker_flags" = xyes; then m4_default([$2], :) else m4_default([$3], :) fi ]) # XORG_CHECK_LINKER_FLAGS # XORG_MEMORY_CHECK_FLAGS # ----------------------- # Minimum version: 1.16.0 # # This macro attempts to find appropriate memory checking functionality # for various platforms which unit testing code may use to catch various # forms of memory allocation and access errors in testing. # # Interface to module: # XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging # Usually added to TESTS_ENVIRONMENT in Makefile.am # # If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim. # AC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_ARG_VAR([XORG_MALLOC_DEBUG_ENV], [Environment variables to enable memory checking in tests]) # Check for different types of support on different platforms case $host_os in solaris*) AC_CHECK_LIB([umem], [umem_alloc], [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default']) ;; *-gnu*) # GNU libc - Value is used as a single byte bit pattern, # both directly and inverted, so should not be 0 or 255. malloc_debug_env='MALLOC_PERTURB_=15' ;; darwin*) malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib' ;; *bsd*) malloc_debug_env='MallocPreScribble=1 MallocScribble=1' ;; esac # User supplied flags override default flags if test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then malloc_debug_env="$XORG_MALLOC_DEBUG_ENV" fi AC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env]) ]) # XORG_WITH_LINT # XORG_CHECK_MALLOC_ZERO # ---------------------- # Minimum version: 1.0.0 # # Defines {MALLOC,XMALLOC,XTMALLOC}_ZERO_CFLAGS appropriately if # malloc(0) returns NULL. Packages should add one of these cflags to # their AM_CFLAGS (or other appropriate *_CFLAGS) to use them. AC_DEFUN([XORG_CHECK_MALLOC_ZERO],[ AC_ARG_ENABLE(malloc0returnsnull, AS_HELP_STRING([--enable-malloc0returnsnull], [malloc(0) returns NULL (default: auto)]), [MALLOC_ZERO_RETURNS_NULL=$enableval], [MALLOC_ZERO_RETURNS_NULL=auto]) AC_MSG_CHECKING([whether malloc(0) returns NULL]) if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then AC_CACHE_VAL([xorg_cv_malloc0_returns_null], [AC_RUN_IFELSE([AC_LANG_PROGRAM([ #include ],[ char *m0, *r0, *c0, *p; m0 = malloc(0); p = malloc(10); r0 = realloc(p,0); c0 = calloc(0,10); exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1); ])], [xorg_cv_malloc0_returns_null=yes], [xorg_cv_malloc0_returns_null=no])]) MALLOC_ZERO_RETURNS_NULL=$xorg_cv_malloc0_returns_null fi AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL]) if test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL" XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC" else MALLOC_ZERO_CFLAGS="" XMALLOC_ZERO_CFLAGS="" XTMALLOC_ZERO_CFLAGS="" fi AC_SUBST([MALLOC_ZERO_CFLAGS]) AC_SUBST([XMALLOC_ZERO_CFLAGS]) AC_SUBST([XTMALLOC_ZERO_CFLAGS]) ]) # XORG_CHECK_MALLOC_ZERO # XORG_WITH_LINT() # ---------------- # Minimum version: 1.1.0 # # This macro enables the use of a tool that flags some suspicious and # non-portable constructs (likely to be bugs) in C language source code. # It will attempt to locate the tool and use appropriate options. # There are various lint type tools on different platforms. # # Interface to module: # LINT: returns the path to the tool found on the platform # or the value set to LINT on the configure cmd line # also an Automake conditional # LINT_FLAGS: an Automake variable with appropriate flags # # --with-lint: 'yes' user instructs the module to use lint # 'no' user instructs the module not to use lint (default) # # If the user sets the value of LINT, AC_PATH_PROG skips testing the path. # If the user sets the value of LINT_FLAGS, they are used verbatim. # AC_DEFUN([XORG_WITH_LINT],[ AC_ARG_VAR([LINT], [Path to a lint-style command]) AC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command]) AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint], [Use a lint-style source code checker (default: disabled)])], [use_lint=$withval], [use_lint=no]) # Obtain platform specific info like program name and options # The lint program on FreeBSD and NetBSD is different from the one on Solaris case $host_os in *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*) lint_name=splint lint_options="-badflag" ;; *freebsd* | *netbsd*) lint_name=lint lint_options="-u -b" ;; *solaris*) lint_name=lint lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2" ;; esac # Test for the presence of the program (either guessed by the code or spelled out by the user) if test "x$use_lint" = x"yes" ; then AC_PATH_PROG([LINT], [$lint_name]) if test "x$LINT" = "x"; then AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH]) fi elif test "x$use_lint" = x"no" ; then if test "x$LINT" != "x"; then AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified]) fi else AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.]) fi # User supplied flags override default flags if test "x$LINT_FLAGS" != "x"; then lint_options=$LINT_FLAGS fi AC_SUBST([LINT_FLAGS],[$lint_options]) AM_CONDITIONAL(LINT, [test "x$LINT" != x]) ]) # XORG_WITH_LINT # XORG_LINT_LIBRARY(LIBNAME) # -------------------------- # Minimum version: 1.1.0 # # Sets up flags for building lint libraries for checking programs that call # functions in the library. # # Interface to module: # LINTLIB - Automake variable with the name of lint library file to make # MAKE_LINT_LIB - Automake conditional # # --enable-lint-library: - 'yes' user instructs the module to created a lint library # - 'no' user instructs the module not to create a lint library (default) AC_DEFUN([XORG_LINT_LIBRARY],[ AC_REQUIRE([XORG_WITH_LINT]) 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" = x"yes" ; then LINTLIB=llib-l$1.ln if test "x$LINT" = "x"; then AC_MSG_ERROR([Cannot make lint library without --with-lint]) fi elif test "x$make_lint_lib" != x"no" ; then AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.]) fi AC_SUBST(LINTLIB) AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) ]) # XORG_LINT_LIBRARY # XORG_COMPILER_BRAND # ------------------- # Minimum version: 1.14.0 # # Checks for various brands of compilers and sets flags as appropriate: # GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes" # GNU g++ - relies on AC_PROG_CXX to set GXX to "yes" # clang compiler - sets CLANGCC to "yes" # Intel compiler - sets INTELCC to "yes" # Sun/Oracle Solaris Studio cc - sets SUNCC to "yes" # AC_DEFUN([XORG_COMPILER_BRAND], [ AC_LANG_CASE( [C], [ dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC dnl and complains that AC_PROG_CC_C99 is obsolete m4_version_prereq([2.70], [AC_REQUIRE([AC_PROG_CC])], [AC_REQUIRE([AC_PROG_CC_C99])]) ], [C++], [ AC_REQUIRE([AC_PROG_CXX]) ] ) AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"]) AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"]) AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) ]) # XORG_COMPILER_BRAND # XORG_TESTSET_CFLAG(, , [, ...]) # --------------- # Minimum version: 1.16.0 # # Test if the compiler works when passed the given flag as a command line argument. # If it succeeds, the flag is appended to the given variable. If not, it tries the # next flag in the list until there are no more options. # # Note that this does not guarantee that the compiler supports the flag as some # compilers will simply ignore arguments that they do not understand, but we do # attempt to weed out false positives by using -Werror=unknown-warning-option and # -Werror=unused-command-line-argument # AC_DEFUN([XORG_TESTSET_CFLAG], [ m4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) m4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])]) AC_LANG_COMPILER_REQUIRE AC_LANG_CASE( [C], [ dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC dnl and complains that AC_PROG_CC_C99 is obsolete m4_version_prereq([2.70], [AC_REQUIRE([AC_PROG_CC])], [AC_REQUIRE([AC_PROG_CC_C99])]) define([PREFIX], [C]) define([CACHE_PREFIX], [cc]) define([COMPILER], [$CC]) ], [C++], [ define([PREFIX], [CXX]) define([CACHE_PREFIX], [cxx]) define([COMPILER], [$CXX]) ] ) [xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]" if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option], AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes], [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no])) [xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option] PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" fi if test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" fi PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument], AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes], [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no])) [xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument] PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" fi found="no" m4_foreach([flag], m4_cdr($@), [ if test $found = "no" ; then if test "x$xorg_testset_]CACHE_PREFIX[_unknown_warning_option" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option" fi if test "x$xorg_testset_]CACHE_PREFIX[_unused_command_line_argument" = "xyes" ; then PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument" fi PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag[" dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname AC_MSG_CHECKING([if ]COMPILER[ supports ]flag[]) cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[]) AC_CACHE_VAL($cacheid, [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])], [eval $cacheid=yes], [eval $cacheid=no])]) PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]" eval supported=\$$cacheid AC_MSG_RESULT([$supported]) if test "$supported" = "yes" ; then $1="$$1 ]flag[" found="yes" fi fi ]) ]) # XORG_TESTSET_CFLAG # XORG_COMPILER_FLAGS # --------------- # Minimum version: 1.16.0 # # Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line # arguments supported by the selected compiler which do NOT alter the generated # code. These arguments will cause the compiler to print various warnings # during compilation AND turn a conservative set of warnings into errors. # # The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in # future versions of util-macros as options are added to new compilers. # AC_DEFUN([XORG_COMPILER_FLAGS], [ AC_REQUIRE([XORG_COMPILER_BRAND]) AC_ARG_ENABLE(selective-werror, AS_HELP_STRING([--disable-selective-werror], [Turn off selective compiler errors. (default: enabled)]), [SELECTIVE_WERROR=$enableval], [SELECTIVE_WERROR=yes]) AC_LANG_CASE( [C], [ define([PREFIX], [C]) ], [C++], [ define([PREFIX], [CXX]) ] ) # -v is too short to test reliably with XORG_TESTSET_CFLAG if test "x$SUNCC" = "xyes"; then [BASE_]PREFIX[FLAGS]="-v" else [BASE_]PREFIX[FLAGS]="" fi # This chunk of warnings were those that existed in the legacy CWARNFLAGS XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat]) AC_LANG_CASE( [C], [ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition], [-fd]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement]) ] ) # This chunk adds additional warnings that could catch undesired effects. XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op]) # These are currently disabled because they are noisy. They will be enabled # in the future once the codebase is sufficiently modernized to silence # them. For now, I don't want them to drown out the other warnings. # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align]) # XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual]) # Turn some warnings into errors, so we don't accidentally get successful builds # when there are problems that should be fixed. if test "x$SELECTIVE_WERROR" = "xyes" ; then XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION else AC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors. This should not be necessary. Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast]) XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast]) fi AC_SUBST([BASE_]PREFIX[FLAGS]) ]) # XORG_COMPILER_FLAGS # XORG_CWARNFLAGS # --------------- # Minimum version: 1.2.0 # Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead) # # Defines CWARNFLAGS to enable C compiler warnings. # # This function is deprecated because it defines -fno-strict-aliasing # which alters the code generated by the compiler. If -fno-strict-aliasing # is needed, then it should be added explicitly in the module when # it is updated to use BASE_CFLAGS. # AC_DEFUN([XORG_CWARNFLAGS], [ AC_REQUIRE([XORG_COMPILER_FLAGS]) AC_REQUIRE([XORG_COMPILER_BRAND]) AC_LANG_CASE( [C], [ CWARNFLAGS="$BASE_CFLAGS" if test "x$GCC" = xyes ; then CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing" fi AC_SUBST(CWARNFLAGS) ] ) ]) # XORG_CWARNFLAGS # XORG_STRICT_OPTION # ----------------------- # Minimum version: 1.3.0 # # Add configure option to enable strict compilation flags, such as treating # warnings as fatal errors. # If --enable-strict-compilation is passed to configure, adds strict flags to # $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS. # # Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or # when strict compilation is unconditionally desired. AC_DEFUN([XORG_STRICT_OPTION], [ AC_REQUIRE([XORG_CWARNFLAGS]) AC_REQUIRE([XORG_COMPILER_FLAGS]) 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]) AC_LANG_CASE( [C], [ define([PREFIX], [C]) ], [C++], [ define([PREFIX], [CXX]) ] ) [STRICT_]PREFIX[FLAGS]="" XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic]) XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn]) # Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not # activate it with -Werror, so we add it here explicitly. XORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes]) if test "x$STRICT_COMPILE" = "xyes"; then [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]" AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"]) fi AC_SUBST([STRICT_]PREFIX[FLAGS]) AC_SUBST([BASE_]PREFIX[FLAGS]) AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS])) ]) # XORG_STRICT_OPTION # XORG_DEFAULT_NOCODE_OPTIONS # --------------------------- # Minimum version: 1.20.0 # # Defines default options for X.Org modules which don't compile code, # such as fonts, bitmaps, cursors, and docs. # AC_DEFUN([XORG_DEFAULT_NOCODE_OPTIONS], [ AC_REQUIRE([AC_PROG_INSTALL]) 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_NOCODE_OPTIONS # XORG_DEFAULT_OPTIONS # -------------------- # Minimum version: 1.3.0 # # Defines default options for X.Org modules which compile code. # AC_DEFUN([XORG_DEFAULT_OPTIONS], [ AC_REQUIRE([AC_PROG_INSTALL]) XORG_COMPILER_FLAGS XORG_CWARNFLAGS XORG_STRICT_OPTION XORG_DEFAULT_NOCODE_OPTIONS ]) # 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; test -e \$(top_srcdir)/INSTALL || ( \ touch \$(top_srcdir)/INSTALL; \ echo 'failed to copy INSTALL from util-macros: installing 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 dnl documentation for any purpose is hereby granted without fee, provided that dnl the above copyright notice appear in all copies and that both that dnl copyright notice and this permission notice appear in supporting dnl documentation. dnl dnl The above copyright notice and this permission notice shall be included dnl in all copies or substantial portions of the Software. 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 IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR dnl OTHER DEALINGS IN THE SOFTWARE. dnl dnl Except as contained in this notice, the name of the copyright holders shall dnl not be used in advertising or otherwise to promote the sale, use or dnl other dealings in this Software without prior written authorization dnl from the copyright holders. dnl # XORG_RELEASE_VERSION # -------------------- # Defines PACKAGE_VERSION_{MAJOR,MINOR,PATCHLEVEL} for modules to use. AC_DEFUN([XORG_RELEASE_VERSION],[ AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], [`echo $PACKAGE_VERSION | cut -d . -f 1`], [Major version of this package]) PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], [$PVM], [Minor version of this package]) PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_PATCHLEVEL], [$PVP], [Patch version of this package]) ]) # XORG_CHANGELOG() # ---------------- # Minimum version: 1.2.0 # # Defines the variable CHANGELOG_CMD as the command to generate # ChangeLog from git. # # AC_DEFUN([XORG_CHANGELOG], [ CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \ touch \$(top_srcdir)/ChangeLog; \ echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))" AC_SUBST([CHANGELOG_CMD]) ]) # XORG_CHANGELOG xorg-docs-1.7.3/registry0000644014310600000120000011513414600067622010703 X Registry The X.Org Foundation is maintaining a registry of certain X-related items, to aid in avoiding conflicts and to aid in sharing of such items. Requests to register items, or questions about registration, should be addressed to xregistry@x.org Electronic mail will be acknowledged upon receipt. Please allow up to 4 weeks for a formal response to registration and inquiries. The registry is published as part of the X software distribution from The X.Org Foundation. The latest registry can be found at: https://gitlab.freedesktop.org/xorg/doc/xorg-docs/blob/master/registry All registered items must have the postal address of someone responsible for the item, or a reference to a document describing the item and the postal address of where to write to obtain the document. Registration of conflicting items will not be permitted (the same value will not be assigned two different meanings) except where explicitly indicated. 1. ORGANIZATION NAMES These should generally be used as prefixes for other registered names. Name Reference ---- --------- "Acorn" [49] "Adobe" [69] "AIX" [33] "ALLINK" [99] "APOLLO" [1] "Apple" [22] "ARDENT" [2] "BBN" [61] "Compaq" [82] "CRAB" [84] "CRUC" [30] "DEC" [82] "DG" [48] "DME" [7] "Dt" [114] "EFW" [124] "ES" [75] "FXD" [55] "FUJITSU" [87] "HP" [35] "IBM" [33] "ICS" [31] "ILA" [62] "IPSYS" [59] "IXI" [20] "JCC" [90] "JUP" [93] "KPC" [98] "LJK" [56] "LTA" [60] "MEGATEK" [112] "Metheus" [117] "MIT" [8] "MOTIF" [7] "NCD" [66] "OMRON" [45] "ORL" [65] "OSF" [7] "Panasonic" [52] "PERITEK" [116] "PFU" [32] "RATIONAL" [88] "SGCS" [83] "SGI" [6] "SONY" [37] "stellar" [28] "STI" [73] "Sun" [58] "Tech-Source" [106] "TEK" [43] "TOG" [133] "visual" [5] "VIT" [46] "WN" [103] "WRI" [102] "WYSE" [68] "X/software" [115] "X3D" [8] "XC" [104] "Xerox" [91] "XFree86" [113] "XUG" [31] 2. KEYSYMS Only "private" keysyms (with 29th bit set) can be registered by organizations; standard keysyms must be approved by the X.Org Foundation. Since keysym numeric values are explicitly private, we will permit (but not encourage) conflicting registration here. Name Value Reference ---- ----- --------- hpXK_mute_acute 0x100000A8 [36] hpXK_mute_grave 0x100000A9 [36] hpXK_mute_asciicircum 0x100000AA [36] hpXK_mute_diaeresis 0x100000AB [36] hpXK_mute_asciitilde 0x100000AC [36] hpXK_lira 0x100000AF [36] hpXK_guilder 0x100000BE [36] hpXK_Ydiaeresis 0x100000EE [36] hpXK_IO 0x100000EE [36] hpXK_longminus 0x100000F6 [36] hpXK_block 0x100000FC [36] apXK_LineDel 0x1000FF00 [1] apXK_CharDel 0x1000FF01 [1] apXK_Copy 0x1000FF02 [1] apXK_Cut 0x1000FF03 [1] apXK_Paste 0x1000FF04 [1] apXK_Move 0x1000FF05 [1] apXK_Grow 0x1000FF06 [1] apXK_Cmd 0x1000FF07 [1] apXK_Shell 0x1000FF08 [1] apXK_LeftBar 0x1000FF09 [1] apXK_RightBar 0x1000FF0A [1] apXK_LeftBox 0x1000FF0B [1] apXK_RightBox 0x1000FF0C [1] apXK_UpBox 0x1000FF0D [1] apXK_DownBox 0x1000FF0E [1] apXK_Pop 0x1000FF0F [1] apXK_Read 0x1000FF10 [1] apXK_Edit 0x1000FF11 [1] apXK_Save 0x1000FF12 [1] apXK_Exit 0x1000FF13 [1] apXK_Repeat 0x1000FF14 [1] hpXK_Modelock1 0x1000FF48 [36] hpXK_Modelock2 0x1000FF49 [36] hpXK_Reset 0x1000FF6C [36] hpXK_System 0x1000FF6D [36] hpXK_User 0x1000FF6E [36] hpXK_ClearLine 0x1000FF6F [36] hpXK_InsertLine 0x1000FF70 [36] hpXK_DeleteLine 0x1000FF71 [36] hpXK_InsertChar 0x1000FF72 [36] hpXK_DeleteChar 0x1000FF73 [36] hpXK_BackTab 0x1000FF74 [36] hpXK_KP_BackTab 0x1000FF75 [36] apXK_KP_parenleft 0x1000FFA8 [1] apXK_KP_parenright 0x1000FFA9 [1] IXK_2ND_FUNC_L 0x10004001 [50] IXK_2ND_FUNC_R 0x10004002 [50] IXK_REMOVE 0x10004003 [50] IXK_REPEAT 0x10004004 [50] IXK_A1 0x10004101 [50] IXK_A2 0x10004102 [50] IXK_A3 0x10004103 [50] IXK_A4 0x10004104 [50] IXK_A5 0x10004105 [50] IXK_A6 0x10004106 [50] IXK_A7 0x10004107 [50] IXK_A8 0x10004108 [50] IXK_A9 0x10004109 [50] IXK_A10 0x1000410A [50] IXK_A11 0x1000410B [50] IXK_A12 0x1000410C [50] IXK_A13 0x1000410D [50] IXK_A14 0x1000410E [50] IXK_A15 0x1000410F [50] IXK_B1 0x10004201 [50] IXK_B2 0x10004202 [50] IXK_B3 0x10004203 [50] IXK_B4 0x10004204 [50] IXK_B5 0x10004205 [50] IXK_B6 0x10004206 [50] IXK_B7 0x10004207 [50] IXK_B8 0x10004208 [50] IXK_B9 0x10004209 [50] IXK_B10 0x1000420A [50] IXK_B11 0x1000420B [50] IXK_B12 0x1000420C [50] IXK_B13 0x1000420D [50] IXK_B14 0x1000420E [50] IXK_B15 0x1000420F [50] IXK_B16 0x10004210 [50] DXK_Remove 0x1000FF00 [27] DXK_ring_accent 0x1000FEB0 [27] DXK_circumflex_accent 0x1000FE5E [27] DXK_cedilla_accent 0x1000FE2C [27] DXK_acute_accent 0x1000FE27 [27] DXK_grave_accent 0x1000FE60 [27] DXK_tilde 0x1000FE7E [27] DXK_diaeresis 0x1000FE22 [27] osfXK_Copy 0x1004FF02 [7] osfXK_Cut 0x1004FF03 [7] osfXK_Paste 0x1004FF04 [7] osfXK_BackTab 0x1004FF07 [7] osfXK_BackSpace 0x1004FF08 [7] osfXK_Clear 0x1004FF0B [7] osfXK_Escape 0x1004FF1B [7] osfXK_AddMode 0x1004FF31 [7] osfXK_PrimaryPaste 0x1004FF32 [7] osfXK_QuickPaste 0x1004FF33 [7] osfXK_PageLeft 0x1004FF40 [7] osfXK_PageUp 0x1004FF41 [7] osfXK_PageDown 0x1004FF42 [7] osfXK_PageRight 0x1004FF43 [7] osfXK_Activate 0x1004FF44 [7] osfXK_MenuBar 0x1004FF45 [7] osfXK_Left 0x1004FF51 [7] osfXK_Up 0x1004FF52 [7] osfXK_Right 0x1004FF53 [7] osfXK_Down 0x1004FF54 [7] osfXK_Prior 0x1004FF55 [7] osfXK_Next 0x1004FF56 [7] osfXK_EndLine 0x1004FF57 [7] osfXK_BeginLine 0x1004FF58 [7] osfXK_EndData 0x1004FF59 [7] osfXK_BeginData 0x1004FF5A [7] osfXK_PrevMenu 0x1004FF5B [7] osfXK_NextMenu 0x1004FF5C [7] osfXK_PrevField 0x1004FF5D [7] osfXK_NextField 0x1004FF5E [7] osfXK_Select 0x1004FF60 [7] osfXK_Insert 0x1004FF63 [7] osfXK_Undo 0x1004FF65 [7] osfXK_Menu 0x1004FF67 [7] osfXK_Cancel 0x1004FF69 [7] osfXK_Help 0x1004FF6A [7] osfXK_SelectAll 0x1004FF71 [7] osfXK_DeselectAll 0x1004FF72 [7] osfXK_Reselect 0x1004FF73 [7] osfXK_Extend 0x1004FF74 [7] osfXK_Restore 0x1004FF78 [7] osfXK_SwitchDirection 0x1004FF7E [7] osfXK_PriorMinor 0x1004FFF5 [7] osfXK_NextMinor 0x1004FFF6 [7] osfXK_RightLine 0x1004FFF7 [7] osfXK_LeftLine 0x1004FFF8 [7] osfXK_Delete 0x1004FFFF [7] SunXK_FA_Grave 0x1005FF00 [58] SunXK_FA_Circum 0x1005FF01 [58] SunXK_FA_Tilde 0x1005FF02 [58] SunXK_FA_Acute 0x1005FF03 [58] SunXK_FA_Diaeresis 0x1005FF04 [58] SunXK_FA_Cedilla 0x1005FF05 [58] SunXK_F36 0x1005FF10 [58] SunXK_F37 0x1005FF11 [58] SunXK_Sys_Req 0x1005FF60 [58] SunXK_Props 0x1005FF70 [58] SunXK_Front 0x1005FF71 [58] SunXK_Copy 0x1005FF72 [58] SunXK_Open 0x1005FF73 [58] SunXK_Paste 0x1005FF74 [58] SunXK_Cut 0x1005FF75 [58] SunXK_PowerSwitch 0x1005FF76 [58] SunXK_AudioLowerVolume 0x1005FF77 [58] SunXK_AudioMute 0x1005FF78 [58] SunXK_AudioRaiseVolume 0x1005FF79 [58] SunXK_VideoDegauss 0x1005FF7A [58] SunXK_VideoLowerBrightness 0x1005FF7B [58] SunXK_VideoRaiseBrightness 0x1005FF7C [58] SunXK_PowerSwitchShift 0x1005FF7D [58] WYXK_Setup 0x1006FF00 [68] ncdXK_Setup 0x1006FF00 [66] XeroxXK_PointerButton1 0x10070001 [91] XeroxXK_PointerButton2 0x10070002 [91] XeroxXK_PointerButton3 0x10070003 [91] XeroxXK_PointerButton4 0x10070004 [91] XeroxXK_PointerButton5 0x10070005 [91] XF86XK_ModeLock 0x1008FF01 [113] Range 0x11000000 to 0x1100FFFF is allocated for keypad keysyms. 3. AUTHORIZATION PROTOCOL NAMES See Section 8 of the protocol. Names should generally have an organizational prefix. Name Reference ---- --------- "MIT-KERBEROS-4" [21] "MIT-KERBEROS-5" [21] "MIT-MAGIC-COOKIE-1" [8] "SUN-DES-1" [57] "XC-QUERY-SECURITY-1" [8] "XDM-AUTHORIZATION-1" [8], [11] 4. VENDOR STRING FORMATS See Section 8 of the protocol. String Reference ---- --------- "Acorn Computers Ltd" [49] "Apollo Computer Inc." [1] "Apple Computer, Inc." [22] "Ardent Computer Corporation" [2] "Compaq Computer Corporation" [82] "Crab Advanced Technologies Ltd" [84] "Crucible" [30] "Data General Corporation" [48] "Digital Equipment Corporation" [82] "EFW, Inc." [124] "Evans & Sutherland" [75] "FUJITSU LIMITED" [87] "Hewlett-Packard Company" [35] "International Business Machines" [33] "JAPAN COMPUTER CORP." [90] "Jupiter Systems Inc." [93] "Kubota Pacific Computer" [98] "Matsushita Electric Industrial Co., Ltd." [52] "Megatek Corporation" [112] "Metheus Corporation" [117] "MIT X Consortium" [8] "Network Computing Devices Inc." [66] "OMRON Corporation" [45] "Peritek Corporation" [116] "PFU LIMITED" [32] "Silicon Graphics Computer Systems" [6] "Snitily Graphics Consulting Services" [83] "Sony Corporation" [37] "Stellar Computer Inc." [28] "Sun Microsystems, Inc." [101] "Tech-Source Inc." [106] "The XFree86 Project, Inc" [113] "The X.Org Foundation, Inc" [8] "The X.Org Group" [8] "The X.Org Group / The XFree86 Project, Inc" [113] [8] "VIT-Visual Information Technologies, Inc (VITec)" [46] "Wolfram Research, Inc." [102] "Wyse Technology Inc." [68] "X/software Germany" [115] "X11/NeWS - Sun Microsystems, Inc." [58] "X Consortium" [104] 5. PROTOCOL EXTENSION NAMES As used in the QueryExtension and ListExtensions protocol requests. The name should generally have an organizational prefix. Name Reference ---- --------- "Acorn-Noise" [49] "Adobe-DPS-Extension" [42] "AixDeviceControlExtension" [33] "AixExtension" [33] "AixEventControlExtension" [33] "AixStatExtension" [33] "AixDialExtension" [33] "AixLpfkExtension" [33] "APOLLO-SHARE" [1] "ARDENT-XDoubleBuffer" [2], [3] "ARDENT-XTitan" [2], [4] "bezier" [34] "BIG-REQUESTS" [97] "DEC-XTRAP" [51] "DOUBLE-BUFFER" [123] "DPMS" [132] "ESMultiScreenExtension" [75] "ESSetBitsExtension" [75] "ESTraverse3DExtension" [75] "ESVideoModeExtension" [75] "ESLayersExtension" [75] "ESCursorAttrExtension" [75] "ESPickExtension" [75] "FUJITSU-Control-Modifiers" [87] "FUJITSU-VX-VideoControl" [87] "FUJITSU-VX-DeviceControl" [87] "JUPMISC" [93] "KPC-XPeer" [98] "LBX" [125] "MEX-Metheus-Extension-to-X" [117] "MIT-SCREEN-SAVER" [96] "MIT-SHM" [8] "MIT-SUNDRY-NONSTANDARD" [8] "Multi-Buffering" [8], [10] "NCD-SIE" [66] "ORL-SYNC" [65] "PanasonicDosEmulatorExtension" [52] "PFU-GAOpAttr" [32] "RECORD" [122] "SECURITY" [126] "SGI-GLX" [6] "SGI-XGL" [6] "SGI-MISCELLANEOUS" [6] "SHAPE" [8], [13] "SonyKeyboardExtension" [37] "SonySoundExtension" [37] "SonyVideoExtension" [37] "SonyPrinterExtension" [37] "stellar-cm" [29] "stellar-db" [29] "stellar-im" [29] "stellar-shmLink" [28] "stellar-xfdi" [29] "stellar-xtest" [28] "SUN_TSOL" [121] "SYNC" [108] "TsiOvlExtension" [106] "TekCms" [43] "TeKDisplayListExtension" [43] "TeKHardCopySupport" [43] "TeKPeerWindows" [43] "TOG-CUP" [131] "VEX" [14] "VIT-Image Display List Extension" [46] "X/software X/bigX" [115] "X/software X/keymapX" [115] "X/software X/metaX" [115] "X/software X/shadowX" [115] "X/software X/translucentX" [115] "X3D-PEX" [8], [9] "XC-APPGROUP" [127] "XC-MISC" [109] "XFree86-VidModeExtension" [113] "XIE" [110] "XInputExtension" [128] "XINERAMA" [130] "XKEYBOARD" [111] "XPRINT" [129] "XTEST" [8] "XTestExtension1" [35] "XVideo" [118] "ZoidExtension" [34] 6. HOST FAMILIES See the "family" component of the HOST structure in the protocol. Values for private families will be assigned by The X.Org Foundation. Value Name Reference ----- ---- --------- 0 Internet [23] 1 DECnet [23] 2 Chaos [23] 5 ServerInterpreted [23] 6 InternetV6 [23] 33 Amoeba [8] 252 LocalHost [105] 253 Kerberos5Principal [94] 254 Netname [57] 7. PROPERTY NAMES As stored on windows in the server. See Sections 4.1.2, 4.1.3, 5.1.1, and 6.4 of the ICCCM, and Section 14.1 of the Xlib manual. Registration must include the context in which the property is used (e.g. root window, top-level client window). In general, private property names should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "RGB_DEFAULT_MAP" [18] "RGB_BEST_MAP" [18] "RGB_RED_MAP" [18] "RGB_GREEN_MAP" [18] "RGB_BLUE_MAP" [18] "RGB_GRAY_MAP" [18] "WM_CLASS" [16] "WM_CLIENT_MACHINE" [16] "WM_COLORMAP_WINDOW" [16] "WM_COMMAND" [16] "WM_HINTS" [16] "WM_ICON_NAME" [16] "WM_ICON_SIZE" [16] "WM_NAME" [16] "WM_NORMAL_HINTS" [16] "WM_PROTOCOLS" [16] "WM_STATE" [16] "WM_TRANSIENT_FOR" [16] "WM_ZOOM_HINTS" [17], [18] "_MIT_OBJ_CLASS" [94] "_NCD_WM_RUNNING" [66] "_RATIONAL_ROSE_TAG" [88] "_RATIONAL_ROSE_MSG" [88] "_SGI_GL_COLORMAP" [6] 8. PROPERTY TYPE NAMES See "PROPERTY NAMES" above. Name Reference ---- --------- "ATOM" [16] "ATOM_PAIR" [16] "BITMAP" [16] "COMPOUND_TEXT" [8], [12] "DRAWABLE" [16] "INCR" [16] "INCREMENTAL" [17], [16] "INTEGER" [16] "PIXMAP" [16] "RGB_COLOR_MAP" [18] "SPAN" [16] "STRING" [16] "UTF8_STRING" [134] "WINDOW" [16] "WM_HINTS" [16] "WM_ICON_SIZE" [16] "WM_SIZE_HINTS" [16] "WM_STATE" [16] "_SONY_CDFF" [37] "_SONY_XWD" [37] "_SONY_XPICT" [37] "_SJIS_STRING" [37] "_EUC_STRING" [37] "_JIS_STRING" [37] "_WRI_XWD_RLED" [102] "_XWNMO" [45] 9. SELECTION NAMES See Section 2.6.1 of the ICCCM. In general, private selection names should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "CLIPBOARD" [16] "PD_SELECTION" [37] "PRIMARY" [16] "PRIMARY_FONT" [47] "SECONDARY" [16] "_JAPANESE_CONVERSION" [37] "_CHINESE_CONVERSION" [37] "_HUNGLE_CONVERSION" [37] "_EUROPEAN_CONVERSION" [37] "__SAM_" (prefix) [67] 10. SELECTION TARGETS See Section 2.6.2 of the ICCCM. In general, private selection targets should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "BACKGROUND" [16] "BITMAP" [16] "CHARACTER_POSITION" [16] "CLASS" [16] "CLIENT_WINDOW" [16] "COLORMAP" [16] "COLUMN_NUMBER" [16] "COMPOUND_TEXT" [8], [12] "DELETE" [16] "DRAWABLE" [16] "FILE_NAME" [16] "FOREGROUND" [16] "HOST_NAME" [16] "INSERT_PROPERTY" [16] "INSERT_SELECTION" [16] "LENGTH" [16] "LINE_NUMBER" [16] "LIST_LENGTH" [16] "MODULE" [16] "MULTIPLE" [16] "NAME" [16] "ODIF" [16] "OWNER_OS" [16] "PIXMAP" [16] "PROCEDURE" [16] "PROCESS" [16] "STRING" [16] "TARGETS" [16] "TASK" [16] "TEXT" [16] "TIMESTAMP" [16] "USER" [16] "UTF8_STRING" [134] "_ADOBE_EPS" [69] "_ADOBE_EPSI" [69] "_SONY_CDFF" [37] "_SONY_XWD" [37] "_SONY_XPICT" [37] "_SJIS_STRING" [37] "_EUC_STRING" [37] "_JIS_STRING" [37] "_WRI_XWD_RLED" [102] 11. WM_PROTOCOLS PROTOCOLS See Section 4.1.2.7 of the ICCCM. In general, private protocols should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "WM_DELETE_WINDOW" [16] "WM_TAKE_FOCUS" [16] "WM_SAVE_YOURSELF" [16] 12. CLIENTMESSAGE TYPES See the "type" field in the ClientMessage event in the protocol, and Section 4.2.8 of the ICCCM. In general, private types should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "PD_ACTIVE" [37] "WM_CHANGE_STATE" [16] "WM_PROTOCOLS" [16] "_CONVERSION_REQUEST" [37] "_CONVERSION_NOTIFY" [37] "_CONVERSION_END" [37] 13. FONT FOUNDRY NAMES See Section 3.1.2.1 of the XLFD. This will typically be an organization name. Name Reference ---- --------- "Acorn" [49] "Adobe" [24] "AIX" [33] "Apple" [22] "Bitstream" [25] "Cognition" [89] "Cronyx" [120] "DEC" [27] "eands" [75] "fujitsu" [87] "FujiXerox" [64] "IBM" [33] "IPSYS" [59] "Metheus" [117] "MISC" [8] "NCD" [66] "omron" [45] "Panasonic" [52] "Sony" [37] "Sun" [92] 14. FONT CHARSET (REGISTRY AND ENCODING) NAMES See Sections 3.1.2.12 of the XLFD. For ISO standards, the format will generally be: "ISO" + + "-" + Name Reference ---- --------- "DEC" [27] registry prefix "DEC.CNS11643.1986-2" [53] CNS11643 2-plane using the encoding suggested in that standard "DEC.DTSCS.1990-2" [54] DEC Taiwan Supplemental Character Set "fujitsu.u90x01.1991-0" [87] "fujitsu.u90x03.1991-0" [87] "GB2312.1980-0" [39],[12] China (PRC) Hanzi, GL encoding "GB2312.1980-1" [39] (deprecated) China (PRC) Hanzi, GR encoding "HP-Arabic8" [36] HPARABIC8 8-bit character set "HP-East8" [36] HPEAST8 8-bit character set "HP-Greek8" [36] HPGREEK8 8-bit character set "HP-Hebrew8" [36] HPHEBREW8 8-bit character set "HP-Japanese15" [36] HPJAPAN15 15-bit character set, modified from industry defacto standard Shift-JIS "HP-Kana8" [36] HPKANA8 8-bit character set "HP-Korean15" [36] HPKOREAN15 15-bit character set "HP-Roman8" [36] HPROMAN8 8-bit character set "HP-SChinese15" [36] HPSCHINA15 15-bit character set for support of Simplified Chinese "HP-TChinese15" [36] HPTCHINA15 15-bit character set for support of Traditional Chinese "HP-Turkish8" [36] HPTURKISH8 8-bit character set "IPSYS" [59] registry prefix "IPSYS.IE-1" [59] "ISO2022""-" [44] "ISO646.1991-IRV" [107] ISO 646 International Reference Version "ISO8859-1" [15],[12] ISO Latin alphabet No. 1 "ISO8859-2" [15],[12] ISO Latin alphabet No. 2 "ISO8859-3" [15],[12] ISO Latin alphabet No. 3 "ISO8859-4" [15],[12] ISO Latin alphabet No. 4 "ISO8859-5" [15],[12] ISO Latin/Cyrillic alphabet "ISO8859-6" [15],[12] ISO Latin/Arabic alphabet "ISO8859-7" [15],[12] ISO Latin/Greek alphabet "ISO8859-8" [15],[12] ISO Latin/Hebrew alphabet "ISO8859-9" [15],[12] ISO Latin alphabet No. 5 "ISO8859-10" [15],[12] ISO Latin alphabet No. 6 "ISO8859-13" [15],[12] ISO Latin alphabet No. 7 "ISO8859-14" [15],[12] ISO Latin alphabet No. 8 "ISO8859-15" [15],[12] ISO Latin alphabet No. 9 "ISO8859-16" [15],[12] ISO Latin alphabet No. 10 "FCD8859-15" [7] (deprecated) ISO Latin alphabet No. 9, Final Committee Draft "ISO10646-1" [133] Unicode Universal Multiple-Octet Coded Character Set "ISO10646-MES" [133] (deprecated) Unicode Minimum European Subset "JISX0201.1976-0" [38],[12] 8-Bit Alphanumeric-Katakana Code "JISX0208.1983-0" [40],[12] Japanese Graphic Character Set, GL encoding "JISX0208.1990-0" [71] Japanese Graphic Character Set, GL encoding "JISX0208.1983-1" [40] (deprecated) Japanese Graphic Character Set, GR encoding "JISX0212.1990-0" [72] Supplementary Japanese Graphic Character Set, GL encoding "KOI8-R" [119] Cyrillic alphabet "KSC5601.1987-0" [41],[12] Korean Graphic Character Set, GL encoding "KSC5601.1987-1" [41] (deprecated) Korean Graphic Character Set, GR encoding "omron_CNS11643-0" [45] "omron_CNS11643-1" [45] "omron_BIG5-0" [45] "omron_BIG5-1" [45] "wn.tamil.1993" [103] 15. FONT PROPERTY NAMES See QueryFont in the protocol, and Section 3.2 of the XLFD. In general, private properties should start with a leading underscore, followed by the organizational prefix, followed by another underscore. Name Reference ---- --------- "ADD_STYLE_NAME" [19] "AVERAGE_WIDTH" [19] "AVG_CAPITAL_WIDTH" [19] "AVG_LOWERCASE_WIDTH" [19] "CAP_HEIGHT" [19] "CHARSET_ENCODING" [19] "CHARSET_REGISTRY" [19] "COPYRIGHT" [19] "DESTINATION" [19] "END_SPACE" [19] "FACE_NAME" [19] "FIGURE_WIDTH" [19] "FOUNDRY" [19] "FAMILY_NAME" [19] "ITALIC_ANGLE" [19] "MAX_SPACE" [19] "MIN_SPACE" [19] "NORM_SPACE" [19] "NOTICE" [19] "PIXEL_SIZE" [19] "POINT_SIZE" [19] "QUAD_WIDTH" [17], [19] "RELATIVE_SETWIDTH" [19] "RELATIVE_WEIGHT" [19] "RESOLUTION" [17], [19] "RESOLUTION_X" [19] "RESOLUTION_Y" [19] "SETWIDTH_NAME" [19] "SLANT" [19] "SMALL_CAP_SIZE" [19] "SPACING" [19] "STRIKEOUT_ASCENT" [19] "STRIKEOUT_DESCENT" [19] "SUBSCRIPT_SIZE" [19] "SUBSCRIPT_X" [19] "SUBSCRIPT_Y" [19] "SUPERSCRIPT_SIZE" [19] "SUPERSCRIPT_X" [19] "SUPERSCRIPT_Y" [19] "UNDERLINE_POSITION" [19] "UNDERLINE_THICKNESS" [19] "X_HEIGHT" [19] "WEIGHT" [19] "WEIGHT_NAME" [19] "_ADOBE_POSTSCRIPT_FONTNAME" [69] 16. RESOURCE TYPES See Chapter 15 of the Xlib manual and Section 9.1 of the Xt manual. Name Reference ---- --------- "AcceleratorTable" [26] "Bool" [26] "Boolean" [26] "Callback" [26] "CallProc" [26] "CharSet" [37] "Color" [26] "CompoundText" [12] "Cursor" [26] "Dimension" [26] "Display" [26] "EditMode" [26] "File" [26] "Float" [26] "Font" [26] "FontList" [37] "FontStruct" [26] "Function" [26] "Geometry" [26] "Immediate" [26] "Int" [26] "Justify" [26] "KeyboardType" [37] "Language" [37] "Orientation" [26] "PEXtClipIndicator" [75] "PEXtColorBundle" [75] "PEXtControlFlag" [75] "PEXtCullMode" [75] "PEXtDeferralMode" [75] "PEXtDepthCueMode" [75] "PEXtDistinguishMode" [75] "PEXtEdgeFlag" [75] "PEXtGeneralColor" [75] "PEXtGravity" [75] "PEXtHLHSRMode" [75] "PEXtIntList" [75] "PEXtInteriorStyle" [75] "PEXtLightSourceType" [75] "PEXtLimit" [75] "PEXtLimit3" [75] "PEXtLineType" [75] "PEXtModificationMode" [75] "PEXtPickHighlightMode" [75] "PEXtPickMode" [75] "PEXtPoint" [75] "PEXtPoint3" [75] "PEXtProjectionType" [75] "PEXtReflectanceEquation" [75] "PEXtResizePolicy" [75] "PEXtShadingMethod" [75] "PEXtTraversalPolicy" [75] "PEXtVector" [75] "PEXtVector3" [75] "PEXtWorkstationType" [75] "Pixel" [26] "Pixmap" [26] "Pointer" [26] "Position" [26] "Short" [26] "String" [18],[26] "StringTable" [26] "TranslationTable" [26] "UnsignedChar" [26] "Widget" [26] "Window" [26] "Xai" (prefix) [59] "Xi" (prefix) [31] "XMex" (prefix) [117] 17. APPLICATION CLASSES See Section 4.1.2.5 of the ICCCM and Section 14.1.8 of the Xlib manual. [Only class names, not instance names.] Name Reference ---- --------- "BuilderXcessory" [31] "BX" [31] "Clock" [47] "Csm" [75] "Exterm" [45] "Listres" [47] "Medit" [45] "Xai" [59] "Xbiff" [47] "XCalc" [47] "XClipboard" [47] "XClock" [47] "XCutsel" [47] "Xditview" [47] "Xedit" [47] "XEyes" [47] "Xfd" [47] "XFontSel" [47] "Xgc" [47] "XLogo" [47] "Xman" [47] "Xmh" [47] "Xsm" [49] "XTerm" [47] "Xwnmo" [45] 18. CLASS EXTENSION RECORD TYPES See Section 1.4.12 of the Xt Intrinsics manual. Name Reference ---- --------- "Xai" (prefix) [59] "XaiCoreClassExtension" [59] 19. DISPLAY MANUFACTURER ID See Section 9 of the X Display Manager Control Protocol. Name Reference ---- --------- "Acorn" [49] "CRAB" [84] "EFW" [124] "FUJITSU" [87] "HDS" [70] "JCC" [90] "Jupiter" [93] "TD" [63] "Metheus" [117] "MIT" [8] "NCD" [66] "PERITEK" [116] "WYSE" [68] "X/software-X/bigX" [115] 20. NON-STANDARD CHARACTER SET ENCODINGS See Section 6 of the Compound Text standard. Name Reference ---- --------- "DEC.CNS11643.1986-2" [53] CNS11643 2-plane using the recommended internal representation scheme "DEC.DTSCS.1990-2" [54] DEC Taiwan Supplemental Character Set "fujitsu.u90x03" [87] "ILA" [62] registry prefix "IPSYS" [59] registry prefix "omron_UDC" [45] omron User Defined Charset "omron_UDC_ja" [45] omron User Defined Charset for Japanese "omron_UDC_zh" [45] omron User Defined Charset for Chinese(Main land) "omron_UDC_tw" [45] omron User Defined Charset for Chinese(Taiwan) 21. PEX VENDOR ID For identifying GDPs, GSEs, enum values/types, OC types, table types. See PEX 5.1 interoperability conventions. Value Name Reference ----- ---- --------- 1 MIT [8] 2 GfxBase, Inc. [74] 3 Silicon Graphics Computer Systems [6] 4 Evans & Sutherland [75] 5 Sun Microsystems, Inc. [76] 6 Sumitomo Electric Workstation Corp. [77] 7 Hewlett-Packard Co. [78] 8 Metro Link Inc. [79] 9 Stardent Computer [80] 10 Sony Microsystems [81] 11 Digital Equipment Corp. [82] 12 Network Computing Devices [66] 13 ShoGraphics, Inc. [85] 14 Tektronix, Inc. [86] 15 FUJITSU LIMITED [87] 16 International Business Machines [33] 17 Kubota Pacific Computer [95] 18 Hitachi, Ltd. [100] 19 Megatek Corporation [112] 20 The XFree86 Project, Inc [113] 21 Metheus Corp. [117] 22. XIM ENCODINGS Names of encodings used for text exchanged in the Input Method Protocol. See XIM_ENCODING_NEGOTIATION in section 4.6 of the XIM standard. "COMPOUND_TEXT" [104] 23. SERVER INTERPRETED ADDRESS TYPES Types of addresses used in the ChangeHosts protocol request. See the description of ChangeHosts in section 9 of the X11 Protocol standard. Registered address types: Name Reference ---- --------- "hostname" [135 - xorg-docs/specs/SIAddresses/hostname.txt] "IPv6" [135 - xorg-docs/specs/SIAddresses/IPv6.txt] "localuser" [135 - xorg-docs/specs/SIAddresses/localuser.txt] "localgroup" [135 - xorg-docs/specs/SIAddresses/localgroup.txt] Vendor-specific prefixes: None registered yet. REFERENCES [1] Keith Dawson MS: CHR 03 DE Apollo Computer Inc. 300 Apollo Drive Chelmsford, MA 01824 [2] Mark Patrick Ardent Computer 880 West Maude Avenue Sunnyvale, CA 94086 [3] X+ Multiple Buffering/Stereo Library Extension Mark Patrick, Ardent [4] Ardent X Server Private Extension Mark Patrick, Ardent [5] Visual Technology, Inc. [6] Philip Karlton System Software Division Silicon Graphics Computer Systems 2011 N. Shoreline Blvd. Mountain View, CA 94309-7311 [7] The Open Group Apex Plaza,Forbury Road, Reading,Berks.RG1 1AX,England https://www.opengroup.org/offices [8] The X standards body maintaining X11 and related standards: 1988-1993 The MIT X Consortium 1993-1996 The X Consortium 1997-1998 The Open Group X Project Team 1998-2003 The X.Org Group 2003- The X.Org Foundation The X.Org Foundation current contact information: X.Org website: https://www.x.org/ X.Org mailing lists: https://www.x.org/wiki/XorgMailingLists X.Org Foundation Board of Directors: https://www.x.org/wiki/BoardOfDirectors board@foundation.x.org [9] PEX Protocol Specification PEX Protocol Encoding PEX Introduction and Overview Randi Rost, Digital, document editor [10] Extending X for Double-Buffering, Multi-Buffering, and Stereo The X.Org Foundation See Reference [8] [11] X Display Manager Control Protocol The X.Org Foundation See Reference [8] [12] Compound Text Encoding The X.Org Foundation See Reference [8] [13] X11 Nonrectangular Window Shape Extension The X.Org Foundation See Reference [8] [14] VEX - Video Extension to X Todd Brunhoff, Tektronix [15] ISO 8859, Information technology -- 8-bit single-byte coded graphic character sets, Parts 1 through 10, 13, 14, 15, and 16 [16] Inter-Client Communication Conventions Manual The X.Org Foundation See Reference [8] [17] Obsolete [18] Xlib Manual The X.Org Foundation See Reference [8] [19] X Logical Font Description Conventions The X.Org Foundation See Reference [8] [20] IXI Limited [21] MIT Project Athena [22] Apple Computer, Inc. [23] X Window System Protocol The X.Org Foundation See Reference [8] [24] Adobe Systems, Inc. [25] Bitstream, Inc. [26] Xt Intrinsics Manual The X.Org Foundation See Reference [8] [27] Digital Equipment Corporation Irene McCartney Compaq Computer Corporation 110 Spitbrook Road, ZKO3-3/T79 Nashua, NH 03062 irene@zk3.dec.com [28] Steve Pitschke Stellar Computer, Inc. 95 Wells Ave. Newton, MA 02159 [29] Jeff Vroom Stellar Computer, Inc. 95 Wells Ave. Newton, MA 02159 [30] Crucible Santa Cruz, CA [31] Mark Hatch Integrated Computer Solutions, Inc. 201 Broadway Cambridge, MA 02139 [32] Kyou Katoh PFU LIMITED 687-1 Tsuruma 7 Gou Machida-shi Tokyo 194, Japan [33] Dan McNichol /IMAD 9564 International Business Machines 11400 Burnet Road Austin, TX 78758 [34] Anonymous MIT Software Distribution [35] (Originally Larry Woestman) Paul Anderson Hewlett Packard 3404 E. Harmony Road, MS-74 Fort Collins, CO 80528-9599 [36] (Originally Tom McFarland) See Reference [35] [37] Hideo Irie Work Station Division SuperMicro Systems Group Sony Corporation 6-7-35 Kitasinagawa Sinagawa-ku Tokyo, Japan [38] JIS X 0201-1976 (reaffirmed 1984) [39] GB2312-1980 [40] JIS X 0208-1983 [41] KS C5601-1987 [42] Linda Gass Adobe Systems PO Box 7900 Mountain View, CA 94039-7900 [43] (Originally Dave Cassing) X Strategy Team Tektronix, Inc. PO Box 1000 Wilsonville, Oregon 97070-1000 [44] ISO2022- REG := [_L_][_R_] ENC := [L][R] := := := '4' /* 94-character sets */ | 'M' /* Multiple-byte character sets */ := | '6' /* 96-character sets */ := "30" - "7E" /* hex encoding of Latin-1 3/0 - 7/14 */ := | := "20" - "2F" /* hex encoding of Latin-1 2/0 - Latin-1 2/15 */ The "ISO2022" prefix identifies this as an ISO2022-conforming encoding. [] denotes an optional construct. and are organizational strings that identify this encoding as having a GL or GR component that is not registered with ECMA, but rather is private to the given organization. At least one of L or R must be present. If one is missing, the contents of the font in that graphics half is undefined. [45] Hiroshi Kuribayashi OMRON Corporation Computer System R&D Laboratory Shimokaiinji, Nagaokakyo-city Kyoto, 617, Japan [46] Kyle Marvin Visual Information Technologies, Inc. (VITec) 3460 Lotus Drive Plano, TX 75075 [47] X11R4 See Reference [8] [48] Data General Corp. 62 T.W. Alexander Dr. R.T.P. NC, 27709 Attn: Janet Leising [49] John Bowler Acorn Computers Limited Cambridge Technopark 645 Newmarket Road Cambridge CB5 8PB England [50] Rick Franklin Intergraph Corporation One Madison Industrial Park Huntsville, Al. 35894-0001 [51] Dan Coutu Digital Equipment Corporation ZKO 3-3/T13 110 Spitbrook Rd. Nashua, NH 03062-2698 [52] Takayuki Kageyama Computer Division Information Equipment Sector Matsushita Electric Industrial Co., Ltd. 1006, Kadoma, Osaka, 571 Japan [53] CNS11643 National Bureau of Standards Taiwan, Republic of China [54] KH Chan Digital Equipment Co. 2-4/F Henan Building 90 Jaffe Road, Wanchai, Hong Kong [55] Mike Wexler FXD/Telerate, Inc. 2091 Landings Drive Mountain View, CA 94043 [56] Lawrence J. Kilgallen Box 81 MIT Station Cambridge, MA 02139-0901 [57] (Previously David Rosenthal, Steve Swales, Stuart Kreitman, Sun Microsystems) Alan Coopersmith, Niveditha Rau Oracle Corporation alan.coopersmith@oracle.com, niveditha.rau@oracle.com [58] (Originally Murali V. Srinivasan) See Reference [57] [59] Keith Robson Ipsys Software plc Marlborough Court, Pickford St., Macclesfield, Cheshire, SK11 6JD England [60] David Lewis Lewis, Trachtenberg & Associates One Kendall Square (Building 200, Fourth Floor) Cambridge, MA 02139-1564 dbl@ics.com [61] James J Dempsey Bolt Beranek and Newman Inc. 150 CambridgePark Drive Cambridge MA 02140 [62] Glenn Adams International Lisp Associates 114 Mount Auburn Street Cambridge, MA 02138 [63] Sigvald Refsum Tandberg Data A/S PO Box 9 Korsvoll, N-0808 OSLO 8 [64] Masahiko Muramatsu System Techonology Development Center Fuji Xerox Co.,LTD. KSP/R&D Business Park Bldg. 100-1, Sakado, Takatsu-ku, Kawasaki-City, Kanagawa-Ken, 213 JAPAN [65] Tim Glauert Olivetti Research Limited 24a Trumpington Street Cambridge, England [66] Jim Fulton Network Computing Devices 350 North Bernardo Ave. Mountain View, CA 94043 [67] John Mackin 6/23 Northwood Street Camperdown 2050 AUSTRALIA [68] Bill Rainey Wyse Technology 3471 N. First Street San Jose, CA 95134 [69] PostScript Developer Support Adobe Systems Incorporated PO Box 7900 Mountain View, CA 94039-7900 [70] Adrian Bereanu Human Designed Systems [71] JIS X 0208-1990 [72] JIS X 0212-1990 [73] Dan Greening Software Transformation 1601 Saratoga-Sunnyvale Rd Cupertino, CA 95014 [74] Dale Luck GfxBase, Inc. 1881 Ellwell Dr. Milpitas, CA 95035 [75] Gary G. Cannon Evans & Sutherland 580 Arapeen Dr. P.O. Box 58700 Salt Lake City, UT 84158 [76] (Originally Cheryl Huntington) See Reference [57] [77] Junichi Hiramoto Manager, Engineering Department Sumitomo Electric Workstation Corp. No. 30 Kowa Bldg. 2-4-5 Roppongi, Minato-ku Tokyo, 106 Japan [78] (Originally Jeff Stevenson) See Reference [35] [79] Garry M. Paxinos Metro Link Incorporated 5807 N. Andrews Way Ft. Lauderdale, FL 33309 [80] John Dennis Stardent Computer 6 New England Tech Center 521 Virginia Road Concord, MA 01742 [81] Mark Patrick Sony Microsystems 651 River Oaks Parkway San Jose, CA 95134 [82] Dick Coulter MLO1-2/U2 Digital Equipment Corp. 146 Main St. Maynard, MA 01754 Irene McCartney Compaq Computer Corporation 110 Spitbrook Road, ZKO3-3/T79 Nashua, NH 03062 [83] Mark W. Snitily Snitily Graphics Consulting Services 894 Brookgrove Lane Cupertino, CA 95014 [84] Paul Verey Crab Advanced Technologies Ltd. First Base, Beacontree Plaza, Gillette Way Reading, RG2 0BP [85] Ken Garnett ShoGraphics, Inc. 1890 N. Shoreline Blvd. Mountain View, CA 94043 [86] Michael F. Cripps Tektronix, Inc P.O Boc 1000 MS 60-850 Wilsonville, OR 97070-1000 [87] Kyou Katoh FUJITSU LIMITED 1015 Kamikodanaka Nakahara-ku Kawasaki 221, Japan [88] David Kaelbling Rational 12 Mountain Rock Ln. Norfolk, MA 02056 [89] Hal Berman Cognition Corporation 755 Middlesex Turnpike Billerica, MA 01821 [90] Takatoshi Ishii Japan Computer Corp. 2-6-9, Higashi Kanda, Chiyoda-ku, Tokyo 101 Japan [91] Bill Janssen Xerox PARC 3333 Coyote Hill Rd. Palo Alto, CA 94304 [92] (Originally Rick Heli) See Reference [57] [93] Russell Leefer Jupiter Systems Suite 200 1351 Harbor Bay Parkway Alameda, CA 94501 [94] The X.Org Foundation See Reference [8] [95] Greg Stiehl Kubota Pacific Computer 2630 Walsh Avenue Santa Clara, CA 95051-0905 [96] MIT Screen Saver Extension The X.Org Foundation See Reference [8] [97] Big Requests Extension The X.Org Foundation See Reference [8] [98] Randi Rost Kubota Pacific Computer 2630 Walsh Avenue Santa Clara, CA 95051-0905 [99] Ilan Aisic NYNEX ALLINK Co. 4 Gannett Drive White Plains, NY 10604 [100] Toshiyuki Kuwana Information Equipment Engineering Dept. Omika Works, Hitatchi Ltd. 5-2-1 Omika-cho, Hitachi-shi, Ibaraki-ken, 319-12 Japan [101] (Originally Milind Pansare) See Reference [57] [102] John L. Cwikla Wolfram Research, Inc. 100 Trade Center Drive Champaign IL, 61820-7237 [103] University of Washington for WM Tamil fonts [104] The X Consortium See Reference [8] [105] The Open Group X Project Team See Reference [8] [106] Selwyn Henriques Tech-Source, Inc. 442 S North Lake Blvd. Altamonte Springs FL 32701 [107] ISO/IEC 646:1991, Information technology -- ISO 7-bit coded character set for information interchange [108] X Synchronization Extension The X.Org Foundation See Reference [8] [109] XC-MISC Extension The X.Org Foundation See Reference [8] [110] X Image Extension The X.Org Foundation See Reference [8] [111] X Keyboard Extension The X.Org Foundation See Reference [8] [112] Allan Frankel Megatek Corporation 16868 Via Del Campo Court San Diego, CA 92127-1714 [113] David Wexelblat The XFree86 Project, Inc. c/o AIB Software Corporation 46030 Manekin Plaza, Suite 160 Dulles, VA 20166 [114] (Originally Stuart W. Marks) See Reference [57] [115] Michael Gehret X/software Marktstrasse 8, D-87730 Groenenbach, Germany [116] Bob Schulman Peritek Corp. 5550 Redwood Road Oakland, CA 94619 [117] Alan Ricker Metheus Coporation 1600 NW Compton Dr. Beaverton OR, 97006 [118] X Video Extension Protocol Description Version 2, 25-JUL-91 David Carver [119] Network Working Group's RFC1489 [120] Cronyx Ltd. Research Computer Center Moscow State University Moscow 119899, Russia Phone: +7 (095) 939-2323 Fax: +7 (095) 939-0300 E-mail: info@cronyx.ru [121] Sun Microsystems Federal, Inc. Trusted Solaris Extension, (Originally Milind Pansare) See Reference [57] [122] Record Extension The X.Org Foundation See Reference [8] [123] Double Buffer Extension Specification The X.Org Foundation See Reference [8] [124] James A. Moulton EFW, Inc 4700 Marine Creek Parkway Ft. Worth, Texas 76136 [125] Low Bandwidth X Extension Specification The X.Org Foundation See Reference [8] [126] Security Extension Specification The X.Org Foundation See Reference [8] [127] Application Group Extension Specification The X.Org Foundation See Reference [8] [128] X11 Input Extension Protocol Specification The X.Org Foundation See Reference [8] [129] X Print Extension Protocol Specification The X.Org Foundation See Reference [8] [130] XINERAMA The X.Org Foundation See Reference [8] [131] Colormap Utilization Policy Extension Protocol Specification The X.Org Foundation See Reference [8] [132] Display Power Management Signaling Extension Protocol Specification The X.Org Foundation See Reference [8] [133] ISO10646 Information technology -- Universal Multiple-Octet Coded Character Set (UCS), part 1 Markus G. Kuhn University of Cambridge Computer Laboratory 15 JJ Thomson Avenue Cambridge CB3 0FD United Kingdom [134] In R6.6 X.Org is reserving the string UTF8_STRING for use as an ICCCM property type and selection target. The ICCCM spec will be updated in a future release to fully specify UTF8_STRING. [135] X.Org Foundation source implementation See Reference [8] xorg-docs-1.7.3/README.md0000644014310600000120000000113714600067622010364 This package provides miscellaneous documentation for the X Window System that doesn't better fit into other packages. The preferred documentation format for these documents is DocBook XML. All questions regarding this software should be directed at the Xorg mailing list: https://lists.x.org/mailman/listinfo/xorg The primary development code repository can be found at: https://gitlab.freedesktop.org/xorg/doc/xorg-docs Please submit bug reports and requests to merge patches there. For patch submission instructions, see: https://www.x.org/wiki/Development/Documentation/SubmittingPatches xorg-docs-1.7.3/man/0000755014310600000120000000000014600067630007735 5xorg-docs-1.7.3/man/X.man0000644014310600000120000015406614600067622010576 '\" t .\" .\" Copyright (c) 1994, 2004 The Open Group .\" Copyright \(co 2000 The XFree86 Project, 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 .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, and/or sell copies of the Software, and to permit persons .\" to whom the Software is furnished to do so, provided that the above .\" copyright notice(s) and this permission notice appear in all copies of .\" the Software and that both the above copyright notice(s) and this .\" permission notice appear in supporting documentation. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT .\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR .\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL .\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING .\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, .\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION .\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Except as contained in this notice, the name of a copyright holder .\" shall not be used in advertising or otherwise to promote the sale, use .\" or other dealings in this Software without prior written authorization .\" of the copyright holder. .\" .\" X Window System is a trademark of The Open Group. .\" .TH X __miscmansuffix__ __vendorversion__ .SH NAME X \- a portable, network-transparent window system .SH OVERVIEW .PP The X Window System is a network transparent window system which runs on a wide range of computing and graphics machines. It should be relatively straightforward to build the X.Org Foundation software distribution on most ANSI C and POSIX compliant systems. Commercial implementations are also available for a wide range of platforms. .PP The X.Org Foundation requests that the following names be used when referring to this software: .sp .TS center; c. X X Window System X Version 11 X Window System, Version 11 X11 .TE .sp .I "X Window System" is a trademark of The Open Group. .SH DESCRIPTION X Window System servers run on computers with bitmap displays. The server distributes user input to and accepts output requests from various client programs through a variety of different interprocess communication channels. Although the most common case is for the client programs to be running on the same machine as the server, clients can be run transparently from other machines (including machines with different architectures and operating systems) as well. .PP X supports overlapping hierarchical subwindows and text and graphics operations, on both monochrome and color displays. For a full explanation of the functions that are available, see the \fIXlib - C Language X Interface\fP manual, the \fIX Window System Protocol\fP specification, the \fIX Toolkit Intrinsics - C Language Interface\fP manual, and various toolkit documents. .\" Use .UR macro from groff's man(7) if available, otherwise just .\" display URL as plain text for other processors. .if !d UR \{ .de UR .RI < \\$1 > .. .de UE .RI \\$1 .. \} .\" Those manuals, specifications, & documents may be found in __datadir__/doc or on the X.Org Foundation website at .UR "https://www.x.org/releases/current/doc/" .UE . .PP The number of programs that use \fIX\fP is quite large. Sample programs provided by the X.Org Foundation include: a terminal emulator, \fIxterm\fP; a window manager, \fItwm\fP; a compositing manager, \fIxcompmgr\fP; a display manager, \fIxdm\fP; a console redirect program, \fIxconsole\fP; utilities for managing input and output devices, \fIxinput\fP and \fIxrandr\fP; resource listing/manipulation tools, \fIappres\fP, \fIeditres\fP; access control programs, \fIxauth\fP, \fIxhost\fP, and \fIiceauth\fP; user preference setting programs, \fItransset\fP, \fIxrdb\fP, \fIxcmsdb\fP, \fIxset\fP, \fIxsetroot\fP, \fIxstdcmap\fP, and \fIxmodmap\fP; clocks, \fIxclock\fP and \fIoclock\fP; font display utilities, \fIxfd\fP and \fIxfontsel\fP; utilities for listing information about displays, extensions, and resources, \fIxdpyinfo\fP, \fIxdriinfo\fP, \fIxvinfo\fP, \fIxwininfo\fP, \fIxlsclients\fP, \fIxprop\fP, \fIxlsatoms\fP, \fIxlsclients\fP, and \fIxlsfonts\fP; screen image manipulation utilities, \fIxwd\fP, \fIxwud\fP, and \fIxmag\fP; a performance measurement utility, \fIx11perf\fP; a font compiler, \fIbdftopcf\fP; a font server and related utilities, \fIxfs\fP, \fIxfsinfo\fP, \fIfslsfonts\fP, \fIfstobdf\fP; a display server and related utilities, \fIXserver\fP, \fIrgb\fP, \fImkfontdir\fP; a clipboard manager, \fIxclipboard\fP; keyboard description compiler and related utilities, \fIxkbcomp\fP, \fIsetxkbmap\fP \fIxkbprint\fP, \fIxkbbell\fP, \fIxkbevd\fP, \fIxkbvleds\fP, and \fIxkbwatch\fP; a utility to terminate clients, \fIxkill\fP; and a utility to cause part or all of the screen to be redrawn, \fIxrefresh\fP. .PP Many other utilities, window managers, games, toolkits, etc. are included as packages in many operating system distributions, or are available on the Internet. See your site administrator or distro package manager for details. .SH "STARTING UP" .PP There are two main ways of getting the X server and an initial set of client applications started. The particular method used depends on what operating system you are running and whether or not you use other window systems in addition to X. .TP 8 .B "Display Manager" If you want to always have X running on your display, your site administrator can set your machine up to use a Display Manager such as \fIxdm\fP, \fIgdm\fP, or \fIkdm\fP. This program is typically started by the system at boot time and takes care of keeping the server running and getting users logged in. If you are running one of these display managers, you will normally see a window on the screen welcoming you to the system and asking for your login information. Simply type them in as you would at a normal terminal. If you make a mistake, the display manager will display an error message and ask you to try again. After you have successfully logged in, the display manager will start up your X environment. The documentation for the display manager you use can provide more details. .TP 8 .B "\fIxinit\fP (run manually from the shell)" Sites that support more than one window system might choose to use the \fIxinit\fP program for starting X manually. If this is true for your machine, your site administrator will probably have provided a program named "x11", "startx", or "xstart" that will do site-specific initialization (such as loading convenient default resources, running a window manager, displaying a clock, and starting several terminal emulators) in a nice way. If not, you can build such a script using the \fIxinit\fP program. This utility simply runs one user-specified program to start the server, runs another to start up any desired clients, and then waits for either to finish. Since either or both of the user-specified programs may be a shell script, this gives substantial flexibility at the expense of a nice interface. For this reason, \fIxinit\fP is not intended for end users. .SH "DISPLAY NAMES" .PP From the user's perspective, every X server has a \fIdisplay name\fP of the form: .sp .RS \fIhostname:displaynumber.screennumber\fP .RE or .RS \fIprotocol/hostname:displaynumber.screennumber\fP .RE .sp This information is used by the application to determine how it should connect to the server and which screen it should use by default (on displays with multiple monitors): .TP 8 .I protocol The \fIprotocol\fP specifies the protocol to use for communication. Exactly which protocols are supported is platform dependent, but most commonly supported ones are: .TS l l. tcp TCP over IPv4 or IPv6 inet TCP over IPv4 only inet6 TCP over IPv6 only unix UNIX Domain Sockets (same host only) local Platform preferred local connection method .TE If the protocol is not specified, Xlib uses whatever it believes is the most efficient transport. .TP 8 .I hostname The \fIhostname\fP specifies the name of the machine to which the display is physically connected. If the hostname is not given, a connection to a server on the same machine will be used. .TP 8 .I displaynumber The phrase "display" is usually used to refer to a collection of monitors that share a common set of input devices (keyboard, mouse, tablet, etc.). Most workstations tend to only have one display. Larger, multi-user systems, however, frequently have several displays so that more than one person can be doing graphics work at once. To avoid confusion, each display on a machine is assigned a \fIdisplay number\fP (beginning at 0) when the X server for that display is started. The display number must always be given in a display name. .TP 8 .I screennumber Some displays share their input devices among two or more monitors. These may be configured as a single logical screen, which allows windows to move across screens, or as individual screens, each with their own set of windows. If configured such that each monitor has its own set of windows, each screen is assigned a \fIscreen number\fP (beginning at 0) when the X server for that display is started. If the screen number is not given, screen 0 will be used. .PP On POSIX systems, the default display name is stored in your DISPLAY environment variable. This variable is set automatically by the \fIxterm\fP terminal emulator. However, when you log into another machine on a network, you may need to set DISPLAY by hand to point to your display. For example, .PP .nf % setenv DISPLAY myws:0 $ DISPLAY=myws:0; export DISPLAY .fi .PP The \fIssh\fP program can be used to start an X program on a remote machine; it automatically sets the DISPLAY variable correctly. .PP Finally, most X programs accept a command line option of \fB\-display \fIdisplayname\fR to temporarily override the contents of DISPLAY. This is most commonly used to pop windows on another person's screen or as part of a "remote shell" command to start an xterm pointing back to your display. For example, .sp .nf % xeyes \-display joesws:0 \-geometry 1000x1000+0+0 % rsh big xterm \-display myws:0 \-ls \fP:\fI/.../\fP .fi .PP An RGB Device specification is identified by the prefix "rgb:" and has the following syntax: .sp .nf rgb:\fI//\fP \fI\fP, \fI\fP, \fI\fP := \fIh\fP | \fIhh\fP | \fIhhh\fP | \fIhhhh\fP \fIh\fP := single hexadecimal digits .fi .sp Note that \fIh\fP indicates the value scaled in 4 bits, \fIhh\fP the value scaled in 8 bits, \fIhhh\fP the value scaled in 12 bits, and \fIhhhh\fP the value scaled in 16 bits, respectively. These values are passed directly to the X server, and are assumed to be gamma corrected. .PP The eight primary colors can be represented as: .sp .TS center; l l. black rgb:0/0/0 red rgb:ffff/0/0 green rgb:0/ffff/0 blue rgb:0/0/ffff yellow rgb:ffff/ffff/0 magenta rgb:ffff/0/ffff cyan rgb:0/ffff/ffff white rgb:ffff/ffff/ffff .TE .PP For backward compatibility, an older syntax for RGB Device is supported, but its continued use is not encouraged. The syntax is an initial sharp sign character followed by a numeric specification, in one of the following formats: .sp .TS center; l l. #RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each) .TE .PP The R, G, and B represent single hexadecimal digits. When fewer than 16 bits each are specified, they represent the most-significant bits of the value (unlike the "rgb:" syntax, in which values are scaled). For example, #3a7 is the same as #3000a0007000. .PP An RGB intensity specification is identified by the prefix "rgbi:" and has the following syntax: .sp .nf rgbi:\fI//\fP .fi .PP The red, green, and blue are floating point values between 0.0 and 1.0, inclusive. They represent linear intensity values, with 1.0 indicating full intensity, 0.5 half intensity, and so on. These values will be gamma corrected by \fIXlib\fP before being sent to the X server. The input format for these values is an optional sign, a string of numbers possibly containing a decimal point, and an optional exponent field containing an E or e followed by a possibly signed integer string. .PP The standard device-independent string specifications have the following syntax: .sp .TS center; l l. CIEXYZ:\fI//\fP (\fInone\fP, 1, \fInone\fP) CIEuvY:\fI//\fP (~.6, ~.6, 1) CIExyY:\fI//\fP (~.75, ~.85, 1) CIELab:\fI//\fP (100, \fInone\fP, \fInone\fP) CIELuv:\fI//\fP (100, \fInone\fP, \fInone\fP) TekHVC:\fI//\fP (360, 100, 100) .TE .PP All of the values (C, H, V, X, Y, Z, a, b, u, v, y, x) are floating point values. Some of the values are constrained to be between zero and some upper bound; the upper bounds are given in parentheses above. The syntax for these values is an optional '+' or '\-' sign, a string of digits possibly containing a decimal point, and an optional exponent field consisting of an 'E' or 'e' followed by an optional '+' or '\-' followed by a string of digits. .PP For more information on device independent color, see the \fIXlib\fP reference manual. .SH KEYBOARDS .PP The X keyboard model is broken into two layers: server-specific codes (called \fIkeycodes\fP) which represent the physical keys, and server-independent symbols (called \fIkeysyms\fP) which represent the letters or words that appear on the keys. Two tables are kept in the server for converting keycodes to keysyms: .TP 8 .I "modifier list" Some keys (such as Shift, Control, and Caps Lock) are known as \fImodifier\fP and are used to select different symbols that are attached to a single key (such as Shift-a generates a capital A, and Control-l generates a control character ^L). The server keeps a list of keycodes corresponding to the various modifier keys. Whenever a key is pressed or released, the server generates an \fIevent\fP that contains the keycode of the indicated key as well as a mask that specifies which of the modifier keys are currently pressed. Most servers set up this list to initially contain the various shift, control, and shift lock keys on the keyboard. .TP 8 .I "keymap table" Applications translate event keycodes and modifier masks into keysyms using a \fIkeysym table\fP which contains one row for each keycode and one column for various modifier states. This table is initialized by the server to correspond to normal typewriter conventions. The exact semantics of how the table is interpreted to produce keysyms depends on the particular program, libraries, and language input method used, but the following conventions for the first four keysyms in each row are generally adhered to: .PP The first four elements of the list are split into two groups of keysyms. Group 1 contains the first and second keysyms; Group 2 contains the third and fourth keysyms. Within each group, if the first element is alphabetic and the the second element is the special keysym \fINoSymbol\fP, then the group is treated as equivalent to a group in which the first element is the lowercase letter and the second element is the uppercase letter. .PP Switching between groups is controlled by the keysym named MODE SWITCH, by attaching that keysym to some key and attaching that key to any one of the modifiers Mod1 through Mod5. This modifier is called the ``group modifier.'' Group 1 is used when the group modifier is off, and Group 2 is used when the group modifier is on. .PP Within a group, the modifier state determines which keysym to use. The first keysym is used when the Shift and Lock modifiers are off. The second keysym is used when the Shift modifier is on, when the Lock modifier is on and the second keysym is uppercase alphabetic, or when the Lock modifier is on and is interpreted as ShiftLock. Otherwise, when the Lock modifier is on and is interpreted as CapsLock, the state of the Shift modifier is applied first to select a keysym; but if that keysym is lowercase alphabetic, then the corresponding uppercase keysym is used instead. .SH OPTIONS Most X programs attempt to use the same names for command line options and arguments. All applications written with the X Toolkit Intrinsics automatically accept the following options: .TP 8 .B \-display \fIdisplay\fP This option specifies the name of the X server to use. .TP 8 .B \-geometry \fIgeometry\fP This option specifies the initial size and location of the window. .TP 8 .B \-bg \fIcolor\fP, \fB\-background \fIcolor\fP Either option specifies the color to use for the window background. .TP 8 .B \-bd \fIcolor\fP, \fB\-bordercolor \fIcolor\fP Either option specifies the color to use for the window border. .TP 8 .B \-bw \fInumber\fP, \fB\-borderwidth \fInumber\fP Either option specifies the width in pixels of the window border. .TP 8 .B \-fg \fIcolor\fP, \fB\-foreground \fIcolor\fP Either option specifies the color to use for text or graphics. .TP 8 .B \-fn \fIfont\fP, \fB\-font \fIfont\fP Either option specifies the font to use for displaying text. .TP 8 .B \-iconic .br This option indicates that the user would prefer that the application's windows initially not be visible as if the windows had be immediately iconified by the user. Window managers may choose not to honor the application's request. .TP 8 .B \-name .br This option specifies the name under which resources for the application should be found. This option is useful in shell aliases to distinguish between invocations of an application, without resorting to creating links to alter the executable file name. .TP 8 .B \-rv\fP, \fB\-reverse\fP Either option indicates that the program should simulate reverse video if possible, often by swapping the foreground and background colors. Not all programs honor this or implement it correctly. It is usually only used on monochrome displays. .TP 8 .B \+rv .br This option indicates that the program should not simulate reverse video. This is used to override any defaults since reverse video doesn't always work properly. .TP 8 .B \-selectionTimeout This option specifies the timeout in milliseconds within which two communicating applications must respond to one another for a selection request. .TP 8 .B \-synchronous This option indicates that requests to the X server should be sent synchronously, instead of asynchronously. Since .I Xlib normally buffers requests to the server, errors do not necessarily get reported immediately after they occur. This option turns off the buffering so that the application can be debugged. It should never be used with a working program. .TP 8 .B \-title \fIstring\fP This option specifies the title to be used for this window. This information is sometimes used by a window manager to provide some sort of header identifying the window. .TP 8 .B \-xnllanguage \fIlanguage[_territory][.codeset]\fP This option specifies the language, territory, and codeset for use in resolving resource and other filenames. .TP 8 .B \-xrm \fIresourcestring\fP This option specifies a resource name and value to override any defaults. It is also very useful for setting resources that don't have explicit command line arguments. .SH RESOURCES To make the tailoring of applications to personal preferences easier, X provides a mechanism for storing default values for program resources (e.g. background color, window title, etc.) that is used by programs that use toolkits based on the X Toolkit Intrinsics library libXt. (Programs using the common Gtk+ and Qt toolkits use other configuration mechanisms.) Resources are specified as strings that are read in from various places when an application is run. Program components are named in a hierarchical fashion, with each node in the hierarchy identified by a class and an instance name. At the top level is the class and instance name of the application itself. By convention, the class name of the application is the same as the program name, but with the first letter capitalized (e.g. \fIBitmap\fP or \fIEmacs\fP) although some programs that begin with the letter ``x'' also capitalize the second letter for historical reasons. .PP The precise syntax for resources is: .PP .nf ResourceLine = Comment | IncludeFile | ResourceSpec | Comment = "!" {} IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace FileName = ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value ResourceName = [Binding] {Component Binding} ComponentName Binding = "\&." | "*" WhiteSpace = { | } Component = "?" | ComponentName ComponentName = NameChar {NameChar} NameChar = "a"\-"z" | "A"\-"Z" | "0"\-"9" | "_" | "\-" Value = {} .fi .PP Elements separated by vertical bar (|) are alternatives. Curly braces ({\&.\&.\&.}) indicate zero or more repetitions of the enclosed elements. Square brackets ([\&.\&.\&.]) indicate that the enclosed element is optional. Quotes ("\&.\&.\&.") are used around literal characters. .PP IncludeFile lines are interpreted by replacing the line with the contents of the specified file. The word "include" must be in lowercase. The filename is interpreted relative to the directory of the file in which the line occurs (for example, if the filename contains no directory or contains a relative directory specification). .PP If a ResourceName contains a contiguous sequence of two or more Binding characters, the sequence will be replaced with single "\&." character if the sequence contains only "\&." characters, otherwise the sequence will be replaced with a single "*" character. .PP A resource database never contains more than one entry for a given ResourceName. If a resource file contains multiple lines with the same ResourceName, the last line in the file is used. .PP Any whitespace character before or after the name or colon in a ResourceSpec are ignored. To allow a Value to begin with whitespace, the two-character sequence ``\\\^\fIspace\fP'' (backslash followed by space) is recognized and replaced by a space character, and the two-character sequence ``\\\^\fItab\fP'' (backslash followed by horizontal tab) is recognized and replaced by a horizontal tab character. To allow a Value to contain embedded newline characters, the two-character sequence ``\\\^n'' is recognized and replaced by a newline character. To allow a Value to be broken across multiple lines in a text file, the two-character sequence ``\\\^\fInewline\fP'' (backslash followed by newline) is recognized and removed from the value. To allow a Value to contain arbitrary character codes, the four-character sequence ``\\\^\fInnn\fP'', where each \fIn\fP is a digit character in the range of ``0''\-``7'', is recognized and replaced with a single byte that contains the octal value specified by the sequence. Finally, the two-character sequence ``\\\\'' is recognized and replaced with a single backslash. .PP When an application looks for the value of a resource, it specifies a complete path in the hierarchy, with both class and instance names. However, resource values are usually given with only partially specified names and classes, using pattern matching constructs. An asterisk (*) is a loose binding and is used to represent any number of intervening components, including none. A period (.) is a tight binding and is used to separate immediately adjacent components. A question mark (?) is used to match any single component name or class. A database entry cannot end in a loose binding; the final component (which cannot be "?") must be specified. The lookup algorithm searches the resource database for the entry that most closely matches (is most specific for) the full name and class being queried. When more than one database entry matches the full name and class, precedence rules are used to select just one. .LP The full name and class are scanned from left to right (from highest level in the hierarchy to lowest), one component at a time. At each level, the corresponding component and/or binding of each matching entry is determined, and these matching components and bindings are compared according to precedence rules. Each of the rules is applied at each level, before moving to the next level, until a rule selects a single entry over all others. The rules (in order of precedence) are: .IP 1. 5 An entry that contains a matching component (whether name, class, or "?") takes precedence over entries that elide the level (that is, entries that match the level in a loose binding). .IP 2. 5 An entry with a matching name takes precedence over both entries with a matching class and entries that match using "?". An entry with a matching class takes precedence over entries that match using "?". .IP 3. 5 An entry preceded by a tight binding takes precedence over entries preceded by a loose binding. .PP Programs based on the X Toolkit Intrinsics obtain resources from the following sources (other programs usually support some subset of these sources): .TP 8 .B "RESOURCE_MANAGER root window property" Any global resources that should be available to clients on all machines should be stored in the RESOURCE_MANAGER property on the root window of the first screen using the \fIxrdb\fP program. This is frequently taken care of when the user starts up X through the display manager or \fIxinit\fP. .TP 8 .B "SCREEN_RESOURCES root window property" Any resources specific to a given screen (e.g. colors) that should be available to clients on all machines should be stored in the SCREEN_RESOURCES property on the root window of that screen. The \fIxrdb\fP program will sort resources automatically and place them in RESOURCE_MANAGER or SCREEN_RESOURCES, as appropriate. .TP 8 .B "application-specific files" Directories named by the environment variable XUSERFILESEARCHPATH or the environment variable XAPPLRESDIR (which names a single directory and should end with a '/' on POSIX systems), plus directories in a standard place (usually under __datadir__/X11/, but this can be overridden with the XFILESEARCHPATH environment variable) are searched for for application-specific resources. For example, application default resources are usually kept in __datadir__/X11/app-defaults/. See the \fIX Toolkit Intrinsics - C Language Interface\fP manual for details. .TP 8 .B XENVIRONMENT Any user- and machine-specific resources may be specified by setting the XENVIRONMENT environment variable to the name of a resource file to be loaded by all applications. If this variable is not defined, a file named \fI$HOME\fP/.Xdefaults\-\fIhostname\fP is looked for instead, where \fIhostname\fP is the name of the host where the application is executing. .TP 8 .B \-xrm \fIresourcestring\fP Resources can also be specified from the command line. The \fIresourcestring\fP is a single resource name and value as shown above. Note that if the string contains characters interpreted by the shell (e.g., asterisk), they must be quoted. Any number of \fB\-xrm\fP arguments may be given on the command line. .PP Program resources are organized into groups called \fIclasses\fP, so that collections of individual resources (each of which are called \fIinstances\fP) can be set all at once. By convention, the instance name of a resource begins with a lowercase letter and class name with an upper case letter. Multiple word resources are concatenated with the first letter of the succeeding words capitalized. Applications written with the X Toolkit Intrinsics will have at least the following resources: .PP .TP 8 .B background (\fPclass\fB Background) This resource specifies the color to use for the window background. .PP .TP 8 .B borderWidth (\fPclass\fB BorderWidth) This resource specifies the width in pixels of the window border. .PP .TP 8 .B borderColor (\fPclass\fB BorderColor) This resource specifies the color to use for the window border. .PP Most applications using the X Toolkit Intrinsics also have the resource \fBforeground\fP (class \fBForeground\fP), specifying the color to use for text and graphics within the window. .PP By combining class and instance specifications, application preferences can be set quickly and easily. Users of color displays will frequently want to set Background and Foreground classes to particular defaults. Specific color instances such as text cursors can then be overridden without having to define all of the related resources. For example, .sp .nf bitmap*Dashed: off XTerm*cursorColor: gold XTerm*multiScroll: on XTerm*jumpScroll: on XTerm*reverseWrap: on XTerm*curses: on XTerm*Font: 6x10 XTerm*scrollBar: on XTerm*scrollbar*thickness: 5 XTerm*multiClickTime: 500 XTerm*charClass: 33:48,37:48,45\-47:48,64:48 XTerm*cutNewline: off XTerm*cutToBeginningOfLine: off XTerm*titeInhibit: on XTerm*ttyModes: intr ^c erase ^? kill ^u XLoad*Background: gold XLoad*Foreground: red XLoad*highlight: black XLoad*borderWidth: 0 emacs*Geometry: 80x65\-0\-0 emacs*Background: rgb:5b/76/86 emacs*Foreground: white emacs*Cursor: white emacs*BorderColor: white emacs*Font: 6x10 xmag*geometry: \-0\-0 xmag*borderColor: white .fi .PP If these resources were stored in a file called \fI.Xresources\fP in your home directory, they could be added to any existing resources in the server with the following command: .sp .nf % xrdb \-merge $HOME/.Xresources .fi .sp This is frequently how user-friendly startup scripts merge user-specific defaults into any site-wide defaults. All sites are encouraged to set up convenient ways of automatically loading resources. See the \fIXlib\fP manual section \fIResource Manager Functions\fP for more information. .SH ENVIRONMENT .TP .B DISPLAY This is the only mandatory environment variable. It must point to an X server. See section "Display Names" above. .TP .B XAUTHORITY This must point to a file that contains authorization data. The default is \fI$HOME/.Xauthority\fP. See .BR Xsecurity (__miscmansuffix__), .BR xauth (__appmansuffix__), .BR xdm (__appmansuffix__), .BR Xau (3). .TP .B ICEAUTHORITY This must point to a file that contains authorization data. The default is \fI$HOME/.ICEauthority\fP. .TP .BR LC_ALL ", " LC_CTYPE ", " LANG The first non-empty value among these three determines the current locale's facet for character handling, and in particular the default text encoding. See .BR locale (__miscmansuffix__), .BR setlocale (3), .BR locale (1). .TP .B XMODIFIERS This variable can be set to contain additional information important for the current locale setting. Typically set to \fI@im=\fP to enable a particular input method. See .BR XSetLocaleModifiers (__libmansuffix__). .TP .B XLOCALEDIR This must point to a directory containing the locale.alias file and Compose and XLC_LOCALE file hierarchies for all locales. The default value is\fI __datadir__/X11/locale\fP. .TP .B XENVIRONMENT This must point to a file containing X resources. The default is \fI$HOME/.Xdefaults\-\fP. Unlike \fI$HOME/.Xresources\fP, it is consulted each time an X application starts. .TP .B XFILESEARCHPATH This must contain a colon separated list of path templates, where libXt will search for resource files. The default value consists of .sp .nf __sysconfdir__/X11/%L/%T/%N%C%S:\\ __sysconfdir__/X11/%l/%T/%N%C%S:\\ __sysconfdir__/X11/%T/%N%C%S:\\ __sysconfdir__/X11/%L/%T/%N%S:\\ __sysconfdir__/X11/%l/%T/%N%S:\\ __sysconfdir__/X11/%T/%N%S:\\ __datadir__/X11/%L/%T/%N%C%S:\\ __datadir__/X11/%l/%T/%N%C%S:\\ __datadir__/X11/%T/%N%C%S:\\ __datadir__/X11/%L/%T/%N%S:\\ __datadir__/X11/%l/%T/%N%S:\\ __datadir__/X11/%T/%N%S:\\ __libdir__/X11/%L/%T/%N%C%S:\\ __libdir__/X11/%l/%T/%N%C%S:\\ __libdir__/X11/%T/%N%C%S:\\ __libdir__/X11/%L/%T/%N%S:\\ __libdir__/X11/%l/%T/%N%S:\\ __libdir__/X11/%T/%N%S .fi .sp A path template is transformed to a pathname by substituting: .sp .nf %D => the implementation-specific default path %N => name (basename) being searched for %T => type (dirname) being searched for %S => suffix being searched for %C => value of the resource "customization" (class "Customization") %L => the locale name %l => the locale's language (part before '_') %t => the locale's territory (part after '_` but before '.') %c => the locale's encoding (part after '.') .fi .TP .B XUSERFILESEARCHPATH This must contain a colon separated list of path templates, where libXt will search for user dependent resource files. The default value is: .sp .nf $XAPPLRESDIR/%L/%N%C:\\ $XAPPLRESDIR/%l/%N%C:\\ $XAPPLRESDIR/%N%C:\\ $HOME/%N%C:\\ $XAPPLRESDIR/%L/%N:\\ $XAPPLRESDIR/%l/%N:\\ $XAPPLRESDIR/%N:\\ $HOME/%N .fi .sp $XAPPLRESDIR defaults to \fI$HOME\fP, see below. .sp A path template is transformed to a pathname by substituting: .sp .nf %D => the implementation-specific default path %N => name (basename) being searched for %T => type (dirname) being searched for %S => suffix being searched for %C => value of the resource "customization" (class "Customization") %L => the locale name %l => the locale's language (part before '_') %t => the locale's territory (part after '_` but before '.') %c => the locale's encoding (part after '.') .fi .TP .B XAPPLRESDIR This must point to a base directory where the user stores the application dependent resource files. The default value is \fI$HOME\fP. Only used if XUSERFILESEARCHPATH is not set. .TP .B XKEYSYMDB This must point to a file containing nonstandard keysym definitions. The default value is\fI __datadir__/X11/XKeysymDB\fP. .TP .B XCMSDB This must point to a color name database file. The default value is \fI __libdir__/X11/Xcms.txt\fP. .TP .B RESOURCE_NAME This serves as main identifier for resources belonging to the program being executed. It defaults to the basename of pathname of the program. .TP .B SESSION_MANAGER Denotes the session manager to which the application should connect. See .BR xsm (__appmansuffix__), .BR rstart (__appmansuffix__). .TP .B XF86BIGFONT_DISABLE Setting this variable to a non-empty value disables the XFree86\-Bigfont extension. This extension is a mechanism to reduce the memory consumption of big fonts by use of shared memory. .LP .B XKB_FORCE .br .B XKB_DISABLE .br .B XKB_DEBUG .br .B _XKB_CHARSET .br .B _XKB_LOCALE_CHARSETS .br .B _XKB_OPTIONS_ENABLE .br .B _XKB_LATIN1_LOOKUP .br .B _XKB_CONSUME_LOOKUP_MODS .br .B _XKB_CONSUME_SHIFT_AND_LOCK .br .B _XKB_IGNORE_NEW_KEYBOARDS .br .B _XKB_CONTROL_FALLBACK .br .B _XKB_COMP_LED .B _XKB_COMP_FAIL_BEEP .PP These variables influence the X Keyboard Extension. .SH EXAMPLES The following is a collection of sample command lines for some of the more frequently used commands. For more information on a particular command, please refer to that command's manual page. .sp .nf % xrdb $HOME/.Xresources % xmodmap \-e "keysym BackSpace = Delete" % mkfontdir /usr/local/lib/X11/otherfonts % xset fp+ /usr/local/lib/X11/otherfonts % xmodmap $HOME/.keymap.km % xsetroot \-solid 'rgbi:.8/.8/.8' % xset b 100 400 c 50 s 1800 r on % xset q % twm % xmag % xclock \-geometry 48x48-0+0 \-bg blue \-fg white % xeyes \-geometry 48x48\-48+0 % xbiff \-update 20 % xlsfonts '*helvetica*' % xwininfo \-root % xdpyinfo \-display joesworkstation:0 % xhost \-joesworkstation % xrefresh % xwd | xwud % bitmap companylogo.bm 32x32 % xcalc \-bg blue \-fg magenta % xterm \-geometry 80x66\-0\-0 \-name myxterm $* .fi .SH DIAGNOSTICS A wide variety of error messages are generated from various programs. The default error handler in \fIXlib\fP (also used by many toolkits) uses standard resources to construct diagnostic messages when errors occur. The defaults for these messages are usually stored in \fI__datadir__/X11/XErrorDB\fP. If this file is not present, error messages will be rather terse and cryptic. .PP When the X Toolkit Intrinsics encounter errors converting resource strings to the appropriate internal format, no error messages are usually printed. This is convenient when it is desirable to have one set of resources across a variety of displays (e.g. color vs. monochrome, lots of fonts vs. very few, etc.), although it can pose problems for trying to determine why an application might be failing. This behavior can be overridden by the setting the \fIStringConversionWarnings\fP resource. .PP To force the X Toolkit Intrinsics to always print string conversion error messages, the following resource should be placed in the file that gets loaded onto the RESOURCE_MANAGER property using the \fIxrdb\fP program (frequently called \fI.Xresources\fP or \fI.Xres\fP in the user's home directory): .sp .nf *StringConversionWarnings: on .fi .sp To have conversion messages printed for just a particular application, the appropriate instance name can be placed before the asterisk: .sp .nf xterm*StringConversionWarnings: on .fi .SH "SEE ALSO" .PP .\" introductions .BR XOrgFoundation (__miscmansuffix__), .BR XStandards (__miscmansuffix__), .BR Xsecurity (__miscmansuffix__), .\" clients, utilities, and demos .BR appres (__appmansuffix__), .BR bdftopcf (__appmansuffix__), .BR bitmap (__appmansuffix__), .BR editres (__appmansuffix__), .BR fslsfonts (__appmansuffix__), .BR fstobdf (__appmansuffix__), .BR iceauth (__appmansuffix__), .BR mkfontdir (__appmansuffix__), .BR mkfontscale (__appmansuffix__), .BR oclock (__appmansuffix__), .BR rgb (__appmansuffix__), .BR resize (__appmansuffix__), .BR smproxy (__appmansuffix__), .BR transset (__appmansuffix__), .BR twm (__appmansuffix__), .BR x11perf (__appmansuffix__), .BR x11perfcomp (__appmansuffix__), .BR xauth (__appmansuffix__), .BR xclipboard (__appmansuffix__), .BR xclock (__appmansuffix__), .BR xcmsdb (__appmansuffix__), .BR xcompmgr (__appmansuffix__), .BR xconsole (__appmansuffix__), .BR xdm (__appmansuffix__), .BR xdpyinfo (__appmansuffix__), .BR xdriinfo (__appmansuffix__), .BR xev (__appmansuffix__), .BR xfd (__appmansuffix__), .BR xfontsel (__appmansuffix__), .BR xfs (__appmansuffix__), .BR xfsinfo (__appmansuffix__), .BR xhost (__appmansuffix__), .BR xinit (__appmansuffix__), .BR xkbbell (__appmansuffix__), .BR xkbcomp (__appmansuffix__), .BR xkbevd (__appmansuffix__), .BR xkbprint (__appmansuffix__), .BR xkbvleds (__appmansuffix__), .BR xkbwatch (__appmansuffix__), .BR xkill (__appmansuffix__), .BR xlogo (__appmansuffix__), .BR xlsatoms (__appmansuffix__), .BR xlsclients (__appmansuffix__), .BR xlsfonts (__appmansuffix__), .BR xmag (__appmansuffix__), .BR xmodmap (__appmansuffix__), .BR xprop (__appmansuffix__), .BR xrandr (__appmansuffix__), .BR xrdb (__appmansuffix__), .BR xrefresh (__appmansuffix__), .BR xrestop (__appmansuffix__), .BR xscope (__appmansuffix__), .BR xset (__appmansuffix__), .BR xsetroot (__appmansuffix__), .BR xsm (__appmansuffix__), .BR xstdcmap (__appmansuffix__), .BR xterm (__appmansuffix__), .BR xvinfo (__appmansuffix__), .BR xwd (__appmansuffix__), .BR xwininfo (__appmansuffix__), .BR xwud (__appmansuffix__). .\" servers .BR Xserver (__appmansuffix__), .BR Xorg (__appmansuffix__), .BR Xdmx (__appmansuffix__), .BR Xephyr (__appmansuffix__), .BR Xnest (__appmansuffix__), .BR Xquartz (__appmansuffix__), .BR Xvfb (__appmansuffix__), .BR Xvnc (__appmansuffix__), .BR XWin (__appmansuffix__). .PP .\" specifications .I "Xlib \- C Language X Interface\fR,\fP" and .I "X Toolkit Intrinsics \- C Language Interface" .PP Those specifications, and additional specifications & documentation for the X Window System may also be found in __datadir__/doc or on the X.Org Foundation website at .UR "http://www.x.org/releases/current/doc/" .UE . .SH TRADEMARKS .PP X Window System is a trademark of The Open Group. .SH AUTHORS .PP A cast of thousands, literally. Releases 6.7 and later are brought to you by the X.Org Foundation. The names of all people who made it a reality will be found in the individual documents and source files. .PP Releases 6.6 and 6.5 were done by The X.Org Group. Release 6.4 was done by The X Project Team. The Release 6.3 distribution was from The X Consortium, Inc. The staff members at the X Consortium responsible for that release were: Donna Converse (emeritus), Stephen Gildea (emeritus), Kaleb Keithley, Matt Landau (emeritus), Ralph Mor (emeritus), Janet O'Halloran, Bob Scheifler, Ralph Swick, Dave Wiggins (emeritus), and Reed Augliere. .PP The X Window System standard was originally developed at the Laboratory for Computer Science at the Massachusetts Institute of Technology, and all rights thereto were assigned to the X Consortium on January 1, 1994. X Consortium, Inc. closed its doors on December 31, 1996. All rights to the X Window System have been assigned to The Open Group. xorg-docs-1.7.3/man/Consortium.man0000644014310600000120000001601114600067622012514 .\" Copyright (c) 1993, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice shall be included in .\" all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL .\" THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, .\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF .\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE .\" SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall not .\" be used in advertising or otherwise to promote the sale, use or other .\" dealing in this Software without prior written authorization from the .\" X Consortium. .\" .TH XCONSORTIUM __miscmansuffix__ __xorgversion__ .SH NAME XConsortium \- X Consortium information .SH SYNOPSIS Releases 6.0 through 6.3 of X Version 11 were brought to you by the X Consortium, Inc. .SH DESCRIPTION The X Consortium was an independent, not-for-profit Delaware membership corporation. It was formed in 1993 as the successor to the MIT X Consortium. The purpose of the X Consortium was to foster the development, evolution, and maintenance of the X Window System, a comprehensive set of vendor-neutral, system-architecture neutral, network-transparent windowing and user interface standards. .PP The X Window System was created in the mid-1980s at the Massachusetts Institute of Technology. In 1988, MIT formed a member-funded consortium to provide the technical and administrative leadership necessary to support further development of the X Window System. In 1992, MIT and the membership decided it was in their best interests to move the consortium out of MIT and create an independent, stand-alone organization. All rights to the X Window System were assigned by MIT to X Consortium, Inc. on January 1, 1994. X Consortium, Inc. closed its doors on December 31, 1996. All rights to the X Window System have been assigned to the Open Software Foundation. .PP The X Consortium was financially self-supporting through membership fees. There are no license fees associated with the use of X Window System standards and code developed by the X Consortium. Membership in the X Consortium was open to any organization willing to execute a membership agreement. .PP The X Consortium was a highly participative body. Members were encouraged to actively cooperate with the staff and other members in the design and review of proposed specifications, and in the design, coding and testing of sample implementations of those specifications. .PP The X Consortium accomplished most of its work using electronic mail over the Internet, with individual mailing lists for working groups. Internet electronic mail connectivity was viewed as a requirement for useful participation in X Consortium activities. Meetings were held as necessary, often in conjunction with industry conferences and trade shows. .SH STAFF .nf President: Bob Scheifler Office Manager: Janet O'Halloran Director of Marketing: Paul Lavallee Director of Engineering: Jim Fournier Manager, X Window System: Matt Landau, emeritus Technical Director, X Window System: Ralph Swick Technical Staff, X Window System: Donna Converse, emeritus Stephen Gildea, emeritus Kaleb Keithley Arnaud Le Hors Ralph Mor, emeritus Ray Tice Dave Wiggins, emeritus Managers, CDE Development: Giora Guth Peter Bohnert, emeritus Manager, CDE Quality Engineering: David Brooks CDE Architects: Kevin Samborn Daniel Dardailler, emeritus Technical Staff, CDE Development: Art Barstow Pascale Dardailler David Kaelbling Mitch Greess Robert Seacord Technical Staff, CDE Quality Engineering: Chris Burleson Tom Cavin Sami Mohammed Mark Schuldenfrei Manager, Systems Administration: Kevin Ethier Technical Staff, Systems Administration: Mike Donati Amy Rich, emeritus Anne Salemme .fi .SH "BOARD OF DIRECTORS" The X Consortium's activities and affairs were managed under the direction and oversight of a Board of Directors, elected annually by the Members. The Board was responsible for reviewing the achievements of the Consortium, approving planned work, appointing a President and other officers of the Consortium, and setting membership dues. The last Directors were: .nf Robert W. Scheifler, President, X Consortium Dr. Forest Baskett, Senior VP of R&D, Silicon Graphics Computer Systems Harold D. Blair, Apogee International Corp. Roger S. Gourd, Gourd & Associates Dr. Robin Hillyard, Chairman and Chief Technical Officer, Novasoft Systems Don McGovern, General Operations Manager and Executive Dir., Hewlett Packard Peter J. Shaw, Senior VP, NetManage Michael Tobias, President, Tech-Source, Inc. .fi .SH "ADDRESS" To reach the X Consortium public Wide World Web server, use the URL: http://www.x.org/ .PP To reach the X Consortium public ftp machine, use anonymous ftp to: ftp.x.org .SH "FULL MEMBERS" .nf Adobe Systems Inc. Cray Research, Inc. Digital Equipment Corp. Fujitsu Limited Hewlett-Packard Company Hitachi Ltd. IBM Corporation Megatek Corp. Motorola, Inc. NEC Corporation Novell, Inc. Oki Electric Industry Co., Ltd. OMRON Corporation SCO, Inc. Siemens Nixdorf Informationssysteme AG Silicon Graphics, Inc. Sony Corporation Sun Microsystems, Inc. Tektronix, Inc. .fi .SH "ASSOCIATE MEMBERS" .nf Boundless Technologies Hummingbird Communications Ltd. Insignia Solutions, Ltd. Mercury Interactive Corp. NetManage, Inc. Network Computing Devices VisiCom Laboratories, Inc. Walker Richer & Quinn, Inc. .fi .SH "END USERS" .nf Hughes Aircraft Company .fi .SH "AFFILIATE MEMBERS" .nf ASTEC, Inc. BARCO Chromatics, Inc. CenterLine Software, Inc. CliniComp, Intl. Component Integration Laboratories, Inc. Draper Laboratory. Electronic Book Technologies, Inc. Gallium Software, Inc. Georgia Institute of Technology Human Designed Systems, Inc. INRIA \- Institut National de Recherche en Informatique et en Automatique Integrated Computer Solutions, Inc. Investment Management Services, Inc. Jupiter Systems KL Group Inc. Massachusetts Institute of Technology Metheus Corporation Metro Link, Inc. Object Management Group, Inc. Open Software Foundation Performance Awareness Corp. Peritek Corp. Petrotechnical Open Software Corp. Point Technologies, Inc. Shiman Associates, Inc. Smithsonian Astrophysical Observatory. Software Development Corp. SOUM Corporation Spectragraphics Corp. Tech-Source, Inc. TriTeal Corp. White Pine Software, Inc. World Wide Web Consortium. The XFree86 Project, Inc. X Inside, Inc. .fi xorg-docs-1.7.3/man/XOrgFoundation.man0000644014310600000120000000571114600067622013265 .\" .\" Copyright 2004, 2005 X.Org Foundation, LLC .\" Copyright (c) 1993, 1994, 1996 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice shall be included in .\" all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL .\" THE X.ORG FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, .\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF .\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE .\" SOFTWARE. .\" .TH XORGFOUNDATION __miscmansuffix__ __xorgversion__ .SH NAME XOrgFoundation \- X.Org Foundation information .SH SYNOPSIS Release 6.7 and later of X Version 11 is brought to you by the X.Org Foundation. .SH DESCRIPTION The X.Org Foundation is a member project of Software in the Public Interest (SPI), an independent, not-for-profit 501(c)(3) charity corporation. It was formed in 2004 as the successor to the X.Org Group at The Open Group. The purpose of the X.Org Foundation is to foster the development, evolution, and maintenance of the X Window System, a comprehensive set of vendor-neutral, system-architecture neutral, network-transparent windowing and user interface standards. Membership in the X.Org Foundation is free and open to anyone. The X.Org Foundation hosts public git repositories of the source code on freedesktop.org. .PP The X Window System was created in the mid-1980s at the Massachusetts Institute of Technology. In 1988, MIT formed a member-funded consortium to provide the technical and administrative leadership necessary to support further development of the X Window System. In 1992, MIT and the membership decided it was in their best interests to move the consortium out of MIT and create an independent, stand-alone organization. All rights to the X Window System were assigned by MIT to X Consortium, Inc. on January 1, 1994. On December 31, 1996 the X Consortium, Inc. closed its doors and all rights to the X Window System were assigned to The Open Group (then known as the Open Software Foundation). .PP .SH "ADDRESSES" The X.Org Foundation's web site is https://www.x.org/ .SH "ADDRESSES" SPI's web site is https://spi-inc.org/ .PP The X.Org Foundation's public ftp site is ftp://ftp.x.org/ .PP The X.Org Foundation's public source repositories are at https://gitlab.freedesktop.org/xorg .fi xorg-docs-1.7.3/man/Makefile.am0000644014310600000120000000333614600067622011717 # Copyright 2005 Red Hat, Inc. # # Permission to use, copy, modify, distribute, and sell this software # and its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and # that both that copyright notice and this permission notice appear in # supporting documentation, and that the name of Red Hat not be used in # advertising or publicity pertaining to distribution of the software # without specific, written prior permission. Red Hat makes no # representations about the suitability of this software for any # purpose. It is provided "as is" without express or implied warranty. # # RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN # NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE # USE OR PERFORMANCE OF THIS SOFTWARE. # # Process this file with autoconf to create configure. miscmandir = $(MISC_MAN_DIR) miscman_PRE = \ Consortium.man \ Xsecurity.man \ Standards.man \ X.man \ XOrgFoundation.man \ XProjectTeam.man miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@) EXTRA_DIST = $(miscman_PRE) CLEANFILES = $(miscman_DATA) SUFFIXES = .$(MISC_MAN_SUFFIX) .man # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure MAN_SUBSTS += -e 's|__datadir__|$(datadir)|g' \ -e 's|__libdir__|$(libdir)|g' \ -e 's|__sysconfdir__|$(sysconfdir)|g' .man.$(MISC_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ xorg-docs-1.7.3/man/XProjectTeam.man0000644014310600000120000000666414600067622012734 .\" Copyright (c) 1993, 1994, 1996 X Consortium .\" Copyright (c) 1996, 2000 The Open Group .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice shall be included in .\" all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL .\" THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, .\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF .\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE .\" SOFTWARE. .\" .\" Except as contained in this notice, the name of the X Consortium shall not .\" be used in advertising or otherwise to promote the sale, use or other .\" dealing in this Software without prior written authorization from the .\" X Consortium. .\" .\" .TH XORG __miscmansuffix__ __xorgversion__ .SH NAME X.Org, XProjectTeam \- X.Org Group information .SH SYNOPSIS Release 6.5 and 6.6 of X Version 11 was brought to you by The X.Org Group. Release 6.4 of X Version 11 was brought to you by The X Project Team. .SH DESCRIPTION The Open Group's X Project Team was created as the successor to the X Consortium, Inc., after the X Consortium ceased operations and transferred ownership of X11 to The Open Group. The X.Org Group (hereinafter called "X.Org") was created as the successor to The X Project Team after the The Open Group ceased operating The X Project Team. The purpose of X.Org was to foster development, evolution, and maintenance of the X Window System. X.Org operates under the corporate umbrella of The Open Group. .PP The X Consortium was an independent, not-for-profit Delaware membership corporation. It was formed in 1993 as the successor to the MIT X Consortium. .PP The X Window System was created in the mid-1980s at the Massachusetts Institute of Technology. In 1988, MIT formed a member-funded consortium to provide the technical and administrative leadership necessary to support further development of the X Window System. In 1992, MIT and the membership decided it was in their best interests to move the consortium out of MIT and create an independent, stand-alone organization. All rights to the X Window System were assigned by MIT to X Consortium, Inc. on January 1, 1994. On December 31, 1996 the X Consortium, Inc. closed its doors and all rights to the X Window System were assigned to The Open Group. .PP .SH "ADDRESS" To reach The Open Group public World Wide Web server, use http://www.opengroup.org/. .PP To reach The X.Org public World Wide Web server, use http://www.x.org/. .PP To reach The X.Org public ftp machine, use anonymous ftp at ftp://ftp.x.org/ .SH "FULL MEMBERS" .nf Attachmate Barco Compaq Hewlett-Packard Hummingbird IBM ICS Metro Link MITRE Shiman Associates Silicon Graphics Incorporated Starnet Communications Sun Microsystems The XFree86 Project US Navy WRQ Xi Graphics .fi xorg-docs-1.7.3/man/Makefile.in0000644014310600000120000003701214600067626011732 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright 2005 Red Hat, Inc. # # Permission to use, copy, modify, distribute, and sell this software # and its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and # that both that copyright notice and this permission notice appear in # supporting documentation, and that the name of Red Hat not be used in # advertising or publicity pertaining to distribution of the software # without specific, written prior permission. Red Hat makes no # representations about the suitability of this software for any # purpose. It is provided "as is" without express or implied warranty. # # RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN # NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE # USE OR PERFORMANCE OF THIS SOFTWARE. # # Process this file with autoconf to create configure. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(miscmandir)" DATA = $(miscman_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure MAN_SUBSTS = @MAN_SUBSTS@ -e 's|__datadir__|$(datadir)|g' -e \ 's|__libdir__|$(libdir)|g' -e \ 's|__sysconfdir__|$(sysconfdir)|g' MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ miscmandir = $(MISC_MAN_DIR) miscman_PRE = \ Consortium.man \ Xsecurity.man \ Standards.man \ X.man \ XOrgFoundation.man \ XProjectTeam.man miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@) EXTRA_DIST = $(miscman_PRE) CLEANFILES = $(miscman_DATA) SUFFIXES = .$(MISC_MAN_SUFFIX) .man all: all-am .SUFFIXES: .SUFFIXES: .$(MISC_MAN_SUFFIX) .man $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign man/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-miscmanDATA: $(miscman_DATA) @$(NORMAL_INSTALL) @list='$(miscman_DATA)'; test -n "$(miscmandir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(miscmandir)'"; \ $(MKDIR_P) "$(DESTDIR)$(miscmandir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(miscmandir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(miscmandir)" || exit $$?; \ done uninstall-miscmanDATA: @$(NORMAL_UNINSTALL) @list='$(miscman_DATA)'; test -n "$(miscmandir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(miscmandir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(miscmandir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-miscmanDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-miscmanDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-miscmanDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-miscmanDATA .PRECIOUS: Makefile .man.$(MISC_MAN_SUFFIX): $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/man/Standards.man0000644014310600000120000002466214600067622012310 .\" Copyright (c) 1993, 1994, 1996, 2004 The Open Group .\" .\" All rights reserved. .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, and/or sell copies of the Software, and to permit persons .\" to whom the Software is furnished to do so, provided that the above .\" copyright notice(s) and this permission notice appear in all copies of .\" the Software and that both the above copyright notice(s) and this .\" permission notice appear in supporting documentation. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT .\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR .\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL .\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING .\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, .\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION .\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Except as contained in this notice, the name of a copyright holder .\" shall not be used in advertising or otherwise to promote the sale, use .\" or other dealings in this Software without prior written authorization .\" of the copyright holder. .\" .\" X Window System is a trademark of The Open Group. .\" .TH XSTANDARDS __miscmansuffix__ __xorgversion__ .SH NAME XStandards \- X Window System Standards and Specifications .SH DESCRIPTION The major goal of the X Consortium was to promote cooperation within the computer industry in the creation of standard software interfaces at all layers in the X Window System environment. The X Consortium produced standards - documents which defined network protocols, programming interfaces, and other aspects of the X environment. These standards continue to exist in the X.Org Foundation releases. The X.Org Foundation also produces specifications. Like X Window System Standards, these are documents which define network protocols, programming interfaces, and other aspects of the X environment. Under the aegis of The Open Group, X Window System standards, X.Org Foundation specifications, and other specifications are the basis for portions of The Open Group's various CAE specifications. .PP The status of various standards, specifications, and the software in the X11R7.0 distribution, is explained below. .SH STANDARDS The following documents are X Window System standards: .nf X Window System Protocol X Version 11, Release 7.0 Robert W. Scheifler Xlib \- C Language X Interface X Version 11, Release 7.0 James Gettys, Robert W. Scheifler, Ron Newman X Toolkit Intrinsics \- C Language Interface X Version 11, Release 7.0 Joel McCormack, Paul Asente, Ralph R. Swick, Donna Converse Bitmap Distribution Format Version 2.1 X Version 11, Release 7.0 Inter-Client Communication Conventions Manual Version 2.0 X Version 11, Release 7.0 David Rosenthal, Stuart W. Marks Compound Text Encoding Version 1.1 X Version 11, Release 7.0 Robert W. Scheifler X Logical Font Description Conventions Version 1.5 X Version 11, Release 7.0 Jim Flowers, Stephen Gildea X Display Manager Control Protocol Version 1.1 X Version 11, Release 7.0 Keith Packard X11 Nonrectangular Window Shape Extension Version 1.0.1 X Version 11, Release 7.0 Keith Packard X11 Input Extension Protocol Specification Version 1.0 X Version 11, Release 7.0 George Sachs, Mark Patrick X11 Input Extension Library Specification X Version 11, Release 7.0 Mark Patrick, George Sachs The X Font Service Protocol Version 2.0 X Version 11, Release 7.0 Jim Fulton Inter-Client Exchange (ICE) Protocol Version 1.0 X Version 11, Release 7.0 Robert Scheifler, Jordan Brown Inter-Client Exchange (ICE) Library Version 1.0 X Version 11, Release 7.0 Ralph Mor X Session Management Protocol Version 1.0 X Version 11, Release 7.0 Mike Wexler X Session Management Library Version 1.0 X Version 11, Release 7.0 Ralph Mor The Input Method Protocol Version 1.0 X Version 11, Release 7.0 Masahiko Narita, Hideki Hiura X Synchronization Extension Version 3.0 X Version 11, Release 7.0 Tim Glauert, Dave Carver, Jim Gettys, David P. Wiggins XTEST Extension Version 2.2 Kieron Drake Big Requests Extension Version 2.0 X Version 11, Release 7.0 Bob Scheifler XC-MISC Extension Version 1.1 X Version 11, Release 7.0 Bob Scheifler, Dave Wiggins Double Buffer Extension Version 1.0 Ian Elliott, David P. Wiggins Record Extension Protocol Version 1.13 Martha Zimet, Stephen Gildea Record Extension Library Version 1.13 Martha Zimet, Stephen Gildea X Keyboard Extension Protocol X Version 11, Release 7.0 Erik Fortune X Keyboard Extension Library X Version 11, Release 7.0 Amber J. Benson, Gary Aitken, Erik Fortune, Donna Converse, George Sachs, and Will Walker X Print Extension Protocol X Version 11, Release 7.0 X Print Extension Library X Version 11, Release 7.0 X Application Group Extension Protocol and Library Version 1.0 X Version 11, Release 7.0 Kaleb Keithley X Security Extension Protocol and Library Version 4.0 X Version 11, Release 7.0 Dave Wiggins X Proxy Manager Protocol X Version 11, Release 7.0 Ralph Swick LBX Extension Protocol and Library X Version 11, Release 7.0 Keith Packard, Dave Lemke, Donna Converse, Ralph Mor, Ray Tice Remote Execution MIME Type Version 1.0 X Version 11, Release 7.0 Arnaud Le Hors .fi .SH SPECIFICATIONS The following documents are X Project Team specifications: .nf Colormap Utilization Policy and Extension Version 1.0 Kaleb Keithley Extended Visual Information Extension Version 1.0 Peter Daifuku X Display Power Management (DPMS) Extension Protocol and Library Version 1.0 Rob Lembree .SH "INCLUDE FILES" The following include files are part of the Xlib standard. .PP .nf .fi .PP The following include files are part of the X Toolkit Intrinsics standard. .PP .nf .fi .PP The following include file is part of the Nonrectangular Window Shape Extension standard. .PP .nf .fi .PP The following include files are part of the X Input Extension standard. .PP .nf .fi .PP The following include files are part of the ICElib standard. .PP .nf .fi .PP The following include files are part of the SMlib standard. .PP .nf .fi .PP The following include file is part of the Synchronization standard. .PP .nf .fi .PP The following include file is part of the XTEST standard. .PP .nf .fi .PP The following include file is part of the Double Buffer Extension standard. .PP .nf .fi .PP The following include file is part of the Record Library standard. .PP .nf .fi .PP The following include files are part of the X Keyboard Extension Library standard. .PP .nf \" some subset of... .fi .PP The following include files are part of the X Print Extension Library standard. .PP .nf .fi .PP The following include files are part of the X Application Group Extension Library standard. .PP .nf .fi .PP The following include files are part of the X Security Extension Library standard. .PP .nf .fi .PP The following include files are part of the LBX Extension library standard. .PP .nf \" some subset of... .fi .PP The following include files are part of the Colormap Utilization Policy and Extension specification. .PP .nf .fi .PP The following include files are part of the Extended Visual Information specification. .PP .nf .fi .PP The following include files are part of the X Display Management Signaling Extension specification. .PP .nf .fi .SH "NON STANDARDS" The X11R7.0 distribution contains \fIsample\fP implementations, not \fIreference\fP implementations. Although much of the code is believed to be correct, the code should be assumed to be in error wherever it conflicts with the specification. .PP The only X Window System standards are the ones listed above. No other documents, include files, or software in X11R7.0 carry special status within the X Window System. For example, none of the following are standards: internal interfaces of the sample server; the MIT-SHM extension; the Athena Widget Set; the Xmu library; the Xau library; the RGB database; the X Locale database; the fonts distributed with X11R7.0; the applications distributed with X11R7.0; the include files , , , , , , , and ; the bitmap files in . .PP The Multi-Buffering extension was a draft standard of the X Consortium but has been superseded by DBE as a standard. .SH "X REGISTRY" The X.Org Foundation maintains a registry of certain X-related items, to aid in avoiding conflicts and to aid in sharing of such items. .PP The registry is published as part of the X Window System software release. The latest version may also be found at .nf ftp://ftp.x.org/pub/DOCS/registry .fi The X Registry and the names in it are not X Window System standards. xorg-docs-1.7.3/man/Xsecurity.man0000644014310600000120000003355114600067622012361 .\" Copyright (c) 2004, Oracle and/or its affiliates. .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the "Software"), .\" to deal in the Software without restriction, including without limitation .\" the rights to use, copy, modify, merge, publish, distribute, sublicense, .\" and/or sell copies of the Software, and to permit persons to whom the .\" Software is furnished to do so, subject to the following conditions: .\" .\" The above copyright notice and this permission notice (including the next .\" paragraph) shall be included in all copies or substantial portions of the .\" Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL .\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER .\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING .\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER .\" DEALINGS IN THE SOFTWARE. .\" .\" Copyright (c) 1993, 1994 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining a .\" copy of this software and associated documentation files (the .\" "Software"), to deal in the Software without restriction, including .\" without limitation the rights to use, copy, modify, merge, publish, .\" distribute, and/or sell copies of the Software, and to permit persons .\" to whom the Software is furnished to do so, provided that the above .\" copyright notice(s) and this permission notice appear in all copies of .\" the Software and that both the above copyright notice(s) and this .\" permission notice appear in supporting documentation. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT .\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR .\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL .\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING .\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, .\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION .\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Except as contained in this notice, the name of a copyright holder .\" shall not be used in advertising or otherwise to promote the sale, use .\" or other dealings in this Software without prior written authorization .\" of the copyright holder. .\" .\" X Window System is a trademark of The Open Group. .\" .nr )S 12 .TH XSECURITY __miscmansuffix__ __xorgversion__ .SH NAME Xsecurity \- X display access control .SH OVERVIEW .PP X provides mechanism for implementing many access control systems. The sample implementation includes five mechanisms: .nf .br .ta 3.4i Host Access Simple host-based access control. MIT-MAGIC-COOKIE-1 Shared plain-text "cookies". XDM-AUTHORIZATION-1 Secure DES based private-keys. SUN-DES-1 Based on Sun's secure rpc system. Server Interpreted Server-dependent methods of access control .fi Not all of these are available in all builds or implementations. .SH "ACCESS SYSTEM DESCRIPTIONS" .IP "Host Access" Any client on a host in the host access control list is allowed access to the X server. This system can work reasonably well in an environment where everyone trusts everyone, or when only a single person can log in to a given machine, and is easy to use when the list of hosts used is small. This system does not work well when multiple people can log in to a single machine and mutual trust does not exist. The list of allowed hosts is stored in the X server and can be changed with the \fIxhost\fP command. The list is stored in the server by network address, not host names, so is not automatically updated if a host changes address while the server is running. When using the more secure mechanisms listed below, the host list is normally configured to be the empty list, so that only authorized programs can connect to the display. See the GRANTING ACCESS section of the \fIXserver\fP man page for details on how this list is initialized at server startup. .IP "MIT-MAGIC-COOKIE-1" When using MIT-MAGIC-COOKIE-1, the client sends a 128 bit "cookie" along with the connection setup information. If the cookie presented by the client matches one that the X server has, the connection is allowed access. The cookie is chosen so that it is hard to guess; \fIxdm\fP generates such cookies automatically when this form of access control is used. The user's copy of the cookie is usually stored in the \fI.Xauthority\fP file in the home directory, although the environment variable \fBXAUTHORITY\fP can be used to specify an alternate location. \fIXdm\fP automatically passes a cookie to the server for each new login session, and stores the cookie in the user file at login. .IP The cookie is transmitted on the network without encryption, so there is nothing to prevent a network snooper from obtaining the data and using it to gain access to the X server. This system is useful in an environment where many users are running applications on the same machine and want to avoid interference from each other, with the caveat that this control is only as good as the access control to the physical network. In environments where network-level snooping is difficult, this system can work reasonably well. .IP "XDM-AUTHORIZATION-1" Sites who compile with DES support can use a DES-based access control mechanism called XDM-AUTHORIZATION-1. It is similar in usage to MIT-MAGIC-COOKIE-1 in that a key is stored in the \fI.Xauthority\fP file and is shared with the X server. However, this key consists of two parts - a 56 bit DES encryption key and 64 bits of random data used as the authenticator. .IP When connecting to the X server, the application generates 192 bits of data by combining the current time in seconds (since 00:00 1/1/1970 GMT) along with 48 bits of "identifier". For TCP/IPv4 connections, the identifier is the address plus port number; for local connections it is the process ID and 32 bits to form a unique id (in case multiple connections to the same server are made from a single process). This 192 bit packet is then encrypted using the DES key and sent to the X server, which is able to verify if the requestor is authorized to connect by decrypting with the same DES key and validating the authenticator and additional data. This system is useful in many environments where host-based access control is inappropriate and where network security cannot be ensured. .IP "SUN-DES-1" Recent versions of SunOS (and some other systems) have included a secure public key remote procedure call system. This system is based on the notion of a network principal; a user name and NIS domain pair. Using this system, the X server can securely discover the actual user name of the requesting process. It involves encrypting data with the X server's public key, and so the identity of the user who started the X server is needed for this; this identity is stored in the \fI.Xauthority\fP file. By extending the semantics of "host address" to include this notion of network principal, this form of access control is very easy to use. .IP To allow access by a new user, use \fIxhost\fP. For example, .nf xhost keith@ ruth@mit.edu .fi adds "keith" from the NIS domain of the local machine, and "ruth" in the "mit.edu" NIS domain. For keith or ruth to successfully connect to the display, they must add the principal who started the server to their \fI.Xauthority\fP file. For example: .nf xauth add expo.lcs.mit.edu:0 SUN-DES-1 unix.expo.lcs.mit.edu@our.domain.edu .fi This system only works on machines which support Secure RPC, and only for users which have set up the appropriate public/private key pairs on their system. See the Secure RPC documentation for details. To access the display from a remote host, you may have to do a \fIkeylogin\fP on the remote host first. .IP "Server Interpreted" The Server Interpreted method provides two strings to the X server for entry in the access control list. The first string represents the type of entry, and the second string contains the value of the entry. These strings are interpreted by the server and different implementations and builds may support different types of entries. The types supported in the sample implementation are defined in the SERVER INTERPRETED ACCESS TYPES section below. Entries of this type can be manipulated via \fIxhost\fP. For example to add a Server Interpreted entry of type localuser with a value of root, the command is \fBxhost +si:localuser:root\fP. .SH "THE AUTHORIZATION FILE" .PP Except for Host Access control and Server Interpreted Access Control, each of these systems uses data stored in the \fI.Xauthority\fP file to generate the correct authorization information to pass along to the X server at connection setup. MIT-MAGIC-COOKIE-1 and XDM-AUTHORIZATION-1 store secret data in the file; so anyone who can read the file can gain access to the X server. SUN-DES-1 stores only the identity of the principal who started the server (unix.\fIhostname\fP@\fIdomain\fP when the server is started by \fIxdm\fP), and so it is not useful to anyone not authorized to connect to the server. .PP Each entry in the \fI.Xauthority\fP file matches a certain connection family (TCP/IP, DECnet or local connections) and X display name (hostname plus display number). This allows multiple authorization entries for different displays to share the same data file. A special connection family (FamilyWild, value 65535) causes an entry to match every display, allowing the entry to be used for all connections. Each entry additionally contains the authorization name and whatever private authorization data is needed by that authorization type to generate the correct information at connection setup time. .PP The \fIxauth\fP program manipulates the \fI.Xauthority\fP file format. It understands the semantics of the connection families and address formats, displaying them in an easy to understand format. It also understands that SUN-DES-1 uses string values for the authorization data, and displays them appropriately. .PP The X server (when running on a workstation) reads authorization information from a file name passed on the command line with the \fI\-auth\fP option (see the \fIXserver\fP manual page). The authorization entries in the file are used to control access to the server. In each of the authorization schemes listed above, the data needed by the server to initialize an authorization scheme is identical to the data needed by the client to generate the appropriate authorization information, so the same file can be used by both processes. This is especially useful when \fIxinit\fP is used. .IP "MIT-MAGIC-COOKIE-1" This system uses 128 bits of data shared between the user and the X server. Any collection of bits can be used. \fIXdm\fP generates these keys using a cryptographically secure pseudo random number generator, and so the key to the next session cannot be computed from the current session key. .IP "XDM-AUTHORIZATION-1" This system uses two pieces of information. First, 64 bits of random data, second a 56 bit DES encryption key (again, random data) stored in 8 bytes, the last byte of which is ignored. \fIXdm\fP generates these keys using the same random number generator as is used for MIT-MAGIC-COOKIE-1. .IP "SUN-DES-1" This system needs a string representation of the principal which identifies the associated X server. This information is used to encrypt the client's authority information when it is sent to the X server. When \fIxdm\fP starts the X server, it uses the root principal for the machine on which it is running (unix.\fIhostname\fP@\fIdomain\fP, e.g., "unix.expire.lcs.mit.edu@our.domain.edu"). Putting the correct principal name in the \fI.Xauthority\fP file causes Xlib to generate the appropriate authorization information using the secure RPC library. .SH "SERVER INTERPRETED ACCESS TYPES" The sample implementation includes several Server Interpreted mechanisms: .nf .br .ta 3.4i IPv6 IPv6 literal addresses hostname Network host name localuser Local connection user id localgroup Local connection group id .fi .IP "IPv6" A literal IPv6 address as defined in IETF RFC 3513. This allows adding IPv6 addresses when the X server supports IPv6, but the xhost client was compiled without IPv6 support. .IP "hostname" The value must be a hostname as defined in IETF RFC 2396. Due to Mobile IP and dynamic DNS, the name service is consulted at connection authentication time, unlike the traditional host access control list which only contains numeric addresses and does not automatically update when a host's address changes. Note that this definition of hostname does not allow use of literal IP addresses. .IP "localuser & localgroup" On systems which can determine in a secure fashion the credentials of a client process, the "localuser" and "localgroup" authentication methods provide access based on those credentials. The format of the values provided is platform specific. For POSIX & UNIX platforms, if the value starts with the character '#', the rest of the string is treated as a decimal uid or gid, otherwise the string is defined as a user name or group name. .IP If your system supports this method and you use it, be warned that some programs that proxy connections and are setuid or setgid may get authenticated as the uid or gid of the proxy process. For instance, some versions of ssh will be authenticated as the user root, no matter what user is running the ssh client, so on systems with such software, adding access for localuser:root may allow wider access than intended to the X display. .SH FILES \&.Xauthority .SH "SEE ALSO" X(__miscmansuffix__), xdm(1), xauth(1), xhost(1), xinit(1), Xserver(1) xorg-docs-1.7.3/configure0000755014310600000120000043220114600067625011017 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.72 for xorg-docs 1.7.3. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://gitlab.freedesktop.org/xorg/doc/xorg-docs/-/issues $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated as_awk_strverscmp=' # Use only awk features that work with 7th edition Unix awk (1978). # My, what an old awk you have, Mr. Solaris! END { while (length(v1) && length(v2)) { # Set d1 to be the next thing to compare from v1, and likewise for d2. # Normally this is a single character, but if v1 and v2 contain digits, # compare them as integers and fractions as strverscmp does. if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { # Split v1 and v2 into their leading digit string components d1 and d2, # and advance v1 and v2 past the leading digit strings. for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) if (d1 ~ /^0/) { if (d2 ~ /^0/) { # Compare two fractions. while (d1 ~ /^0/ && d2 ~ /^0/) { d1 = substr(d1, 2); len1-- d2 = substr(d2, 2); len2-- } if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { # The two components differ in length, and the common prefix # contains only leading zeros. Consider the longer to be less. d1 = -len1 d2 = -len2 } else { # Otherwise, compare as strings. d1 = "x" d1 d2 = "x" d2 } } else { # A fraction is less than an integer. exit 1 } } else { if (d2 ~ /^0/) { # An integer is greater than a fraction. exit 2 } else { # Compare two integers. d1 += 0 d2 += 0 } } } else { # The normal case, without worrying about digits. d1 = substr(v1, 1, 1); v1 = substr(v1, 2) d2 = substr(v2, 1, 1); v2 = substr(v2, 2) } if (d1 < d2) exit 1 if (d1 > d2) exit 2 } # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), # which mishandles some comparisons of empty strings to integers. if (length(v2)) exit 1 if (length(v1)) exit 2 } ' test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xorg-docs' PACKAGE_TARNAME='xorg-docs' PACKAGE_VERSION='1.7.3' PACKAGE_STRING='xorg-docs 1.7.3' PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/doc/xorg-docs/-/issues' PACKAGE_URL='' ac_unique_file="Makefile.am" ac_subst_vars='LTLIBOBJS LIBOBJS HAVE_STYLESHEETS_FALSE HAVE_STYLESHEETS_TRUE XSL_STYLESHEET STYLESHEET_SRCDIR XORG_SGML_PATH HAVE_FOP_FALSE HAVE_FOP_TRUE FOP HAVE_XSLTPROC_FALSE HAVE_XSLTPROC_TRUE XSLTPROC HAVE_XMLTO_FALSE HAVE_XMLTO_TRUE HAVE_XMLTO_TEXT_FALSE HAVE_XMLTO_TEXT_TRUE XMLTO ENABLE_SPECS_FALSE ENABLE_SPECS_TRUE ENABLE_DOCS_FALSE ENABLE_DOCS_TRUE MAN_SUBSTS XORG_MAN_PAGE ADMIN_MAN_DIR DRIVER_MAN_DIR MISC_MAN_DIR FILE_MAN_DIR LIB_MAN_DIR APP_MAN_DIR ADMIN_MAN_SUFFIX DRIVER_MAN_SUFFIX MISC_MAN_SUFFIX FILE_MAN_SUFFIX LIB_MAN_SUFFIX APP_MAN_SUFFIX SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build INSTALL_CMD PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG CHANGELOG_CMD AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_docs enable_specs with_xmlto with_xsltproc with_fop ' ac_precious_vars='build_alias host_alias target_alias PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR XMLTO XSLTPROC FOP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # 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 xorg-docs 1.7.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/xorg-docs] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of xorg-docs 1.7.3:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-docs Enable building the documentation (default: yes) --enable-specs Enable building the specs (default: yes) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-xmlto Use xmlto to regenerate documentation (default: auto) --with-xsltproc Use xsltproc for the transformation of XML documents (default: auto) --with-fop Use fop to regenerate documentation (default: auto) Some influential environment variables: PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path XMLTO Path to xmlto command XSLTPROC Path to xsltproc command FOP Path to fop command Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF xorg-docs configure 1.7.3 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac 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 xorg-docs $as_me 1.7.3, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub missing install-sh" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Initialize Automake am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was 's,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ *'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS ;; esac fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use plain mkdir -p, # in the hope it doesn't have the bugs of ancient mkdir. MKDIR_P='mkdir -p' fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else case e in #( e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make ;; esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='xorg-docs' VERSION='1.7.3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Require xorg-macros minimum of 1.20 for XORG_DEFAULT_NOCODE_OPTIONS if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed 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 printf "%s\n" "#define PACKAGE_VERSION_MINOR $PVM" >>confdefs.h PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi printf "%s\n" "#define PACKAGE_VERSION_PATCHLEVEL $PVP" >>confdefs.h CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \ touch \$(top_srcdir)/ChangeLog; \ echo 'git failed to create ChangeLog: installing 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; test -e \$(top_srcdir)/INSTALL || ( \ touch \$(top_srcdir)/INSTALL; \ echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))" case $host_os in solaris*) # Solaris 2.0 - 11.3 use SysV man page section numbers, so we # check for a man page file found in later versions that use # traditional section numbers instead { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5 printf %s "checking for /usr/share/man/man7/attributes.7... " >&6; } if test ${ac_cv_file__usr_share_man_man7_attributes_7+y} then : printf %s "(cached) " >&6 else case e in #( e) test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/usr/share/man/man7/attributes.7"; then ac_cv_file__usr_share_man_man7_attributes_7=yes else ac_cv_file__usr_share_man_man7_attributes_7=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5 printf "%s\n" "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; } if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes then : SYSV_MAN_SECTIONS=false else case e in #( e) SYSV_MAN_SECTIONS=true ;; esac fi ;; *) SYSV_MAN_SECTIONS=false ;; esac 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 $SYSV_MAN_SECTIONS in true) 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 XORG_MAN_PAGE="X Version 11" MAN_SUBSTS="\ -e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \ -e 's|__xservername__|Xorg|g' \ -e 's|__xconfigfile__|xorg.conf|g' \ -e 's|__projectroot__|\$(prefix)|g' \ -e 's|__apploaddir__|\$(appdefaultdir)|g' \ -e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \ -e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \ -e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \ -e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \ -e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \ -e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'" # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else case e in #( e) if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # Check whether --enable-docs was given. if test ${enable_docs+y} then : enableval=$enable_docs; build_docs=$enableval else case e in #( e) build_docs=yes ;; esac fi if test x$build_docs = xyes; then ENABLE_DOCS_TRUE= ENABLE_DOCS_FALSE='#' else ENABLE_DOCS_TRUE='#' ENABLE_DOCS_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5 printf %s "checking whether to build documentation... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $build_docs" >&5 printf "%s\n" "$build_docs" >&6; } # Check whether --enable-specs was given. if test ${enable_specs+y} then : enableval=$enable_specs; build_specs=$enableval else case e in #( e) build_specs=yes ;; esac fi if test x$build_specs = xyes; then ENABLE_SPECS_TRUE= ENABLE_SPECS_FALSE='#' else ENABLE_SPECS_TRUE='#' ENABLE_SPECS_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build functional specifications" >&5 printf %s "checking whether to build functional specifications... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $build_specs" >&5 printf "%s\n" "$build_specs" >&6; } # Check whether --with-xmlto was given. if test ${with_xmlto+y} then : withval=$with_xmlto; use_xmlto=$withval else case e in #( e) use_xmlto=auto ;; esac fi if test "x$use_xmlto" = x"auto"; then # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XMLTO+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XMLTO in [\\/]* | ?:[\\/]*) ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XMLTO="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XMLTO=$ac_cv_path_XMLTO if test -n "$XMLTO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XMLTO" >&5 printf "%s\n" "$XMLTO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XMLTO" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto not found - documentation targets will be skipped" >&5 printf "%s\n" "$as_me: WARNING: xmlto not found - documentation targets will be skipped" >&2;} have_xmlto=no else have_xmlto=yes fi elif test "x$use_xmlto" = x"yes" ; then # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XMLTO+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XMLTO in [\\/]* | ?:[\\/]*) ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XMLTO="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XMLTO=$ac_cv_path_XMLTO if test -n "$XMLTO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XMLTO" >&5 printf "%s\n" "$XMLTO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XMLTO" = "x"; then as_fn_error $? "--with-xmlto=yes specified but xmlto not found in PATH" "$LINENO" 5 fi have_xmlto=yes elif test "x$use_xmlto" = x"no" ; then if test "x$XMLTO" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring XMLTO environment variable since --with-xmlto=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring XMLTO environment variable since --with-xmlto=no was specified" >&2;} fi have_xmlto=no else as_fn_error $? "--with-xmlto expects 'yes' or 'no'" "$LINENO" 5 fi # Test for a minimum version of xmlto, if provided. if test "$have_xmlto" = yes; then # scrape the xmlto version { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the xmlto version" >&5 printf %s "checking the xmlto version... " >&6; } xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xmlto_version" >&5 printf "%s\n" "$xmlto_version" >&6; } as_arg_v1=$xmlto_version as_arg_v2=0.0.22 awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null case $? in #( 1) : if test "x$use_xmlto" = xauto; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto version $xmlto_version found, but 0.0.22 needed" >&5 printf "%s\n" "$as_me: WARNING: xmlto version $xmlto_version found, but 0.0.22 needed" >&2;} have_xmlto=no else as_fn_error $? "xmlto version $xmlto_version found, but 0.0.22 needed" "$LINENO" 5 fi ;; #( 0) : ;; #( 2) : ;; #( *) : ;; esac fi # Test for the ability of xmlto to generate a text target # # NOTE: xmlto 0.0.27 or higher return a non-zero return code in the # following test for empty XML docbook files. # For compatibility reasons use the following empty XML docbook file and if # it fails try it again with a non-empty XML file. have_xmlto_text=no cat > conftest.xml << "EOF" EOF if test "$have_xmlto" = yes then : if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1 then : have_xmlto_text=yes else case e in #( e) # Try it again with a non-empty XML file. cat > conftest.xml << "EOF" EOF if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1 then : have_xmlto_text=yes else case e in #( e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xmlto cannot generate text format, this format skipped" >&5 printf "%s\n" "$as_me: WARNING: xmlto cannot generate text format, this format skipped" >&2;} ;; esac fi ;; esac fi fi rm -f conftest.xml if test $have_xmlto_text = yes; then HAVE_XMLTO_TEXT_TRUE= HAVE_XMLTO_TEXT_FALSE='#' else HAVE_XMLTO_TEXT_TRUE='#' HAVE_XMLTO_TEXT_FALSE= fi if test "$have_xmlto" = yes; then HAVE_XMLTO_TRUE= HAVE_XMLTO_FALSE='#' else HAVE_XMLTO_TRUE='#' HAVE_XMLTO_FALSE= fi # Preserves the interface, should it be implemented later # Check whether --with-xsltproc was given. if test ${with_xsltproc+y} then : withval=$with_xsltproc; use_xsltproc=$withval else case e in #( e) use_xsltproc=auto ;; esac fi if test "x$use_xsltproc" = x"auto"; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XSLTPROC+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XSLTPROC in [\\/]* | ?:[\\/]*) ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XSLTPROC=$ac_cv_path_XSLTPROC if test -n "$XSLTPROC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 printf "%s\n" "$XSLTPROC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSLTPROC" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: xsltproc not found - cannot transform XML documents" >&5 printf "%s\n" "$as_me: WARNING: xsltproc not found - cannot transform XML documents" >&2;} have_xsltproc=no else have_xsltproc=yes fi elif test "x$use_xsltproc" = x"yes" ; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XSLTPROC+y} then : printf %s "(cached) " >&6 else case e in #( e) case $XSLTPROC in [\\/]* | ?:[\\/]*) ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi XSLTPROC=$ac_cv_path_XSLTPROC if test -n "$XSLTPROC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 printf "%s\n" "$XSLTPROC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSLTPROC" = "x"; then as_fn_error $? "--with-xsltproc=yes specified but xsltproc not found in PATH" "$LINENO" 5 fi have_xsltproc=yes elif test "x$use_xsltproc" = x"no" ; then if test "x$XSLTPROC" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring XSLTPROC environment variable since --with-xsltproc=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring XSLTPROC environment variable since --with-xsltproc=no was specified" >&2;} fi have_xsltproc=no else as_fn_error $? "--with-xsltproc expects 'yes' or 'no'" "$LINENO" 5 fi if test "$have_xsltproc" = yes; then HAVE_XSLTPROC_TRUE= HAVE_XSLTPROC_FALSE='#' else HAVE_XSLTPROC_TRUE='#' HAVE_XSLTPROC_FALSE= fi # Check whether --with-fop was given. if test ${with_fop+y} then : withval=$with_fop; use_fop=$withval else case e in #( e) use_fop=auto ;; esac fi if test "x$use_fop" = x"auto"; then # Extract the first word of "fop", so it can be a program name with args. set dummy fop; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FOP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $FOP in [\\/]* | ?:[\\/]*) ac_cv_path_FOP="$FOP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FOP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi FOP=$ac_cv_path_FOP if test -n "$FOP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5 printf "%s\n" "$FOP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$FOP" = "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: fop not found - documentation targets will be skipped" >&5 printf "%s\n" "$as_me: WARNING: fop not found - documentation targets will be skipped" >&2;} have_fop=no else have_fop=yes fi elif test "x$use_fop" = x"yes" ; then # Extract the first word of "fop", so it can be a program name with args. set dummy fop; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FOP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $FOP in [\\/]* | ?:[\\/]*) ac_cv_path_FOP="$FOP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FOP="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi FOP=$ac_cv_path_FOP if test -n "$FOP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FOP" >&5 printf "%s\n" "$FOP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$FOP" = "x"; then as_fn_error $? "--with-fop=yes specified but fop not found in PATH" "$LINENO" 5 fi have_fop=yes elif test "x$use_fop" = x"no" ; then if test "x$FOP" != "x"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring FOP environment variable since --with-fop=no was specified" >&5 printf "%s\n" "$as_me: WARNING: ignoring FOP environment variable since --with-fop=no was specified" >&2;} fi have_fop=no else as_fn_error $? "--with-fop expects 'yes' or 'no'" "$LINENO" 5 fi # Test for a minimum version of fop, if provided. if test "$have_fop" = yes; then HAVE_FOP_TRUE= HAVE_FOP_FALSE='#' else HAVE_FOP_TRUE='#' HAVE_FOP_FALSE= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X.Org SGML entities >= 1.8" >&5 printf %s "checking for X.Org SGML entities >= 1.8... " >&6; } XORG_SGML_PATH= if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xorg-sgml-doctools >= 1.8\""; } >&5 ($PKG_CONFIG --exists --print-errors "xorg-sgml-doctools >= 1.8") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools` else : fi # Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing # the path and the name of the doc stylesheet if test "x$XORG_SGML_PATH" != "x" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XORG_SGML_PATH" >&5 printf "%s\n" "$XORG_SGML_PATH" >&6; } STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11 XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSL_STYLESHEET" != "x"; then HAVE_STYLESHEETS_TRUE= HAVE_STYLESHEETS_FALSE='#' else HAVE_STYLESHEETS_TRUE='#' HAVE_STYLESHEETS_FALSE= fi ac_config_files="$ac_config_files Makefile general/Makefile general/fonts/Makefile general/input/Makefile general/graphics/Makefile general/platforms/Makefile man/Makefile specs/Makefile specs/CTEXT/Makefile specs/ICCCM/Makefile specs/XLFD/Makefile specs/Xserver/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_SPECS_TRUE}" && test -z "${ENABLE_SPECS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SPECS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XMLTO_TEXT_TRUE}" && test -z "${HAVE_XMLTO_TEXT_FALSE}"; then as_fn_error $? "conditional \"HAVE_XMLTO_TEXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XMLTO_TRUE}" && test -z "${HAVE_XMLTO_FALSE}"; then as_fn_error $? "conditional \"HAVE_XMLTO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XSLTPROC_TRUE}" && test -z "${HAVE_XSLTPROC_FALSE}"; then as_fn_error $? "conditional \"HAVE_XSLTPROC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_FOP_TRUE}" && test -z "${HAVE_FOP_FALSE}"; then as_fn_error $? "conditional \"HAVE_FOP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_STYLESHEETS_TRUE}" && test -z "${HAVE_STYLESHEETS_FALSE}"; then as_fn_error $? "conditional \"HAVE_STYLESHEETS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by xorg-docs $as_me 1.7.3, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ xorg-docs config.status 1.7.3 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "general/Makefile") CONFIG_FILES="$CONFIG_FILES general/Makefile" ;; "general/fonts/Makefile") CONFIG_FILES="$CONFIG_FILES general/fonts/Makefile" ;; "general/input/Makefile") CONFIG_FILES="$CONFIG_FILES general/input/Makefile" ;; "general/graphics/Makefile") CONFIG_FILES="$CONFIG_FILES general/graphics/Makefile" ;; "general/platforms/Makefile") CONFIG_FILES="$CONFIG_FILES general/platforms/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "specs/Makefile") CONFIG_FILES="$CONFIG_FILES specs/Makefile" ;; "specs/CTEXT/Makefile") CONFIG_FILES="$CONFIG_FILES specs/CTEXT/Makefile" ;; "specs/ICCCM/Makefile") CONFIG_FILES="$CONFIG_FILES specs/ICCCM/Makefile" ;; "specs/XLFD/Makefile") CONFIG_FILES="$CONFIG_FILES specs/XLFD/Makefile" ;; "specs/Xserver/Makefile") CONFIG_FILES="$CONFIG_FILES specs/Xserver/Makefile" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi xorg-docs-1.7.3/config.guess0000644014310600000120000014142214600067626011430 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: xorg-docs-1.7.3/ChangeLog0000644014310600000120000044544214600067630010671 commit 019a2ac61d5a93166738d0954ec3f170855e637c Author: Alan Coopersmith Date: Sun Mar 24 11:18:09 2024 -0700 xorg-docs 1.7.3 Signed-off-by: Alan Coopersmith commit 8735c2e28db537baef0cee35878254b74f32cf97 Author: Enrico Weigelt, metux IT consult Date: Fri Feb 16 11:57:46 2024 +0100 MAINTAINERS: take Xnest maintainership Picking up maintenance of Xnest and adding myself as maintainer. Signed-off-by: Enrico Weigelt, metux IT consult commit 9024082a504df81741a1b334963ff4842ffe934e Author: Thomas E. Dickey Date: Thu Dec 21 18:44:48 2023 -0500 add maintainer for Xft Signed-off-by: Thomas E. Dickey commit 506abe2773faa1ce52ccbeecf3ac2264528f5776 Author: Alan Coopersmith Date: Fri Oct 13 15:57:50 2023 -0700 gitlab CI: Update to latest CI templates & Debian stable release Current template fails to rebuild the CI container with the current Debian stable release (a new release since the last update) Signed-off-by: Alan Coopersmith commit af572d6faf359a807aca703e612076e9ed20c180 Author: Peter Hutterer Date: Thu May 4 14:38:28 2023 +1000 MAINTAINERS: add xisxwayland Let's avoid possible panic stampedes if this utility isn't listed here. Signed-off-by: Peter Hutterer commit 4f30423f4aed44010b7ba93df980834e929d370d Author: Alan Coopersmith Date: Sun Apr 23 17:29:49 2023 -0700 MAINTAINERS: update data - Mark all projects that have been archived in gitlab as Obsolete - Mark unarchived projects that haven't had a new release in many years and drivers that don't build for current Xorg as Deactivated - Add new projects: libXpresent, libxshmfence, libxcvt, xf86-input-libinput, xf86-video-amdgpu, xf86-video-freedreno, xf86-video-nouveau, xf86-video-vbox, xorgproto - Add new entries for old projects: fdclock, glxcompmgr, grandr, luit, mkfontdir, scripts, xdbedizzy, xf86dga, xfindproxy, xoo, xphelloworld, xplsprinters, xprehashprinterlist, Xaw3d, xf86-video-armsoc, xf86-video-avivo, xf86-video-impact, xf86-video-opentegra, xf86-video-vermilion, fonts/bitstream-speedo, tests/*, proto/*proto - Add entries for XCB projects that merged into the xorg namespace in gitlab - Move twm entry from libraries section to app section - Add new subsystems of Xserver tree: Xorg, Xwayland, Xvfb, Xnest, Glamor - Add X.Org Foundation & gitlab entries under "Developer relations & services" - Add IRC & gitlab info to many projects - Add subdirectory info to X server subsystem entries - Add "all subsystems" entry for data common to all parts of the X server - Mark DMX & XAA subsystems of the X server as Removed from the codebase - Change SCO & USL ports from Maintained to Unmaintained Changes to Maintainers: - Removed @anholt from all projects per private email conversation - List @contactshashanksharma in new entry for xf86-video-amdgpu - Stop claiming @daniels is working on an overhaul of XKB - List @imirkin for newly added xf86-video-nouveau - List @keithp for newly added libXpresent & libxshmfence - Update email addresss for @keithp from intel.com to keithp.com - List @ofourdan in new entries for libxcvt, Xwayland - List @whot in new entry for xf86-input-libinput - Change website maintainer from Stuart Anderson to sitewranglers@fd.o Signed-off-by: Alan Coopersmith commit f95d538cf9c4d1afe57fa2723fbde706a9150853 Author: Alan Coopersmith Date: Mon Apr 10 16:04:45 2023 -0700 MAINTAINERS: update format Combine P: & M: lines into single M: line for maintainer. Add definitions of C:, T:, F:, & X: lines Signed-off-by: Alan Coopersmith commit 2f3d2ffe5a0acc26e4ed64fd31ef7b1ed3733d27 Author: Alan Coopersmith Date: Sat Feb 25 09:05:43 2023 -0800 Remove "All rights reserved" from Oracle copyright notices Oracle no longer includes this term in our copyright & license notices. Signed-off-by: Alan Coopersmith commit 918d2058e91cfa003a8d899e5cfe8d349f0d2c62 Author: Alan Coopersmith Date: Sat Feb 18 09:22:18 2023 -0800 Switch to XORG_DEFAULT_NOCODE_OPTIONS Stop running all sorts of compiler tests we don't need since there is no code in this module to compile. Requires xorg-macros 1.20. Signed-off-by: Alan Coopersmith commit 77be95db572feaa0b265a4c7948e8f1ad73460eb Author: Alan Coopersmith Date: Mon Jul 18 15:42:10 2022 -0700 gitlab CI: add a basic build test Signed-off-by: Alan Coopersmith commit 28afdec875e8042c324bce528efceee814a5dcac Author: Alan Coopersmith Date: Mon Jul 18 15:28:21 2022 -0700 Build xz tarballs instead of bzip2 Signed-off-by: Alan Coopersmith commit cd4a375968a85e3c96b5bc2217b8a4143fa1707a Author: Alan Coopersmith Date: Sun Apr 3 17:18:21 2022 -0700 xorg-docs 1.7.2 Signed-off-by: Alan Coopersmith commit 50ff7534e827585ba70f978f85a8e567ab4c8aed Author: Alan Coopersmith Date: Sun Jan 9 14:05:55 2022 -0800 registry: address updates for Oracle contacts Drop paper mail addresses that are no longer correct & never used Update Sun/Oracle contact from Stuart to Niveditha & myself Signed-off-by: Alan Coopersmith commit 47b07a56b44bb8c12cea4a338720f5aa347d812f Author: Alan Coopersmith Date: Sun Jan 9 14:04:55 2022 -0800 Fix spelling/wording issues Found by using: codespell --builtin clear,rare,usage,informal,code,names Signed-off-by: Alan Coopersmith commit 5c6744270a155104184360c8b63be2345121adab Author: Jeremy Huddleston Sequoia Date: Thu Jan 28 09:54:16 2021 -0800 Update AppleWM and XQuartz maintainers Signed-off-by: Jeremy Huddleston Sequoia commit c2900e727242bad74123ec59c36d03bdd49ce9bf Author: Thomas E. Dickey Date: Tue Jul 16 18:13:19 2019 -0400 assign maintainer for Xaw, twm commit 1c1cf18a52a1806a638eccedf678dea8bdada5ea Author: Alan Coopersmith Date: Mon Jun 24 16:29:57 2019 -0700 Update Versions doc to better reflect current releases Signed-off-by: Alan Coopersmith commit b4b950363c3b3d43c5a2e6eb4eb4273292f630a5 Author: Alan Coopersmith Date: Sun Jun 23 15:43:01 2019 -0700 platforms/Solaris: Drop obsolete notes on apeture drivers Signed-off-by: Alan Coopersmith commit 75ed93c7aabf904587d25abd29895d037cf0dd3b Author: Alan Coopersmith Date: Sun Jun 23 13:13:20 2019 -0700 Drop LBX algortihm specs X.Org dropped LBX support a decade ago, we don't need to keep the spec in our current doc collection any more. Signed-off-by: Alan Coopersmith commit a79d244a8e07d8ab962c13c49e7cca5c33b15fff Author: Thomas E. Dickey Date: Mon Apr 22 04:48:27 2019 -0400 fix typo commit de5b06ff708e30978f6ce1bf7ab4c3a1448d467b Author: Thomas E. Dickey Date: Sun Apr 21 18:48:02 2019 -0400 assign libxt maintainer commit 59a4a97a4cea328d94a183fdd18dab0866c2f50b Author: Alan Coopersmith Date: Sun Mar 3 10:35:32 2019 -0800 MAINTAINERS: disclaim maintenance of xdm Signed-off-by: Alan Coopersmith commit d1ff7e2b96f9ae6d9548496bffd4eab9b47eb2e1 Author: Alan Coopersmith Date: Sun Feb 24 12:50:03 2019 -0800 The Katamari is dead! Long live the Katamari! I come not to praise the Katamari, but to bury it... Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 606e019df1674f92cd9cfe08592c07c8d010ce1b Author: Alan Coopersmith Date: Tue Feb 19 16:32:58 2019 -0800 Update README.xml & XOrgFoundation.man to reflect SPI merger Fixes: https://gitlab.freedesktop.org/xorg/doc/xorg-docs/issues/2 Signed-off-by: Alan Coopersmith Reviewed-by: Bryce Harrington commit 813b9c32130fea0ebccc21c7161a55299a587f69 Author: Alan Coopersmith Date: Sat Nov 17 14:25:02 2018 -0800 Mass http -> https replacement where appropriate Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit ba29c13a59f3c22c3a444b42efb17ca227de9850 Author: Alan Coopersmith Date: Sat Nov 17 13:30:33 2018 -0800 Update MAINTAINERS for gitlab migration Replace dozens of links to wiki.x.org with gitlab project links Change status to "Deactivated" for projects marked "Archived" in gitlab Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 45c64cbd68d4ca97d1d3e63d22133a2f9d33c884 Author: Alan Coopersmith Date: Sat Nov 17 11:37:01 2018 -0800 Update configure.ac for gitlab migration Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit f1e595f150a369d3fbbe4aad75b265ae2f4a6878 Author: Alan Coopersmith Date: Sat Nov 17 11:36:17 2018 -0800 Update docs for gitlab migration Signed-off-by: Alan Coopersmith Reviewed-by: Adam Jackson commit 80be2193862cdb9961cd6802f74110ea21cd9bf1 Author: Alan Coopersmith Date: Fri Nov 16 23:39:43 2018 -0800 Update README for gitlab migration Signed-off-by: Alan Coopersmith commit 32f09b0b8fefb9cd98d14165a22ab2ed14b0277a Author: Alan Coopersmith Date: Sat Sep 22 13:14:07 2018 -0700 Add conf.d to fontconfig configuration files list Fixes: https://gitlab.freedesktop.org/xorg/doc/xorg-docs/issues/1 Signed-off-by: Alan Coopersmith commit 34c00a29d2b99db1cc1f367489d2ac4e5d87cfef Author: Alan Coopersmith Date: Tue Feb 20 14:53:54 2018 -0800 Update Solaris info in MAINTAINERS file commit 2ee2b7f0f0304879214f09d48c43c742894cf82e Author: Alan Coopersmith Date: Thu Apr 13 13:24:48 2017 -0700 Update Solaris URL in MAINTAINERS file Signed-off-by: Alan Coopersmith Reviewed-by: Niveditha Rau commit ebc0ba09cb2fe7d4fb1e223e274feec4879d8536 Author: Mihail Konev Date: Thu Jan 26 13:52:48 2017 +1000 autogen: add default patch prefix Signed-off-by: Mihail Konev commit 6177cf7e8156c6c0f65b603e898d842ea9c1c946 Author: Emil Velikov Date: Mon Mar 9 12:00:52 2015 +0000 autogen.sh: use quoted string variables Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent fall-outs, when they contain space. Signed-off-by: Emil Velikov Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer commit 5be837f3f57f5f06c82cc557d58c55d3bd5d73dc Author: Peter Hutterer Date: Tue Jan 24 10:32:07 2017 +1000 autogen.sh: use exec instead of waiting for configure to finish Syncs the invocation of configure with the one from the server. Signed-off-by: Peter Hutterer Reviewed-by: Emil Velikov commit 299e213f14d8d1586eb5d47d974c4fcffc807679 Author: Alan Coopersmith Date: Tue Oct 27 19:27:49 2015 -0700 X.man: move XLOCAL documentation from Xorg(1) man page These settings affect clients, not server, so belong here, next to the information about how to set $DISPLAY. Also updated to drop ISC and correct description of Unix domain sockets. Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston Sequoia commit 9e48239436c256ff695cefea1433cdb2868667a9 Author: Alan Coopersmith Date: Tue Oct 27 19:06:53 2015 -0700 X.man: document protocol/ syntax in display string See http://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#Opening_the_Display Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston Sequoia commit b0348bd9f9c79b87c93e2d71dba674ebcb31d8f7 Author: Alan Coopersmith Date: Tue Oct 27 18:15:06 2015 -0700 X.man: update program lists/info for modern era We no longer have a monolithic X.Org distribution, nor a separate user-contributed distribution from X.Org, but instead many OS distros. Also stop recommending so much abandonware, but do point out the programs we've added over the years and still maintain. Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston Sequoia commit 02a513c7847ce37ba3bc1e6f2f5ed5a77062a60d Author: Alan Coopersmith Date: Tue Oct 27 17:49:44 2015 -0700 X.man: give pointers to specs & other docs Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston Sequoia commit cdf00c1095f9e7dd26dccad3049442684768da62 Author: Ingo Schwarze Date: Sun Aug 30 15:22:10 2015 +0200 remove bogus \/ escapes some X manuals use then escape sequence \/ when they want to render a slash. That's bad because \/ is not a slash but an italic correction, never producing any output, having no effect at all in terminal output, and only changing spacing in a minor way in typeset output. Reviewed-by: Mark Kettenis Signed-off-by: Matthieu Herrb commit 703974aee2f4e380076427b4b04da407b663ed2c Author: Alan Coopersmith Date: Thu Apr 30 23:09:58 2015 -0700 xorg-docs 1.7.1 Signed-off-by: Alan Coopersmith commit 8f4ec2fcbd61cfb72478aadbbe3d6823e741338f Author: Alan Coopersmith Date: Fri Jul 11 21:13:37 2014 -0700 Fix various typos & spelling errors across the docs Signed-off-by: Alan Coopersmith commit 36941875d69b6b6f8c224884b3a4acef14e7a33c Author: Alan Coopersmith Date: Fri Jul 11 20:49:03 2014 -0700 X.man: disengender a user reference Signed-off-by: Alan Coopersmith commit 97524d3f26c380c2d3ca364675a3a8b4828422cf Author: Alan Coopersmith Date: Sat May 31 21:39:32 2014 -0700 autogen.sh: Honor NOCONFIGURE=1 See http://people.gnome.org/~walters/docs/build-api.txt Signed-off-by: Alan Coopersmith commit 54a1d7d9fd4752f6ae778cbfb169a971f86d1706 Author: Alan Coopersmith Date: Sat May 31 21:38:41 2014 -0700 configure: Drop AM_MAINTAINER_MODE Signed-off-by: Alan Coopersmith commit ee30cb781c46215e84aa736ca842d8853247e3cd Author: Gaetan Nadon Date: Tue Mar 25 14:15:43 2014 -0400 Fix typo in Release Notes. Reviewed-by: Alan Coopersmith Signed-off-by: Gaetan Nadon commit 66e800c69fa5348b01e4b9670d6274ba392db7e5 Author: Thomas Hellstrom Date: Thu Oct 10 10:56:25 2013 +0200 Change maintainer info of xf86-video-vmware Signed-off-by: Thomas Hellstrom commit 777f9489a84ea66969c56d19ac5fa00df55f27c3 Author: Alan Coopersmith Date: Sat Jul 13 10:30:53 2013 -0700 List libxkbui as Obsolete in MAINTAINERS file Only known user was the xorgcfg gui, which was removed in Xorg 1.6 Signed-off-by: Alan Coopersmith Acked-by: Daniel Stone commit 0aa1894228cc8d0477db7b44bb266d210e4f8d10 Author: Alan Coopersmith Date: Sat Jul 13 10:10:59 2013 -0700 List xsetmode & xsetpointer as Obsolete in MAINTAINERS file Signed-off-by: Alan Coopersmith commit 1bd74028e5855f463693c1e1565689b3fb4b5bca Author: Alan Coopersmith Date: Tue Mar 12 21:12:17 2013 -0700 MAINTAINERS: Update URL to Solaris X11 distro web page Signed-off-by: Alan Coopersmith commit c3ac1b19a9f22f6bbc44b74af3bf850069a3268e Author: Dr. Tilmann Bubeck Date: Tue Jan 22 21:58:17 2013 +0100 Added Dr. Tilmann Bubeck as maintainer of xauth Added Dr. Tilmann Bubeck as maintainer of xauth with a new entry. commit 0aef008fada9bca21bdc869b723feb4864dd2374 Author: Eric S. Raymond Date: Thu Aug 23 04:53:49 2012 -0400 Rename SYNOOPSIS to DESCRIPTION... ...so doclifter won't be confused by not seeing function of synopsis markup. Signed-off-by: Eric S. Raymond commit 3fe24732152467cbe77ae5b80db9349639d3397f Author: Eric S. Raymond Date: Thu Aug 23 04:49:14 2012 -0400 Rename SYNIOPSIS to OVERVIEW... ...so doclifter won't get confused by not finding a command or function syntax there. Signed-off-by: Eric S. Raymond commit 3a812de74d7a412d572730244b60f749efdf36ce Author: Eric S. Raymond Date: Thu Aug 23 02:22:38 2012 -0400 Clean up presentation-level markup so DocBook conversion can work. commit 58cdf67e3e2a0bad898728da24c7b6fce9d7af38 Author: Rob Clark Date: Thu Jun 14 06:47:04 2012 -0500 add maintainers entry for xf86-video-omap Signed-off-by: Rob Clark Signed-off-by: Alan Coopersmith commit ca828f8812767620747b4914974e09719aecbec6 Author: Thomas Hellstrom Date: Fri Jun 8 11:20:03 2012 +0200 Updated VMware maintainer email and vmware driver status Signed-off-by: Thomas Hellstrom commit 4685143df66c83c0b7be67de013f3ab5b06a3b1d Author: Alan Coopersmith Date: Mon Jun 4 21:39:52 2012 -0700 xorg-docs 1.7 (X11R7.7) Signed-off-by: Alan Coopersmith commit 1647916ff5e93243c7101b831b0a92a47ebefd9e Author: Guillem Jover Date: Mon Apr 2 00:47:53 2012 +0200 Release Notes: Add dummy and glide as included video drivers Sync the list of video drivers with the ones included in the katamari. Signed-off-by: Guillem Jover commit ce9998bf6ea1c3a9a63f386d7ceafed73a1ecc59 Author: Alan Coopersmith Date: Wed Apr 18 22:35:41 2012 -0700 Comment out mention of X-Resource 1.2 in release notes Since only the protocol headers actually made it in time, skip describing it now, hold off until the server & client bits are there so people can use it. Signed-off-by: Alan Coopersmith commit 64d8161650f0817d6c818c3d90e27a8b66fdf3dc Author: Alan Coopersmith Date: Sat Apr 14 10:27:44 2012 -0700 xorg-docs 1.6.99.901 (1.7 RC1) snapshot for X11R7.7 RC1 docs Signed-off-by: Alan Coopersmith commit bf9fa7fd4826643398b48cb01574d5cd8148ebca Author: Josh Triplett Date: Fri Apr 6 21:42:12 2012 -0700 Update DDC/DPI description to match current Xorg implementation Signed-off-by: Alan Coopersmith commit 04d5b1bb93aec1c9c1f6e6beddb471a5baf07066 Author: Alan Coopersmith Date: Fri Apr 6 21:36:03 2012 -0700 Give more details about nested/virtual server deprecation Signed-off-by: Alan Coopersmith commit a5acad6e8212f2fe552c7cc921207d646b64f6c9 Author: Alan Coopersmith Date: Sat Mar 31 19:29:55 2012 -0700 Release Notes: Add nested & virtual X servers to potential future removals Signed-off-by: Alan Coopersmith commit 85e1f83696999930f36aff36fc6c72f100e0be54 Author: Alan Coopersmith Date: Sat Mar 31 19:04:43 2012 -0700 Release Notes: More new feature details Signed-off-by: Alan Coopersmith commit 9a08d20d5ee82673690d6881e670569d8ab1cba1 Author: Alan Coopersmith Date: Sat Mar 31 15:22:17 2012 -0700 Release Notes: Merge in credits for xkeyboard-config Since we didn't include xkb-config in the last katamari, used the xkeyboard-config-2.0 release/tag from the same time as the baseline instead of going back to the dawn of xkb-config. Signed-off-by: Alan Coopersmith commit ed7423f6331ce0ad306e7ddb7d9fc3300f0ad06d Author: Alan Coopersmith Date: Fri Mar 30 20:39:06 2012 -0700 Release Notes: add note about new strict compilation flags Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston commit 7c75b1ab2ce0527638b811c4d17befecf845238c Author: Alan Coopersmith Date: Fri Mar 30 18:49:27 2012 -0700 Release Notes: Add note on grab debugging keystrokes in Xorg 1.11 & later Includes warning of security risks, especially when xkeyboard-config < 2.5 is used. Signed-off-by: Alan Coopersmith commit 8fca296e388b549c2b0d478a49ad997f29355a21 Author: Alan Coopersmith Date: Sat Mar 31 14:15:20 2012 -0700 Preliminary credits list Based on current git logs for changes in katamari components since the tags for the prior release, including names listed in both Author: and *-by: entries. (With manual removal of duplicates and invalid entries.) Signed-off-by: Alan Coopersmith commit 80a3ee75e019d9d209bea92c62f5d49fad5206ea Author: Alan Coopersmith Date: Fri Mar 30 17:42:38 2012 -0700 Release Notes: clarify Xserver(1) vs. Xorg(1) man pages Signed-off-by: Alan Coopersmith commit 15ac702023d29672ab3b94ed42a9281a67f86393 Author: Alan Coopersmith Date: Mon Mar 26 21:46:15 2012 -0700 Update driver maintenance/status for upcoming 7.7 katamari MAINTAINERS: - Add driver-specific mailing lists & web pages for ATI, Intel & Geode - Add driver entries for geode, nested, qxl, and xgixp drivers - Mark cyrix, nsc, & via as obsolete Release Notes: - Move drivers not being included in katamari from drivers table to removed table - Update README links to use .txt since drivers no longer generate html READMEs from SGML Signed-off-by: Alan Coopersmith commit d47119a09fcef6011495d1dffa4d196352ba7c97 Author: Alan Coopersmith Date: Tue Mar 20 23:58:18 2012 -0700 Solaris.xml: update for Solaris 11 release Signed-off-by: Alan Coopersmith commit 3c2f23d4ff2d083392f8f51cef4eae037212a46b Author: Alan Coopersmith Date: Tue Mar 20 23:50:32 2012 -0700 Start updating README & Release Notes for 7.7 katamari Signed-off-by: Alan Coopersmith commit d931a0f864755e284f6c761a906b54e8280a005e Author: Alan Coopersmith Date: Fri Mar 16 23:16:26 2012 -0700 Convert ``...'' and `...' quotes to ... Signed-off-by: Alan Coopersmith commit 7f206681eb8b44c309577c56f123673291a71ca1 Author: Alan Coopersmith Date: Fri Mar 16 23:03:58 2012 -0700 Update fonts documentation Fix a bunch of links, including using olinks for other X.Org docs. Clarify some wording in various areas. Reviewed-by: Gaetan Nadon Signed-off-by: Alan Coopersmith commit 01451aa25f42bb998fdbab638e04352977f8017f Author: Alan Coopersmith Date: Mon Mar 19 22:59:08 2012 -0700 Add id's to general docs for better cross linking, less randomization of output Signed-off-by: Alan Coopersmith commit 88a2f252900c8093c8035c0aa76dc974036c4dca Author: Dave Airlie Date: Wed Feb 22 10:01:38 2012 +0000 add maintainers entry for -modesetting Signed-off-by: Dave Airlie commit 157ee156d6723a166e60af7de0e8db36c53bc219 Author: Matt Dew Date: Sun Jan 8 20:26:06 2012 -0700 informaltable cleanup On certain tables, add top and bottom borders to table header and a bottom border to the table. This matches what those tables in the old pdfs looked like. the prevents tables from splitting across pages. Useful for tiny tables. Converting the colwidth to a floating point, IE, 1* -> 1.0* cleans up these build errors: WARNING: table-layout="fixed" and column-width unspecified => falling back to proportional-column-width(1) Signed-off-by: Matt Dew commit dfcb585eca08c0962592dcc45354b76a00328147 Author: Matt Dew Date: Sun Jan 8 18:10:11 2012 -0700 informaltable cleanup On certain tables, add top and bottom borders to table header and a bottom border to the table. This matches what those tables in the old pdfs looked like. the prevents tables from splitting across pages. Useful for tiny tables. Converting the colwidth to a floating point, IE, 1* -> 1.0* cleans up these build errors: WARNING: table-layout="fixed" and column-width unspecified => falling back to proportional-column-width(1) Signed-off-by: Matt Dew commit b42b8eb225bced5be83b38668813a3ee5067d7cb Author: Matt Dew Date: Mon Jan 2 20:16:06 2012 -0700 informaltable cleanup On certain tables, add top and bottom borders to table header and a bottom border to the table. This matches what those tables in the old pdfs looked like. the prevents tables from splitting across pages. Useful for tiny tables. Converting the colwidth to a floating point, IE, 1* -> 1.0* cleans up these build errors: WARNING: table-layout="fixed" and column-width unspecified => falling back to proportional-column-width(1) Signed-off-by: Matt Dew Acked-by: Gaetan Nadon commit 315de17bb44850a4f584f92541f1276a5f589595 Author: Matt Dew Date: Mon Oct 10 20:43:26 2011 -0600 Cleanup IDs and links in doc 1 - fix the capitalization of the ID attributes to match either the or <funcdef> string it goes with. 2 - fix any <linkend>'s that were affected by 1. 3 - any <function> in the docs that has an actual funcdef, will become an olink. Signed-off-by: Matt Dew <marcoz@osource.org> commit af47bd3c8cd03df5d791f091808d4b68605ec219 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Sep 27 11:07:26 2011 +1000 MAINTAINERS: acecad is unmaintained I haven't heard from Guiseppe for too long. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 84bea7c5a208c7ead76a9233ffe82e06bd959386 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 22 14:01:46 2011 -0400 xlfd: fix typo in copyright text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit bacc9c976baffd965192418ef4492686a77420f9 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 22 09:27:39 2011 -0400 xlfd: missing copyright (c) symbol Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 33c90c0aaee268ea08e8b480e8ee63492bb9163b Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:50:52 2011 -0400 XACE: fix copyright text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 67524bdc49ef54248000cf2a31dfa3dee2d1271b Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:42:52 2011 -0400 secint: fix author affiliation and copyright text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e3a0b1f5b18bcc0bac59cdfa96e68ebb9580c27b Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:40:19 2011 -0400 appgroup: fix copyright legal text Missing text, duplicate abstract and so on... Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit dc5bf2c6fb0d2096aa16358291d6405f0381ea0d Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:34:06 2011 -0400 analysis: fix author affiliation and copyright text Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c20f068d6fda35b33d5acd785d648bfbcf990a24 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:26:49 2011 -0400 xlfd: fix author affiliation and refactor legal text for multi licensing Note that "X Window System is a trademark of The Open Group" is part of the X Consortium license as opposed to free standing information. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit bd90a4a32fb9028d1d0479116e5f0537004046d3 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:17:03 2011 -0400 icccm: refactor copyright license text for multi licensing Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c362660a862c0c50306a989e7a45e926824ac571 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 21 20:10:41 2011 -0400 ctext: fix author affiliation Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 9079b31432832333971a857fcf14956e8bc6e271 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Sep 20 12:17:34 2011 +1000 MAINTAINERS: microtouch was deactivated in 2009 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 4d3d43c16aa5049a815942c85dd7f00575e63cda Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Thu May 26 12:11:41 2011 +1000 MAINTAINERS: Remove Christoph from synaptics Christoph has stated that he doesn't have the time to actively maintain synaptics anymore. CC: Christoph Brill <egore911@egore911.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 23a4680d2eadaca482185925bd2d7001c5d78f99 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 14 11:34:57 2011 -0400 Solaris: shorten the title a bit OpenSolaris has been deprecated in favor of Solaris Express The Solaris brand name is generic enough for all flavors of Solaris X.Org is not mentioned in the title of any document. Now that "X Version 11, Release 7.6" has been added, it should make the title page as informative as any other document. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 21a58910167d6a1c2c4eeed51ddbfac63703628f Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 14 11:31:47 2011 -0400 Solaris: set X11 release information Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 289130cea7933152556863840c789e1a458345e6 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 14 13:19:47 2011 -0400 Fix ENTITY declaration for defs.ent The path /xorg-sgml-doctools/X11 does not exist. The makefile use --searchpath "$(XORG_SGML_PATH)/X11" to locate entities. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 92616bd4bad5d90221e4361603953710c7c184e1 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 14 10:42:44 2011 -0400 docs: use the &fullrelvers; entity to set X11 release information Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 45f2518a1b1a96ad77a4dd2d004f3bfb2ddf7f6d Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 13 16:53:56 2011 -0400 Use appropriate markup for publication date Use the &fullrelvers; entity to set X11 release information Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 15d144dc5eb59f5aa4e787b446a5cbcf967908ba Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 12 16:54:45 2011 -0400 docs: use the &fullrelvers; entity to set X11 release information Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit ad8317a60a93a447843d59b06c3835d52fb41ffa Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 11 19:49:54 2011 -0400 docs: remove <productnumber> which is not used by default This element is not rendered by default on the title. A template customization is required to display it. X Window System does not have a product number. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 1d57c32f76cbca21fb6250815c89ae079100cf11 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 9 16:49:39 2011 -0400 Use more appropriate docbook element to get "Edited by" The proper element to use is <editor>. The <contrib> was a hack to insert text and showed up in the wrong location Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 3aed7400c00b207283dc99fb645faada7a359335 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Sep 9 16:35:46 2011 -0400 analysis.xml: remove changelog type of information from title page Not to remove credit to the contributor, but the title page could fill up quickly with this type of information. Consult the ChangeLog file. Reviewed-by: Matt Dew <marcoz@osource.org> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 8b193e78789ff0427aef8f70800c805151a5d032 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 8 20:00:00 2011 -0400 docbook.am: embed css styles inside the HTML HEAD element Rather than referring to the external xorg.css stylesheet, embed the content of the file in the html output produced. This is accomplished by using version 1.10 of xorg-xhtml.xsl. This makes the whole html docs tree much more relocatable. In addition, it eliminates xorg.css as a runtime file which makes xorg-sgml-doctools a build time only package. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 14b8f3e60fd1dba08c8cbcf4146d323559c586a7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Sep 7 10:31:04 2011 -0400 docbook.am: global maintenance update - entities, images and olinking Adding support in libX11 for html chunking caused a reorg of docbook.am as well as the xorg-sgml-doctools masterdb for olinking. The parameter img.src.path is added for pdf images. A searchpath to the root builddir is added for local entities, if present. The docbook.am makefile hides all the details and is identical for all 22 modules having DocBook documentation. It is included by a thin Makefile.am which requires no docbook knowledge. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 08c92577f60177e6c37ee528f10d0717bf0540c0 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Sep 7 19:02:12 2011 -0700 MAINTAINERS: Update my e-mail address to one that's not dying soon Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit fded76132037c79cccff94fe6152172962892919 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Jun 12 17:54:50 2011 -0400 Install xml versions of specs even if HAVE_XMLTO is false DocBook/XML input source is also a usefull output format that can be viewed with an XML viewer or editor and by some O/S help system. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 64927512449c6460d65a6b826d3814a549162fce Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Jun 5 16:27:37 2011 -0400 Install target dbs alongside generated documents This matches a change in xorg-sgml-docs whereby the masterdb will look for the target dbs into the same location as the generated documents. The target dbs are now installed alongside the generated documents. Previously they are installed in $prefix/sgml/X11/dbs alongside masterdb which has the potential of installing outside the package prefix and cause distcheck to fail when user does not have write permission in this package. Requires XORG_CHECK_SGML_DOCTOOLS(1.8) which was released 2011-06-11 commit 954c241676ed54ef2e18cec53f37df4b3d8f411a Author: Matt Dew <marcoz@osource.org> Date: Tue May 31 20:03:23 2011 -0600 Add id attributes to funcsynopsis to allow other docs to olink to them. Signed-off-by: Matt Dew <marcoz@osource.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit ee435d7363fe9a0dd3e355acee4dfbdc501b3bf3 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Mar 2 09:21:05 2011 -0500 Documentation: add Docbook external references support When writing technical documentation, it is often necessary to cross reference to other information. When that other information is not in the current document, additional support is needed, namely <olink>. A new feature with version 1.7 of xorg-sgml-doctools adds references to other documents within or outside this package. This feature works with PDF, HTML, PS (and epub?) generated documents and will generate links to the other versions of the same type, i.e. html docs will link to other html docs, and pdf docs will link to other pdf docs. This patch adds technical support for this feature but does not change the content of the documentation as seen by the end user. Each book or article must generate a database containing the href of sections that can be referred to from another document. This database is installed in DATAROOTDIR/sgml/X11/dbs. There is a requirement that the value of DATAROOTDIR for xorg-sgml-doctools and for the package documentation is the same. This forms a virtual document tree. This database is consulted by other documents while they are being generated in order to fulfill the missing information for linking. Refer to the xorg-sgml-doctools for further technical information. Co-authored-by: Matt Dew <marcoz@osource.org> Acked-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c67039358f5bb42c70be97f66cec97f76823cefd Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Feb 16 19:53:09 2011 -0800 Fix another htp -> http typo in MAINTAINERS Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6b6a3e3ccbc171d6c5d9bf5b99eb0ebd0bbc18d4 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Feb 11 11:29:23 2011 -0800 MAINTAINERS: Update status of various libraries Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> commit 5fe0a855c32bd85731df8e70d0a73451e8a4f005 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Dec 27 15:44:32 2010 -0800 X.man: Remove DECnet addresses for font servers as well Missed when the DECnet addressing for X servers was removed in 39d3fd0fabd63 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Acked-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Daniel Stone <daniel@fooishbar.org> commit f14f79c3c2be0ce313e9d5fe1360fd9fadb72aee Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Dec 19 23:38:36 2010 -0800 fonts.xml: Remove stray > Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit fa401864481d35116b5dff4a0435140072228c38 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Dec 19 22:33:51 2010 -0800 Update links to License document to new mixed-case name Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 52f5021347d87289eeb77f992986a17ae0b28cdd Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Dec 18 20:55:06 2010 -0800 xorg-docs 1.6 (X11R7.6) Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit fc35d5f86590fd33cdad09f6face76f824a3f4eb Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Dec 18 01:16:01 2010 -0800 ReleaseNotes: more credits updates Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit ea5fd6d15740d9e9285e8df3117fb74c42eee29c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 19:50:16 2010 -0800 appgroup: Fix section titles/nesting Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e3d8d8f848fe28a51dd2d1dfdd1c851cf9fbf268 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 19:46:50 2010 -0800 CTEXT: Fix section titles/nesting Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8e81e3a4eb24dcde839bdeb77fe908e0220c4b76 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 19:40:44 2010 -0800 specs: Fix some conversion of 2 argument .PN -> <function> tags perl -i -p -e 's{ (\W*?)\s*</function>}{</function>$1}g' specs/*/*.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 7d03cd132e850fa8d7249742d1f09e55dbe845dd Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 19:35:34 2010 -0800 XLFD: Fix cross-references to other sections of the document Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 700a926c599be2b6915c4def72a9e9a2251bed0e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 19:24:29 2010 -0800 XLFD: Fix chapter titles/section nesting Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d8846c1d47091c77605a6ca4e47b71614434d72c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 18:19:57 2010 -0800 Sun's copyrights belong to Oracle now Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 31a0694baaaba32dfe0afdd1e156f626bd13488a Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 18:17:14 2010 -0800 ICCCM: Pair copyright notices with matching license notices Makes the legal notice layout like the troff version was Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 483568553b57f6ddd426b2ab5395365d863c64ed Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 18:03:56 2010 -0800 ICCCM: Update X Registry contact address Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 6d8405888a204047fa5e34898a70b1e02d44443e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 17:58:17 2010 -0800 ICCCM: Fix Preface titles & section nesting Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a65219148f0cb6bbf798b3e6f4f91dc6c004f108 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Sat Dec 4 11:30:20 2010 +1000 MAINTAINERS: aiptek is unmaintained again CC: Rene van Paassen <rene.vanpaassen@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit f871a55c5a8e84f2b1faea8ee26bcc506ad96727 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Dec 15 11:30:47 2010 -0800 ctext.xml: Replace incorrect fi ligature character with "fi" Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3954402a111f39dd749db28abda72c5bf8bebaa3 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Dec 14 18:33:45 2010 -0800 Update Xserver security docs from DocBook 4.1.2 to 4.3 to match the rest Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca> commit cd42d8704350bf73801d7d0277468648bb2e614e Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Dec 13 18:16:15 2010 -0800 ReleaseNotes: fix typos Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d77dadafcd0ae10f4bbc918c80db4e865ad70caf Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Dec 13 12:37:49 2010 -0800 XKB-Enhancing: Fix URL for XKB spec Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 3af357433644e62f32174c8be6529193006176ee Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 29 14:26:51 2010 -0800 Release Notes: Add 7.6 dedication Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 28e928def5839189c8d340232fa881e0b7107722 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sun Nov 28 22:10:05 2010 -0800 ReleaseNotes: Comment out draft note for upcoming final release Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e795fa604dfca292029f36df6c03c02ed7b08440 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Dec 2 16:19:17 2010 -0500 specs: move SIAddresses docs to x11proto Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0c5f693d6617a740faaceb657a1fda260316e414 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Dec 2 12:04:01 2010 -0500 specs: remove xtest1.info, no longer relevant This appears to be a text snippet regarding an implementation note on the x11 input synthesis extension. The function referenced can be found in the hw/hp/input directory of the server in the xext1imp.c file. http://195.113.144.229/MIRRORS/ftp.xfree86.org/pub/mirror/X.Org/pub /R6.6/xc/programs/Xserver/hw/hp/input/xtest1imp.c Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0c176b97addf92a6ed4959dac2587b5b53efc74b Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Dec 2 11:55:46 2010 -0500 specs: remove roff version of x11 input synthesis extension Now located in libXext in docBook/XML format Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 6bc74d111f1aa80f3395ee06223e47c5f6d3a010 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Nov 30 11:21:02 2010 -0500 specs: XKB proto and lib specs are now in xextproto and libX11 Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 1b51a0a2c25dd92fb61a0943a97e4152b54ff490 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Nov 30 11:17:34 2010 -0500 RX: remove the framemaker file from distribution Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit fa5ce8a189438ee6b19c09d67269ee18aff29d9d Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Nov 30 09:10:00 2010 -0500 specs: move RX Mime spec to app/xrx Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 8bcf9fd199096f8be33b5139b0b8bac017aab073 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Nov 30 09:08:03 2010 -0500 specs: move low bandwith protocol specs to xextproto Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit dc570809bea74c65f0def809767f666f10c96479 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Nov 29 17:25:41 2010 -0500 specs: remove Framemaker version of appgroup now in xextproto Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit beb347ae32e970b492e1ccd3ec27e8c7bb8f3bd9 Author: Matt Dew <matt@osource.org> Date: Mon Nov 29 17:19:49 2010 -0500 specs: convert low bandwidth extention from Framemaker to DocBook/XML Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit d98ed0b746a91c8154b893714b1bf8b8f373105f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu Nov 11 17:24:33 2010 -0800 xorg-docs 1.5.99.901 (1.6 RC 1) snapshot for X11R7.6 RC1 docs Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 20083aeb845a43bf1f358d041912e06b939d356b Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Nov 10 16:28:07 2010 -0800 ReleaseNotes.xml: Update credits section for 7.6 RC1 The list of people to credit in this release was created by running the script at https://gist.github.com/671819 with my current list of katamari modules/versions to get a unified ChangeLog for all katamari modules. For xcb modules, since this is their first inclusion, this went back to the dawn of the xcb project. From that list, everyone listed in the long form log output under either Author: or *-by: was collected and added to the "These people contributed in some way to X11R&relvers; since the release of X11R&prevrelvers;" list. The output was manually edited to remove duplicates which appeared to be the same person, and non-identifiable usernames ("root", "xgi0007", etc.) Additionally, the lead freedesktop.org sysadmin was manually added. For the second list, "This product includes software developed by", the COPYING files in all katamari modules were mined for Copyright notices and merged with the existing list. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8b52358bde047c9ecbd4a52c13591ce0df28be9e Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Nov 7 10:32:21 2010 -0500 Implement the --disable-docs option The XORG_ENABLE_DOCS macro provide a configure option to disable the generation of general documentation. The makefiles need to use the Automake conditional ENABLE_DOCS Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit fdebf058052aca57361153687fcdb5cd29b68cae Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Nov 5 17:24:24 2010 -0400 xmlrules.in: do not use --searchpath when sgml-doctools not installed The option to define a searchpath for css and xsl files is not required when such files are known to be missing. The command emitted is: /usr/bin/xmlto --searchpath /X11 xhtml-nochunks dps.xml Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit c8510a9a0bb10da9cfea6703aa38e5343a0d8b36 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Nov 5 15:22:29 2010 -0400 HTML file generation: use the installed copy of xorg.css Currenlty the xorg.css file is copied in each location where a DocBook/XML file resides. This produces about 70 copies in the $(docdir) install tree. With this patch the HTML file contains the following XML element: <link rel="stylesheet" href="/home/nadon/xorg/src/share/sgml/X11/xorg.css" type="text/css" /> when build from prefix /home/nadon/xorg/src. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 92d11dbaba41fc68ad6ba2af91e85de2f328d48c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Nov 3 23:54:56 2010 -0700 First round of updates for X11R7.6 release notes Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> commit 509ed4a982ed2e5232ef3f8d9f162a51a2939546 Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Nov 5 11:28:22 2010 -0400 specs: remove .gitignore, already covered by toplevel Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 5ac02409a2b91cf0d55adfb9cd49555d28dc225f Author: Gaetan Nadon <memsize@videotron.ca> Date: Fri Nov 5 11:25:19 2010 -0400 xmlrules.in: add a clean-local target for chunked-html CLEANFILES does not work directories Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 33f568d915d8e36d2c9d1d36d630c28a9f2889e7 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Nov 3 20:14:27 2010 -0700 Versions.xml: Update to reflect current state - Explain xorg-server vs. X11R7.x numbering and why versions reported by the server went backwards. - Use 1.8.x instead of 6.8.x in examples to reinforce current versioning - Show git tag/branch name format instead of CVS - Stop claiming to speak for XFree86 Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e0cabf2727539d216a097416a6ec8bfa0985b2a6 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Nov 3 19:33:24 2010 -0700 Update README now that most of the docs have moved out Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 9f522ffff753fbf37630c1d2d4e365883809cef7 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Nov 3 19:21:18 2010 -0700 Remove NetBSD & OpenBSD platform docs Matthieu Herrb explains: "I would rather remove this document (and its brother NetBSD.xml) completely. It was written for times where XFree86 was not yet included in OpenBSD binary distributions and people had to download, build and install it by themselve. Now (well it's been more than 10 years) that X is included with OpenBSD distributions, this document is mostly and contains many other out of date information." Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 8c9927593051c952b0a18616418519ca8b01db19 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Nov 2 19:25:40 2010 -0700 Convert platform docs from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/platform to new directory general/platform Delete SCO.sgml, since it's not been updated since the monolith and the SCO port hasn't been maintained in a while. Since these were the last sgml documents, remove the sgml subdirectory, and the configure.ac macros to find the docbook sgml tools. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a6f01f42733110b191d95cb9f48357c92a796f08 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Nov 2 18:32:35 2010 -0700 Convert Versions doc from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/Versions.sgml to general/Versions.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 61aab1e0b6c5b4435e34f3aeb4ee0843ee1ce9b0 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Nov 2 14:46:32 2010 -0700 Convert README doc from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/README.sgml to general/README.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 65c02da8c6b2e88eceeb418963ecc785e6245cc7 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 20:31:45 2010 -0700 Convert license doc from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/LICENSE.sgml to general/License.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 922bb8b668ef64514b906f8ab07bc6b81f35b75c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 18:59:25 2010 -0700 Convert font docs from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/fonts to new directory general/fonts Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit b12e1b22c0ecb7009ce31aa34206a277aff12faf Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 18:32:43 2010 -0700 Use XML tools for release notes instead of SGML tools Document was already mostly xml-compatible Uses newer tools for formatting, better matching other new docs Moved from sgml/RELNOTES.sgml to general/release-notes.xml Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d19d82db8672cc131be3060e80597d03c7606b0d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 17:43:45 2010 -0700 Convert DPS docs from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/graphics to new directory general/graphics Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f4bcf39835cffe404cee002735f7429a8e9c065c Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 17:35:12 2010 -0700 DPS.sgml: Trim down to just the obsolesence notice Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 20497d4f075203a20e78ec2ee50fce5a893160a7 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 17:10:40 2010 -0700 XKB-Config.xml: update for current releases - Document xorg.conf.d keyboard matches instead of kbd driver entries in xorg.conf - Update to current xkb-config file names & paths, and link to the xkb-config project site - Add an example of enabling the ctrl-alt-bksp zapping sequence - Delete "Direct XKB Configuration" section, since that no longer works Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Julien Cristau <jcristau@debian.org> commit a3e5dbf687984c93c5585c3e24650fa0a81c5be9 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 16:13:48 2010 -0700 XKB-Config.xml: misc markup cleanups Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit d98561ac2b8c36aec665c2b676705ec7e8d05b03 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 15:54:53 2010 -0700 XKB-Config.xml: convert itemizedlist to variablelist Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 939f07b30537a18795bd8101b6049d397a00470f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Nov 1 15:45:26 2010 -0700 Convert XKB docs from DocBook SGML to DocBook XML Uses newer tools for formatting, better matching other new docs Moved from sgml/input to new directory general/input Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit dc55f8e10ed557083f15e57936f4115f689c211d Author: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Sun Oct 24 14:26:53 2010 +0200 Add GNU/Hurd subsystem Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> commit 99191ab80e2f34f8c897a17f8232786a1957f109 Author: Jesse Adkins <jesserayadkins@gmail.com> Date: Tue Sep 28 13:29:50 2010 -0700 Purge cvs tags. Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 21dad83872bf308ac7fd9583a250b27e6b379ecb Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 28 20:19:54 2010 -0400 XACE spec: move from sgml/security to specs/Xserver directory This spec is a DocBook XML despite its sgml file extension. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 1a287268ed75cf115286686bac419b40915d9961 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 28 16:53:46 2010 -0400 xmlrules: make it accessible to more DocBook XML docs. Move it up at the toplevel and adjust existing makefiles. Others will soon follow. The "spec" dir stem has been renamed to "xml". Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 45d90e7846d1b0fe07627170e794c043bc9ae9da Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 28 16:35:19 2010 -0400 .gitignore: adjust to cover more generated files Now that more DocBook XML files are being generated. Make an exception for a few manually edited text files. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 6e39a2649210ba267c2674947a214686ef0ed586 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 28 09:35:13 2010 -0400 Remove Linuxdoc Japanese XFree86 PC98 Dependent Information Alan Coopersmith wrote: "I think we recently dropped PC98 support from the X server, so I'd be okay with dropping the documentation now". These documents will always be available in previously shipped tarballs matching older server versions. They have never been built or installed. Reviewed-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a66e77431b7ecbe762d6b0cf537e49dd12fc75fb Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Sep 22 15:44:35 2010 -0700 registry: Update paper mail address for registry submissions Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 5ba228b0bbe76b76dc6e61e5ab9926afc77934be Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Sep 22 10:22:38 2010 -0700 registry: Update Sun Microsystems contact information Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 4ad1771ca87392e69d843eef7340d56bc68591f1 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Wed Sep 22 10:18:32 2010 -0700 registry: Update X.Org Foundation contact information Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit f66df8c08728382b33e048d6ea2b30c4de62bf8f Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 14 14:31:00 2010 -0400 config: delete various accessory build files for old docs Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 49c27f4af739d5426cd43cff36c848929b574fcf Author: Marc Balmer <marc.balmer@arcapos.com> Date: Sat Sep 18 14:12:48 2010 +0200 Add myself as maintainer for xf86-input-elographics. Acked-by: Peter Hutterer <peter.hutterer@who-t.net> commit c9b0fe521bab59d602cae57a9fcdaba53a2a9a00 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 14 17:18:20 2010 -0400 Install.sgml: remove until suitable replacement is available The content is completely out of date (X11R6) and has not been used since then. Reviewed-by: alan.coopersmith@oracle.com Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit cb2eae04b5edbc6c1d11a8903b30012a0cae1371 Author: Gaetan Nadon <memsize@videotron.ca> Date: Tue Sep 14 16:55:56 2010 -0400 registry: update link to find latest version Unable to find the registry on the ftp site. Use a link to git master. Reviewed-by: alan.coopersmith@oracle.com Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit df3782b81bfdac5a8aaaf96209af9d30f701bf38 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 16:40:27 2010 -0400 config: build XLFD spec now in DocBook XML format Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit ee362193126bafdb14b1bd7a7e7847f750ee27ec Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 16:31:14 2010 -0400 config: build ICCCM spec now in DocBook XML format Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 2f1e4820e6867fb3e7c1cf684200ed5d936dcaef Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 15:37:23 2010 -0400 config: build CTEXT spec now in DocBook XML format Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 31df41d34725f2d43e28a0247582992873ef6d5d Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 08:55:54 2010 -0400 config: install the documents in $(docdir) They were installed in $(datadir)/X11/doc. This is not the appropriate location for documents. If a distro/OS has a reason for installating them in $(datadir) they can configure with --docdir=DOCDIR which removes the need for a custom configure option. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 6ac3d9d7038bc65c3e3c98826a5b685827328886 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 08:54:09 2010 -0400 config: use the XORG_ENABLE_DOCS macro to control docs building As used in all modules containing docs. It may look a bit over-kill in this case, but it will help batch building if it is consistent. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 49e493163a6fafec93e37c221390d10518b04807 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Sep 13 08:51:34 2010 -0400 config: use XORG_CHECK_DOCBOOK macro as is. Only a few sgml files are left to be converted to DocBook XML. The new doc macros in util-macros will, by default, build all formats unless the tool to do the job is not found. This is what XORG_CHECK_DOCBOOK does as well. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0fd6a2b459a9ff2ecc9514f6d5dac466c3f450cd Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 22:30:13 2010 -0400 config: statement order for XORG_CHECK_DOCBOOK It should come after the configure options as they modify the macro internal variable. Found on MAC/OS as the docbook2 tools are missing. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 533956eaf9e60fdcde3cbc5536d89e41fea74c68 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 18:54:38 2010 -0400 config: duplicate specification to distribute MAINTAINERS No need to use both dist_ and EXTRA_DIST Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 6e5eef2c17c0f8e321d97a9f62367570822374b8 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 15:24:38 2010 -0400 config: fix automake waring, use AC_CONFIG_FILES AC_OUTPUT with parms is deprecated. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 946cebf428ab1a917aaf3f086717fc317390cfd4 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 15:16:21 2010 -0400 config: add AC_CONFIG_SRCDIR, layout and comment Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7cf67b92cfdcbd4673b83960264b72a81d3ba16b Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 15:04:24 2010 -0400 config: update AC_PREREQ statement to 2.60 Unrelated to the previous patches, the new value simply reflects the reality that the minimum level for autoconf to configure all x.org modules is 2.60 dated June 2006. ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 090da909f923565b4a420d823af8bec32ed105d9 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 14:38:08 2010 -0400 man: remove whitespace as reported by git-diff Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit b110165be41eaeaec3b1fce1d0e9be9965193855 Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Sep 12 13:29:34 2010 -0400 man: remove the "general" subdirectory Also remove old IMakefile revision tags. The "man" subdir now consistent with all other modules. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 9993bc48ac187e341c6db2255fb44e165fcf3aab Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 16:26:58 2010 -0400 Replace converted roff files with DocBook XML files Gather the remaining DocBook XML files from www.osource.org/xorg/docbook. Some will be build in this xorg-docs modules, other may be moved closer to the module they document. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 2f7229674a2da3b9d4397fe99df25f9b795eb86e Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 15:39:07 2010 -0400 Move X Input protocol specs to lib/libXi and proto/inputproto Following the DocBook conversion Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit b607108c265330454769f5dc6f3cef791c48bd38 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 14:51:20 2010 -0400 Move XDMCP extension spec to lib/libXdmcp Following the DocBook conversion. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit e788e0a580e42a411a90f802b35eff6289a8af82 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 14:48:07 2010 -0400 Move Screen Saver Extension spec to proto/scrnsaverproto Following the DocBook conversion Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 5315569e2de5c37b4b303136d64af51da8ed1149 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 14:42:50 2010 -0400 Move Font Service protocol spec to proto/fontsproto/specs Following the DocBook XML conversion Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 5490e43d4118ee6ef5c2557e5ee338f262dde980 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 14:22:28 2010 -0400 Move extension protocols specs from specs/Xext Following a DocBook XML conversions, bigreq, record and xc-misc have moved to /proto in their respective directories. All others have moved to /proto/xextproto. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit d10df6087d1f759a6a9bec3026528fd45899bad0 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 13:07:33 2010 -0400 Move X Protocol spec to proto/x11proto As a result of DocBook conversion Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 0a33b798bbd8c04eab2e6258e6db500e65e12f9f Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 11:23:25 2010 -0400 Remove check for PDF tooling for X protocol spec. The spec moved to proto/x11proto Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 2fc350853a1d4591b86aa2f4446779e776c1b1da Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 10:26:58 2010 -0400 Remove Makefile for specs/XProtocol. Now built in proto/x11proto As a result of the recent DocBook conversion. Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a4559b762c2f67b28d59e804ad6a1ed76913f689 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Sep 9 13:06:10 2010 -0400 config: xlogo.svg was missing in the tarball Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit bd575588e3ad149e5a967436f60f2de56cd5dde7 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Aug 19 20:13:16 2010 -0400 config: upgrade to util-macros 1.8 for additional man page support Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS The value of MAN_SUBST is the same for all X.Org packages. Use AC_PROG_SED now supplied by XORG_DEFAULT_OPTIONS Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit aab6187cadb5a642ec4a7d97daf99ce08d5966ff Author: Thomas Hellstrom <thellstrom@vmware.com> Date: Wed Aug 18 09:57:54 2010 +0200 Add myself as maintainer of xf86-input-vmmouse Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> commit 3399ae70c5f6c44258c31f497f607929707d8d85 Author: Thomas Hellstrom <thellstrom@vmware.com> Date: Wed Aug 18 09:51:44 2010 +0200 Added myself as maintainer of xf86-video-vmware Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> commit 3c72169cde346fb14d73903818af9de4442ff0a5 Author: Dirk Wallenstein <halsmit@t-online.de> Date: Mon Jul 19 10:35:14 2010 +0200 Improve the section about available XKB options Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit e16c615962e130bb251ff273bdb0e4c5df0c909a Author: Gaetan Nadon <memsize@videotron.ca> Date: Sat Jul 10 13:32:18 2010 -0400 Add the X11 protocol spec to the build system - Part II There was an non-Automake Makefile checked-in for which an override was needed in .gitignore. It can go now. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 7436f4f910deaed2825ce99438f98aef0e0f9f82 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Sat Jun 12 08:49:29 2010 -0700 Move recordlib.ms & xtestlib.ms to libXtst module Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit a002cf8acbc1d0ac9f8c8beef0cd6111843d416d Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Fri Jun 11 18:50:31 2010 -0700 Move several extension API specs to libXext module Only took those which had separate API vs. protocol specs. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 939250fa7e39c60f16ce648be07f3c6d11e79337 Author: Julien Cristau <jcristau@debian.org> Date: Wed Jun 9 18:52:35 2010 +0200 Check for ps2pdf and pdftk in configure Signed-off-by: Julien Cristau <jcristau@debian.org> commit 59a7d41a255a6b9d7738245983e5c775a7147f08 Author: Julien Cristau <jcristau@debian.org> Date: Wed Jun 9 17:49:25 2010 +0200 Add the X11 protocol spec to the build system Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 92e8aea8967bbe597cc7bd72ef3306fc482d0133 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 8 20:22:02 2010 -0700 Move specs/Xt to lib/libXt module Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 56e8de26f874417b307245044fe84959b3b59bb6 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Tue Jun 8 20:16:58 2010 -0700 Move specs/ICE to lib/libICE module Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit fdab711a62793a9fd344cbaa6ceaa62626de973f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jun 7 15:50:55 2010 -0700 Move specs/Xmu/Xmu.ms to libXmu module Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit 30b4460ffa138fded4b872eff6f0c02ac4188ae2 Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Mon Jun 7 15:45:30 2010 -0700 Remove out of date specs/GL/libGL.txt Mesa developers agreed that this documentation belongs with Mesa, not xorg-docs, so an updated version should go there. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit c2d690a68aa39f34bee60240eac613d5e7dff38f Author: Alan Coopersmith <alan.coopersmith@oracle.com> Date: Thu May 20 18:48:39 2010 -0700 Move sgml/core/Xserver-spec.sgml to xserver module Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> commit b01740e07e96dce8def3dc97514110d19fd736ae Author: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> Date: Sun Apr 4 13:56:44 2010 -0500 MAINTAINERS: update Cygwin and MinGW ports Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net> commit c707343c363c3fb9fd54d547796f66eae0dea5c4 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 16 22:20:17 2010 -0700 Xsecurity.man: Removing Kerberos left 5 mechanisms implemented Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 5e046e3a62e2dfc633cd079d76fd105ebbb19faa Author: Julien Cristau <jcristau@debian.org> Date: Tue Dec 23 19:58:35 2008 +0100 X.man: add manpage section to Xsecurity reference commit 51294b3eee4b059476a64ec71feb98b804195d5c Author: Julien Cristau <jcristau@debian.org> Date: Tue Dec 23 19:57:48 2008 +0100 X.man: fix some minus vs hyphen confusions commit 39d3fd0fabd63a507aafbdfe13c6caaf393978ea Author: Julien Cristau <jcristau@debian.org> Date: Tue Dec 23 19:27:44 2008 +0100 X.man: X servers don't "generally" support DECnet connections anymore xtrans lost DECnet support in 2008, the server and libs before that. commit 185953fd217dc69f0af0ef8d513197ceee6753b3 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Jan 15 16:03:09 2010 -0800 Update Sun license notices to current X.Org standard form Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c7ccb5d578c755e3e8e382867b43bbee53b0cce0 Author: Tilman Sauerbeck <tilman@code-monkey.de> Date: Tue Dec 29 18:22:54 2009 +0100 Removed myself from the mga maintainers list. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit a55e2fd430efbdedd7b854aebdae4f4012d233f7 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Dec 18 08:11:41 2009 +1000 MAINTAINERS: making myself the maintainer of xinput Given I've effectively maintained it since 1.3, it seems sensible to state so. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit b0e990b93b4189217be175a9a3bdc6cb04b61edd Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Dec 16 16:30:52 2009 -0500 MAINTAINERS: add video-mach64, update video-ati Reported-by: Alex Deucher <alexdeucher@gmail.com> Acked-by: Mark Kettenis <mark.kettenis@xs4all.nl> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit de4f1bcbfcccf10887ca8bba7f8d4600be6a5aca Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Dec 10 21:06:46 2009 -0800 Grammar fix in X.man Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c70e059150213a00c76b5f10768c8ed5ab8c3d80 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Nov 30 20:31:00 2009 -0500 sgml: add missing generated formats These are not build by default, so they can be missed. ps and html Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 49aa344ffad3e4f276f05b68169d9b857cf6437c Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Nov 30 20:27:39 2009 -0500 man: delete redundant .gitignore file for man pages This is now handled by the defaults section at the toplevel gitignore Signed-off-by: Gaetan Nadon <memsize@videotron.ca> commit 130b53c632b71b1dd9ded154816743622930734a Author: Gaetan Nadon <memsize@videotron.ca> Date: Sun Nov 29 20:32:13 2009 -0500 Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES Now that the INSTALL file is generated. Allows running make maintainer-clean. commit 5370081e632c34bee523faca40e5763cfeb22868 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Oct 28 15:43:41 2009 -0400 configure.ac: AM_MAINTAINER_MODE missing #24238 This turns off maintainer mode build rules in tarballs. Works in conjunction with autogen.sh --enable-maintainer-mode For all X.Org components. commit 10fcd352ea6ea56f7bdea325e5f4ae2f08045d94 Author: Gaetan Nadon <memsize@videotron.ca> Date: Wed Oct 28 14:09:09 2009 -0400 INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206 Add missing INSTALL file. Use standard GNU file on building tarball README may have been updated Remove AUTHORS file as it is empty and no content available yet. Remove NEWS file as it is empty and no content available yet. commit 221061239b76a8c769a51edab009de6bd2492df4 Author: Gaetan Nadon <memsize@videotron.ca> Date: Mon Oct 26 22:08:40 2009 -0400 Makefile.am: ChangeLog not required: EXTRA_DIST or *CLEANFILES #24432 ChangeLog filename is known to Automake and requires no further coding in the makefile. commit 9e7a10a089ec9dec1171268cf74aa2f8dd989fb6 Author: Gaetan Nadon <memsize@videotron.ca> Date: Thu Oct 22 12:34:16 2009 -0400 .gitignore: use common defaults with custom section # 24239 Using common defaults will reduce errors and maintenance. Only the very small or inexistent custom section need periodic maintenance when the structure of the component changes. Do not edit defaults. commit e938abdd50f4801f2009927624813a23dbd29ef4 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Oct 26 00:08:03 2009 -0700 Mouse driver man page is now mousedrv(4), not mouse(4) Nothing like posting a finished release tarball to bring a mistake to your attention... Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit df2c2f9b91f2a6a7708e2760d2ec45ce2efa002b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Oct 25 14:59:41 2009 -0700 xorg-docs 1.5 (X11R7.5) Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f40bbed9f92dfd86168facdb874663aa0de63395 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Oct 25 14:52:57 2009 -0700 Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONS Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 570e2ff8736bbc977085c5b3e47d159d4dffd90b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 24 00:06:05 2009 -0700 More updates to Release Notes for X11R7.5 - Try to explain the katamari & modules better in the introduction - Add section about build system changes - Add VPDAU to DRI2 description - Move driver list after new feature list & server overview - Update driver list for new & dropped drivers, add missing man page links - Drop out-of-date XDarwin description - Drop out-of-date warning that window managers don't support Xinerama - Move DGA 2.0 to deprecated features section - Add notes about changes to C-A-B default & blackroot/nocursor (-retro) - Drop description of Luxi fonts that duplicates fonts.sgml - Add note about new default font directory & compression options - Update CID font support section to state it's been removed - Add to removed features section: fontcache extension, libXaw8 (Xprint), kdrive servers (Xvesa and friends) - Add to future removals: HAL input device support, Xsdl, DGA 2.0 - Updates to contributor lists - Change from DocBook/SGML 4.2 to DocBook/XML 4.3 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 2c6eff5f97be03af4673c313033d7b28a7e5f1ed Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 24 00:05:11 2009 -0700 Make DTD version match DTD URL in XACE-Spec.sgml & Xserver-spec.sgml Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 0107875923cb585e9ba0b86c11e14d94a0954f61 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 23 16:41:16 2009 -0700 Update BSD platform docs for 7.5 release Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 98b7aa8dd7d270f578144ba2e78c36c3bd57c0fd Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 23 16:35:40 2009 -0700 Update fonts.sgml for the last few years worth of font changes - CID fonts are no longer supported - font backends are no longer loadable modules - font paths may be specified as catalogue: directories - font paths are now optional in xorg.conf files - default font dir change from /usr/X11R6/lib/X11/fonts to /usr/share/fonts/X11 - the Type1 & X-TT font backends/modules are no longer available Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7fb8d99c74fc122313323de177f20ed2601bbbd7 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 22 23:21:07 2009 -0700 Move description of XFree86 4.4 compose changes to Compose man page in libX11 After 5 years, they no longer need to be called out as a new feature in the release notes. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 2f53384c7b3f2bdde1be530ef213f413a9e87e02 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Oct 18 00:20:01 2009 -0700 RELNOTES: Correct release for Compose file changes Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit d8a9612d5d0855f711955cd1f4fbc9e5d6f44038 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sun Oct 18 00:16:57 2009 -0700 RELNOTES: Fix some character entity codes Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 47ab9a206702b732dfe9713d0425ab94a32cc8e9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 17 21:18:50 2009 -0700 xorg-docs 1.4.99.902 (1.5 RC 2) snapshot for X11R7.5 RC1 docs Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 88790927611a794b9acd55d35886679a84c449c6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 17 20:34:51 2009 -0700 RELNOTES: Update contributor list from git-log of all katamari modules Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit cb5a9694f696564173bcf247af2ab329c8e7ed8d Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 17 14:08:38 2009 -0700 Move xtrans specs to lib/libxtrans module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 15d1cb348904f849c671926fa3a03ed2652b27e8 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 14 20:02:00 2009 -0700 LICENSE: update license notes for 7.5 release - Copy introductory comments from README.sgml - Add preferred license format from xserver/COPYING - In sections with mixed license text & description, use blockquotes to distinguish the license text - Move XFree86 1.1 license statement from the top to the XFree86 license section - Update NetBSD Foundation license to current form (drop advertising clauses) - Drop NVIDIA custom license now that they've moved to standard MIT - Replace GLX Public License with SGI Free B - Drop SGI CID Font Code Public License since the code is no longer shipped Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 11bc345d8693ed308ce2473c66f65d8fe4efaaf6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 14 19:05:42 2009 -0700 Move libX11/XIM/locale specs to libX11 module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit b32b02d3da0b1a197c249aa92d3a2c5f039f38d0 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Oct 13 13:37:41 2009 -0700 Move Xprint docs to printproto, libXp, & Xprint server modules Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit e97bdda6d9ce4046b29afd6780ec1d8468f6f751 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Oct 13 10:56:35 2009 -0700 Move rstart specs to app/rstart module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 35108198ceed3969ce89d7ea2499ced0b08fbfa6 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Mon Oct 12 22:54:38 2009 -0700 Move specs/PM/PM_spec to proto/pmproto module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 0fb0e8edd5418f07a3f7144d5b2818efe2b748ac Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 10 16:37:10 2009 -0700 Move xv-protocol-v2.txt from xorg-docs to videoproto Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit fb6bf562b558b59a9d0e06dd8886ff93deeee1dd Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Sat Oct 10 00:46:05 2009 -0700 Move session management specs to libSM module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 2b2cf62524e99075b6c613e38310748e769efddb Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 9 22:14:54 2009 -0700 Bug 10274: X(7) manpage doesn't document %D for environment variables https://bugs.freedesktop.org/show_bug.cgi?id=10274 Reported to Debian by Julian Gilbey (Debian BTS #243597) Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c10b0ac6f19778d6e8d0ce5033ee7e8710b02c17 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 9 16:01:18 2009 -0700 Move Xaw specs to libXaw repo Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit d6c1d6f145c39981ae0757b419241c0d4bcc9919 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 7 21:31:39 2009 -0700 Replace old Xdarwin docs with pointer to current Xquartz website Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> commit f52d807aa18580b7b23ddf4d743d61c3df248052 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 7 11:01:41 2009 -0700 Remove very-out-of-date docs for Lynx & OS/2 platforms Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit d3aa188d287fb449e620d9b8e5dddffabd321eee Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 7 10:53:40 2009 -0700 Move specs/Xserver/fontlib.ms to lib/libXfont Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ea742b44c81800616ba308c5a021bf4b32312947 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 7 10:52:33 2009 -0700 Mark XTrap as Obsolete in MAINTAINERS Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c2f2503d2dd26b9306c5783a29785380bf531a24 Author: Guillem Jover <guillem@hadrons.org> Date: Wed Sep 23 02:55:53 2009 +0200 Add .gitignore files Signed-off-by: Guillem Jover <guillem@hadrons.org> commit 724b114c4eb98e505936455079864af23169cfdf Author: Guillem Jover <guillem@hadrons.org> Date: Sat Sep 19 15:14:08 2009 +0200 MAINTAINERS: Use xorg-devel instead of xorg for mailing list Signed-off-by: Guillem Jover <guillem@hadrons.org> Signed-off-by: Daniel Stone <daniel@fooishbar.org> commit 11d244cdb677447947aebdca6ea44a74a3480cfe Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 1 23:24:03 2009 -0700 Move specs/XvMC/XvMC_API.txt to libXvMC module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 6143ef460e0f5c1aca28effa2f4ec0c0a9ebe26a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 1 23:21:32 2009 -0700 Move specs/Xv/xv-library-v2.2.txt to libXv module Remove library spec this time, not the protocol spec. Oops. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit adaa4bdc67098f6ca26c214b7c62d8cacebc840b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 1 23:05:51 2009 -0700 Move specs/Xv/xv-library-v2.2.txt to libXv module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7aecfa578192aeb37e8f82ff827695fb4d4b5c1b Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 1 22:18:24 2009 -0700 Move specs/Render/library to libXrender module Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 16e0cf42ff7d160c1b917c1e671d8832359986ca Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Oct 1 21:25:09 2009 -0700 Remove hardcopy directory Almost all files in there were generated output, many of which were generated from older versions and were now out of date. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit d905ce5cab6c4845e459e7f531233e50c9a1f543 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Oct 2 11:44:06 2009 +1000 Remove X Input protocol spec. The protocol spec has moved to the inputproto component. Rather than having two different specs that may become out-of-sync, remove it from here and stick a reference in. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f0299dace37eb111bcc09cf6578bb4b16c874c7d Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Oct 2 11:50:23 2009 +1000 Remove out-dated XI2 stuff from Xi protocol spec. The protocol spec here represents the state after the MPX merge and has changed considerably since. The new spec is over in the inputproto module. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f7fe7beb7a4d0509a23ffc34a4a5739b28d82850 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 21:19:15 2009 -0700 1.4.99.901 (1.5 RC 1) snapshot for X11R7.5 RC1 docs Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit ce15facd8bfac5abdf263c416be06665aeacad46 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 21:07:18 2009 -0700 Fix X11R version numbers in fonts document Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 5df216cea0c400f6e8ea6878907377d034e54de5 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 20:36:03 2009 -0700 Drop Bitstream Vera from license doc since we no longer ship those fonts Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c8690bf2becafef051445aae5a4a0e1b79494c2d Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 19:51:22 2009 -0700 Add SVG conversion of misc/xlogo.epsi Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit f670bbb87a4c9658d0257cb9c58b31e6a8fd870e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 18:48:34 2009 -0700 General man page updates for 7.5 release - Correct current default paths for many files/env vars - Remove Xprint, XDarwin, lbxproxy, kbd_mode, & MIT-KERBEROS-5 references - Add Xephyr, Xquartz, Xvnc & XWin to X server list in "See Also" - Make display manager discussion more generic - Displays can have more than one keyboard and mouse each now - Note that Qt & GTK+ apps don't use X Resources - Remove XFT_CONFIG from list of environment variables - Strip trailing whitespace Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit b142c8140bf726246ef28ffc7e9438c32512b0bc Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 17:38:31 2009 -0700 Add pointers to wiki, bugzilla & git to the readme Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit eed6e609cc55ab30889de303fdb9ef9663e7709a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Sep 18 17:36:49 2009 -0700 MAINTAINERS: vga is obsolete, ati 3-way-split has been finished Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit c469f170a9371171fac3abbaf5e398a5fd5535bf Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Sep 17 08:08:18 2009 -0700 Reformat credits list in RELNOTES for better readability Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit cc89c042e1143f276fe7ab22d2171d7569f5c902 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Sep 16 20:53:26 2009 -0700 Start updating README & RELNOTES for X11R7.5 Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 265aa0510d925efb59de9eea6b5da63ef2834483 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Sep 16 17:30:13 2009 -0700 Strip trailing whitespace from sgml docs Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 7b5518a9c3bb35f50fe2dd9f7be1a77549a05f54 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Sep 16 11:26:13 2009 -0700 Solaris platform docs update for Xorg 1.7 Drop long out of date information Add updates for new virtual terminal support in OpenSolaris Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 8b49e7e5eca50f47c70639e74be72b71df9d0577 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Sep 9 13:52:22 2009 +1000 MAINTAINERS: Update input-void maintainer from ajax to me. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 8bb6f8d72d67ace53771bbec9c748dd115b8dbcf Author: Keith Packard <keithp@keithp.com> Date: Thu Sep 3 14:06:17 2009 -0700 Add Makefile to build x11.pdf Signed-off-by: Keith Packard <keithp@keithp.com> commit e73134d2e82b147c857e0c2bda8f16f7fff58142 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Mon Jun 29 16:05:09 2009 -0400 xace: property access hook documentation updates for Post hook. Signed-off-by: Eamon Walsh <ewalsh@tycho.nsa.gov> commit 3cc3a00d84ea54e659d93f0c5a1ba403be07f7ec Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Jun 19 18:17:59 2009 -0400 xace: device access hook documentation updates for XI2. Signed-off-by: Eamon Walsh <ewalsh@tycho.nsa.gov> commit 18556c4ba2840b94549630797fc10c26f344f387 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Jun 4 21:35:48 2009 -0700 Move xfs/libFS docs to app/xfs & lib/libFS Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 957e9fc847048b48b84f0aaca4f810724eca2fd1 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri May 15 10:03:22 2009 +1000 Xi: DevicePropertyNotify events were introduced with 1.5, not 2.0 Reported-by: Alan Coopersmith <alan.coopersmith@sun.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit dc85e859c5690d6d467c6b61653991ad289e4f15 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri May 15 10:02:09 2009 +1000 Xi: s/secifies/specifies/g Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 73ced6e24e28f97f1b4c5f6ec612e06c0c2c6477 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Feb 18 10:51:49 2009 +1000 Add "Deactivated" state, mark deactivated input drivers as such. "Deactivated" is a step down from unmaintained, but before obsolete. If users come and require a deactivated package, this package may change back into "unmaintained" (or in paradise, even "Maintained") state. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 00f4c1f5cbb16b819739f77e2b318a1b28973dcb Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Mon Feb 2 09:15:39 2009 +1000 Add xf86-input-synaptics maintainers. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> commit 4aa9abf958582588829c591a3f83420577301925 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Feb 17 17:19:43 2009 -0800 MAINTAINERS: Update lists of unmaintained and obsolete modules Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 83541f688b0e903f1c8c5b520ff0fd1b406f4420 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Feb 17 15:54:48 2009 -0800 MAINTAINERS: Remove compiz from X.Org apps They're moving away from X.Org/Freedesktop.Org hosting to their own bugzilla/git/mailing lists - see http://lists.freedesktop.org/archives/compiz/2009-February/003284.html Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 037374d93f7655bad76006c0f6e195974d079c21 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Feb 17 15:18:33 2009 -0800 MAINTAINERS: Add pointers to SubmittingPatches wiki page & xorg-devel list Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 026f0eae5357478cdf49449109d4c14c238ebad9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Feb 4 17:01:17 2009 -0800 Accept maintainership of keyboard & mouse drivers commit d1eb4c61b465e36c509358d3a1d8861f53059bb5 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Tue Jan 27 15:45:47 2009 -0200 Correct make distcheck. commit b7362d0bd77957d30fe16b14708643eea2a01acf Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Fri Sep 26 13:08:02 2008 +0930 Xi specs: Add JOYSTICK as predefined device type. commit 4d54bb7e109816f374ea0211aff0a82c38b59d4e Author: Peter Hutterer <peter.hutterer@redhat.com> Date: Fri Sep 26 11:42:43 2008 +0930 Xi specs: Update device properties requests/event. ConfigureDeviceProperty and QueryDevicProperty have been removed, "pending" does not exist anymore. BadAccess may be returned for deletion or modification. DevicePropertyNotify events are not XGE events. Label DPs as introduced with XI 1.5 commit a1048ea88ad0bcb05cee9592039578ba3e89e648 Author: Jerome Pinot <ngc891@gmail.com> Date: Sun Sep 21 21:51:53 2008 +0200 Fix rgb.txt. Bug #17689. commit 372749a6871cefa3277407c5098fcdcd0c20c3d6 Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Wed Jul 30 18:09:01 2008 -0300 Update configure.ac for removal of empty directories. This is a minor correction to commit 1cd356558d2748e4f8bca0d63c832cf5a623321e. commit 409c8df5fe657ef3700d5e475b4d07cb152ac807 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jul 29 18:10:24 2008 -0700 Update XOrgFoundation man page to point to git, not cvs commit 34c863c2ba2838d42ff88e5f008538d2a250dfb7 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jul 29 17:56:21 2008 -0700 X(7) man page formatting & typo fixes commit a9fb8c55a03609c5314a4162a48007eb695eb66a Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Jul 29 09:47:29 2008 +0930 Xi specs: Update DevicePresence for DeviceControlChanged Also stick a comment into ChangeDeviceControl that it causes presence events. commit b5b6acedd659328206dc20ff08818fd11502b460 Author: Julien Cristau <jcristau@debian.org> Date: Sun Jul 27 14:24:37 2008 +0200 rename security.man to Xsecurity.man commit 1cd356558d2748e4f8bca0d63c832cf5a623321e Author: Julien Cristau <jcristau@debian.org> Date: Sun Jul 27 14:14:48 2008 +0200 fix build in a builddir wildcards considered harmful also remove empty subdirectories commit 3fcc6b06b64535550ea95582d3d5d70fb6490ee9 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Mon Jul 21 16:51:38 2008 +0930 Xi specs: Allow same mapping for multiple buttons in XI 2. commit b7f15e42b23264053f366770e514c1dd48420d6b Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Jul 9 12:40:25 2008 +0930 Xi specs: add protocol documation for input device properties. commit e445b3aaaa514813ce52ba775c62d2e2d97da1d1 Author: Adam Jackson <ajax@redhat.com> Date: Wed Jul 2 14:52:24 2008 -0400 Various subsystem updates. commit 214b85c4fabc14aa53a8b8a94fb36567074f3df7 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Jul 2 21:51:22 2008 +0930 MAINTAINERS: update my email address. commit 790e697dd052ffabdf2b9489ec256be060b94605 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu Jun 19 20:45:05 2008 +0930 Xi specs: update the description of the state field (device events). XI 2: If dev is a master device: state == device state + state of paired master If dev is attached: state == device state + state of device paired with master if dev is floating: state == device state, all other bits 0 commit 6c951a0c5ee439db66c350f7429460f81c3af497 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Tue Jun 17 14:38:54 2008 +0930 MAINTAINERS: Looks like evdev is mine now. Complaints can be filed at every full moon but only before 3pm. commit 46335b4f4f55174ff72175ee3487902c20e21156 Author: Daniel Stone <daniel@fooishbar.org> Date: Thu Jun 12 01:11:39 2008 +0300 MAINTAINERS: Peter is really the input king these days Make this reflect the status quo. Not checked with Peter for fear he'd say no. commit 2e3ce4a2ca3e3ce1a29b9d78dffd8cf5029ce72c Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Thu May 22 11:44:34 2008 +0930 Xi specs: Add note that we're including 2.0 as well now. commit b7b59362de9389d5d891eb77731ca8c260e0d845 Merge: c86a9b7 4c4b977 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 17:46:58 2008 +0930 Merge branch 'master' into mpx Conflicts: specs/Xi/protocol.xml commit 4c4b977b3f53b14a33028160bc3b43b6f49bba3c Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 17:45:16 2008 +0930 Xi specs: note about deprecated Change[Keyboard|Pointer]Device. Server 1.4 (coincidentally also XI 1.4) always returns BadDevice. commit 019258abc5bb90afb725676510f76799b54be814 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 16:56:15 2008 +0930 Xi specs: add DevicePresence events. (cherry picked from commit c86a9b7b93e8c47ff6382f3960b427bf2adb4861) commit c86a9b7b93e8c47ff6382f3960b427bf2adb4861 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 16:54:21 2008 +0930 Xi specs: add DevicePresence events. commit 3fc64c7b9699d628be5f148d3c78c0ec49bfa74e Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 16:43:33 2008 +0930 Xi specs: add XI 2.0 events. commit b8bfc9ad2d7cf1698dc7878ce892f1587e1cfd01 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 15:16:43 2008 +0930 Xi specs: add new requests for XI 2. commit c25407c99646ba6ac801f7e7bd6005bbe074a72b Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 14:01:54 2008 +0930 Xi specs: ListInputDevices, GetExtensionVersion and OpenDevice specs for XI2. commit 1653c34f80420024c3e3d82cbee4d9afb0a714ed Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Mon May 12 12:36:19 2008 +0930 Xi specs: add blurb about XI 2 device handling. commit 8d70d2e02231a535299ab48e88928d6c853bc71a Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 23:22:25 2008 +0930 Xi specs: clean up xml, try to get a readable output. doclifter isn't perfect. commit 3122c88092b11253ed8ee43d70d692fa5428fbce Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 23:08:19 2008 +0930 Xi specs: clean up the layout of the first page. commit d03eeef819d444504cae3f5135da2d3b3f0e5235 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 23:02:29 2008 +0930 Xi specs: remove double headers, clean a few things out. commit a869e62df356837200bd0aee3575ee59c4d5d4cf Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 16:32:48 2008 +0930 Xi specs: modify xml to parse through xmlto. Output isn't perfect, but at least is parses and spits out a PDF file. commit 023bac145790e87a2400bc6ad2fdf684f12a1098 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 16:26:46 2008 +0930 Xi specs: Doclifted protocol.xml. commit 2327364cf7d2b71455a5b4f5aa3600516533e376 Author: Peter Hutterer <peter@cs.unisa.edu.au> Date: Sat May 10 16:25:39 2008 +0930 Remove a couple of tags unparseable by doclifter. commit b3c82abd3b1124dd27ab26a62b4135d74a24ed21 Author: Ed Catmur <ed@catmur.co.uk> Date: Tue May 6 17:49:20 2008 -0700 Bug 9842: "65533" is not a character number in the document character set X.Org Bugzilla #9842 <https://bugs.freedesktop.org/show_bug.cgi?id=9842> Patch #9127 <https://bugs.freedesktop.org/attachment.cgi?id=9127> Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com> commit 48040b27fdc800498d302c019b2364af0bd327e8 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue May 6 17:35:03 2008 -0700 Bug 4727: X(7) manpage is dated <http://bugs.freedesktop.org/show_bug.cgi?id=4727> commit e76d57030b7cf2bd1db6b3bb05d3b167b4180a4b Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Tue Apr 1 17:34:07 2008 -0400 Update the server spec revision history to reflect recent changes. commit 206be459e2dca389a24e44e40d63b6ccb0ee9871 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Tue Apr 1 17:21:33 2008 -0400 Update the server documentation for the devPrivates rework. commit d3ac8588bcd30c5bac145fb9913270e191e216fd Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Mar 28 18:11:34 2008 -0400 Attempt to banish the old DDX server documentation once more. commit b7a0378c908db6c4ce5744f143ab59df7416fdbd Author: Adam Jackson <ajax@redhat.com> Date: Fri Mar 28 17:44:16 2008 -0400 Document fb, not mfb or cfb. Document changes to backing store and PaintWindow. Changes ported from old non-DocBook document. commit 5044891a7071dbcf85b77ba44b2e628d8fa3856a Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Mar 28 16:38:27 2008 -0400 Update XACE documentation for version 2.0. commit 9efacd15b8359cb4186717f148950020de3c7f75 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Mar 11 15:04:28 2008 -0700 List pcpa as xedit maintainer commit 2a72f382c7685f9188f9c0eca8f14642f0fcdbf6 Author: Adam Jackson <ajax@redhat.com> Date: Sun Feb 17 09:33:46 2008 +1100 Document changes to backing store and PaintWindow. commit 9918fd466fac4fac80e4054157d42af955aefccd Author: Adam Jackson <ajax@redhat.com> Date: Sun Feb 17 09:22:14 2008 +1100 Document fb, not mfb or cfb. commit 3852d7c82410bd1b4cbd6934f28a579d99794660 Author: Adam Jackson <ajax@redhat.com> Date: Sun Feb 17 09:05:12 2008 +1100 Nuke RCS tag. commit 74e2e3975a962bd468d321d09271cc1c23235871 Author: Adam Jackson <ajax@redhat.com> Date: Sun Feb 17 08:47:40 2008 +1100 Import the source for the DDX documentation from old Xorg CVS. commit 27aa7a163ab71f0359a422d1fbf361af59e029e0 Author: Ben Byer <bbyer@apple.com> Date: Mon Feb 11 20:33:09 2008 -0800 Adding Jeremy Huddleston to Xquartz commit 0683f91831724a0ed4f58a87d2baf0b8f6421ac3 Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 24 10:46:22 2008 -0800 Add xf86-input-aiptek maintainer per request. commit 28a07e8424a0493290ecfd443157e635a51d3cc5 Author: Eric Anholt <eric@anholt.net> Date: Thu Jan 24 10:44:46 2008 -0800 Update xf86-video-intel entry. commit 681c2c135e00a3f212a814842921c993bfe1fc09 Author: Philip Langdale <philipl@fido2.homeip.net> Date: Thu Dec 20 14:20:20 2007 -0800 MAINTAINERS: Add xinput maintainer commit 776ed20c42f93dc70c055b9f53112b3c827bf702 Author: James Cloos <cloos@jhcloos.com> Date: Thu Dec 6 16:37:36 2007 -0500 Replace static ChangeLog with dist-hook to generate from git log commit 40a33d1fdfccecb1b5d5c88e75b0efa8c2bb0c57 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Sep 4 15:09:09 2007 -0700 Remove more $XdotOrg$ CVS id tags commit 71d1526ff9296913a1c64790e7c087ff8b244f2a Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Sep 4 15:07:00 2007 -0700 Update server-interpreted address types registry commit a0dbd3543cdfc407c042c5e7ae28f00a6e1b893c Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Sep 4 15:04:58 2007 -0700 Remove RCS/CVS id tags from registry commit 475c4c083591522d336cf63e88b6368b403388d8 Author: James Cloos <cloos@jhcloos.com> Date: Thu Aug 23 22:31:38 2007 -0400 Add comment to X11.keysyms about what is missing commit c95f550eadc47b61b8709267f0fd06be7e3821f8 Author: Matthieu Herrb <matthieu@bluenote.herrb.com> Date: Fri Aug 10 11:12:17 2007 +0200 Add me as xsetroot maintainer commit 8f8a87978ba53597f89fde2e439f257a2bfea0b7 Author: Jochen Voss <voss@debian.org> Date: Wed May 30 09:35:06 2007 -0700 Bug 11104: misprint in xlib manual, broken example in X Toolkit intrinsics, etc. X.Org Bugzilla #11104 <https://bugs.freedesktop.org/show_bug.cgi?id=11104> Patch #10137 <https://bugs.freedesktop.org/attachment.cgi?id=10137> Contributed upstream from Debian's 023_specs_doc_fixes.diff commit 9707b3c3990690ea699cd1c2331ac9929e5c12e6 Author: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Date: Fri Apr 27 00:41:07 2007 +0200 Add myself as maintainer for xf86-input-acecad. commit df52a9aee5f24d9d464cb9345cc1bb00c90342da Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Apr 15 19:56:01 2007 +0200 Add my self as maintainer for a couple of applications. commit 1f00575247a08f389eeea3ca1d8abecbcb73e3ac Author: Sascha Hlusiak <saschahlusiak@arcor.de> Date: Mon Mar 12 23:39:40 2007 -0400 MAINTAINERS: Add xf86-input-joystick maintainer commit b66ba1b856dfeb9a8a474f753118ba31bd599364 Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Mar 10 20:18:10 2007 +0200 MAINTAINERS: Add xf86-video-glide maintainer For some reason, someone's stepped up to maintain glide. commit 88e89743908cf8c271a2a8a4adadc064e9f9192d Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Mar 10 20:17:28 2007 +0200 Remove ChangeLog commit 8ba785a9defd823f8a3ccae052f53462f7141a05 Merge: b3e029d e8dccc9 Author: Ian Romanick <idr@us.ibm.com> Date: Fri Feb 23 10:18:37 2007 -0800 Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/doc/xorg-docs commit b3e029d998c3039f816a602ffd92cbda6a97ac39 Author: Ian Romanick <idr@us.ibm.com> Date: Fri Feb 23 10:18:25 2007 -0800 Add libpciaccess and xf86-video-xgi. Update xf86-video-mga. Add entries for libpciaccess (I hope this is the correct place for it) and xf86-video-xgi. Mark myself as the maintainer for both. Add myself and Tilman Sauerbeck as maintainers for xf86-video-mga. commit e8dccc9b413f6c8e3fb46d451fcc555b55113302 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Thu Feb 15 11:41:20 2007 -0500 Bug #6988: Change behavior of Security extension per user feature request. commit 7b39be73bf4b92b6fa86d98d66d34e4d43d1edff Author: Ben Byer <bbyer@bbyer.apple.com> Date: Sun Feb 11 17:09:04 2007 -0800 added my email address commit 2a98afc388150e18e06d18d3178b1229ef35cbc6 Author: Jesse Barnes <jbarnes@hobbes.virtuousgeek.org> Date: Sun Feb 11 14:04:38 2007 -0800 Update OS X maintainer and list OS X/Darwin port as maintained (still need email and possible co-maintainer entries for OS X though). commit 95fc2f18c07ce12e3a86395a96f70ffee96f2a02 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 30 13:31:24 2007 -0800 Update video driver table - Add wsfb - Remove vmware man page from listings for voodoo & wfb commit 8cade4ba11c7793101a28671c8263a93a1ec307e Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Tue Jan 30 13:25:44 2007 -0800 Add missing closing tags to clear docbook2txt errors commit 303789056e7ffa648c01c476f60a4add8b27cee7 Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Tue Jan 23 02:36:20 2007 -0500 Bump to 1.4. commit 845cea72f6a16a922762c32e3699840446eeeeca Author: Adam Jackson <ajax@benzedrine.nwnk.net> Date: Tue Jan 23 02:34:05 2007 -0500 Fix distcheck. commit c81c8da44ca0123dc6db7d5ce9efbfa60bfb9d30 Author: Eric Anholt <eric@anholt.net> Date: Tue Jan 9 11:30:35 2007 -0800 Remove render protocol doc now that it's been moved back to renderproto. commit b18066caf3c0bd70b21565ab748aee988f774cde Author: Eric Anholt <eric@anholt.net> Date: Tue Jan 9 10:58:22 2007 -0800 More .gitignores for autoconf stuff. commit 181ab067fdb5b55834cb6a8f3587f80f243dc401 Author: Eric Anholt <eric@anholt.net> Date: Tue Jan 9 10:52:55 2007 -0800 Remove duplicated specs from proto modules. Updates that happened to these files (assuming the initial import was already from modular) have been propagated back to the proper locations in the protocol modules. commit ac409b9b393c739fc49e193c15412848124dec32 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 20:55:05 2006 -0500 Revisions: reordering of sections. commit 55bf6ec04b8ec89b1c015da2ab4bdaed21f97938 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 20:10:32 2006 -0500 Docbook conversion: X "Porting Layer" server spec. commit 9c33bb06a7a4d62e3cca77d3e54985b285a1cd83 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 20:07:32 2006 -0500 Move SGML documents into category subdirectories. commit dcee0015b6c60e2c9d521491907da61e4c525a05 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 19:29:53 2006 -0500 Add some semblance of subdirectories for categorizing SGML docs. commit 74087020664d01d3aa28871276dc277308b0d9d4 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 19:18:50 2006 -0500 Put Makefile.am SGML build rules into a separate include file. commit 5c1ffdb7047f3daa453695c7568fe96b1f3b4050 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 17:43:04 2006 -0500 Don't need directory cleaning stuff now that HTML target is fixed. commit d48586d03a30cf09d8ff7d055fbd3c3d69a91d6c Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Dec 22 16:22:35 2006 -0500 Change version in docbook DTD header - possible typo. commit 23aeba70a63a42709afcd0ec3881d56150d1a3a8 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Dec 14 13:34:10 2006 -0800 Typo fixes in XFixes protocol spec commit 85494798ed73eaabf8e9c030199a9deb33d21380 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Thu Dec 14 13:32:20 2006 -0800 Update XFixes protocol spec to match XFixes 4.0 Add ExpandRegion, HideCursor & ShowCursor requests Correct description of version numbering to match XFixes conventions commit 6910ace0a11f8596a67d2317e42da9bf3e0d4a48 Author: David Nusinow <dnusinow@debian.org> Date: Mon Dec 4 19:01:10 2006 -0500 Document that xkbdata is now deprecated. commit 8e604c3f7e991df4f99815e69cbb9b81a09c0d81 Author: David Nusinow <dnusinow@debian.org> Date: Sun Dec 3 11:16:26 2006 -0500 Spell check commit fb7d3dab570fee0d28afdfbfc7e49ce67cd63428 Author: David Nusinow <dnusinow@debian.org> Date: Sun Dec 3 11:10:37 2006 -0500 Rearrange configuration section. X -configure is the preferred method now. commit c1e6cecb9a3830bf5f3deee56d3b20a4af334d1f Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 22:01:30 2006 -0500 Update driver list commit d18bdc85a4da799b49f4a7896e030257ad9e89d8 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 21:41:48 2006 -0500 Comment out "Other extensions" section, which we don't need this time commit 480134a5cbc65aee820f9f499f2b72d2e3c6c739 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 21:22:02 2006 -0500 Format new additions so that we don't need titles for each bulletpoint commit c48136dd02607847e268921013f52de868e9d1d5 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 21:12:26 2006 -0500 Missing close bracket. Yay structured text. commit 1547c2ea9a0c9ac8182c787e7c903996c213a354 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 21:11:37 2006 -0500 * Modular isn't new any more * Remove stuff about new platform support expected soon * Remove the loader things. That change happened in 7.1 so we don't have to belabor it now * Put EXA information in the section about the various extensions * Add information about system-wide DRM in the DRI section * Remove old new features of Xv * The keyboard -> kbd transition happened last release. Don't document it now * Formatting galore commit 3e00f62bc6961931e1138066f7a2a8fc2327d88c Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 20:46:50 2006 -0500 Reorder platform-specific fixes because I'm biased commit 7fcd6428d4ba6091f6ace340d48d902c0c73294b Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 20:46:00 2006 -0500 No extension protocol updates of note (just bugfixes) this release commit 75e15b618274396d712aa9c08c69d1b105c85192 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 20:22:34 2006 -0500 * Modular isn't new any more. Don't pretend that it is. * Formatting fixes for the new features commit 6005194bc52ebd02af7df489e3b4884562375631 Author: David Nusinow <dnusinow@debian.org> Date: Thu Nov 30 20:16:19 2006 -0500 * Document autoconfig improvements * Document removal of LBX * Document removal of CID font support and deprecation of mkcmf * Massive amount of formatting cleanups commit 7fa58bbddb17224dbbda8354c929eb0cc14f64c7 Author: David Nusinow <dnusinow@debian.org> Date: Sun Nov 19 19:50:56 2006 -0500 Remove old big new features and add XACE info commit c0e11a6d03b9ce2950caaa1d322e804fad0ce568 Author: David Nusinow <dnusinow@debian.org> Date: Mon Nov 13 00:08:56 2006 -0500 Actually install the docs that we build (cherry picked from commit e3b8dbd8ff459883a5f0500bbc1361e1f4e8ff74) commit f0985f447bfbb1582896a5b4c82519fc9b581aaa Author: David Nusinow <dnusinow@debian.org> Date: Sun Nov 12 23:48:02 2006 -0500 Build html docs as one big doc rather than several with bizarre names (cherry picked from commit a178dddc5114c1ad8fff7eb00f04ea062927b1ec) commit 1c263d078433f94135cb096e992fb15bb43c5964 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Nov 8 19:05:51 2006 +0200 bump to 1.3 commit 4bdf33417bf381e7f06abd5d15051fd4d0d4005e Author: David Nusinow <dnusinow@debian.org> Date: Sun Nov 5 13:26:11 2006 -0500 Format RELNOTES harder. commit 55e41efa4846b7cbe6698466bf8592b203ea8a3c Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Nov 3 13:20:48 2006 -0500 Add XACE documentation. commit d5bdb7df83b9763f7e4dd7f891ace7629c66ed31 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Nov 3 13:20:26 2006 -0500 Wildcard SGML files instead of having a hardcoded list. commit 32c2096e5ea92c440b7bc3fffe1f5925167b1d44 Author: Eamon Walsh <ewalsh@tycho.nsa.gov> Date: Fri Nov 3 12:34:46 2006 -0500 Introduce separate configure switches for each output format. commit 9a79090915b30bedac2ed31ab3567f849b6eabc4 Author: David Nusinow <dnusinow@debian.org> Date: Mon Oct 30 21:12:03 2006 -0500 Update fonts and dps after merge commit c32459ffdc34cb02e5dbf9187e5d838ee34dc6ef Merge: 34b795c f1c534b Author: David Nusinow <dnusinow@debian.org> Date: Mon Oct 30 20:56:08 2006 -0500 Merge branch 'master' of git+ssh://gravity@git.freedesktop.org/git/xorg/doc/xorg-docs Conflicts: sgml/dps.sgml sgml/fonts.sgml commit 34b795ce4b40d0c3a7283c5fcf54ac954ad590ff Author: David Nusinow <dnusinow@debian.org> Date: Mon Oct 30 20:50:07 2006 -0500 Look for defs.ent in the standard location on the system. Currently, that assumes that defs.ent is in /usr/share/sgml, but I need to figure out how to make that configurable so that /usr/local/share/ will work also. commit 519da606a99e253e7e3742e343dea53dc594cefc Author: David Nusinow <dnusinow@debian.org> Date: Mon Oct 30 20:34:49 2006 -0500 Put html files in a directory named after the sgml filename commit f1c534b0cf1924efdd714ca228a06e7b27ae02be Author: Juliusz Chroboczek <jch@pps.jussieu.fr> Date: Tue Oct 31 02:33:43 2006 +0100 Update DPS docs. commit fe4734f5886eb04960f9100096ea142455acb787 Author: Juliusz Chroboczek <jch@pps.jussieu.fr> Date: Tue Oct 31 02:26:45 2006 +0100 Minor tweaks to fonts documentation. commit f497eaba3dd8af7de43edf8b3f0866e2c4c317c7 Author: David Nusinow <dnusinow@debian.org> Date: Sun Oct 29 18:47:27 2006 -0500 * Modify the build system to build docbook instead of linuxdoc * Remove outdated dps docs commit 7aa9940c2ba03b8d2f68430c8205c774aa53c3cf Author: David Nusinow <dnusinow@debian.org> Date: Sun Oct 29 17:51:03 2006 -0500 Convert sgml docs to docbook. In classic xorg style, it's late 90's technology, coming to you today! commit 9340e597d8a2050dc9612c56a9e397a0a1b5e4e7 Author: David Nusinow <dnusinow@debian.org> Date: Tue Oct 17 17:28:35 2006 -0400 Add switch to disable building pdfs. Enabled by default. commit 53a87bc802b954d74deb4dc923711f88f29559c9 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 11 13:15:15 2006 -0700 Add .gitignore commit 568ad6c48eea8e28eb5c9bbef90b676fa94ead01 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 11 13:13:16 2006 -0700 Typo fixes in Render protocol spec commit 4e3cf7ab9f05ec3e5d9fa32176ff5a84ed03f231 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Wed Oct 11 13:08:51 2006 -0700 Update date/version on Render protocol spec to match last update (0.10) commit fcb1831985960cf1778f4b0b23aa39eaedb1da50 Author: Alan Coopersmith <alan.coopersmith@sun.com> Date: Fri Oct 6 18:10:46 2006 -0700 Add MAINTAINERS entry for XACE subsystem of X server, Eamon Walsh as maintainer commit 83510b7ac42fbe2dbad45cd5e014b046516260da Author: Adam Jackson <ajax@nwnk.net> Date: Mon May 22 23:05:48 2006 +0000 Bump to 1.2 commit ed321adecf440b78713c3385341750cae3c37f79 Author: Kevin E Martin <kem@kem.org> Date: Mon May 22 20:03:26 2006 +0000 More updates for 7.1 release. commit 4e74365bef92cc02b2fb46984ca97dd469e559f2 Author: Adam Jackson <ajax@nwnk.net> Date: Mon May 22 15:39:58 2006 +0000 7.1 updates. commit 66b56616efe520a197efd41cdef973cb907500c5 Author: Deron Johnson <deron.johnson@sun.com> Date: Sat May 13 23:28:03 2006 +0000 Update for Composite protocol version 0.3 (Composite Overlay Window). commit c9bd5c8326eb6cc9192969f7cf1fa907cb22da16 Author: Daniel Stone <daniel@fooishbar.org> Date: Mon Apr 17 14:57:42 2006 +0000 Fix a couple of email addresses; nominate atimisc/via maintainers. commit 2f3b4c15765c57b263af45155ee5b667dbe05d3a Author: Aaron Plattner <aplattner@nvidia.com> Date: Fri Apr 7 17:51:05 2006 +0000 Add my email address. commit 26d548d350cbd471ec30891628215943aa9b408f Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Fri Apr 7 00:37:18 2006 +0000 Start splitting out maintained apps. (Accepted the xdm hot potato, stuck xkbcomp on Daniel as part of his XKB master plan, compiz on Dave R. - left the rest assigned to Jim, though probably should be listed as "Seeking maintainers".) commit fe0b23cf1db86fca2f68a3758964974a35717b88 Author: Adam Jackson <ajax@nwnk.net> Date: Sat Apr 1 23:38:43 2006 +0000 Bump to 1.1 for some reason. commit 56779f633a467efecd113ecb5b5913807fd906d9 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Thu Mar 16 21:53:03 2006 +0000 Add lists.x.org & www.x.org maintainers commit cfa448f026c95b24ae7ab6c473b7ea5e0bfff1d9 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Wed Mar 15 21:10:16 2006 +0000 Add xf86-video-ast commit 09629c068e27ec483dd7839f8afc85898c226bdc Author: Daniel Stone <daniel@fooishbar.org> Date: Sun Mar 12 16:34:06 2006 +0000 Claim Xi for myself and Mercury. Note that XKB and Xi in the srever are in the middle of some serious work. Acknowledge Luc's pivotal role in X development. Some minor space -> tab reindenting of my sections. commit 15106550608d42a473d62fcd332e0f4e8ef80e37 Author: Egbert Eich <eich@suse.de> Date: Mon Feb 20 12:16:27 2006 +0000 - Signed myself up for maintainance of drivers and DDX components. commit 3dc04b3d95bc3b7c7b5523f4bc45a2e6f9c39443 Author: Jesse Barnes <jbarnes@virtuousgeek.org> Date: Sun Feb 19 22:10:04 2006 +0000 keithp is the maintainer for libX11. he volunteered at the devconf but I didn't note that in the initial checkin commit 2a77d4ac877c9a4a4580a88b937f8e7b4e74827c Author: Keith Packard <keithp@keithp.com> Date: Fri Feb 17 15:12:55 2006 +0000 Include Input shapes, update to version 1.1 commit fd80ab2b8c5b520fb088eda13a4367b72aed2915 Author: Zack Rusin <zack@kde.org> Date: Thu Feb 16 18:03:16 2006 +0000 adding protocol specs for composite, damage and fixes commit 0533aeb5312985faf526f23e7b0351f382e0b9ab Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Feb 12 09:20:50 2006 +0000 Add myself as maintainer for the OpenBSD port (although 7.0 doesn't support OpenBSD, I'm actively working to get in supported in the next release) and the wsfb driver. commit aea395850796cde05347248a53c81f32649affab Author: Alex Deucher <agd5f@yahoo.com> Date: Sun Feb 12 04:25:35 2006 +0000 - Add my email address for savage - take on smi, it's interesting hardware with open docs commit 095d37bd948f99dcdf231c68bd69338b38a9ea75 Author: Adam Jackson <ajax@nwnk.net> Date: Sun Feb 12 03:30:44 2006 +0000 URL fixes commit 9539619f6fb08e0b451a10a8867daccf70acf108 Author: Adam Jackson <ajax@nwnk.net> Date: Sun Feb 12 03:28:33 2006 +0000 More maintainers, more obsoletes commit 794f7e790735982fbb7caaa0eccbc6b51f3c6a46 Author: Kean Johnson <kean@armory.com> Date: Sun Feb 12 03:19:36 2006 +0000 Added myself as maintainer for SCO / UnixWare platforms commit f190f253fef7d45745962c561a0bcd5f02317a62 Author: Zephaniah E. Hull <warp@aehallh.com> Date: Sat Feb 11 10:51:22 2006 +0000 Took over xf86-input-evdev in MAINTAINERS. commit bbd3b3a615a35097bd1a081c9fd593987b2fd77e Author: philipl <philipl> Date: Sat Feb 11 02:19:40 2006 +0000 Add MAINTAINER info for the vmware drivers. commit cbfc0ee201ccb2c0b799a0f95e87caae49b439b5 Author: Alan Hourihane <alanh@fairlite.demon.co.uk> Date: Sat Feb 11 01:15:56 2006 +0000 some more Unmaintained -> Maintained commit aaa7535e38d79573eed9e0511a7ec93f1969c63f Author: Alan Hourihane <alanh@fairlite.demon.co.uk> Date: Sat Feb 11 01:14:45 2006 +0000 Unmaintained -> Maintained commit 60354eb27613b5a67f1291e1af87104f6e21c3b1 Author: Alan Hourihane <alanh@fairlite.demon.co.uk> Date: Sat Feb 11 01:13:49 2006 +0000 claim some of the drivers - nsc, trident, glint commit 302aaf03c1217790faa1e6d12b180aa7e3bcd904 Author: Luc Verhaegen <libv@skynet.be> Date: Sat Feb 11 01:05:37 2006 +0000 Sucker up for tseng. commit 5b0a50487a63517015711931a8db53f9a4bb8497 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sat Feb 11 00:37:04 2006 +0000 Solaris port *is* maintained (and has a website on opensolaris.org too) commit f6829d2d0f1851c33ea06268d1842b6af711bd25 Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Feb 11 00:17:42 2006 +0000 Double-paragraph snafu. commit fdc1c5dfec8ea62b152b215b35862ebd171ae931 Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Feb 11 00:14:47 2006 +0000 Change list to xorg@l.fd.o, site to wiki.x.org. commit a60bee818be497ac3e048fd444631af63379703d Author: Daniel Stone <daniel@fooishbar.org> Date: Sat Feb 11 00:12:15 2006 +0000 Claim xkbfile and xkbui; fix my email address. commit 40fb1cfae38c69c9911592088d84a843b387dfd3 Author: Jesse Barnes <jbarnes@virtuousgeek.org> Date: Fri Feb 10 22:23:23 2006 +0000 add MAINTAINERS file commit c1279d1a135a2416895e90dbcd078e1343a48e58 Author: Adam Jackson <ajax@nwnk.net> Date: Wed Dec 21 05:19:26 2005 +0000 Updated contributors list and copyright holders. commit 8a617d8138228672f1c8ff438cf85ce72c747f0e Author: Kevin E Martin <kem@kem.org> Date: Wed Dec 21 02:53:00 2005 +0000 Additional RELNOTES updates. commit 8662dfa92b6f3290876c5306007caba4de101fbb Author: Kevin E Martin <kem@kem.org> Date: Wed Dec 21 02:29:55 2005 +0000 Update package version for X11R7 release. commit 0185328e6e7b8d50f1449df842fca372d4edc16c Author: Kevin E Martin <kem@kem.org> Date: Wed Dec 21 00:19:54 2005 +0000 Update RELNOTES.sgml for X11R6.9/X11R7.0 release (Daniel Stone, Kevin Martin). commit b502009fe3f7cb128aa551bc3bcd41112e139a2b Author: Kevin E Martin <kem@kem.org> Date: Tue Dec 20 21:54:57 2005 +0000 Bump hardcoded version numbers. commit 03c2547a6eaddcde5602ec48dbfa9b24d3ea979c Author: Kevin E Martin <kem@kem.org> Date: Tue Dec 20 18:24:23 2005 +0000 Update hardcopy specs for 6.9/7.0 release. commit 3a09ba5e6cafc45c6453a1cdf9973a64cd1a78c5 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Mon Dec 19 08:26:18 2005 +0000 Typo fixes, mailing list & url updates, and other changes to prepare for X11R6.9 & 7.0 releases. commit 47e95124420d376047b8602a43be88b78b39865e Author: Kevin E Martin <kem@kem.org> Date: Mon Dec 19 06:10:28 2005 +0000 Update README and RELNOTES from monolith. commit e2d3e1fbe8aba9ce2be76bc8501545d0c37e4e85 Author: Kevin E Martin <kem@kem.org> Date: Thu Dec 15 00:24:13 2005 +0000 Update package version number for final X11R7 release candidate. commit 09250e7742a9c0577402920cdbd1fb4de61ece5d Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Wed Dec 14 23:38:14 2005 +0000 Correct spelling of X.Org Foundation name. Updates for 7.0 release. commit 5cd9a5e3793496f9f81166634e5ff28c39ce543c Author: Kevin E Martin <kem@kem.org> Date: Fri Dec 9 03:02:57 2005 +0000 Initial revision. commit 237a97f9b7fd888bc5e53523ad9fe0f83010b592 Author: Kean Johnson <kean@armory.com> Date: Tue Nov 8 06:33:28 2005 +0000 See ChangeLog entry 2005-11-07 for details. commit 6ee822b4c151b026d5d3825fe58f96d8fcd410e2 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Fri Sep 2 23:06:40 2005 +0000 Replace X.Org Group with X.Org Foundation Update contact info for Sun, The Open Group, and the X.Org Foundation. commit fb22d052c01d7469032497725f02cf2b2e800896 Author: Eric Anholt <anholt@freebsd.org> Date: Thu Aug 25 02:43:49 2005 +0000 Bugzilla #1045: Fix the DDX documentation to describe what is the defacto current policy on GC wrappers, which is more liberal than the previous policy, and hopefully more clear as well. Reviewed by: keithp commit bb8460bfc11687ba769d8d8aaac05b98a0f2343f Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Mon Aug 8 18:52:30 2005 +0000 Bug #4017 <https://bugs.freedesktop.org/show_bug.cgi?id=4017> Grammatical & typo fixes (reported as Debian bugs #315555 & #321946, by Daniel Hulme & Adrian von Bidder, reported upstream to X.org by David Mart?nez Moreno, additional changes by myself.) commit a93e74f17f5267d996c04a50e154732d59942e03 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Mon Aug 8 18:07:36 2005 +0000 Bug #4018 <https://bugs.freedesktop.org/show_bug.cgi?id=4018> Patch #3300 <https://bugs.freedesktop.org/attachment.cgi?id=3300> Typo fix (Debian bug #320545 - A Costa, David Mart?nez Moreno) commit 69836d72471d8fb4c753f772ba815df6dcc415b3 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Fri Jul 29 22:07:54 2005 +0000 Bugzilla #3916 (https://bugs.freedesktop.org/show_bug.cgi?id=3916) Fix broken link to comp.fonts FAQ (reported by Siward de Groot) commit c9bbc1800cea86873a3f9e8fd6c563e54e196be7 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Tue Jul 5 18:42:31 2005 +0000 Remove Speedo font module documentation. Remove Speedo from list of font directories Update default font path to remove Speedo, add TTF. commit e14ec0603f19c12c7fe05f1b7d2f67bfbceddad1 Author: Lars Knoll <lars@trolltech.com> Date: Fri Jul 1 10:04:01 2005 +0000 sync with current spec from the modular tree. commit 9e04ff9918d949018d989f05d8a5206cfc1bb6f9 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sun May 8 22:58:08 2005 +0000 Damn. Try 3 (went 0 for 3 on correct spelling of maintenance in previous attempts). commit 5707221f3d80243c3a5e01f75c2c26c24fe6eec0 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sun May 8 22:38:24 2005 +0000 Fix typo (it's -> its) in last commit noticed by Daniel Stone commit ed948bcd91a7eb418b885c3ddb9513c87da1b198 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sun May 8 22:19:32 2005 +0000 programs/Xserver/hw/xfree86/doc/README.dps programs/Xserver/hw/xfree86/doc/RELNOTES programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml https://bugs.freedesktop.org/show_bug.cgi?id=3080 Patch #2636: https://bugs.freedesktop.org/attachment.cgi?id=2636 Clearly document impending demise of DPS. commit aa8a36ec2c2393308db49824a7a20a8db888820b Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sun Feb 6 16:38:40 2005 +0000 Doc updates for OpenBSD, reflecting X11R6.8.2. commit c7b803278c3c0ac1ac1751e4e1ac98a77a1e540e Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de> Date: Wed Dec 8 13:42:01 2004 +0000 Bugzilla #1980 (https://bugs.freedesktop.org/show_bug.cgi?id=1980) Handle XERRORDB only on WIN32 platform commit 1a015fcb005bc904e4840d7b9b3729e648607c2c Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de> Date: Sat Dec 4 17:20:24 2004 +0000 Bugzilla #1980, https://bugs.freedesktop.org/show_bug.cgi?id=1980 Document XERRORDB in X.man commit 875ba3e53ca6f11f9cc8de4c2a32213824a77bd9 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Fri Nov 26 09:00:08 2004 +0000 xc/doc/man/general/Imakefile xc/doc/man/general/Xprint.html xc/doc/man/general/Xprint.man xc/doc/man/general/Xprint.sgml xc/programs/Xserver/Xprint/Imakefile xc/programs/Xserver/Xprint/Xprint.html xc/programs/Xserver/Xprint/Xprint.man //freedesktop.org/bugzilla/show_bug.cgi?id=811): Fixing "make install.man" build bustage caused by previous checkin via moving the Xprint(7) manual page it's correct location (=xc/doc/man/general/). commit 2f971dc44aa789a87d7f9fa256b3da1bb6eff578 Author: Jim Gettys <jg@freedesktop.org> Date: Wed Oct 27 20:42:11 2004 +0000 put the updated postscript in place. commit 84c5bca89066a89688c72c1f4396c85f8aa4f83b Author: Jim Gettys <jg@freedesktop.org> Date: Wed Oct 27 20:37:04 2004 +0000 Document the Timer routines in the ddx interface, which are used by various facilities, and have not been documented before. Lots more work is needed to flesh out new facilities; this document hasn't been touched in 10 years!!! commit f54753619b1781da2954c2e972372bce3840c115 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Fri Oct 8 02:39:39 2004 +0000 Fix for https://freedesktop.org/bugzilla/show_bug.cgi?id=1557 - Update DocBook SGML+XML manual pages and docmentation and the in-tree copies of the generated files (*.man, *.html) to get them properly working with newer versions of the tools within the Xorg tree. commit a240049e57cf752fb3854e98a4af2de9d3b6d50b Author: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> Date: Sat Sep 25 16:37:21 2004 +0000 Revision of KEYSYM encoding to include Unicode KEYSYMs and Unicode mapping of Legacy KEYSYMs commit f795d52f1be0b0fffc53f1f4b3b881f0a6f086cc Author: Matthieu Herrb <matthieu.herrb@laas.fr> Date: Sat Sep 18 15:04:29 2004 +0000 define dependencies for libXevie for *BSD systems. fix spelling of my first name and remove duplicate. build fix. commit 5dfffb32c1ea5a5df33938f6d9a396919c61b942 Author: Kevin E Martin <kem@kem.org> Date: Wed Sep 8 01:54:29 2004 +0000 Fix dates for release. commit f02447159d5b422f2a925a672149f81b0e54eab6 Author: Kevin E Martin <kem@kem.org> Date: Sat Sep 4 00:22:32 2004 +0000 Update docs for Mac OS changes (Torrey T. Lyons). commit 15530878e2d52c027658e7d432406c0b2056a708 Author: Kevin E Martin <kem@kem.org> Date: Fri Sep 3 23:26:19 2004 +0000 Updated release notes for bug #999. Update Radeon man page to note that RenderAccel is now enabled by default on certain chips. commit b0425304786b33196047e3e07da2a4932b366a9e Author: Kevin E Martin <kem@kem.org> Date: Fri Sep 3 22:00:10 2004 +0000 Second round of documentation updates. commit f60c834b84e4a7c6b047bdf7e47dc3661bf20cd9 Author: Keith Packard <keithp@keithp.com> Date: Fri Sep 3 18:48:11 2004 +0000 Mostly fix version numbers and use symbolic release date. Fix lots of version numbers. Change description of Composite extension a bit. Add reference to Xaw8 as the version of Xaw which includes XawPrintShell. Document Render additions to xclock. Document to XPrint additions to xedit. Note disappearance of X-TrueType. Add 'R' before &relvers; Add reldate entity Add 'R' before &relvers; Fix version numbers. Note disapparance of X-TrueType commit 9507b7a223bf5ada5c92f280080df5a90d304c62 Author: Kevin E Martin <kem@kem.org> Date: Fri Sep 3 16:18:22 2004 +0000 First set of documentation updates. Include more correct fix for rootless interaction with damage (Bug #1168, Keith Packard). commit 719ac6c84480381069b74220fc93500e1ed2c453 Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> Date: Mon Aug 30 21:01:21 2004 +0000 Update release notes commit 777ab97690f9145c95bfb433f51fd43493d59d4a Author: Egbert Eich <eich@suse.de> Date: Fri Aug 27 19:27:12 2004 +0000 Added support for LynxOS 4.0 (Thomas Mueller). Fix arm netwinder build (Donnie Berkholz). commit 78ba26404aa3320ac632c5ba6af7ee4225585288 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Fri Aug 20 01:55:35 2004 +0000 Documentation only update: Update documentation of authentication methods to cover the ServerInterpreted access type added in X11R6.7 and the authentication types available via its framework. commit 29173edcbc53a616b97a48ad104e30da30d31140 Author: Kevin E Martin <kem@kem.org> Date: Thu Aug 19 16:28:42 2004 +0000 Fix the build on Solaris/sparc to use Xorg server instead of the deprecated Xsun (Bug #1134, Alan Coopersmith). commit 4bf2b7f0742c1c874e697b96a9b0fee95a169cf3 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Wed Aug 11 17:51:24 2004 +0000 Updating FAQ commit de9676e191f5a31ea0920a194ec16966add70f55 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sat Jul 17 01:13:31 2004 +0000 Fix typo in debug message in MakeAllCLTSServerListeners Add $(GETPEER_DEFINES) to DEPEND_DEFINES for makedepend Add "localuser" and "localgroup" access types to server-interpreted authentication scheme. commit b67211135e61c1458a730fa66b56519cca6a702a Author: Thomas Winischhofer <thomas@winischhofer.net> Date: Fri Jun 18 21:54:46 2004 +0000 Add my license (Could someone please "update the formatted docs"?) commit b3037a48b217914a1058ebb3d91571a7881a1eb6 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sun Jun 13 04:50:21 2004 +0000 Manual page X(7) does not reference Xprt(1x), xplsprinters(1x), etc. xc/config/cf/Imake.rules Correct comment to match rule name for InstallDriverSDKObjectModule xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_kbd.c Log results of ioctls to probe keyboard type & layout commit c188d608b9bb94133b4349e8d548e666eb84153a Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Wed May 26 02:58:41 2004 +0000 No bugid - Update FAQ for new bugzilla URLs and rebuild the HTML and plaintext versions. commit 250f6d2ae21283f98a052d0a86fb4b10c0beb0ae Author: Egbert Eich <eich@suse.de> Date: Fri Apr 23 19:23:59 2004 +0000 Merging XORG-CURRENT into trunk commit 625cc4967802a36e9b0e7306928d293f12747fc4 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file Xprint_FAQ.html was initially added on branch XPRINT. commit 0ef59b27dfbbb6b39fd07fda6fa236be46fa7fad Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file Xprint_FAQ.txt was initially added on branch XPRINT. commit 1807071f968038bdf5b5f2ca4c47d9e1de68e2ae Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file docbook.css was initially added on branch XPRINT. commit 4338d020661bcf0ec46de4545ca84005040a7227 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file dtprint_fspec.PS.gz was initially added on branch XPRINT. commit 7c250a3dbf32171f0a170d25de277976d5bae235 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file Xprint_FAQ.xml was initially added on branch XPRINT. commit abceb5dc00aa43caaa88976700a3e0648ff94922 Author: Roland Mainz <roland.mainz@nrubsig.org> Date: Tue Apr 13 03:16:30 2004 +0000 file Xprint_old_FAQ.txt was initially added on branch XPRINT. commit 5f1b72f41d60e401f045ad10528870c216f82a4a Author: Egbert Eich <eich@suse.de> Date: Sun Mar 14 08:33:16 2004 +0000 Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004 commit b2f42889efb22ef39da5ab5b3ca5445ddc30978a Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sat Mar 13 18:48:39 2004 +0000 file hostname.txt was initially added on branch IPv6-REVIEW. commit 40ab103f4e707c9b1936036f3076d7d5d0c8bd52 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sat Mar 13 18:48:39 2004 +0000 file README was initially added on branch IPv6-REVIEW. commit 72f58d0d330c06cb2bb8e1378a8590a6d8a5e8b9 Author: Alan Coopersmith <Alan.Coopersmith@sun.com> Date: Sat Mar 13 18:48:39 2004 +0000 file IPv6.txt was initially added on branch IPv6-REVIEW. commit 933a6f1a89881bd37661e0b8b557fe5bb6be2672 Author: Egbert Eich <eich@suse.de> Date: Wed Mar 3 12:12:15 2004 +0000 Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004 commit 0b6671edbecd1ef7de3d559c6efab4cca2320c22 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Tue Mar 2 18:18:05 2004 +0000 file XOrgFoundation.man was initially added on branch XORG-CURRENT. commit 8d85cb567decc9911011de45f768f76959f752dd Author: Egbert Eich <eich@suse.de> Date: Thu Feb 26 13:35:46 2004 +0000 readding XFree86's cvs IDs commit c78de49b5ee6ba5f8a92c712fdc0f0668c015667 Author: Egbert Eich <eich@suse.de> Date: Thu Feb 26 09:23:14 2004 +0000 Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004 commit 103d012ca409bc25af7f7c35f93f2aabbe5e89cb Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Mon Feb 23 20:35:02 2004 +0000 Import most of XFree86 4.4RC3. This import excludes files which have the new license. If we want to, later we can import 4.4RC3 again and pick up the files that have the new license, but for now the vendor branch is "pure." commit 9073878116f165101309611a8161e39505e6d091 Author: Egbert Eich <eich@suse.de> Date: Thu Jan 29 08:08:27 2004 +0000 Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004 commit 8b38d3043a35e843df9b3aa6790e7103d3301b33 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Dec 19 20:55:05 2003 +0000 XFree86 4.3.99.902 (RC 2) commit 0323a41d2c512c64fd0150096349ca9e9c9b5609 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Thu Dec 4 22:03:15 2003 +0000 XFree86 4.3.99.901 (RC 1) commit b1ee756a2b3769dedbcc7abbb94f560195bca4c7 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Tue Nov 25 19:28:33 2003 +0000 XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks commit b050d760f72956e04705abb6bbe69fb5e7a6a8c3 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Tue Nov 25 19:26:58 2003 +0000 Initial revision commit 83652d15f9f1692730e5d9457ddf4086dc70704f Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Nov 14 16:48:55 2003 +0000 XFree86 4.3.0.1 commit 67f7a131c3e3616149d4775546dba04857607f96 Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Nov 14 16:48:55 2003 +0000 Initial revision commit 3e77e75b5a28b1b5a258396f4f15a61c9f3dc87c Author: Kaleb Keithley <kaleb@freedesktop.org> Date: Fri Nov 14 15:54:49 2003 +0000 R6.6 is the Xorg base-line ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������xorg-docs-1.7.3/docbook.am��������������������������������������������������������������������������0000644�0143106�0000012�00000006231�14600067622�011044� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # # DocBook/XML generated output formats to be installed shelf_DATA = # DocBook/XML file with chapters, appendix and images it includes dist_shelf_DATA = $(docbook) $(chapters) if HAVE_XMLTO if HAVE_STYLESHEETS XMLTO_SEARCHPATH_FLAGS = \ --searchpath "$(XORG_SGML_PATH)/X11" \ --searchpath "$(abs_top_builddir)" XMLTO_HTML_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl XMLTO_HTML_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_HTML_STYLESHEET_FLAGS) \ $(XMLTO_HTML_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.html) %.html: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< if HAVE_XMLTO_TEXT shelf_DATA += $(docbook:.xml=.txt) %.txt: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< endif HAVE_XMLTO_TEXT if HAVE_FOP XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ XMLTO_PDF_OLINK_FLAGS = \ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ --stringparam current.docid="$(<:.xml=)" XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl XMLTO_FO_FLAGS = \ $(XMLTO_SEARCHPATH_FLAGS) \ $(XMLTO_FO_STYLESHEET_FLAGS) \ $(XMLTO_FO_IMAGEPATH_FLAGS) \ $(XMLTO_PDF_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.pdf) %.pdf: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< shelf_DATA += $(docbook:.xml=.ps) %.ps: %.xml $(chapters) $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< endif HAVE_FOP # Generate documents cross-reference target databases if HAVE_XSLTPROC XSLT_SEARCHPATH_FLAGS = \ --path "$(XORG_SGML_PATH)/X11" \ --path "$(abs_top_builddir)" XSLT_OLINK_FLAGS = \ --stringparam targets.filename "$@" \ --stringparam collect.xref.targets "only" \ --stringparam olink.base.uri "$(@:.db=)" XSLT_HTML_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl XSLT_PDF_FLAGS = \ $(XSLT_SEARCHPATH_FLAGS) \ $(XSLT_OLINK_FLAGS) \ --nonet --xinclude \ $(STYLESHEET_SRCDIR)/xorg-fo.xsl shelf_DATA += $(docbook:.xml=.html.db) %.html.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< shelf_DATA += $(docbook:.xml=.pdf.db) %.pdf.db: %.xml $(chapters) $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< endif HAVE_XSLTPROC endif HAVE_STYLESHEETS endif HAVE_XMLTO CLEANFILES = $(shelf_DATA) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������xorg-docs-1.7.3/specs/������������������������������������������������������������������������������0000755�0143106�0000012�00000000000�14600067631�010300� 5�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������xorg-docs-1.7.3/specs/ICCCM/������������������������������������������������������������������������0000755�0143106�0000012�00000000000�14600067631�011116� 5�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������xorg-docs-1.7.3/specs/ICCCM/icccm.xml���������������������������������������������������������������0000644�0143106�0000012�00001011562�14600067622�012644� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [ <!ENTITY % defs SYSTEM "defs.ent"> %defs; ]> <book id="icccm"> <bookinfo> <title>Inter-Client Communication Conventions Manual X Consortium Standard DavidRosenthal Sun Microsystems, Inc. StuartW.Marks SunSoft, Inc. X Version 11, Release &fullrelvers; Version 2.0 1988199119931994 X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. Copyright © 1987, 1988, 1989, 1993, 1994 Sun Microsystems, Inc Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Sun Microsystems makes no representations about the suitability for any purpose of the information in this document. This documentation is provided as is without express or implied warranty. Preface to Version 2.0 The goal of the ICCCM Version 2.0 effort was to add new facilities, to fix problems with earlier drafts, and to improve readability and understandability, while maintaining compatibility with the earlier versions. This document is the product of over two years of discussion among the members of the X Consortium's wmtalk working group. The following people deserve thanks for their contributions: Gabe Beged-Dov Bill Janssen Chan Benson Vania Joloboff Jordan Brown Phil Karlton Larry Cable Kaleb Keithley Ellis Cohen Mark Manasse Donna Converse Ralph Mor Brian Cripe Todd Newman Susan Dahlberg Bob Scheifler Peter Daifuku Keith Taylor Andrew deBlois Jim VanGilder Clive Feather Mike Wexler Stephen Gildea Michael Yee Christian Jacobi It has been a privilege for me to work with this fine group of people. Stuart W. Marks December 1993 Preface to Version 1.1 David Rosenthal had overall architectural responsibility for the conventions defined in this document; he wrote most of the text and edited the document, but its development has been a communal effort. The details were thrashed out in meetings at the January 1988 MIT X Conference and at the 1988 Summer Usenix conference, and through months (and megabytes) of argument on the wmtalk mail alias. Thanks are due to everyone who contributed, and especially to the following people. For the Selection section: Jerry Farrell Phil Karlton Loretta Guarino Reid Mark Manasse Bob Scheifler For the Cut-Buffer section: Andrew Palay For the Window and Session Manager sections: Todd Brunhoff Matt Landau Ellis Cohen Mark Manasse Jim Fulton Bob Scheifler Hania Gajewska Ralph Swick Jordan Hubbard Mike Wexler Kerry Kimbrough Glenn Widener Audrey Ishizaki For the Device Color Characterization section: Keith Packard In addition, thanks are due to those who contributed to the public review: Gary Combs John Irwin Errol Crary Vania Joloboff Nancy Cyprych John Laporta John Diamant Ken Lee Clive Feather Stuart Marks Burns Fisher Alan Mimms Richard Greco Colas Nahaboo Tim Greenwood Mark Patrick Kee Hinckley Steve Pitschke Brian Holt Brad Reed John Interrante John Thomas Introduction It was an explicit design goal of X Version 11 to specify mechanism, not policy. As a result, a client that converses with the server using the protocol defined by the X Window System Protocol, Version 11 may operate correctly in isolation but may not coexist properly with others sharing the same server. Being a good citizen in the X Version 11 world involves adhering to conventions that govern inter-client communications in the following areas: Selection mechanism Cut buffers Window manager Session manager Manipulation of shared resources Device color characterization This document proposes suitable conventions without attempting to enforce any particular user interface. To permit clients written in different languages to communicate, these conventions are expressed solely in terms of protocol operations, not in terms of their associated Xlib interfaces, which are probably more familiar. The binding of these operations to the Xlib interface for C and to the equivalent interfaces for other languages is the subject of other documents. Evolution of the Conventions In the interests of timely acceptance, the Inter-Client Communication Conventions Manual (ICCCM) covers only a minimal set of required conventions. These conventions will be added to and updated as appropriate, based on the experiences of the X Consortium. As far as possible, these conventions are upwardly compatible with those in the February 25, 1988, draft that was distributed with the X Version 11, Release 2, of the software. In some areas, semantic problems were discovered with those conventions, and, thus, complete upward compatibility could not be assured. These areas are noted in the text and are summarized in Appendix A. In the course of developing these conventions, a number of minor changes to the protocol were identified as desirable. They also are identified in the text, are summarized in Appendix B, and are offered as input to a future protocol revision process. If and when a protocol revision incorporating these changes is undertaken, it is anticipated that the ICCCM will need to be revised. Because it is difficult to ensure that clients and servers are upgraded simultaneously, clients using the revised conventions should examine the minor protocol revision number and be prepared to use the older conventions when communicating with an older server. It is expected that these revisions will ensure that clients using the conventions appropriate to protocol minor revision n will interoperate correctly with those that use the conventions appropriate to protocol minor revision n + 1 if the server supports both. Atoms Many of the conventions use atoms. To assist the reader, the following sections attempt to amplify the description of atoms that is provided in the protocol specification. What Are Atoms? At the conceptual level, atoms are unique names that clients can use to communicate information to each other. They can be thought of as a bundle of octets, like a string but without an encoding being specified. The elements are not necessarily ASCII characters, and no case folding happens. The comment in the protocol specification for InternAtom that ISO Latin-1 encoding should be used is in the nature of a convention; the server treats the string as a byte sequence. The protocol designers felt that passing these sequences of bytes back and forth across the wire would be too costly. Further, they thought it important that events as they appear on the wire have a fixed size (in fact, 32 bytes) and that because some events contain atoms, a fixed-size representation for them was needed. To allow a fixed-size representation, a protocol request ( InternAtom ) was provided to register a byte sequence with the server, which returns a 32-bit value (with the top three bits zero) that maps to the byte sequence. The inverse operator is also available ( GetAtomName ). Predefined Atoms The protocol specifies a number of atoms as being predefined:
Predefined atoms are not strictly necessary and may not be useful in all environments, but they will eliminate many InternAtom requests in most applications. Note that they are predefined only in the sense of having numeric values, not in the sense of having required semantics.
Predefined atoms are an implementation trick to avoid the cost of interning many of the atoms that are expected to be used during the startup phase of all applications. The results of the InternAtom requests, which require a handshake, can be assumed a priori. Language interfaces should probably cache the atom-name mappings and get them only when required. The CLX interface, for instance, makes no distinction between predefined atoms and other atoms; all atoms are viewed as symbols at the interface. However, a CLX implementation will typically keep a symbol or atom cache and will typically initialize this cache with the predefined atoms.
Naming Conventions The built-in atoms are composed of uppercase ASCII characters with the logical words separated by an underscore character (_), for example, WM_ICON_NAME. The protocol specification recommends that atoms used for private vendor-specific reasons should begin with an underscore. To prevent conflicts among organizations, additional prefixes should be chosen (for example, _DEC_WM_DECORATION_GEOMETRY). The names were chosen in this fashion to make it easy to use them in a natural way within LISP. Keyword constructors allow the programmer to specify the atoms as LISP atoms. If the atoms were not all uppercase, special quoting conventions would have to be used. Semantics The core protocol imposes no semantics on atoms except as they are used in FONTPROP structures. For further information on FONTPROP semantics, see the X Logical Font Description Conventions. Name Spaces The protocol defines six distinct spaces in which atoms are interpreted. Any particular atom may or may not have some valid interpretation with respect to each of these name spaces. Space Briefly Examples Property name Name WM_HINTS, WM_NAME, RGB_BEST_MAP, ... Property type Type WM_HINTS, CURSOR, RGB_COLOR_MAP, ... Selection name Selection PRIMARY, SECONDARY, CLIPBOARD Selection target Target FILE_NAME, POSTSCRIPT, PIXMAP, ... Font property QUAD_WIDTH, POINT_SIZE, ... ClientMessage type WM_SAVE_YOURSELF, _DEC_SAVE_EDITS, &... Discriminated Names Sometimes a protocol requires an arbitrary number of similar objects that need unique names (usually because the objects are created dynamically, so that names cannot be invented in advance). For example, a colormap-generating program might use the selection mechanism to offer colormaps for each screen and so needs a selection name for each screen. Such names are called "discriminated names" and are discriminated by some entity. This entity can be: A screen An X resource (a window, a colormap, a visual, etc.) A client If it is only necessary to generate a fixed set of names for each value of the discriminating entity, then the discriminated names are formed by suffixing an ordinary name according to the value of the entity. If name is a descriptive portion for the name, d is a decimal number with no leading zeroes, and x is a hexadecimal number with exactly 8 digits, and using uppercase letters, then such discriminated names shall have the form: Name Discriminated by Form Example screen number name_Sd WM_COMMS_S2 X resource name_Rx GROUP_LEADER_R1234ABCD To discriminate a name by client, use an X resource ID created by that client. This resource can be of any type. Sometimes it is simply necessary to generate a unique set of names (for example, for the properties on a window used by a MULTIPLE selection). These names should have the form: Ud (e.g., U0 U1 U2 U3 ...) if the names stand totally alone, and the form: name_Ud (e.g., FOO_U0 BAR_U0 FOO_U1 BAR_U1 ...) if they come in sets (here there are two sets, named "FOO" and "BAR"). The stand-alone Ud form should be used only if it is clear that the module using it has complete control over the relevant namespace or has the active cooperation of all other entities that might also use these names. (Naming properties on a window created specifically for a particular selection is such a use; naming properties on the root window is almost certainly not.) In a particularly difficult case, it might be necessary to combine both forms of discrimination. If this happens, the U form should come after the other form, thus: FOO_R12345678_U23
Rationale Existing protocols will not be changed to use these naming conventions, because doing so will cause too much disruption. However, it is expected that future protocols -- both standard and private -- will use these conventions.
Peer-to-Peer Communication by Means of Selections Selections are the primary mechanism that X Version 11 defines for the exchange of information between clients, for example, by cutting and pasting between windows. Note that there can be an arbitrary number of selections (each named by an atom) and that they are global to the server. . discusses the choice of an atom. Each selection is owned by a client and is attached to a window. Selections communicate between an owner and a requestor. The owner has the data representing the value of its selection, and the requestor receives it. A requestor wishing to obtain the value of a selection provides the following: The name of the selection The name of a property A window The atom representing the data type required Optionally, some parameters for the request If the selection is currently owned, the owner receives an event and is expected to do the following: Convert the contents of the selection to the requested data type Place this data in the named property on the named window Send the requestor an event to let it know the property is available Clients are strongly encouraged to use this mechanism. In particular, displaying text in a permanent window without providing the ability to select and convert it into a string is definitely considered antisocial. Note that all data transferred between an owner and a requestor must usually go by means of the server in an X Version 11 environment. A client cannot assume that another client can open the same files or even communicate directly. The other client may be talking to the server by means of a completely different networking mechanism (for example, one client might be DECnet and the other TCP/IP). Thus, passing indirect references to data (such as, file names, host names, and port numbers) is permitted only if both clients specifically agree. Acquiring Selection Ownership A client wishing to acquire ownership of a particular selection should call SetSelectionOwner, which is defined as follows: SetSelectionOwner selection: ATOM owner: WINDOW or None time: TIMESTAMP or CurrentTime The client should set the specified selection to the atom that represents the selection, set the specified owner to some window that the client created, and set the specified time to some time between the current last-change time of the selection concerned and the current server time. This time value usually will be obtained from the timestamp of the event that triggers the acquisition of the selection. Clients should not set the time value to CurrentTime, because if they do so, they have no way of finding when they gained ownership of the selection. Clients must use a window they created so that requestors can route events to the owner of the selection. At present, no part of the protocol requires requestors to send events to the owner of a selection. This restriction is imposed to prepare for possible future extensions.
Convention Clients attempting to acquire a selection must set the time value of the SetSelectionOwner request to the timestamp of the event triggering the acquisition attempt, not to CurrentTime. A zero-length append to a property is a way to obtain a timestamp for this purpose; the timestamp is in the corresponding PropertyNotify event.
If the time in the SetSelectionOwner request is in the future relative to the server's current time or is in the past relative to the last time the specified selection changed hands, the SetSelectionOwner request appears to the client to succeed, but ownership is not actually transferred. Because clients cannot name other clients directly, the specified owner window is used to refer to the owning client in the replies to GetSelectionOwner, in SelectionRequest and SelectionClear events, and possibly as a place to put properties describing the selection in question. To discover the owner of a particular selection, a client should invoke GetSelectionOwner, which is defined as follows: GetSelectionOwner selection: ATOM -> owner: WINDOW or None
Convention Clients are expected to provide some visible confirmation of selection ownership. To make this feedback reliable, a client must perform a sequence like the following:
SetSelectionOwner(selection=PRIMARY, owner=Window, time=timestamp) owner = GetSelectionOwner(selection=PRIMARY) if (owner != Window) Failure If the SetSelectionOwner request succeeds (not merely appears to succeed), the client that issues it is recorded by the server as being the owner of the selection for the time period starting at the specified time.
Responsibilities of the Selection Owner When a requestor wants the value of a selection, the owner receives a SelectionRequest event, which is defined as follows: SelectionRequest owner: WINDOW selection: ATOM selection: ATOM target: ATOM property: ATOM or None requestor: WINDOW time: TIMESTAMP or CurrentTime The specified owner and selection will be the values that were specified in the SetSelectionOwner request. The owner should compare the timestamp with the period it has owned the selection and, if the time is outside, refuse the SelectionRequest by sending the requestor window a SelectionNotify event with the property set to None (by means of a SendEvent request with an empty event mask). More advanced selection owners are free to maintain a history of the value of the selection and to respond to requests for the value of the selection during periods they owned it even though they do not own it now. If the specified property is None, the requestor is an obsolete client. Owners are encouraged to support these clients by using the specified target atom as the property name to be used for the reply. Otherwise, the owner should use the target to decide the form into which the selection should be converted. Some targets may be defined such that requestors can pass parameters along with the request. The owner will find these parameters in the property named in the selection request. The type, format, and contents of this property are dependent upon the definition of the target. If the target is not defined to have parameters, the owner should ignore the property if it is present. If the selection cannot be converted into a form based on the target (and parameters, if any), the owner should refuse the SelectionRequest as previously described. If the specified property is not None, the owner should place the data resulting from converting the selection into the specified property on the requestor window and should set the property's type to some appropriate value, which need not be the same as the specified target.
Convention All properties used to reply to SelectionRequest events must be placed on the requestor window.
In either case, if the data comprising the selection cannot be stored on the requestor window (for example, because the server cannot provide sufficient memory), the owner must refuse the SelectionRequest, as previously described. See also . If the property is successfully stored, the owner should acknowledge the successful conversion by sending the requestor window a SelectionNotify event (by means of a SendEvent request with an empty mask). SelectionNotify is defined as follows: SelectionNotify requestor: WINDOW selection, target: ATOM property: ATOM or None time: TIMESTAMP or CurrentTime The owner should set the specified selection, target, time, and property arguments to the values received in the SelectionRequest event. (Note that setting the property argument to None indicates that the conversion requested could not be made.)
Convention The selection, target, time, and property arguments in the SelectionNotify event should be set to the values received in the SelectionRequest event.
If the owner receives more than one SelectionRequest event with the same requestor, selection, target, and timestamp it must respond to them in the same order in which they were received.
Rationale It is possible for a requestor to have multiple outstanding requests that use the same requestor window, selection, target, and timestamp, and that differ only in the property. If this occurs, and one of the conversion requests fails, the resulting SelectionNotify event will have its property argument set to None. This may make it impossible for the requestor to determine which conversion request had failed, unless the requests are responded to in order.
The data stored in the property must eventually be deleted. A convention is needed to assign the responsibility for doing so.
Convention Selection requestors are responsible for deleting properties whose names they receive in SelectionNotify events (See ) or in properties with type MULTIPLE.
A selection owner will often need confirmation that the data comprising the selection has actually been transferred. (For example, if the operation has side effects on the owner's internal data structures, these should not take place until the requestor has indicated that it has successfully received the data.) Owners should express interest in PropertyNotify events for the specified requestor window and wait until the property in the SelectionNotify event has been deleted before assuming that the selection data has been transferred. For the MULTIPLE request, if the different conversions require separate confirmation, the selection owner can also watch for the deletion of the individual properties named in the property in the SelectionNotify event. When some other client acquires a selection, the previous owner receives a SelectionClear event, which is defined as follows: SelectionClear owner: WINDOW selection: ATOM time: TIMESTAMP The timestamp argument is the time at which the ownership changed hands, and the owner argument is the window the previous owner specified in its SetSelectionOwner request. If an owner loses ownership while it has a transfer in progress (that is, before it receives notification that the requestor has received all the data), it must continue to service the ongoing transfer until it is complete. If the selection value completely changes, but the owner happens to be the same client (for example, selecting a totally different piece of text in the same xterm as before), then the client should reacquire the selection ownership as if it were not the owner, providing a new timestamp. If the selection value is modified, but can still reasonably be viewed as the same selected object, The division between these two cases is a matter of judgment on the part of the software developer. the owner should take no action.
Giving Up Selection Ownership Clients may either give up selection ownership voluntarily or lose it forcibly as the result of some other client's actions. Voluntarily Giving Up Selection Ownership To relinquish ownership of a selection voluntarily, a client should execute a SetSelectionOwner request for that selection atom, with owner specified as None and the time specified as the timestamp that was used to acquire the selection. Alternatively, the client may destroy the window used as the owner value of the SetSelectionOwner request, or the client may terminate. In both cases, the ownership of the selection involved will revert to None. Forcibly Giving Up Selection Ownership If a client gives up ownership of a selection or if some other client executes a SetSelectionOwner for it and thus reassigns it forcibly, the previous owner will receive a SelectionClear event. For the definition of a SelectionClear event, see The timestamp is the time the selection changed hands. The specified owner is the window that was specified by the current owner in its SetSelectionOwner request. Requesting a Selection A client that wishes to obtain the value of a selection in a particular form (the requestor) issues a ConvertSelection request, which is defined as follows: ConvertSelection selection, target: ATOM property: ATOM or None requestor: WINDOW time: TIMESTAMP or CurrentTime The selection argument specifies the particular selection involved, and the target argument specifies the required form of the information. For information about the choice of suitable atoms to use, see The requestor should set the requestor argument to a window that it created; the owner will place the reply property there. The requestor should set the time argument to the timestamp on the event that triggered the request for the selection value. Note that clients should not specify CurrentTime.
Convention Clients should not use CurrentTime for the time argument of a ConvertSelection request. Instead, they should use the timestamp of the event that caused the request to be made.
The requestor should set the property argument to the name of a property that the owner can use to report the value of the selection. Requestors should ensure that the named property does not exist on the window before issuing the ConvertSelection request. This requirement is new in version 2.0, and, in general, existing clients do not conform to this requirement. To prevent these clients from breaking, no existing targets should be extended to take parameters until sufficient time has passed for clients to be updated. Note that the MULTIPLE target was defined to take parameters in version 1.0 and its definition is not changing. There is thus no conformance problem with MULTIPLE. The exception to this rule is when the requestor intends to pass parameters with the request (see below).
Rationale It is necessary for requestors to delete the property before issuing the request so that the target can later be extended to take parameters without introducing an incompatibility. Also note that the requestor of a selection need not know the client that owns the selection nor the window on which the selection was acquired.
Some targets may be defined such that requestors can pass parameters along with the request. If the requestor wishes to provide parameters to a request, they should be placed in the specified property on the requestor window before the requestor issues the ConvertSelection request, and this property should be named in the request. Some targets may be defined so that parameters are optional. If no parameters are to be supplied with the request of such a target, the requestor must ensure that the property does not exist before issuing the ConvertSelection request. The protocol allows the property field to be set to None, in which case the owner is supposed to choose a property name. However, it is difficult for the owner to make this choice safely. Conventions Requestors should not use None for the property argument of a ConvertSelection request. Owners receiving ConvertSelection requests with a property argument of None are talking to an obsolete client. They should choose the target atom as the property name to be used for the reply. The result of the ConvertSelection request is that a SelectionNotify event will be received. For the definition of a SelectionNotify event, see . The requestor, selection, time, and target arguments will be the same as those on the ConvertSelection request. If the property argument is None, the conversion has been refused. This can mean either that there is no owner for the selection, that the owner does not support the conversion implied by the target, or that the server did not have sufficient space to accommodate the data. If the property argument is not None, then that property will exist on the requestor window. The value of the selection can be retrieved from this property by using the GetProperty request, which is defined as follows: GetProperty window: WINDOW property: ATOM type: ATOM or AnyPropertyType long-offset, long-length: CARD32 delete: BOOL -> type: ATOM or None format: {0, 8, 16, 32} bytes-after: CARD32 value: LISTofINT8 or LISTofINT16 or LISTofINT32 GetProperty to retrieve the value of a selection, the property argument should be set to the corresponding value in the SelectionNotify event. Because the requestor has no way of knowing beforehand what type the selection owner will use, the type argument should be set to AnyPropertyType. Several GetProperty requests may be needed to retrieve all the data in the selection; each should set the long-offset argument to the amount of data received so far, and the size argument to some reasonable buffer size (see . ). If the returned value of bytes-after is zero, the whole property has been transferred. Once all the data in the selection has been retrieved (which may require getting the values of several properties -- see . ), the requestor should delete the property in the SelectionNotify request by using a GetProperty request with the delete argument set to True. As previously discussed, the owner has no way of knowing when the data has been transferred to the requestor unless the property is removed.
Convention The requestor must delete the property named in the SelectionNotify once all the data has been retrieved. The requestor should invoke either DeleteProperty or GetProperty (delete==True) after it has successfully retrieved all the data in the selection. For further information, see .
Large Data Transfers Selections can get large, which poses two problems: Transferring large amounts of data to the server is expensive. All servers will have limits on the amount of data that can be stored in properties. Exceeding this limit will result in an Alloc error on the ChangeProperty request that the selection owner uses to store the data. The problem of limited server resources is addressed by the following conventions: Conventions Selection owners should transfer the data describing a large selection (relative to the maximum-request-size they received in the connection handshake) using the INCR property mechanism (see . ). Any client using SetSelectionOwner to acquire selection ownership should arrange to process Alloc errors in property change requests. For clients using Xlib, this involves using the XSetErrorHandler function to override the default handler. A selection owner must confirm that no Alloc error occurred while storing the properties for a selection before replying with a confirming SelectionNotify event. When storing large amounts of data (relative to maximum-request-size), clients should use a sequence of ChangeProperty (mode==Append) requests for reasonable quantities of data. This avoids locking servers up and limits the waste of data an Alloc error would cause. If an Alloc error occurs during the storing of the selection data, all properties stored for this selection should be deleted and the ConvertSelection request should be refused (see . ). To avoid locking servers up for inordinate lengths of time, requestors retrieving large quantities of data from a property should perform a series of GetProperty requests, each asking for a reasonable amount of data.
Advice to Implementors Single-threaded servers should take care to avoid locking up during large data transfers.
Use of Selection Atoms Defining a new atom consumes resources in the server that are not released until the server reinitializes. Thus, reducing the need for newly minted atoms is an important goal for the use of the selection atoms. Selection Atoms There can be an arbitrary number of selections, each named by an atom. To conform with the inter-client conventions, however, clients need deal with only these three selections: PRIMARY SECONDARY CLIPBOARD Other selections may be used freely for private communication among related groups of clients. The PRIMARY Selection The selection named by the atom PRIMARY is used for all commands that take only a single argument and is the principal means of communication between clients that use the selection mechanism. The SECONDARY Selection The selection named by the atom SECONDARY is used: As the second argument to commands taking two arguments (for example, "exchange primary and secondary selections") As a means of obtaining data when there is a primary selection and the user does not want to disturb it The CLIPBOARD Selection The selection named by the atom CLIPBOARD is used to hold data that is being transferred between clients, that is, data that usually is being cut and then pasted or copied and then pasted. Whenever a client wants to transfer data to the clipboard: It should assert ownership of the CLIPBOARD. If it succeeds in acquiring ownership, it should be prepared to respond to a request for the contents of the CLIPBOARD in the usual way (retaining the data to be able to return it). The request may be generated by the clipboard client described below. If it fails to acquire ownership, a cutting client should not actually perform the cut or provide feedback that would suggest that it has actually transferred data to the clipboard. The owner should repeat this process whenever the data to be transferred would change. Clients wanting to paste data from the clipboard should request the contents of the CLIPBOARD selection in the usual way. Except while a client is actually deleting or copying data, the owner of the CLIPBOARD selection may be a single, special client implemented for the purpose. This client maintains the content of the clipboard up-to-date and responds to requests for data from the clipboard as follows: It should assert ownership of the CLIPBOARD selection and reassert it any time the clipboard data changes. If it loses the selection (because another client has some new data for the clipboard), it should: Obtain the contents of the selection from the new owner by using the timestamp in the SelectionClear event. Attempt to reassert ownership of the CLIPBOARD selection by using the same timestamp. Restart the process using a newly acquired timestamp if this attempt fails. This timestamp should be obtained by asking the current owner of the CLIPBOARD selection to convert it to a TIMESTAMP. If this conversion is refused or if the same timestamp is received twice, the clipboard client should acquire a fresh timestamp in the usual way (for example by a zero-length append to a property). It should respond to requests for the CLIPBOARD contents in the usual way. A special CLIPBOARD client is not necessary. The protocol used by the cutting client and the pasting client is the same whether the CLIPBOARD client is running or not. The reasons for running the special client include: Stability - If the cutting client were to crash or terminate, the clipboard value would still be available. Feedback - The clipboard client can display the contents of the clipboard. Simplicity - A client deleting data does not have to retain it for so long, thus reducing the chance of race conditions causing problems. The reasons not to run the clipboard client include: Performance - Data is transferred only if it is actually required (that is, when some client actually wants the data). Flexibility - The clipboard data may be available as more than one target. Target Atoms The atom that a requestor supplies as the target of a ConvertSelection request determines the form of the data supplied. The set of such atoms is extensible, but a generally accepted base set of target atoms is needed. As a starting point for this, the following table contains those that have been suggested so far. Atom Type Data Received ADOBE_PORTABLE_­DOCUMENT_­FORMAT STRING [1] APPLE_PICT APPLE_PICT [2] BACKGROUND PIXEL A list of pixel values BITMAP BITMAP A list of bitmap IDs CHARACTER_POSITION SPAN The start and end of the selection in bytes CLASS TEXT (see . ) CLIENT_WINDOW WINDOW Any top-level window owned by the selection owner COLORMAP COLORMAP A list of colormap IDs COLUMN_NUMBER SPAN The start and end column numbers COMPOUND_TEXT COMPOUND_TEXT Compound Text DELETE NULL (see . ) DRAWABLE DRAWABLE A list of drawable IDs ENCAPSULATED_POSTSCRIPT STRING [3], Appendix H Earlier versions of this document erroneously specified that conversion of the PIXMAP target returns a property of type DRAWABLE instead of PIXMAP. Implementors should be aware of this and may want to support the DRAWABLE type as well to allow for compatibility with older clients. ENCAPSULATED_POSTSCRIPT_­INTERCHANGE STRING [3], Appendix H FILE_NAME TEXT The full path name of a file FOREGROUND PIXEL A list of pixel values HOST_NAME TEXT (see . ) INSERT_PROPERTY NULL (see . ) INSERT_SELECTION NULL (see . ) LENGTH INTEGER The number of bytes in the selection The targets ENCAPSULATED_POSTSCRIPT and ENCAPSULATED_POSTSCRIPT_INTERCHANGE are equivalent to the targets _ADOBE_EPS and _ADOBE_EPSI (respectively) that appear in the selection targets registry. The _ADOBE_ targets are deprecated, but clients are encouraged to continue to support them for backward compatibility. LINE_NUMBER SPAN The start and end line numbers LIST_LENGTH INTEGER The number of disjoint parts of the selection MODULE TEXT The name of the selected procedure MULTIPLE ATOM_PAIR (see the discussion that follows) NAME TEXT (see . ) ODIF TEXT ISO Office Document Interchange Format OWNER_OS TEXT The operating system of the owner client PIXMAP PIXMAP This definition is ambiguous, as the selection may be converted into any of several targets that may return differing amounts of data. The requestor has no way of knowing which, if any, of these targets corresponds to the result of LENGTH. Clients are advised that no guarantees can be made about the result of a conversion to LENGTH; its use is thus deprecated. A list of pixmap IDs POSTSCRIPT STRING [3] PROCEDURE TEXT The name of the selected procedure PROCESS INTEGER, TEXT The process ID of the owner STRING STRING ISO Latin-1 (+TAB+NEWLINE) text TARGETS ATOM A list of valid target atoms TASK INTEGER, TEXT The task ID of the owner TEXT TEXT The text in the owner's choice of encoding TIMESTAMP INTEGER The timestamp used to acquire the selection USER TEXT The name of the user running the owner References: Adobe Systems, Incorporated. Portable Document Format Reference Manual. Reading, MA, Addison-Wesley, ISBN 0-201-62628-4. Apple Computer, Incorporated. Inside Macintosh, Volume V. Chapter 4, "Color QuickDraw," Color Picture Format. ISBN 0-201-17719-6. Adobe Systems, Incorporated. PostScript Language Reference Manual. Reading, MA, Addison-Wesley, ISBN 0-201-18127-4. It is expected that this table will grow over time. Selection owners are required to support the following targets. All other targets are optional. TARGETS - The owner should return a list of atoms that represent the targets for which an attempt to convert the current selection will succeed (barring unforseeable problems such as Alloc errors). This list should include all the required atoms. MULTIPLE - The MULTIPLE target atom is valid only when a property is specified on the ConvertSelection request. If the property argument in the SelectionRequest event is None and the target is MULTIPLE, it should be refused. When a selection owner receives a SelectionRequest (target==MULTIPLE) request, the contents of the property named in the request will be a list of atom pairs: the first atom naming a target and the second naming a property ( None is not valid here). The effect should be as if the owner had received a sequence of SelectionRequest events (one for each atom pair) except that: The owner should reply with a SelectionNotify only when all the requested conversions have been performed. If the owner fails to convert the target named by an atom in the MULTIPLE property, it should replace that atom in the property with None.
Convention The entries in a MULTIPLE property must be processed in the order they appear in the property. For further information, see .
The requestor should delete each individual property when it has copied the data from that conversion, and the property specified in the MULTIPLE request when it has copied all the data. The requests are otherwise to be processed independently, and they should succeed or fail independently. The MULTIPLE target is an optimization that reduces the amount of protocol traffic between the owner and the requestor; it is not a transaction mechanism. For example, a client may issue a MULTIPLE request with two targets: a data target and the DELETE target. The DELETE target will still be processed even if the conversion of the data target fails.
TIMESTAMP - To avoid some race conditions, it is important that requestors be able to discover the timestamp the owner used to acquire ownership. Until and unless the protocol is changed so that a GetSelectionOwner request returns the timestamp used to acquire ownership, selection owners must support conversion to TIMESTAMP, returning the timestamp they used to obtain the selection.
Selection Targets with Side Effects Some targets (for example, DELETE) have side effects. To render these targets unambiguous, the entries in a MULTIPLE property must be processed in the order that they appear in the property. In general, targets with side effects will return no information, that is, they will return a zero length property of type NULL. (Type NULL means the result of InternAtom on the string "NULL", not the value zero.) In all cases, the requested side effect must be performed before the conversion is accepted. If the requested side effect cannot be performed, the corresponding conversion request must be refused.
Conventions Targets with side effects should return no information (that is, they should have a zero-length property of type NULL). The side effect of a target must be performed before the conversion is accepted. If the side effect of a target cannot be performed, the corresponding conversion request must be refused.
Problem The need to delay responding to the ConvertSelection request until a further conversion has succeeded poses problems for the Intrinsics interface that need to be addressed.
These side-effect targets are used to implement operations such as "exchange PRIMARY and SECONDARY selections." DELETE When the owner of a selection receives a request to convert it to DELETE, it should delete the corresponding selection (whatever doing so means for its internal data structures) and return a zero-length property of type NULL if the deletion was successful. INSERT_SELECTION When the owner of a selection receives a request to convert it to INSERT_SELECTION, the property named will be of type ATOM_PAIR. The first atom will name a selection, and the second will name a target. The owner should use the selection mechanism to convert the named selection into the named target and should insert it at the location of the selection for which it got the INSERT_SELECTION request (whatever doing so means for its internal data structures). INSERT_PROPERTY When the owner of a selection receives a request to convert it to INSERT_PROPERTY, it should insert the property named in the request at the location of the selection for which it got the INSERT_SELECTION request (whatever doing so means for its internal data structures).
Use of Selection Properties The names of the properties used in selection data transfer are chosen by the requestor. The use of None property fields in ConvertSelection requests (which request the selection owner to choose a name) is not permitted by these conventions. The selection owner always chooses the type of the property in the selection data transfer. Some types have special semantics assigned by convention, and these are reviewed in the following sections. In all cases, a request for conversion to a target should return either a property of one of the types listed in the previous table for that target or a property of type INCR and then a property of one of the listed types. Certain selection properties may contain resource IDs. The selection owner should ensure that the resource is not destroyed and that its contents are not changed until after the selection transfer is complete. Requestors that rely on the existence or on the proper contents of a resource must operate on the resource (for example, by copying the contents of a pixmap) before deleting the selection property. The selection owner will return a list of zero or more items of the type indicated by the property type. In general, the number of items in the list will correspond to the number of disjoint parts of the selection. Some targets (for example, side-effect targets) will be of length zero irrespective of the number of disjoint selection parts. In the case of fixed-size items, the requestor may determine the number of items by the property size. Selection property types are listed in the table below. For variable-length items such as text, the separators are also listed. Type Atom Format Separator APPLE_PICT 8 Self-sizing ATOM 32 Fixed-size ATOM_PAIR 32 Fixed-size BITMAP 32 Fixed-size C_STRING 8 Zero COLORMAP 32 Fixed-size COMPOUND_TEXT 8 Zero DRAWABLE 32 Fixed-size INCR 32 Fixed-size INTEGER 32 Fixed-size PIXEL 32 Fixed-size PIXMAP 32 Fixed-size SPAN 32 Fixed-size STRING 8 Zero WINDOW 32 Fixed-size It is expected that this table will grow over time. TEXT Properties In general, the encoding for the characters in a text string property is specified by its type. It is highly desirable for there to be a simple, invertible mapping between string property types and any character set names embedded within font names in any font naming standard adopted by the Consortium. The atom TEXT is a polymorphic target. Requesting conversion into TEXT will convert into whatever encoding is convenient for the owner. The encoding chosen will be indicated by the type of the property returned. TEXT is not defined as a type; it will never be the returned type from a selection conversion request. If the requestor wants the owner to return the contents of the selection in a specific encoding, it should request conversion into the name of that encoding. In the table in , the word TEXT (in the Type column) is used to indicate one of the registered encoding names. The type would not actually be TEXT; it would be STRING or some other ATOM naming the encoding chosen by the owner. STRING as a type or a target specifies the ISO Latin-1 character set plus the control characters TAB (octal 11) and NEWLINE (octal 12). The spacing interpretation of TAB is context dependent. Other ASCII control characters are explicitly not included in STRING at the present time. COMPOUND_TEXT as a type or a target specifies the Compound Text interchange format; see the Compound Text Encoding. There are some text objects where the source or intended user, as the case may be, does not have a specific character set for the text, but instead merely requires a zero-terminated sequence of bytes with no other restriction; no element of the selection mechanism may assume that any byte value is forbidden or that any two differing sequences are equivalent. Note that this is different from STRING, where many byte values are forbidden, and from COMPOUND_TEXT, where, for example, inserting the sequence 27,\ 40,\ 66 (designate ASCII into GL) at the start does not alter the meaning. For these objects, the type C_STRING should be used.
Rationale An example of the need for C_STRING is to transmit the names of files; many operating systems do not interpret filenames as having a character set. For example, the same character string uses a different sequence of bytes in ASCII and EBCDIC, and so most operating systems see these as different filenames and offer no way to treat them as the same. Thus no character-set based property type is suitable.
Type STRING, COMPOUND_TEXT, and C_STRING properties will consist of a list of elements separated by null characters; other encodings will need to specify an appropriate list format.
INCR Properties Requestors may receive a property of type INCR These properties were called INCREMENTAL in an earlier draft. The protocol for using them has changed, and so the name has changed to avoid confusion. in response to any target that results in selection data. This indicates that the owner will send the actual data incrementally. The contents of the INCR property will be an integer, which represents a lower bound on the number of bytes of data in the selection. The requestor and the selection owner transfer the data in the selection in the following manner. The selection requestor starts the transfer process by deleting the (type==INCR) property forming the reply to the selection. The selection owner then: Appends the data in suitable-size chunks to the same property on the same window as the selection reply with a type corresponding to the actual type of the converted selection. The size should be less than the maximum-request-size in the connection handshake. Waits between each append for a PropertyNotify (state==Deleted) event that shows that the requestor has read the data. The reason for doing this is to limit the consumption of space in the server. Waits (after the entire data has been transferred to the server) until a PropertyNotify (state==Deleted) event that shows that the data has been read by the requestor and then writes zero-length data to the property. The selection requestor: Waits for the SelectionNotify event. Loops: Retrieving data using GetProperty with the delete argument True. Waiting for a PropertyNotify with the state argument NewValue. Waits until the property named by the PropertyNotify event is zero-length. Deletes the zero-length property. The type of the converted selection is the type of the first partial property. The remaining partial properties must have the same type. DRAWABLE Properties Requestors may receive properties of type PIXMAP, BITMAP, DRAWABLE, or WINDOW, which contain an appropriate ID. While information about these drawables is available from the server by means of the GetGeometry request, the following items are not: Foreground pixel Background pixel Colormap ID In general, requestors converting into targets whose returned type in the table in is one of the DRAWABLE types should expect to convert also into the following targets (using the MULTIPLE mechanism): FOREGROUND returns a PIXEL value. BACKGROUND returns a PIXEL value. COLORMAP returns a colormap ID. SPAN Properties Properties with type SPAN contain a list of cardinal-pairs with the length of the cardinals determined by the format. The first specifies the starting position, and the second specifies the ending position plus one. The base is zero. If they are the same, the span is zero-length and is before the specified position. The units are implied by the target atom, such as LINE_NUMBER or CHARACTER_POSITION.
Manager Selections Certain clients, often called managers, take on responsibility for managing shared resources. A client that manages a shared resource should take ownership of an appropriate selection, named using the conventions described in and . A client that manages multiple shared resources (or groups of resources) should take ownership of a selection for each one. The manager may support conversion of various targets for that selection. Managers are encouraged to use this technique as the primary means by which clients interact with the managed resource. Note that the conventions for interacting with the window manager predate this section; as a result many interactions with the window manager use other techniques. Before a manager takes ownership of a manager selection, it should use the GetSelectionOwner request to check whether the selection is already owned by another client, and, where appropriate, it should ask the user if the new manager should replace the old one. If so, it may then take ownership of the selection. Managers should acquire the selection using a window created expressly for this purpose. Managers must conform to the rules for selection owners described in and , and they must also support the required targets listed in . If a manager loses ownership of a manager selection, this means that a new manager is taking over its responsibilities. The old manager must release all resources it has managed and must then destroy the window that owned the selection. For example, a window manager losing ownership of WM_S2 must deselect from SubstructureRedirect on the root window of screen 2 before destroying the window that owned WM_S2. When the new manager notices that the window owning the selection has been destroyed, it knows that it can successfully proceed to control the resource it is planning to manage. If the old manager does not destroy the window within a reasonable time, the new manager should check with the user before destroying the window itself or killing the old manager. If a manager wants to give up, on its own, management of a shared resource controlled by a selection, it must do so by releasing the resources it is managing and then by destroying the window that owns the selection. It should not first disown the selection, since this introduces a race condition. Clients who are interested in knowing when the owner of a manager selection is no longer managing the corresponding shared resource should select for StructureNotify on the window owning the selection so they can be notified when the window is destroyed. Clients are warned that after doing a GetSelectionOwner and selecting for StructureNotify, they should do a GetSelectionOwner again to ensure that the owner did not change after initially getting the selection owner and before selecting for StructureNotify. Immediately after a manager successfully acquires ownership of a manager selection, it should announce its arrival by sending a ClientMessage event. This event should be sent using the SendEvent protocol request with the following arguments: Argument Value destination: the root window of screen 0, or the root window of the appropriate screen if the manager is managing a screen-specific resource propogate: False event-mask: StructureNotify event: ClientMessage      type: MANAGER      format: 32      data[0] We use the notation data[n] to indicate the n th element of the LISTofINT8, LISTofINT16, or LISTofINT32 in the data field of the ClientMessage, according to the format field. The list is indexed from zero. timestamp      data[1]: manager selection atom      data[2]: the window owning the selection      data[3]: manager-selection-specific data      data[4]: manager-selection-specific data Clients that wish to know when a specific manager has started should select for StructureNotify on the appropriate root window and should watch for the appropriate MANAGER ClientMessage.
Peer-to-Peer Communication by Means of Cut Buffers The cut buffer mechanism is much simpler but much less powerful than the selection mechanism. The selection mechanism is active in that it provides a link between the owner and requestor clients. The cut buffer mechanism is passive; an owner places data in a cut buffer from which a requestor retrieves the data at some later time. The cut buffers consist of eight properties on the root of screen zero, named by the predefined atoms CUT_BUFFER0 to CUT_BUFFER7. These properties must, at present, have type STRING and format 8. A client that uses the cut buffer mechanism must initially ensure that all eight properties exist by using ChangeProperty requests to append zero-length data to each. A client that stores data in the cut buffers (an owner) first must rotate the ring of buffers by plus 1 by using RotateProperties requests to rename each buffer; that is, CUT_BUFFER0 to CUT_BUFFER1, CUT_BUFFER1 to CUT_BUFFER2, ..., and CUT_BUFFER7 to CUT_BUFFER0. It then must store the data into CUT_BUFFER0 by using a ChangeProperty request in mode Replace. A client that obtains data from the cut buffers should use a GetProperty request to retrieve the contents of CUT_BUFFER0. In response to a specific user request, a client may rotate the cut buffers by minus 1 by using RotateProperties requests to rename each buffer; that is, CUT_BUFFER7 to CUT_BUFFER6, CUT_BUFFER6 to CUT_BUFFER5, ..., and CUT_BUFFER0 to CUT_BUFFER7. Data should be stored to the cut buffers and the ring rotated only when requested by explicit user action. Users depend on their mental model of cut buffer operation and need to be able to identify operations that transfer data to and fro. Client-to-Window-Manager Communication To permit window managers to perform their role of mediating the competing demands for resources such as screen space, the clients being managed must adhere to certain conventions and must expect the window managers to do likewise. These conventions are covered here from the client's point of view. In general, these conventions are somewhat complex and will undoubtedly change as new window management paradigms are developed. Thus, there is a strong bias toward defining only those conventions that are essential and that apply generally to all window management paradigms. Clients designed to run with a particular window manager can easily define private protocols to add to these conventions, but they must be aware that their users may decide to run some other window manager no matter how much the designers of the private protocol are convinced that they have seen the "one true light" of user interfaces. It is a principle of these conventions that a general client should neither know nor care which window manager is running or, indeed, if one is running at all. The conventions do not support all client functions without a window manager running; for example, the concept of Iconic is not directly supported by clients. If no window manager is running, the concept of Iconic does not apply. A goal of the conventions is to make it possible to kill and restart window managers without loss of functionality. Each window manager will implement a particular window management policy; the choice of an appropriate window management policy for the user's circumstances is not one for an individual client to make but will be made by the user or the user's system administrator. This does not exclude the possibility of writing clients that use a private protocol to restrict themselves to operating only under a specific window manager. Rather, it merely ensures that no claim of general utility is made for such programs. For example, the claim is often made: "The client I'm writing is important, and it needs to be on top." Perhaps it is important when it is being run in earnest, and it should then be run under the control of a window manager that recognizes "important" windows through some private protocol and ensures that they are on top. However, imagine, for example, that the "important" client is being debugged. Then, ensuring that it is always on top is no longer the appropriate window management policy, and it should be run under a window manager that allows other windows (for example, the debugger) to appear on top. Client's Actions In general, the object of the X Version 11 design is that clients should, as far as possible, do exactly what they would do in the absence of a window manager, except for the following: Hinting to the window manager about the resources they would like to obtain Cooperating with the window manager by accepting the resources they are allocated even if they are not those requested Being prepared for resource allocations to change at any time Creating a Top-Level Window A client's top-level window is a window whose override-redirect attribute is False. It must either be a child of a root window, or it must have been a child of a root window immediately prior to having been reparented by the window manager. If the client reparents the window away from the root, the window is no longer a top-level window; but it can become a top-level window again if the client reparents it back to the root. A client usually would expect to create its top-level windows as children of one or more of the root windows by using some boilerplate like the following: win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y, xsh.width, xsh.height, bw, bd, bg); If a particular one of the root windows was required, however, it could use something like the following: win = XCreateSimpleWindow(dpy, RootWindow(dpy, screen), xsh.x, xsh.y, xsh.width, xsh.height, bw, bd, bg); Ideally, it should be possible to override the choice of a root window and allow clients (including window managers) to treat a nonroot window as a pseudo-root. This would allow, for example, the testing of window managers and the use of application-specific window managers to control the subwindows owned by the members of a related suite of clients. Doing so properly requires an extension, the design of which is under study. From the client's point of view, the window manager will regard its top-level window as being in one of three states: Normal Iconic Withdrawn Newly created windows start in the Withdrawn state. Transitions between states happen when the top-level window is mapped and unmapped and when the window manager receives certain messages. For further details, see . and . Client Properties Once the client has one or more top-level windows, it should place properties on those windows to inform the window manager of the behavior that the client desires. Window managers will assume values they find convenient for any of these properties that are not supplied; clients that depend on particular values must explicitly supply them. The window manager will not change properties written by the client. The window manager will examine the contents of these properties when the window makes the transition from the Withdrawn state and will monitor some properties for changes while the window is in the Iconic or Normal state. When the client changes one of these properties, it must use Replace mode to overwrite the entire property with new data; the window manager will retain no memory of the old value of the property. All fields of the property must be set to suitable values in a single Replace mode ChangeProperty request. This ensures that the full contents of the property will be available to a new window manager if the existing one crashes, if it is shut down and restarted, or if the session needs to be shut down and restarted by the session manager.
Convention Clients writing or rewriting window manager properties must ensure that the entire content of each property remains valid at all times.
Some of these properties may contain the IDs of resources, such as windows or pixmaps. Clients should ensure that these resources exist for at least as long as the window on which the property resides. If these properties are longer than expected, clients should ignore the remainder of the property. Extending these properties is reserved to the X Consortium; private extensions to them are forbidden. Private additional communication between clients and window managers should take place using separate properties. The only exception to this rule is the WM_PROTOCOLS property, which may be of arbitrary length and which may contain atoms representing private protocols (see ). The next sections describe each of the properties the clients need to set, in turn. They are summarized in the table in WM_NAME Property The WM_NAME property is an uninterpreted string that the client wants the window manager to display in association with the window (for example, in a window headline bar). The encoding used for this string (and all other uninterpreted string properties) is implied by the type of the property. The type atoms to be used for this purpose are described in . Window managers are expected to make an effort to display this information. Simply ignoring WM_NAME is not acceptable behavior. Clients can assume that at least the first part of this string is visible to the user and that if the information is not visible to the user, it is because the user has taken an explicit action to make it invisible. On the other hand, there is no guarantee that the user can see the WM_NAME string even if the window manager supports window headlines. The user may have placed the headline off-screen or have covered it by other windows. WM_NAME should not be used for application-critical information or to announce asynchronous changes of an application's state that require timely user response. The expected uses are to permit the user to identify one of a number of instances of the same client and to provide the user with noncritical state information. Even window managers that support headline bars will place some limit on the length of the WM_NAME string that can be visible; brevity here will pay dividends. WM_ICON_NAME Property The WM_ICON_NAME property is an uninterpreted string that the client wants to be displayed in association with the window when it is iconified (for example, in an icon label). In other respects, including the type, it is similar to WM_NAME. For obvious geometric reasons, fewer characters will normally be visible in WM_ICON_NAME than WM_NAME. Clients should not attempt to display this string in their icon pixmaps or windows; rather, they should rely on the window manager to do so. WM_NORMAL_HINTS Property The type of the WM_NORMAL_HINTS property is WM_SIZE_HINTS. Its contents are as follows: Field Type Comments flags CARD32 (see the next table) pad 4*CARD32 For backwards compatibility min_width INT32 If missing, assume base_width min_height INT32 If missing, assume base_height max_width INT32 max_height INT32 width_inc INT32 height_inc INT32 min_aspect (INT32,INT32) max_aspect (INT32,INT32) base_width INT32 If missing, assume min_width base_height INT32 If missing, assume min_height win_gravity INT32 If missing, assume NorthWest The WM_SIZE_HINTS.flags bit definitions are as follows: Name Value Field USPosition 1 User-specified x, y USSize 2 User-specified width, height PPosition 4 Program-specified position PSize 8 Program-specified size PMinSize 16 Program-specified minimum size PMaxSize 32 Program-specified maximum size PResizeInc 64 Program-specified resize increments PAspect 128 Program-specified min and max aspect ratios PBaseSize 256 Program-specified base size PWinGravity 512 Program-specified window gravity To indicate that the size and position of the window (when a transition from the Withdrawn state occurs) was specified by the user, the client should set the USPosition and USSize flags, which allow a window manager to know that the user specifically asked where the window should be placed or how the window should be sized and that further interaction is superfluous. To indicate that it was specified by the client without any user involvement, the client should set PPosition and PSize. The size specifiers refer to the width and height of the client's window excluding borders. The win_gravity may be any of the values specified for WINGRAVITY in the core protocol except for Unmap: NorthWest (1), North (2), NorthEast (3), West (4), Center (5), East (6), SouthWest (7), South (8), and SouthEast (9). It specifies how and whether the client window wants to be shifted to make room for the window manager frame. If the win_gravity is Static, the window manager frame is positioned so that the inside border of the client window inside the frame is in the same position on the screen as it was when the client requested the transition from Withdrawn state. Other values of win_gravity specify a window reference point. For NorthWest, NorthEast, SouthWest, and SouthEast the reference point is the specified outer corner of the window (on the outside border edge). For North, South, East and West the reference point is the center of the specified outer edge of the window border. For Center the reference point is the center of the window. The reference point of the window manager frame is placed at the location on the screen where the reference point of the client window was when the client requested the transition from Withdrawn state. The min_width and min_height elements specify the minimum size that the window can be for the client to be useful. The max_width and max_height elements specify the maximum size. The base_width and base_height elements in conjunction with width_inc and height_inc define an arithmetic progression of preferred window widths and heights for non-negative integers i and j: width = base_width + ( i x width_inc ) height = base_height + ( j x height_inc ) Window managers are encouraged to use i and j instead of width and height in reporting window sizes to users. If a base size is not provided, the minimum size is to be used in its place and vice versa. The min_aspect and max_aspect fields are fractions with the numerator first and the denominator second, and they allow a client to specify the range of aspect ratios it prefers. Window managers that honor aspect ratios should take into account the base size in determining the preferred window size. If a base size is provided along with the aspect ratio fields, the base size should be subtracted from the window size prior to checking that the aspect ratio falls in range. If a base size is not provided, nothing should be subtracted from the window size. (The minimum size is not to be used in place of the base size for this purpose.) WM_HINTS Property The WM_HINTS property (whose type is WM_HINTS) is used to communicate to the window manager. It conveys the information the window manager needs other than the window geometry, which is available from the window itself; the constraints on that geometry, which is available from the WM_NORMAL_HINTS structure; and various strings, which need separate properties, such as WM_NAME. The contents of the properties are as follows: Field Type Comments flags CARD32 (see the next table) input CARD32 The client's input model initial_state CARD32 The state when first mapped icon_pixmap PIXMAP The pixmap for the icon image icon_window WINDOW The window for the icon image icon_x INT32 The icon location icon_y INT32 icon_mask PIXMAP The mask for the icon shape window_group WINDOW The ID of the group leader window The WM_HINTS.flags bit definitions are as follows: Name Value Field InputHint 1 input StateHint 2 initial_state IconPixmapHint 4 icon_pixmap IconWindowHint 8 icon_window IconPositionHint 16 icon_x & icon_y IconMaskHint 32 icon_mask WindowGroupHint 64 window_group MessageHint 128 (this bit is obsolete) UrgencyHint 256 urgency Window managers are free to assume convenient values for all fields of the WM_HINTS property if a window is mapped without one. The input field is used to communicate to the window manager the input focus model used by the client (see ). Clients with the Globally Active and No Input models should set the input flag to False. Clients with the Passive and Locally Active models should set the input flag to True. From the client's point of view, the window manager will regard the client's top-level window as being in one of three states: Normal Iconic Withdrawn The semantics of these states are described in . Newly created windows start in the Withdrawn state. Transitions between states happen when a top-level window is mapped and unmapped and when the window manager receives certain messages. The value of the initial_state field determines the state the client wishes to be in at the time the top-level window is mapped from the Withdrawn state, as shown in the following table: State Value Comments NormalState 1 The window is visible IconicState 3 The icon is visible The icon_pixmap field may specify a pixmap to be used as an icon. This pixmap should be: One of the sizes specified in the WM_ICON_SIZE property on the root if it exists (see ). 1-bit deep. The window manager will select, through the defaults database, suitable background (for the 0 bits) and foreground (for the 1 bits) colors. These defaults can, of course, specify different colors for the icons of different clients. The icon_mask specifies which pixels of the icon_pixmap should be used as the icon, allowing for icons to appear nonrectangular. The icon_window field is the ID of a window the client wants used as its icon. Most, but not all, window managers will support icon windows. Those that do not are likely to have a user interface in which small windows that behave like icons are completely inappropriate. Clients should not attempt to remedy the omission by working around it. Clients that need more capabilities from the icons than a simple 2-color bitmap should use icon windows. Rules for clients that do are set out in . The (icon_x,icon_y) coordinate is a hint to the window manager as to where it should position the icon. The policies of the window manager control the positioning of icons, so clients should not depend on attention being paid to this hint. The window_group field lets the client specify that this window belongs to a group of windows. An example is a single client manipulating multiple children of the root window.
Conventions The window_group field should be set to the ID of the group leader. The window group leader may be a window that exists only for that purpose; a placeholder group leader of this kind would never be mapped either by the client or by the window manager. The properties of the window group leader are those for the group as a whole (for example, the icon to be shown when the entire group is iconified).
Window managers may provide facilities for manipulating the group as a whole. Clients, at present, have no way to operate on the group as a whole. The messages bit, if set in the flags field, indicates that the client is using an obsolete window manager communication protocol, This obsolete protocol was described in the July 27, 1988, draft of the ICCCM. Windows using it can also be detected because their WM_HINTS properties are 4 bytes longer than expected. Window managers are free to support clients using the obsolete protocol in a backwards compatibility mode. rather than the WM_PROTOCOLS mechanism of The UrgencyHint flag, if set in the flags field, indicates that the client deems the window contents to be urgent, requiring the timely response of the user. The window manager must make some effort to draw the user's attention to this window while this flag is set. The window manager must also monitor the state of this flag for the entire time the window is in the Normal or Iconic state and must take appropriate action when the state of the flag changes. The flag is otherwise independent of the window's state; in particular, the window manager is not required to deiconify the window if the client sets the flag on an Iconic window. Clients must provide some means by which the user can cause the UrgencyHint flag to be set to zero or the window to be withdrawn. The user's action can either mitigate the actual condition that made the window urgent, or it can merely shut off the alarm.
Rationale This mechanism is useful for alarm dialog boxes or reminder windows, in cases where mapping the window is not enough (e.g., in the presence of multi-workspace or virtual desktop window managers), and where using an override-redirect window is too intrusive. For example, the window manager may attract attention to an urgent window by adding an indicator to its title bar or its icon. Window managers may also take additional action for a window that is newly urgent, such as by flashing its icon (if the window is iconic) or by raising it to the top of the stack.
WM_CLASS Property The WM_CLASS property (of type STRING without control characters) contains two consecutive null-terminated strings. These specify the Instance and Class names to be used by both the client and the window manager for looking up resources for the application or as identifying information. This property must be present when the window leaves the Withdrawn state and may be changed only while the window is in the Withdrawn state. Window managers may examine the property only when they start up and when the window leaves the Withdrawn state, but there should be no need for a client to change its state dynamically. The two strings, respectively, are: A string that names the particular instance of the application to which the client that owns this window belongs. Resources that are specified by instance name override any resources that are specified by class name. Instance names can be specified by the user in an operating-system specific manner. On POSIX-conformant systems, the following conventions are used: If "-name NAME" is given on the command line, NAME is used as the instance name. Otherwise, if the environment variable RESOURCE_NAME is set, its value will be used as the instance name. Otherwise, the trailing part of the name used to invoke the program (argv[0] stripped of any directory names) is used as the instance name. A string that names the general class of applications to which the client that owns this window belongs. Resources that are specified by class apply to all applications that have the same class name. Class names are specified by the application writer. Examples of commonly used class names include: "Emacs", "XTerm", "XClock", "XLoad", and so on. Note that WM_CLASS strings are null-terminated and, thus, differ from the general conventions that STRING properties are null-separated. This inconsistency is necessary for backwards compatibility. WM_TRANSIENT_FOR Property The WM_TRANSIENT_FOR property (of type WINDOW) contains the ID of another top-level window. The implication is that this window is a pop-up on behalf of the named window, and window managers may decide not to decorate transient windows or may treat them differently in other ways. In particular, window managers should present newly mapped WM_TRANSIENT_FOR windows without requiring any user interaction, even if mapping top-level windows normally does require interaction. Dialogue boxes, for example, are an example of windows that should have WM_TRANSIENT_FOR set. It is important not to confuse WM_TRANSIENT_FOR with override-redirect. WM_TRANSIENT_FOR should be used in those cases where the pointer is not grabbed while the window is mapped (in other words, if other windows are allowed to be active while the transient is up). If other windows must be prevented from processing input (for example, when implementing pop-up menus), use override-redirect and grab the pointer while the window is mapped. WM_PROTOCOLS Property The WM_PROTOCOLS property (of type ATOM) is a list of atoms. Each atom identifies a communication protocol between the client and the window manager in which the client is willing to participate. Atoms can identify both standard protocols and private protocols specific to individual window managers. All the protocols in which a client can volunteer to take part involve the window manager sending the client a ClientMessage event and the client taking appropriate action. For details of the contents of the event, see In each case, the protocol transactions are initiated by the window manager. The WM_PROTOCOLS property is not required. If it is not present, the client does not want to participate in any window manager protocols. The X Consortium will maintain a registry of protocols to avoid collisions in the name space. The following table lists the protocols that have been defined to date. Protocol Section Purpose WM_TAKE_FOCUS Assignment of input focus WM_SAVE_YOURSELF Appendix C Save client state request (deprecated) WM_DELETE_WINDOW Request to delete top-level window It is expected that this table will grow over time. WM_COLORMAP_WINDOWS Property The WM_COLORMAP_WINDOWS property (of type WINDOW) on a top-level window is a list of the IDs of windows that may need colormaps installed that differ from the colormap of the top-level window. The window manager will watch this list of windows for changes in their colormap attributes. The top-level window is always (implicitly or explicitly) on the watch list. For the details of this mechanism, see WM_CLIENT_MACHINE Property The client should set the WM_CLIENT_MACHINE property (of one of the TEXT types) to a string that forms the name of the machine running the client as seen from the machine running the server.
Window Manager Properties The properties that were described in the previous section are those that the client is responsible for maintaining on its top-level windows. This section describes the properties that the window manager places on client's top-level windows and on the root. WM_STATE Property The window manager will place a WM_STATE property (of type WM_STATE) on each top-level client window that is not in the Withdrawn state. Top-level windows in the Withdrawn state may or may not have the WM_STATE property. Once the top-level window has been withdrawn, the client may re-use it for another purpose. Clients that do so should remove the WM_STATE property if it is still present. Some clients (such as xprop) will ask the user to click over a window on which the program is to operate. Typically, the intent is for this to be a top-level window. To find a top-level window, clients should search the window hierarchy beneath the selected location for a window with the WM_STATE property. This search must be recursive in order to cover all window manager reparenting possibilities. If no window with a WM_STATE property is found, it is recommended that programs use a mapped child-of-root window if one is present beneath the selected location. The contents of the WM_STATE property are defined as follows: Field Type Comments state CARD32 (see the next table) icon WINDOW ID of icon window The following table lists the WM_STATE.state values: State Value WithdrawnState 0 NormalState 1 IconicState 3 Adding other fields to this property is reserved to the X Consortium. Values for the state field other than those defined in the above table are reserved for use by the X Consortium. The state field describes the window manager's idea of the state the window is in, which may not match the client's idea as expressed in the initial_state field of the WM_HINTS property (for example, if the user has asked the window manager to iconify the window). If it is NormalState, the window manager believes the client should be animating its window. If it is IconicState, the client should animate its icon window. In either state, clients should be prepared to handle exposure events from either window. When the window is withdrawn, the window manager will either change the state field's value to WithdrawnState or it will remove the WM_STATE property entirely. The icon field should contain the window ID of the window that the window manager uses as the icon for the window on which this property is set. If no such window exists, the icon field should be None. Note that this window could be but is not necessarily the same window as the icon window that the client may have specified in its WM_HINTS property. The WM_STATE icon may be a window that the window manager has supplied and that contains the client's icon pixmap, or it may be an ancestor of the client's icon window. WM_ICON_SIZE Property A window manager that wishes to place constraints on the sizes of icon pixmaps and/or windows should place a property called WM_ICON_SIZE on the root. The contents of this property are listed in the following table. Field Type Comments min_width CARD32 The data for the icon size series min_height CARD32 max_width CARD32 max_height CARD32 width_inc CARD32 height_inc CARD32 For more details see section 14.1.12 in Xlib - C Language X Interface. Changing Window State From the client's point of view, the window manager will regard each of the client's top-level windows as being in one of three states, whose semantics are as follows: NormalState - The client's top-level window is viewable. IconicState - The client's top-level window is iconic (whatever that means for this window manager). The client can assume that its top-level window is not viewable, its icon_window (if any) will be viewable and, failing that, its icon_pixmap (if any) or its WM_ICON_NAME will be displayed. WithdrawnState - Neither the client's top-level window nor its icon is visible. In fact, the window manager may implement states with semantics other than those described above. For example, a window manager might implement a concept of an "inactive" state in which an infrequently used client's window would be represented as a string in a menu. But this state is invisible to the client, which would see itself merely as being in the Iconic state. Newly created top-level windows are in the Withdrawn state. Once the window has been provided with suitable properties, the client is free to change its state as follows: Withdrawn -> Normal - The client should map the window with WM_HINTS.initial_state being NormalState. Withdrawn -> Iconic - The client should map the window with WM_HINTS.initial_state being IconicState. Normal -> Iconic - The client should send a ClientMessage event as described later in this section. Normal -> Withdrawn - The client should unmap the window and follow it with a synthetic UnmapNotify event as described later in this section. Iconic -> Normal - The client should map the window. The contents of WM_HINTS.initial_state are irrelevant in this case. Iconic -> Withdrawn - The client should unmap the window and follow it with a synthetic UnmapNotify event as described later in this section. Only the client can effect a transition into or out of the Withdrawn state. Once a client's window has left the Withdrawn state, the window will be mapped if it is in the Normal state and the window will be unmapped if it is in the Iconic state. Reparenting window managers must unmap the client's window when it is in the Iconic state, even if an ancestor window being unmapped renders the client's window unviewable. Conversely, if a reparenting window manager renders the client's window unviewable by unmapping an ancestor, the client's window is by definition in the Iconic state and must also be unmapped.
Advice to Implementors Clients can select for StructureNotify on their top-level windows to track transitions between Normal and Iconic states. Receipt of a MapNotify event will indicate a transition to the Normal state, and receipt of an UnmapNotify event will indicate a transition to the Iconic state.
When changing the state of the window to Withdrawn, the client must (in addition to unmapping the window) send a synthetic UnmapNotify event by using a SendEvent request with the following arguments: Argument Value destination The root propogate False event-mask (SubstructureRedirect|SubstructureNotify) event: an UnmapNotify with:      event: The root      window: The window itself      from-configure: False
Rationale The reason for requiring the client to send a synthetic UnmapNotify event is to ensure that the window manager gets some notification of the client's desire to change state, even though the window may already be unmapped when the desire is expressed.
Advice to Implementors For compatibility with obsolete clients, window managers should trigger the transition to the Withdrawn state on the real UnmapNotify rather than waiting for the synthetic one. They should also trigger the transition if they receive a synthetic UnmapNotify on a window for which they have not yet received a real UnmapNotify.
When a client withdraws a window, the window manager will then update or remove the WM_STATE property as described in . Clients that want to re-use a client window (e.g., by mapping it again or reparenting it elsewhere) after withdrawing it must wait for the withdrawal to be complete before proceeding. The preferred method for doing this is for clients to wait for the window manager to update or remove the WM_STATE property. Earlier versions of these conventions prohibited clients from reading the WM_STATE property. Clients operating under the earlier conventions used the technique of tracking ReparentNotify events to wait for the top-level window to be reparented back to the root window. This is still a valid technique; however, it works only for reparenting window managers, and the WM_STATE technique is to be preferred. If the transition is from the Normal to the Iconic state, the client should send a ClientMessage event to the root with: Window == the window to be iconified Type The type field of the ClientMessage event (called the message_type field by Xlib) should not be confused with the code field of the event itself, which will have the value 33 ( ClientMessage). == the atom WM_CHANGE_STATE Format == 32 Data[0] == IconicState
Rationale The format of this ClientMessage event does not match the format of ClientMessages in . This is because they are sent by the window manager to clients, and this message is sent by clients to the window manager.
Other values of data[0] are reserved for future extensions to these conventions. The parameters of the SendEvent request should be those described for the synthetic UnmapNotify event.
Advice to Implementors Clients can also select for VisibilityChange events on their top-level or icon windows. They will then receive a VisibilityNotify (state==FullyObscured) event when the window concerned becomes completely obscured even though mapped (and thus, perhaps a waste of time to update) and a VisibilityNotify (state!=FullyObscured) event when it becomes even partly viewable.
Advice to Implementors When a window makes a transition from the Normal state to either the Iconic or the Withdrawn state, clients should be aware that the window manager may make transients for this window inaccessible. Clients should not rely on transient windows being available to the user when the transient owner window is not in the Normal state. When withdrawing a window, clients are advised to withdraw transients for the window.
Configuring the Window Clients can resize and reposition their top-level windows by using the ConfigureWindow request. The attributes of the window that can be altered with this request are as follows: The [x,y] location of the window's upper left-outer corner The [width,height] of the inner region of the window (excluding borders) The border width of the window The window's position in the stack The coordinate system in which the location is expressed is that of the root (irrespective of any reparenting that may have occurred). The border width to be used and win_gravity position hint to be used are those most recently requested by the client. Client configure requests are interpreted by the window manager in the same manner as the initial window geometry mapped from the Withdrawn state, as described in Clients must be aware that there is no guarantee that the window manager will allocate them the requested size or location and must be prepared to deal with any size and location. If the window manager decides to respond to a ConfigureRequest request by: Not changing the size, location, border width, or stacking order of the window at all. A client will receive a synthetic ConfigureNotify event that describes the (unchanged) geometry of the window. The (x,y) coordinates will be in the root coordinate system, adjusted for the border width the client requested, irrespective of any reparenting that has taken place. The border_width will be the border width the client requested. The client will not receive a real ConfigureNotify event because no change has actually taken place. Moving or restacking the window without resizing it or changing its border width. A client will receive a synthetic ConfigureNotify event following the change that describes the new geometry of the window. The event's (x,y) coordinates will be in the root coordinate system adjusted for the border width the client requested. The border_width will be the border width the client requested. The client may not receive a real ConfigureNotify event that describes this change because the window manager may have reparented the top-level window. If the client does receive a real event, the synthetic event will follow the real one. Resizing the window or changing its border width (regardless of whether the window was also moved or restacked). A client that has selected for StructureNotify events will receive a real ConfigureNotify event. Note that the coordinates in this event are relative to the parent, which may not be the root if the window has been reparented. The coordinates will reflect the actual border width of the window (which the window manager may have changed). The TranslateCoordinates request can be used to convert the coordinates if required. The general rule is that coordinates in real ConfigureNotify events are in the parent's space; in synthetic events, they are in the root space.
Advice to Implementors Clients cannot distinguish between the case where a top-level window is resized and moved from the case where the window is resized but not moved, since a real ConfigureNotify event will be received in both cases. Clients that are concerned with keeping track of the absolute position of a top-level window should keep a piece of state indicating whether they are certain of its position. Upon receipt of a real ConfigureNotify event on the top-level window, the client should note that the position is unknown. Upon receipt of a synthetic ConfigureNotify event, the client should note the position as known, using the position in this event. If the client receives a KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify, EnterNotify or LeaveNotify event on the window (or on any descendant), the client can deduce the top-level window's position from the difference between the (event-x, event-y) and (root-x, root-y) coordinates in these events. Only when the position is unknown does the client need to use the TranslateCoordinates request to find the position of a top-level window.
Clients should be aware that their borders may not be visible. Window managers are free to use reparenting techniques to decorate client's top-level windows with borders containing titles, controls, and other details to maintain a consistent look-and-feel. If they do, they are likely to override the client's attempts to set the border width and set it to zero. Clients, therefore, should not depend on the top-level window's border being visible or use it to display any critical information. Other window managers will allow the top-level windows border to be visible.
Convention Clients should set the desired value of the border-width attribute on all ConfigureWindow requests to avoid a race condition.
Clients that change their position in the stack must be aware that they may have been reparented, which means that windows that used to be siblings no longer are. Using a nonsibling as the sibling parameter on a ConfigureWindow request will cause an error.
Convention Clients that use a ConfigureWindow request to request a change in their position in the stack should do so using None in the sibling field.
Clients that must position themselves in the stack relative to some window that was originally a sibling must do the ConfigureWindow request (in case they are running under a nonreparenting window manager), be prepared to deal with a resulting error, and then follow with a synthetic ConfigureRequest event by invoking a SendEvent request with the following arguments: Argument Value destination The root propogate False event-mask (SubstructureRedirect|SubstructureNotify) event: an ConfigureRequest with:      event: The root      window: The window itself      ... Other parameters from the ConfigureWindow request Window managers are in any case free to position windows in the stack as they see fit, and so clients should not rely on receiving the stacking order they have requested. Clients should ignore the above-sibling field of both real and synthetic ConfigureNotify events received on their top-level windows because this field may not contain useful information.
Changing Window Attributes The attributes that may be supplied when a window is created may be changed by using the ChangeWindowAttributes request. The window attributes are listed in the following table: Attribute Private to Client Background pixmap Yes Background pixel Yes Border pixmap Yes Border pixel Yes Bit gravity Yes Window gravity No Backing-store hint Yes Save-under hint No Event Mask No Do-not-propagate mask Yes Override-redirect flag No Colormap Yes Cursor Yes Most attributes are private to the client and will never be interfered with by the window manager. For the attributes that are not private to the client: The window manager is free to override the window gravity; a reparenting window manager may want to set the top-level window's window gravity for its own purposes. Clients are free to set the save-under hint on their top-level windows, but they must be aware that the hint may be overridden by the window manager. Windows, in effect, have per-client event masks, and so, clients may select for whatever events are convenient irrespective of any events the window manager is selecting for. There are some events for which only one client at a time may select, but the window manager should not select for them on any of the client's windows. Clients can set override-redirect on top-level windows but are encouraged not to do so except as described in . and . Input Focus There are four models of input handling: No Input - The client never expects keyboard input. An example would be xload or another output-only client. Passive Input - The client expects keyboard input but never explicitly sets the input focus. An example would be a simple client with no subwindows, which will accept input in PointerRoot mode or when the window manager sets the input focus to its top-level window (in click-to-type mode). Locally Active Input - The client expects keyboard input and explicitly sets the input focus, but it only does so when one of its windows already has the focus. An example would be a client with subwindows defining various data entry fields that uses Next and Prev keys to move the input focus between the fields. It does so when its top-level window has acquired the focus in PointerRoot mode or when the window manager sets the input focus to its top-level window (in click-to-type mode). Globally Active Input - The client expects keyboard input and explicitly sets the input focus, even when it is in windows the client does not own. An example would be a client with a scroll bar that wants to allow users to scroll the window without disturbing the input focus even if it is in some other window. It wants to acquire the input focus when the user clicks in the scrolled region but not when the user clicks in the scroll bar itself. Thus, it wants to prevent the window manager from setting the input focus to any of its windows. The four input models and the corresponding values of the input field and the presence or absence of the WM_TAKE_FOCUS atom in the WM_PROTOCOLS property are listed in the following table: Input Model Input Field WM_TAKE_FOCUS No Input False Absent Passive True Absent Locally Active True Present Globally Active False Present Passive and Locally Active clients set the input field of WM_HINTS to True, which indicates that they require window manager assistance in acquiring the input focus. No Input and Globally Active clients set the input field to False, which requests that the window manager not set the input focus to their top-level window. Clients that use a SetInputFocus request must set the time field to the timestamp of the event that caused them to make the attempt. This cannot be a FocusIn event because they do not have timestamps. Clients may also acquire the focus without a corresponding EnterNotify. Note that clients must not use CurrentTime in the time field. Clients using the Globally Active model can only use a SetInputFocus request to acquire the input focus when they do not already have it on receipt of one of the following events: ButtonPress ButtonRelease Passive-grabbed KeyPress Passive-grabbed KeyRelease In general, clients should avoid using passive-grabbed key events for this purpose, except when they are unavoidable (as, for example, a selection tool that establishes a passive grab on the keys that cut, copy, or paste). The method by which the user commands the window manager to set the focus to a window is up to the window manager. For example, clients cannot determine whether they will see the click that transfers the focus. Windows with the atom WM_TAKE_FOCUS in their WM_PROTOCOLS property may receive a ClientMessage event from the window manager (as described in . ) with WM_TAKE_FOCUS in its data[0] field and a valid timestamp (i.e., not CurrentTime) in its data[1] field. If they want the focus, they should respond with a SetInputFocus request with its window field set to the window of theirs that last had the input focus or to their default input window, and the time field set to the timestamp in the message. For further information, see A client could receive WM_TAKE_FOCUS when opening from an icon or when the user has clicked outside the top-level window in an area that indicates to the window manager that it should assign the focus (for example, clicking in the headline bar can be used to assign the focus). The goal is to support window managers that want to assign the input focus to a top-level window in such a way that the top-level window either can assign it to one of its subwindows or can decline the offer of the focus. For example, a clock or a text editor with no currently open frames might not want to take focus even though the window manager generally believes that clients should take the input focus after being deiconified or raised. Clients that set the input focus need to decide a value for the revert-to field of the SetInputFocus request. This determines the behavior of the input focus if the window the focus has been set to becomes not viewable. The value can be any of the following: Parent - In general, clients should use this value when assigning focus to one of their subwindows. Unmapping the subwindow will cause focus to revert to the parent, which is probably what you want. PointerRoot - Using this value with a click-to-type focus management policy leads to race conditions because the window becoming unviewable may coincide with the window manager deciding to move the focus elsewhere. None - Using this value causes problems if the window manager reparents the window, as most window managers will, and then crashes. The input focus will be None, and there will probably be no way to change it. Note that neither PointerRoot nor None is really safe to use.
Convention Clients that invoke a SetInputFocus request should set the revert-to argument to Parent.
A convention is also required for clients that want to give up the input focus. There is no safe value set for them to set the input focus to; therefore, they should ignore input material.
Convention Clients should not give up the input focus of their own volition. They should ignore input that they receive instead.
Colormaps The window manager is responsible for installing and uninstalling colormaps on behalf of clients with top-level windows that the window manager manages. Clients provide the window manager with hints as to which colormaps to install and uninstall. Clients must not install or uninstall colormaps themselves (except under the circumstances noted below). When a client's top-level window gets the colormap focus (as a result of whatever colormap focus policy is implemented by the window manager), the window manager will ensure that one or more of the client's colormaps are installed. Clients whose top-level windows and subwindows all use the same colormap should set its ID in the colormap field of the top-level window's attributes. They should not set a WM_COLORMAP_WINDOWS property on the top-level window. If they want to change the colormap, they should change the top-level window's colormap attribute. The window manager will track changes to the window's colormap attribute and install colormaps as appropriate. Clients that create windows can use the value CopyFromParent to inherit their parent's colormap. Window managers will ensure that the root window's colormap field contains a colormap that is suitable for clients to inherit. In particular, the colormap will provide distinguishable colors for BlackPixel and WhitePixel. Top-level windows that have subwindows or override-redirect pop-up windows whose colormap requirements differ from the top-level window should have a WM_COLORMAP_WINDOWS property. This property contains a list of IDs for windows whose colormaps the window manager should attempt to have installed when, in the course of its individual colormap focus policy, it assigns the colormap focus to the top-level window (see ). The list is ordered by the importance to the client of having the colormaps installed. The window manager will track changes to this property and will track changes to the colormap attribute of the windows in the property. If the relative importance of colormaps changes, the client should update the WM_COLORMAP_WINDOWS property to reflect the new ordering. If the top-level window does not appear in the list, the window manager will assume it to be of higher priority than any window in the list. WM_TRANSIENT_FOR windows can either have their own WM_COLORMAP_WINDOWS property or appear in the property of the window they are transient for, as appropriate.
Rationale An alternative design was considered for how clients should hint to the window manager about their colormap requirements. This alternative design specified a list of colormaps instead of a list of windows. The current design, a list of windows, was chosen for two reasons. First, it allows window managers to find the visuals of the colormaps, thus permitting visual-dependent colormap installation policies. Second, it allows window managers to select for VisibilityChange events on the windows concerned and to ensure that colormaps are only installed if the windows that need them are visible. The alternative design allows for neither of these policies.
Advice to Implementors Clients should be aware of the min-installed-maps and max-installed-maps fields of the connection setup information, and the effect that the minimum value has on the "required list" defined by the Protocol in the description of the InstallColormap request. Briefly, the min-installed-maps most recently installed maps are guaranteed to be installed. This value is often one; clients needing multiple colormaps should beware.
Whenever possible, clients should use the mechanisms described above and let the window manager handle colormap installation. However, clients are permitted to perform colormap installation on their own while they have the pointer grabbed. A client performing colormap installation must notify the window manager prior to the first installation. When the client has finished its colormap installation, it must also notify the window manager. The client notifies the window manager by issuing a SendEvent request with the following arguments: Argument Value destination The root window of the screen on which the colormap is installed propogate False event-mask ColormapChange event: an ClientMessage with:      window: The root window, as above      type: WM_COLORMAP_NOTIFY      format 32      data[0] the timestamp of the event that caused the client to start or stop installing colormaps      data[1] 1 if the client is starting colormap installation, 0 if the client is finished with colormap installation      data[2] reserved, must be zero      data[3] reserved, must be zero      data[4] reserved, must be zero This feature was introduced in version 2.0 of this document, and there will be a significant period of time before all window managers can be expected to implement this feature. Before using this feature, clients must check the compliance level of the window manager (using the mechanism described in ) to verify that it supports this feature. This is necessary to prevent colormap installation conflicts between clients and older window managers. Window managers should refrain from installing colormaps while a client has requested control of colormap installation. The window manager should continue to track the set of installed colormaps so that it can reinstate its colormap focus policy when the client has finished colormap installation. This technique has race conditions that may result in the colormaps continuing to be installed even after a client has issued its notification message. For example, the window manager may have issued some InstallColormap requests that are not executed until after the client's SendEvent and InstallColormap requests, thus uninstalling the client's colormaps. If this occurs while the client still has the pointer grabbed and before the client has issued the "finished" message, the client may reinstall the desired colormaps.
Advice to Implementors Clients are expected to use this mechanism for things such as pop-up windows and for animations that use override-redirect windows. If a client fails to issue the "finished" message, the window manager may be left in a state where its colormap installation policy is suspended. Window manager implementors may want to implement a feature that resets colormap installation policy in response to a command from the user.
Icons A client can hint to the window manager about the desired appearance of its icon by setting: A string in WM_ICON_NAME. All clients should do this because it provides a fallback for window managers whose ideas about icons differ widely from those of the client. A Pixmap into the icon_pixmap field of the WM_HINTS property and possibly another into the icon_mask field. The window manager is expected to display the pixmap masked by the mask. The pixmap should be one of the sizes found in the WM_ICON_SIZE property on the root. If this property is not found, the window manager is unlikely to display icon pixmaps. Window managers usually will clip or tile pixmaps that do not match WM_ICON_SIZE. A window into the icon_window field of the WM_HINTS property. The window manager is expected to map that window whenever the client is in the Iconic state. In general, the size of the icon window should be one of those specified in WM_ICON_SIZE on the root, if it exists. Window managers are free to resize icon windows. In the Iconic state, the window manager usually will ensure that: If the window's WM_HINTS.icon_window is set, the window it names is visible. If the window's WM_HINTS.icon_window is not set but the window's WM_HINTS.icon_pixmap is set, the pixmap it names is visible. Otherwise, the window's WM_ICON_NAME string is visible. Clients should observe the following conventions about their icon windows:
Conventions The icon window should be an InputOutput child of the root. The icon window should be one of the sizes specified in the WM_ICON_SIZE property on the root. The icon window should use the root visual and default colormap for the screen in question. Clients should not map their icon windows. Clients should not unmap their icon windows. Clients should not configure their icon windows. Clients should not set override-redirect on their icon windows or select for ResizeRedirect events on them. Clients must not depend on being able to receive input events by means of their icon windows. Clients must not manipulate the borders of their icon windows. Clients must select for Exposure events on their icon window and repaint it when requested.
Window managers will differ as to whether they support input events to client's icon windows; most will allow the client to receive some subset of the keys and buttons. Window managers will ignore any WM_NAME, WM_ICON_NAME, WM_NORMAL_HINTS, WM_HINTS, WM_CLASS, WM_TRANSIENT_FOR, WM_PROTOCOLS, WM_COLORMAP_WINDOWS, WM_COMMAND, or WM_CLIENT_MACHINE properties they find on icon windows.
Pop-up Windows Clients that wish to pop up a window can do one of three things: They can create and map another normal top-level window, which will get decorated and managed as normal by the window manager. See the discussion of window groups that follows. If the window will be visible for a relatively short time and deserves a somewhat lighter treatment, they can set the WM_TRANSIENT_FOR property. They can expect less decoration but can set all the normal window manager properties on the window. An example would be a dialog box. If the window will be visible for a very short time and should not be decorated at all, the client can set override-redirect on the window. In general, this should be done only if the pointer is grabbed while the window is mapped. The window manager will never interfere with these windows, which should be used with caution. An example of an appropriate use is a pop-up menu.
Advice to Implementors The user will not be able to move, resize, restack, or transfer the input focus to override-redirect windows, since the window manager is not managing them. If it is necessary for a client to receive keystrokes on an override-redirect window, either the client must grab the keyboard or the client must have another top-level window that is not override-redirect and that has selected the Locally Active or Globally Active focus model. The client may set the focus to the override-redirect window when the other window receives a WM_TAKE_FOCUS message or one of the events listed in in the description of the Globally Active focus model.
Window managers are free to decide if WM_TRANSIENT_FOR windows should be iconified when the window they are transient for is. Clients displaying WM_TRANSIENT_FOR windows that have (or request to have) the window they are transient for iconified do not need to request that the same operation be performed on the WM_TRANSIENT_FOR window; the window manager will change its state if that is the policy it wishes to enforce.
Window Groups A set of top-level windows that should be treated from the user's point of view as related (even though they may belong to a number of clients) should be linked together using the window_group field of the WM_HINTS structure. One of the windows (that is, the one the others point to) will be the group leader and will carry the group as opposed to the individual properties. Window managers may treat the group leader differently from other windows in the group. For example, group leaders may have the full set of decorations, and other group members may have a restricted set. It is not necessary that the client ever map the group leader; it may be a window that exists solely as a placeholder. It is up to the window manager to determine the policy for treating the windows in a group. At present, there is no way for a client to request a group, as opposed to an individual, operation.
Client Responses to Window Manager Actions The window manager performs a number of operations on client resources, primarily on their top-level windows. Clients must not try to fight this but may elect to receive notification of the window manager's operations. Reparenting Clients must be aware that some window managers will reparent their top-level windows so that a window that was created as a child of the root will be displayed as a child of some window belonging to the window manager. The effects that this reparenting will have on the client are as follows: The parent value returned by a QueryTree request will no longer be the value supplied to the CreateWindow request that created the reparented window. There should be no need for the client to be aware of the identity of the window to which the top-level window has been reparented. In particular, a client that wishes to create further top-level windows should continue to use the root as the parent for these new windows. The server will interpret the (x,y) coordinates in a ConfigureWindow request in the new parent's coordinate space. In fact, they usually will not be interpreted by the server because a reparenting window manager usually will have intercepted these operations (see ). Clients should use the root coordinate space for these requests (see ). ConfigureWindow requests that name a specific sibling window may fail because the window named, which used to be a sibling, no longer is after the reparenting operation (see ). The (x,y) coordinates returned by a GetGeometry request are in the parent's coordinate space and are thus not directly useful after a reparent operation. A background of ParentRelative will have unpredictable results. A cursor of None will have unpredictable results. Clients that want to be notified when they are reparented can select for StructureNotify events on their top-level window. They will receive a ReparentNotify event if and when reparenting takes place. When a client withdraws a top-level window, the window manager will reparent it back to the root window if the window had been reparented elsewhere. If the window manager reparents a client's window, the reparented window will be placed in the save-set of the parent window. This means that the reparented window will not be destroyed if the window manager terminates and will be remapped if it was unmapped. Note that this applies to all client windows the window manager reparents, including transient windows and client icon windows. Redirection of Operations Clients must be aware that some window managers will arrange for some client requests to be intercepted and redirected. Redirected requests are not executed; they result instead in events being sent to the window manager, which may decide to do nothing, to alter the arguments, or to perform the request on behalf of the client. The possibility that a request may be redirected means that a client cannot assume that any redirectable request is actually performed when the request is issued or is actually performed at all. The requests that may be redirected are MapWindow, ConfigureWindow, and CirculateWindow.
Advice to Implementors The following is incorrect because the MapWindow request may be intercepted and the PolyLine output made to an unmapped window: MapWindow A PolyLine A GC <point> <point> ... The client must wait for an Expose event before drawing in the window. This is true even if the client set the backing-store attribute to Always. The backing-store attribute is a only a hint, and the server may stop maintaining backing store contents at any time. This next example incorrectly assumes that the ConfigureWindow request is actually executed with the arguments supplied: ConfigureWindow width=N height=M <output assuming window is N by M> The client should select for StructureNotify on its window and monitor the window's size by tracking ConfigureNotify events. Clients must be especially careful when attempting to set the focus to a window that they have just mapped. This sequence may result in an X protocol error: MapWindow B SetInputFocus B If the MapWindow request has been intercepted, the window will still be unmapped, causing the SetInputFocus request to generate the error. The solution to this problem is for clients to select for VisibilityChange on the window and to delay the issuance of the SetInputFocus request until they have received a VisibilityNotify event indicating that the window is visible. This technique does not guarantee correct operation. The user may have iconified the window by the time the SetInputFocus request reaches the server, still causing an error. Or the window manager may decide to map the window into Iconic state, in which case the window will not be visible. This will delay the generation of the VisibilityNotify event indefinitely. Clients must be prepared to handle these cases.
A window with the override-redirect bit set is immune from redirection, but the bit should be set on top-level windows only in cases where other windows should be prevented from processing input while the override-redirect window is mapped (see ) and while responding to ResizeRequest events (see ). Clients that have no non-Withdrawn top-level windows and that map an override-redirect top-level window are taking over total responsibility for the state of the system. It is their responsibility to: Prevent any preexisting window manager from interfering with their activities Restore the status quo exactly after they unmap the window so that any preexisting window manager does not get confused In effect, clients of this kind are acting as temporary window managers. Doing so is strongly discouraged because these clients will be unaware of the user interface policies the window manager is trying to maintain and because their user interface behavior is likely to conflict with that of less demanding clients.
Window Move If the window manager moves a top-level window without changing its size, the client will receive a synthetic ConfigureNotify event following the move that describes the new location in terms of the root coordinate space. Clients must not respond to being moved by attempting to move themselves to a better location. Any real ConfigureNotify event on a top-level window implies that the window's position on the root may have changed, even though the event reports that the window's position in its parent is unchanged because the window may have been reparented. Note that the coordinates in the event will not, in this case, be directly useful. The window manager will send these events by using a SendEvent request with the following arguments: Argument Value destination The client's window propagate False event-mask StructureNotify Window Resize The client can elect to receive notification of being resized by selecting for StructureNotify events on its top-level windows. It will receive a ConfigureNotify event. The size information in the event will be correct, but the location will be in the parent window (which may not be the root). The response of the client to being resized should be to accept the size it has been given and to do its best with it. Clients must not respond to being resized by attempting to resize themselves to a better size. If the size is impossible to work with, clients are free to request to change to the Iconic state. Iconify and Deiconify A top-level window that is not Withdrawn will be in the Normal state if it is mapped and in the Iconic state if it is unmapped. This will be true even if the window has been reparented; the window manager will unmap the window as well as its parent when switching to the Iconic state. The client can elect to be notified of these state changes by selecting for StructureNotify events on the top-level window. It will receive a UnmapNotify event when it goes Iconic and a MapNotify event when it goes Normal. Colormap Change Clients that wish to be notified of their colormaps being installed or uninstalled should select for ColormapNotify events on their top-level windows and on any windows they have named in WM_COLORMAP_WINDOWS properties on their top-level windows. They will receive ColormapNotify events with the new field FALSE when the colormap for that window is installed or uninstalled. Input Focus Clients can request notification that they have the input focus by selecting for FocusChange events on their top-level windows; they will receive FocusIn and FocusOut events. Clients that need to set the input focus to one of their subwindows should not do so unless they have set WM_TAKE_FOCUS in their WM_PROTOCOLS property and have done one of the following: Set the input field of WM_HINTS to True and actually have the input focus in one of their top-level windows Set the input field of WM_HINTS to False and have received a suitable event as described in . Have received a WM_TAKE_FOCUS message as described in . Clients should not warp the pointer in an attempt to transfer the focus; they should set the focus and leave the pointer alone. For further information, see . Once a client satisfies these conditions, it may transfer the focus to another of its windows by using the SetInputFocus request, which is defined as follows: SetInputFocus focus: WINDOW or PointerRoot or None revert-to: { Parent, PointerRoot, None } time: TIMESTAMP or CurrentTime
Conventions Clients that use a SetInputFocus request must set the time argument to the timestamp of the event that caused them to make the attempt. This cannot be a FocusIn event because they do not have timestamps. Clients may also acquire the focus without a corresponding EnterNotify event. Clients must not use CurrentTime for the time argument. Clients that use a SetInputFocus request to set the focus to one of their windows must set the revert-to field to Parent.
ClientMessage Events There is no way for clients to prevent themselves being sent ClientMessage events. Top-level windows with a WM_PROTOCOLS property may be sent ClientMessage events specific to the protocols named by the atoms in the property (see ). For all protocols, the ClientMessage events have the following: WM_PROTOCOLS as the type field Format 32 The atom that names their protocol in the data[0] field A timestamp in their data[1] field The remaining fields of the event, including the window field, are determined by the protocol. These events will be sent by using a SendEvent request with the following arguments: Argument Value destination The client's window propagate False event-mask () empty event As specified by the protocol Window Deletion Clients, usually those with multiple top-level windows, whose server connection must survive the deletion of some of their top-level windows, should include the atom WM_DELETE_WINDOW in the WM_PROTOCOLS property on each such window. They will receive a ClientMessage event as described above whose data[0] field is WM_DELETE_WINDOW. Clients receiving a WM_DELETE_WINDOW message should behave as if the user selected "delete window" from a hypothetical menu. They should perform any confirmation dialog with the user and, if they decide to complete the deletion, should do the following: Either change the window's state to Withdrawn (as described in ) or destroy the window. Destroy any internal state associated with the window. If the user aborts the deletion during the confirmation dialog, the client should ignore the message. Clients are permitted to interact with the user and ask, for example, whether a file associated with the window to be deleted should be saved or the window deletion should be cancelled. Clients are not required to destroy the window itself; the resource may be reused, but all associated state (for example, backing store) should be released. If the client aborts a destroy and the user then selects DELETE WINDOW again, the window manager should start the WM_DELETE_WINDOW protocol again. Window managers should not use DestroyWindow requests on a window that has WM_DELETE_WINDOW in its WM_PROTOCOLS property. Clients that choose not to include WM_DELETE_WINDOW in the WM_PROTOCOLS property may be disconnected from the server if the user asks for one of the client's top-level windows to be deleted. Redirecting Requests Normal clients can use the redirection mechanism just as window managers do by selecting for SubstructureRedirect events on a parent window or ResizeRedirect events on a window itself. However, at most, one client per window can select for these events, and a convention is needed to avoid clashes.
Convention Clients (including window managers) should select for SubstructureRedirect and ResizeRedirect events only on windows that they own.
In particular, clients that need to take some special action if they are resized can select for ResizeRedirect events on their top-level windows. They will receive a ResizeRequest event if the window manager resizes their window, and the resize will not actually take place. Clients are free to make what use they like of the information that the window manager wants to change their size, but they must configure the window to the width and height specified in the event in a timely fashion. To ensure that the resize will actually happen at this stage instead of being intercepted and executed by the window manager (and thus restarting the process), the client needs temporarily to set override-redirect on the window.
Convention Clients receiving ResizeRequest events must respond by doing the following: Setting override-redirect on the window specified in the event Configuring the window specified in the event to the width and height specified in the event as soon as possible and before making any other geometry requests Clearing override-redirect on the window specified in the event
If a window manager detects that a client is not obeying this convention, it is free to take whatever measures it deems appropriate to deal with the client.
Communication with the Window Manager by Means of Selections For each screen they manage, window managers will acquire ownership of a selection named WM_Sn, where n is the screen number, as described in Window managers should comply with the conventions for "Manager Selections" described in . The intent is for clients to be able to request a variety of information or services by issuing conversion requests on this selection. Window managers should support conversion of the following target on their manager selection: Atom Type Data Received VERSION INTEGER Two integers, which are the major and minor release numbers (respectively) of the ICCCM with which the window manager complies. For this version of the ICCCM, the numbers are 2 and 0. As a special case, clients not wishing to implement a selection request may simply issue a GetSelectionOwner request on the appropriate WM_Sn selection. If this selection is owned, clients may assume that the window manager complies with ICCCM version 2.0 or later. Summary of Window Manager Property Types The window manager properties are summarized in the following table (see also section 14.1 of Xlib - C Language X Interface). Name Type Format See Section WM_CLASS STRING 8 WM_CLIENT_MACHINE TEXT WM_COLORMAP_WINDOWS WINDOW 32 WM_HINTS WM_HINTS 32 WM_ICON_NAME TEXT WM_ICON_SIZE WM_ICON_SIZE 32 WM_NAME TEXT WM_NORMAL_HINTS WM_SIZE_HINTS 32 WM_PROTOCOLS ATOM 32 WM_STATE WM_STATE 32 WM_TRANSIENT_FOR WINDOW 32
Session Management and Additional Inter-Client Exchanges This section contains some conventions for clients that participate in session management. See X Session Management Protocol for further details. Clients that do not support this protocol cannot expect their window state (e.g., WM_STATE, position, size, and stacking order) to be preserved across sessions. Client Support for Session Management Each session participant will obtain a unique client identifier (client-ID) from the session manager. The client must identify one top-level window as the "client leader." This window must be created by the client. It may be in any state, including the Withdrawn state. The client leader window must have a SM_CLIENT_ID property, which contains the client-ID obtained from the session management protocol. That property must: Be of type STRING Be of format 8 Contain the client-ID as a string of XPCS characters encoded using ISO 8859-1 All top-level, nontransient windows created by a client on the same display as the client leader must have a WM_CLIENT_LEADER property. This property contains a window ID that identifies the client leader window. The client leader window must have a WM_CLIENT_LEADER property containing its own window ID (i.e., the client leader window is pointing to itself). Transient windows need not have a WM_CLIENT_LEADER property if the client leader can be determined using the information in the WM_TRANSIENT_FOR property. The WM_CLIENT_LEADER property must: Be of type WINDOW Be of format 32 Contain the window ID of the client leader window A client must withdraw all of its top-level windows on the same display before modifying either the WM_CLIENT_LEADER or the SM_CLIENT_ID property of its client leader window. It is necessary that other clients be able to uniquely identify a window (across sessions) among all windows related to the same client-ID. For example, a window manager can require this unique ID to restore geometry information from a previous session, or a workspace manager could use it to restore information about which windows are in which workspace. A client may optionally provide a WM_WINDOW_ROLE property to uniquely identify a window within the scope specified above. The combination of SM_CLIENT_ID and WM_WINDOW_ROLE can be used by other clients to uniquely identify a window across sessions. If the WM_WINDOW_ROLE property is not specified on a top-level window, a client that needs to uniquely identify that window will try to use instead the values of WM_CLASS and WM_NAME. If a client has multiple windows with identical WM_CLASS and WM_NAME properties, then it should provide a WM_WINDOW_ROLE property. The client must set the WM_WINDOW_ROLE property to a string that uniquely identifies that window among all windows that have the same client leader window. The property must: Be of type STRING Be of format 8 Contain a string restricted to the XPCS characters, encoded in ISO 8859-1 Window Manager Support for Session Management A window manager supporting session management must register with the session manager and obtain its own client-ID. The window manager should save and restore information such as the WM_STATE, the layout of windows on the screen, and their stacking order for every client window that has a valid SM_CLIENT_ID property (on itself, or on the window named by WM_CLIENT_LEADER) and that can be uniquely identified. Clients are allowed to change this state during the first phase of the session checkpoint process. Therefore, window managers should request a second checkpoint phase and save clients' state only during that phase. Support for ICE Client Rendezvous The Inter-Client Exchange protocol (ICE) defined as of X11R6 specifies a generic communication framework, independent of the X server, for data exchange between arbitrary clients. ICE also defines a protocol for any two ICE clients who also have X connections to the same X server to locate (rendezvous with) each other. This protocol, called the "ICE X Rendezvous" protocol, is defined in the ICE specification, Appendix B, and uses the property ICE_PROTOCOLS plus ClientMessage events. Refer to that specification for complete details. Manipulation of Shared Resources X Version 11 permits clients to manipulate a number of shared resources, for example, the input focus, the pointer, and colormaps. Conventions are required so that clients share resources in an orderly fashion. The Input Focus Clients that explicitly set the input focus must observe one of two modes: Locally active mode Globally active mode
Conventions Locally active clients should set the input focus to one of their windows only when it is already in one of their windows or when they receive a WM_TAKE_FOCUS message. They should set the input field of the WM_HINTS structure to True. Globally active clients should set the input focus to one of their windows only when they receive a button event and a passive-grabbed key event, or when they receive a WM_TAKE_FOCUS message. They should set the input field of the WM_HINTS structure to False. In addition, clients should use the timestamp of the event that caused them to attempt to set the input focus as the time field on the SetInputFocus request, not CurrentTime.
The Pointer In general, clients should not warp the pointer. Window managers, however, may do so (for example, to maintain the invariant that the pointer is always in the window with the input focus). Other window managers may want to preserve the illusion that the user is in sole control of the pointer.
Conventions Clients should not warp the pointer. Clients that insist on warping the pointer should do so only with the src-window argument of the WarpPointer request set to one of their windows.
Grabs A client's attempt to establish a button or a key grab on a window will fail if some other client has already established a conflicting grab on the same window. The grabs, therefore, are shared resources, and their use requires conventions. In conformance with the principle that clients should behave, as far as possible, when a window manager is running as they would when it is not, a client that has the input focus may assume that it can receive all the available keys and buttons.
Convention Window managers should ensure that they provide some mechanism for their clients to receive events from all keys and all buttons, except for events involving keys whose KeySyms are registered as being for window management functions (for example, a hypothetical WINDOW KeySym).
In other words, window managers must provide some mechanism by which a client can receive events from every key and button (regardless of modifiers) unless and until the X Consortium registers some KeySyms as being reserved for window management functions. Currently, no KeySyms are registered for window management functions. Even so, clients are advised to allow the key and button combinations used to elicit program actions to be modified, because some window managers may choose not to observe this convention or may not provide a convenient method for the user to transmit events from some keys.
Convention Clients should establish button and key grabs only on windows that they own.
In particular, this convention means that a window manager that wishes to establish a grab over the client's top-level window should either establish the grab on the root or reparent the window and establish the grab on a proper ancestor. In some cases, a window manager may want to consume the event received, placing the window in a state where a subsequent such event will go to the client. Examples are: Clicking in a window to set focus with the click not being offered to the client Clicking in a buried window to raise it, again, with the click not offered to the client More typically, a window manager should add to, rather than replace, the client's semantics for key+button combinations by allowing the event to be used by the client after the window manager is done with it. To ensure this, the window manager should establish the grab on the parent by using the following: pointer/keyboard-mode == Synchronous Then, the window manager should release the grab by using an AllowEvents request with the following specified: mode == ReplayPointer/Keyboard In this way, the client will receive the events as if they had not been intercepted. Obviously, these conventions place some constraints on possible user interface policies. There is a trade-off here between freedom for window managers to implement their user interface policies and freedom for clients to implement theirs. The dilemma is resolved by: Allowing window managers to decide if and when a client will receive an event from any given key or button Placing a requirement on the window manager to provide some mechanism, perhaps a "Quote" key, by which the user can send an event from any key or button to the client
Colormaps prescribes conventions for clients to communicate with the window manager about their colormap needs. If your clients are DirectColor type applications, you should consult section 14.3 of Xlib - C Language X Interface for conventions connected with sharing standard colormaps. They should look for and create the properties described there on the root window of the appropriate screen. The contents of the RGB_COLOR_MAP type property are as follows: Field Type Comments colormap COLORMAP ID of the colormap described red_max CARD32 Values for pixel calculations red_mult CARD32 green_max CARD32 green_mult CARD32 blue_max CARD32 blue_mult CARD32 base_pixel CARD32 visual_id VISUALID Visual to which colormap belongs kill_id CARD32 ID for destroying the resources When deleting or replacing an RGB_COLOR_MAP, it is not sufficient to delete the property; it is important to free the associated colormap resources as well. If kill_id is greater than one, the resources should be freed by issuing a KillClient request with kill_id as the argument. If kill_id is one, the resources should be freed by issuing a FreeColormap request with colormap as the colormap argument. If kill_id is zero, no attempt should be made to free the resources. A client that creates an RGB_COLOR_MAP for which the colormap resource is created specifically for this purpose should set kill_id to one (and can create more than one such standard colormap using a single connection). A client that creates an RGB_COLOR_MAP for which the colormap resource is shared in some way (for example, is the default colormap for the root window) should create an arbitrary resource and use its resource ID for kill_id (and should create no other standard colormaps on the connection).
Convention If an RGB_COLOR_MAP property is too short to contain the visual_id field, it can be assumed that the visual_id is the root visual of the appropriate screen. If an RGB_COLOR_MAP property is too short to contain the kill_id field, a value of zero can be assumed.
During the connection handshake, the server informs the client of the default colormap for each screen. This is a colormap for the root visual, and clients can use it to improve the extent of colormap sharing if they use the root visual.
The Keyboard Mapping The X server contains a table (which is read by GetKeyboardMapping requests) that describes the set of symbols appearing on the corresponding key for each keycode generated by the server. This table does not affect the server's operations in any way; it is simply a database used by clients that attempt to understand the keycodes they receive. Nevertheless, it is a shared resource and requires conventions. It is possible for clients to modify this table by using a ChangeKeyboardMapping request. In general, clients should not do this. In particular, this is not the way in which clients should implement key bindings or key remapping. The conversion between a sequence of keycodes received from the server and a string in a particular encoding is a private matter for each client (as it must be in a world where applications may be using different encodings to support different languages and fonts). See the Xlib reference manual for converting keyboard events to text. The only valid reason for using a ChangeKeyboardMapping request is when the symbols written on the keys have changed as, for example, when a Dvorak key conversion kit or a set of APL keycaps has been installed. Of course, a client may have to take the change to the keycap on trust. The following illustrates a permissible interaction between a client and a user: "You just started me on a server without a Pause key. Please choose a key to be the Pause key and press it now." Presses the Scroll Lock key "Adding Pause to the symbols on the Scroll Lock key: Confirm or Abort." Confirms Uses a ChangeKeyboardMapping request to add Pause to the keycode that already contains Scroll Lock and issues this request, "Please paint Pause on the Scroll Lock key." Clients should not use ChangeKeyboardMapping requests. If a client succeeds in changing the keyboard mapping table, all clients will receive MappingNotify (request==Keyboard) events. There is no mechanism to avoid receiving these events.
Convention Clients receiving MappingNotify (request==Keyboard) events should update any internal keycode translation tables they are using.
The Modifier Mapping X Version 11 supports 8 modifier bits of which 3 are preassigned to Shift, Lock, and Control. Each modifier bit is controlled by the state of a set of keys, and these sets are specified in a table accessed by GetModifierMapping and SetModifierMapping requests. This table is a shared resource and requires conventions. A client that needs to use one of the preassigned modifiers should assume that the modifier table has been set up correctly to control these modifiers. The Lock modifier should be interpreted as Caps Lock or Shift Lock according as the keycodes in its controlling set include XK_Caps_Lock or XK_Shift_Lock.
Convention Clients should determine the meaning of a modifier bit from the KeySyms being used to control it.
A client that needs to use an extra modifier (for example, META) should do the following: Scan the existing modifier mappings. If it finds a modifier that contains a keycode whose set of KeySyms includes XK_Meta_L or XK_Meta_R, it should use that modifier bit. If there is no existing modifier controlled by XK_Meta_L or XK_Meta_R, it should select an unused modifier bit (one with an empty controlling set) and do the following: If there is a keycode with XL_Meta_L in its set of KeySyms, add that keycode to the set for the chosen modifier. If there is a keycode with XL_Meta_R in its set of KeySyms, add that keycode to the set for the chosen modifier. If the controlling set is still empty, interact with the user to select one or more keys to be META. If there are no unused modifier bits, ask the user to take corrective action.
Conventions Clients needing a modifier not currently in use should assign keycodes carrying suitable KeySyms to an unused modifier bit. Clients assigning their own modifier bits should ask the user politely to remove his or her hands from the key in question if their SetModifierMapping request returns a Busy status.
There is no good solution to the problem of reclaiming assignments to the five nonpreassigned modifiers when they are no longer being used.
Convention The user must use xmodmap or some other utility to deassign obsolete modifier mappings by hand.
When a client succeeds in performing a SetModifierMapping request, all clients will receive MappingNotify (request==Modifier) events. There is no mechanism for preventing these events from being received. A client that uses one of the nonpreassigned modifiers that receives one of these events should do a GetModifierMapping request to discover the new mapping, and if the modifier it is using has been cleared, it should reinstall the modifier. Note that a GrabServer request must be used to make the GetModifierMapping and SetModifierMapping pair in these transactions atomic.
Device Color Characterization The X protocol provides explicit Red, Green, and Blue (RGB) values, which are used to directly drive a monitor, and color names. RGB values provide a mechanism for accessing the full capabilities of the display device, but at the expense of having the color perceived by the user remain unknowable through the protocol. Color names were originally designed to provide access to a device-independent color database by having the server vendor tune the definitions of the colors in that textual database. Unfortunately, this still does not provide the client any way of using an existing device-independent color, nor for the client to get device-independent color information back about colors that it has selected. Furthermore, the client must be able to discover which set of colors are displayable by the device (the device gamut), both to allow colors to be intelligently modified to fit within the device capabilities (gamut compression) and to enable the user interface to display a representation of the reachable color space to the user (gamut display). Therefore, a system is needed that will provide full access to device-independent color spaces for X clients. This system should use a standard mechanism for naming the colors, be able to provide names for existing colors, and provide means by which unreachable colors can be modified to fall within the device gamut. We are fortunate in this area to have a seminal work, the 1931 CIE color standard, which is nearly universally agreed upon as adequate for describing colors on CRT devices. This standard uses a tri-stimulus model called CIE XYZ in which each perceivable color is specified as a triplet of numbers. Other appropriate device-independent color models do exist, but most of them are directly traceable back to this original work. X device color characterization provides device-independent color spaces to X clients. It does this by providing the barest possible amount of information to the client that allows the client to construct a mapping between CIE XYZ and the regular X RGB color descriptions. Device color characterization is defined by the name and contents of two window properties that, together, permit converting between CIE XYZ space and linear RGB device space (such as standard CRTs). Linear RGB devices require just two pieces of information to completely characterize them: A 3 x 3 matrix M and its inverse M-1, which convert between XYZ and RGB intensity (RGBintensity):
RGBintensity = M x XYZ XYZ = M-1 x RGBintensity
A way of mapping between RGB intensity and RGB protocol value. XDCCC supports three mechanisms which will be outlined later.
If other device types are eventually necessary, additional properties will be required to describe them. XYZ <-> RGB Conversion Matrices Because of the limited dynamic range of both XYZ and RGB intensity, these matrices will be encoded using a fixed-point representation of a 32-bit two's complement number scaled by 227, giving a range of -16 to 16 - Ε, where Ε = 2-27. These matrices will be packed into an 18-element list of 32-bit values, XYZ -> RGB matrix first, in row major order and stored in the XDCCC_LINEAR_RGB_MATRICES properties (format = 32) on the root window of each screen, using values appropriate for that screen. This will be encoded as shown in the following table: Field Type Comments M0,0 INT32 Interpreted as a fixed-point number -16 ≤ x < 16 M0,1 INT32 ... INT32 M3,3 INT32 M-10,0 INT32 M-10,1 INT32 ... INT32 M-13,3 INT32 Intensity (dA RGB Value Conversion XDCCC provides two representations for describing the conversion between RGB intensity and the actual X protocol RGB values: 0 RGB value/RGB intensity level pairs 1 RGB intensity ramp In both cases, the relevant data will be stored in the XDCCC_LINEAR_RGB_CORRECTION properties on the root window of each screen, using values appropriate for that screen, in whatever format provides adequate resolution. Each property can consist of multiple entries concatenated together, if different visuals for the screen require different conversion data. An entry with a VisualID of 0 specifies data for all visuals of the screen that are not otherwise explicitly listed. The first representation is an array of RGB value/intensity level pairs, with the RGB values in strictly increasing order. When converting, the client must linearly interpolate between adjacent entries in the table to compute the desired value. This allows the server to perform gamma correction itself and encode that fact in a short two-element correction table. The intensity will be encoded as an unsigned number to be interpreted as a value between 0 and 1 (inclusive). The precision of this value will depend on the format of the property in which it is stored (8, 16, or 32 bits). For 16-bit and 32-bit formats, the RGB value will simply be the value stored in the property. When stored in 8-bit format, the RGB value can be computed from the value in the property by: RGB sub value ~ = ~ { Property ~ Value ~ times ~ 65535 } over 255 Because the three electron guns in the device may not be exactly alike in response characteristics, it is necessary to allow for three separate tables, one each for red, green, and blue. Therefore, each table will be preceded by the number of entries in that table, and the set of tables will be preceded by the number of tables. When three tables are provided, they will be in red, green, blue order. This will be encoded as shown in the following table: XDCCC_LINEAR_RGB_CORRECTION Property Contents for Type 0 Correction Field Type Comments VisualID0 CARD Most significant portion of VisualID VisualID1 CARD Exists if and only if the property format is 8 VisualID2 CARD Exists if and only if the property format is 8 VisualID3 CARD Least significant portion, exists if and only if the property format is 8 or 16 type CARD 0 for this type of correction count CARD Number of tables following (either 1 or 3) length CARD Number of pairs -1 following in this table value CARD X Protocol RBG value intensity CARD Interpret as number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values lengthg CARD Number of pairs -1 following in this table (if and only if count is 3 value CARD X Protocol RBG value intensity CARD Interpret as a number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values lengthb CARD Number of pairs -1 following in this table (if and only if count is 3 value CARD X Protocol RBG value intensity CARD Interpret as a number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values The VisualID is stored in 4, 2, or 1 pieces, depending on whether the property format is 8, 16, or 32, respectively. The VisualID is always stored most significant piece first. Note that the length fields are stored as one less than the actual length, so 256 entries can be stored in format 8. The second representation is a simple array of intensities for a linear subset of RGB values. The expected size of this table is the bits-per-rgb-value of the screen, but it can be any length. This is similar to the first mechanism, except that the RGB value numbers are implicitly defined by the index in the array (indices start at 0):
RGB sub value ~ = ~ { Array ~ Index ~ times ~ 65535 } over { Array ~ Size ~ - ~ 1 }
When converting, the client may linearly interpolate between entries in this table. The intensity values will be encoded just as in the first representation. This will be encoded as shown in the following table: XDCCC_LINEAR_RGB_CORRECTION Property Contents for Type 1 Correction Field Type Comments VisualID0 CARD Most significant portion of VisualID VisualID1 CARD Exists if and only if the property format is 8 VisualID2 CARD Exists if and only if the property format is 8 VisualID3 CARD Least significant portion, exists if and only if the property format is 8 or 16 type CARD 1 for this type of correction count CARD Number of tables following (either 1 or 3) length CARD Number of pairs -1 following in this table intensity CARD Interpret as number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values lengthg CARD Number of pairs -1 following in this table (if and only if count is 3 intensity CARD Interpret as a number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values lengthb CARD Number of pairs -1 following in this table (if and only if count is 3 intensity CARD Interpret as a number 0 ≤ intensity ≤ 1 ... ... Total of length+1 pairs of value/intensity values
Conclusion This document provides the protocol-level specification of the minimal conventions needed to ensure that X Version 11 clients can interoperate properly. This document specifies interoperability conventions only for the X Version 11 protocol. Clients should be aware of other protocols that should be used for better interoperation in the X environment. The reader is referred to X Session Management Protocol for information on session management, and to Inter-Client Exchange Protocol for information on general-purpose communication among clients. The X Registry The X Consortium maintains a registry of certain X-related items, to aid in avoiding conflicts and in sharing of such items. Readers are encouraged to use the registry. The classes of items kept in the registry that are relevant to the ICCCM include property names, property types, selection names, selection targets, WM_PROTOCOLS protocols, ClientMessage types, and application classes. Requests to register items, or questions about registration, should be addressed to
xregistry@x.org
or to
The X.Org Foundation -- X11 Registry c/o Alan Coopersmith Oracle Corporation M/S SCA17-3824 4170 Network Circle Santa Clara, CA 95054 USA
Electronic mail will be acknowledged upon receipt. Please allow up to 4 weeks for a formal response to registration and inquiries. The registry is published as part of the X software distribution from the X.Org Foundation. All registered items must have the postal address of someone responsible for the item or a reference to a document describing the item and the postal address of where to write to obtain the document.
Revision History This appendix describes the revision history of this document and summarizes the incompatibilities between this and earlier versions. The X11R2 Draft The February 25, 1988, draft that was distributed as part of X Version 11, Release 2, was clearly labeled as such, and many areas were explicitly labeled as liable to change. Nevertheless, in the revision work done since then, we have been very careful not to introduce gratuitous incompatibility. As far as possible, we have tried to ensure that clients obeying the conventions in the X11R2 draft would still work. The July 27, 1988, Draft The Consortium review was based on a draft dated July 27, 1988. This draft included several areas in which incompatibilities with the X11R2 draft were necessary: The use of property None in ConvertSelection requests is no longer allowed. Owners that receive them are free to use the target atom as the property to respond with, which will work in most cases. The protocol for INCREMENTAL type properties as selection replies has changed, and the name has been changed to INCR. Selection requestors are free to implement the earlier protocol if they receive properties of type INCREMENTAL. The protocol for INDIRECT type properties as selection replies has changed, and the name has been changed to MULTIPLE. Selection requestors are free to implement the earlier protocol if they receive properties of type INDIRECT. The protocol for the special CLIPBOARD client has changed. The earlier protocol is subject to race conditions and should not be used. The set of state values in WM_HINTS.initial_state has been reduced, but the values that are still valid are unchanged. Window managers should treat the other values sensibly. The methods an application uses to change the state of its top-level window have changed but in such a way that cases that used to work will still work. The x, y, width, and height fields have been removed from the WM_NORMAL_HINTS property and replaced by pad fields. Values set into these fields will be ignored. The position and size of the window should be set by setting the appropriate window attributes. A pair of base fields and a win_gravity field have been added to the WM_NORMAL_HINTS property. Window managers will assume values for these fields if the client sets a short property. The Public Review Drafts The Consortium review resulted in several incompatible changes. These changes were included in drafts that were distributed for public review during the first half of 1989. The messages field of the WM_HINTS property was found to be unwieldy and difficult to evolve. It has been replaced by the WM_PROTOCOLS property, but clients that use the earlier mechanism can be detected because they set the messages bit in the flags field of the WM_HINTS property, and window managers can provide a backwards compatibility mode. The mechanism described in the earlier draft by which clients installed their own subwindow colormaps could not be made to work reliably and mandated some features of the look and feel. It has been replaced by the WM_COLORMAP_WINDOWS property. Clients that use the earlier mechanism can be detected by the WM_COLORMAPS property they set on their top-level window, but providing a reliable backwards compatibility mode is not possible. The recommendations for window manager treatment of top-level window borders have been changed as those in the earlier draft produced problems with Visibility events. For nonwindow manager clients, there is no incompatibility. The pseudoroot facility in the earlier draft has been removed. Although it has been successfully implemented, it turns out to be inadequate to support the uses envisaged. An extension will be required to support these uses fully, and it was felt that the maximum freedom should be left to the designers of the extension. In general, the previous mechanism was invisible to clients and no incompatibility should result. The addition of the WM_DELETE_WINDOW protocol (which prevents the danger that multi-window clients may be terminated unexpectedly) has meant some changes in the WM_SAVE_YOURSELF protocol, to ensure that the two protocols are orthogonal. Clients using the earlier protocol can be detected (see WM_PROTOCOLS above) and supported in a backwards compatibility mode. The conventions in Section 14.3.1. of Xlib - C Language X Interface regarding properties of type RGB_COLOR_MAP have been changed, but clients that use the earlier conventions can be detected because their properties are 4 bytes shorter. These clients will work correctly if the server supports only a single Visual or if they use only the Visual of the root. These are the only cases in which they would have worked, anyway. Version 1.0, July 1989 The public review resulted in a set of mostly editorial changes. The changes in version 1.0 that introduced some degree of incompatibility with the earlier drafts are: A new section ( ) was added covering the window manager's use of Grabs. The restrictions it imposes should affect only window managers. The TARGETS selection target has been clarified, and it may be necessary for clients to add some entries to their replies. A selection owner using INCR transfer should no longer replace targets in a MULTIPLE property with the atom INCR. The contents of the ClientMessage event sent by a client to iconify itself has been clarified, but there should be no incompatibility because the earlier contents would not in fact have worked. The border-width in synthetic ConfigureNotify events is now specified, but this should not cause any incompatibility. Clients are now asked to set a border-width on all ConfigureWindow requests. Window manager properties on icon windows now will be ignored, but there should be no incompatibility because there was no specification that they be obeyed previously. The ordering of real and synthetic ConfigureNotify events is now specified, but any incompatibility should affect only window managers. The semantics of WM_SAVE_YOURSELF have been clarified and restricted to be a checkpoint operation only. Clients that were using it as part of a shutdown sequence may need to be modified, especially if they were interacting with the user during the shutdown. A kill_id field has been added to RGB_COLOR_MAP properties. Clients using earlier conventions can be detected by the size of their RGB_COLOR_MAP properties, and the cases that would have worked will still work. Version 1.1 Version 1.1 was released with X11R5 in September 1991. In addition to some minor editorial changes, there were a few semantic changes since Version 1.0: The section on Device Color Characterization was added. The meaning of the NULL property type was clarified. Appropriate references to Compound Text were added. Public Review Draft, December 1993 The following changes have been made in preparing the public review draft for Version 2.0. [P01] Addition of advice to clients on how to keep track of a top-level window's absolute position on the screen. [P03] A technique for clients to detect when it is safe to reuse a top-level window has been added. [P06] , on colormaps, has been rewritten. A new feature that allows clients to install their own colormaps has also been added. [P08] The LENGTH target has been deprecated. [P11] The manager selections facility was added. [P17] The definition of the aspect ratio fields of the WM_NORMAL_HINTS property has been changed to include the base size. [P19] StaticGravity has been added to the list of values allowed for the win_gravity field of the WM_HINTS property. The meaning of the CenterGravity value has been clarified. [P20] A means for clients to query the ICCCM compliance level of the window manager has been added. [P22] The definition of the MULTIPLE selection target has been clarified. [P25] A definition of "top-level window" has been added. The WM_STATE property has been defined and exposed to clients. [P26] The definition of window states has been clarified and the wording regarding window state changes has been made more consistent. [P27] Clarified the rules governing when window managers are required to send synthetic ConfigureNotify events. [P28] Added a recommended technique for setting the input focus to a window as soon as it is mapped. [P29] The required lifetime of resource IDs named in window manager properties has been specified. [P30] Advice for dealing with keystrokes and override-redirect windows has been added. [P31] A statement on the ownership of resources transferred through the selection mechanism has been added. [P32] The definition of the CLIENT_WINDOW target has been clarified. [P33] A rule about requiring the selection owner to reacquire the selection under certain circumstances has been added. [P42] Added several new selection targets. [P44] Ambiguous wording regarding the withdrawal of top-level windows has been removed. [P45] A facility for requestors to pass parameters during a selection request has been added. [P49] A convention on discriminated names has been added. [P57] The C_STRING property type was added. [P62] An ordering requirement on processing selection requests was added. [P63] The VisibleHint flag was added. [P64] The session management section has been updated to align with the new session management protocol. The old session management conventions have been moved to Appendix C. References to the never-forthcoming Window and Session Manager Conventions Manual have been removed. Information on the X Registry and references to the session management and ICE documents have been added. Numerous editorial and typographical improvements have been made. Version 2.0, April 1994 The following changes have been made in preparation for releasing the final edition of Version 2.0 with X11R6. The PIXMAP selection target has been revised to return a property of type PIXMAP instead of type DRAWABLE. The session management section has been revised slightly to correspond with the changes to the X Session Management Protocol. Window managers are now prohibited from placing CurrentTime in the timestamp field of WM_TAKE_FOCUS messages. In the WM_HINTS property, the VisibleHint flag has been renamed to UrgencyHint. Its semantics have also been defined more thoroughly. Additional editorial and typographical changes have been made. Suggested Protocol Revisions During the development of these conventions, a number of inadequacies have been discovered in the core X11 protocol. They are summarized here as input to an eventual protocol revision design process: There is no way for anyone to find out the last-change time of a selection. The GetSelectionOwner request should be changed to return the last-change time as well as the owner. There is no way for a client to find out which selection atoms are valid. There would be no need for WM_TAKE_FOCUS if the FocusIn event contained a timestamp and a previous-focus field. This could avoid the potential race condition. There is space in the event for this information; it should be added at the next protocol revision. There is a race condition in the InstallColormap request. It does not take a timestamp and may be executed after the top-level colormap has been uninstalled. The next protocol revision should provide the timestamp in the InstallColormap, UninstallColormap, ListInstalledColormaps requests and in the ColormapNotify event. The timestamp should be used in a similar way to the last-focus-change time for the input focus. The lack of timestamps in these packets is the reason for restricting colormap installation to the window manager. The protocol needs to be changed to provide some way of identifying the Visual and the Screen of a colormap. There should be some way to reclaim assignments to the five nonpreassigned modifiers when they are no longer needed. The manual method is unpleasantly low-tech. Obsolete Session Manager Conventions This appendix contains obsolete conventions for session management using X properties and messages. The conventions described here are deprecated and are described only for historical interest. For further information on session management, see X Session Management Protocol. Properties The client communicates with the session manager by placing two properties (WM_COMMAND and WM_CLIENT_MACHINE) on its top-level window. If the client has a group of top-level windows, these properties should be placed on the group leader window. The window manager is responsible for placing a WM_STATE property on each top-level client window for use by session managers and other clients that need to be able to identify top-level client windows and their state. WM_COMMAND Property The WM_COMMAND property represents the command used to start or restart the client. By updating this property, clients should ensure that it always reflects a command that will restart them in their current state. The content and type of the property depend on the operating system of the machine running the client. On POSIX-conformant systems using ISO Latin-1 characters for their command lines, the property should: Be of type STRING Contain a list of null-terminated strings Be initialized from argv Other systems will need to set appropriate conventions for the type and contents of WM_COMMAND properties. Window and session managers should not assume that STRING is the type of WM_COMMAND or that they will be able to understand or display its contents. Note that WM_COMMAND strings are null-terminated and differ from the general conventions that STRING properties are null-separated. This inconsistency is necessary for backwards compatibility. A client with multiple top-level windows should ensure that exactly one of them has a WM_COMMAND with nonzero length. Zero-length WM_COMMAND properties can be used to reply to WM_SAVE_YOURSELF messages on other top-level windows but will otherwise be ignored. WM_CLIENT_MACHINE Property This property is described in . Termination Because they communicate by means of unreliable network connections, clients must be prepared for their connection to the server to be terminated at any time without warning. They cannot depend on getting notification that termination is imminent or on being able to use the server to negotiate with the user about their fate. For example, clients cannot depend on being able to put up a dialog box. Similarly, clients may terminate at any time without notice to the session manager. When a client terminates itself rather than being terminated by the session manager, it is viewed as having resigned from the session in question, and it will not be revived if the session is revived. Client Responses to Session Manager Actions Clients may need to respond to session manager actions in two ways: Saving their internal state Deleting a window Saving Client State Clients that want to be warned when the session manager feels that they should save their internal state (for example, when termination impends) should include the atom WM_SAVE_YOURSELF in the WM_PROTOCOLS property on their top-level windows to participate in the WM_SAVE_YOURSELF protocol. They will receive a ClientMessage event as described in with the atom WM_SAVE_YOURSELF in its data[0] field. Clients that receive WM_SAVE_YOURSELF should place themselves in a state from which they can be restarted and should update WM_COMMAND to be a command that will restart them in this state. The session manager will be waiting for a PropertyNotify event on WM_COMMAND as a confirmation that the client has saved its state. Therefore, WM_COMMAND should be updated (perhaps with a zero-length append) even if its contents are correct. No interactions with the user are permitted during this process. Once it has received this confirmation, the session manager will feel free to terminate the client if that is what the user asked for. Otherwise, if the user asked for the session to be put to sleep, the session manager will ensure that the client does not receive any mouse or keyboard events. After receiving a WM_SAVE_YOURSELF, saving its state, and updating WM_COMMAND, the client should not change its state (in the sense of doing anything that would require a change to WM_COMMAND) until it receives a mouse or keyboard event. Once it does so, it can assume that the danger is over. The session manager will ensure that these events do not reach clients until the danger is over or until the clients have been killed. Irrespective of how they are arranged in window groups, clients with multiple top-level windows should ensure the following: Only one of their top-level windows has a nonzero-length WM_COMMAND property. They respond to a WM_SAVE_YOURSELF message by: First, updating the nonzero-length WM_COMMAND property, if necessary Second, updating the WM_COMMAND property on the window for which they received the WM_SAVE_YOURSELF message if it was not updated in the first step Receiving WM_SAVE_YOURSELF on a window is, conceptually, a command to save the entire client state. This convention has changed since earlier drafts because of the introduction of the protocol in the next section. In the public review draft, there was ambiguity as to whether WM_SAVE_YOURSELF was a checkpoint or a shutdown facility. It is now unambiguously a checkpoint facility; if a shutdown facility is judged to be necessary, a separate WM_PROTOCOLS protocol will be developed and registered with the X Consortium. Window Deletion Windows are deleted using the WM_DELETE_WINDOW protocol, which is described in . Summary of Session Manager Property Types The session manager properties are listed in the following table: Name Type Format See Section WM_CLIENT_MACHINE TEXT WM_COMMAND TEXT WM_STATE WM_STATE 32 xorg-docs-1.7.3/specs/ICCCM/Makefile.am0000644014310600000120000000046714600067622013101 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = icccm.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/icccm # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS xorg-docs-1.7.3/specs/ICCCM/Makefile.in0000644014310600000120000005424214600067626013116 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/ICCCM ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = icccm.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = icccm.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/icccm # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/ICCCM/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/ICCCM/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/specs/XLFD/0000755014310600000120000000000014600067631011035 5xorg-docs-1.7.3/specs/XLFD/xlfd.xml0000644014310600000120000034545514600067622012454 %defs; ]> X Logical Font Description Conventions X Consortium Standard JimFlowers Digital Equipment Corporation Stephen Gildea X Consortium X Version 11, Release &fullrelvers; Version 1.5 19881994X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. Copyright © 1988, 1989 Digital Equipment Corporation, Maynard MA. All rights reserved. Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. Digital Equipment Corporation makes no representations about the suitability for any purpose of the information in this document. This documentation is provided as is without express or implied warranty. Helvetica and Times are registered trademarks of Linotype Company. ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation. Times Roman is a registered trademark of Monotype Corporation. Bitstream Amerigo is a registered trademark of Bitstream Inc. Stone is a registered trademark of Adobe Systems Inc. Introduction It is a requirement that X client applications must be portable across server implementations, with very different file systems, naming conventions, and font libraries. However, font access requests, as defined by the X Window System Protocol, neither specify server-independent conventions for font names nor provide adequate font properties for logically describing typographic fonts. X clients must be able to dynamically determine the fonts available on any given server so that understandable information can be presented to the user or so that intelligent font fallbacks can be chosen. It is desirable for the most common queries to be accomplished without the overhead of opening each font and inspecting font properties, by means of simple ListFonts requests. For example, if a user selected a Helvetica typeface family, a client application should be able to query the server for all Helvetica fonts and present only those setwidths, weights, slants, point sizes, and character sets available for that family. This document gives a standard logical font description (hereafter referred to as XLFD) and the conventions to be used in the core protocol so that clients can query and access screen type libraries in a consistent manner across all X servers. In addition to completely specifying a given font by means of its FontName, the XLFD also provides for a standard set of key FontProperties that describe the font in more detail. The XLFD provides an adequate set of typographic font properties, such as CAP_HEIGHT, X_HEIGHT, and RELATIVE_SETWIDTH, for publishing and other applications to do intelligent font matching or substitution when handling documents created on some foreign server that use potentially unknown fonts. In addition, this information is required by certain clients to position subscripts automatically and determine small capital heights, recommended leading, word-space values, and so on. Requirements and Goals The XLFD meets the short-term and long-term goals to have a standard logical font description that: Provides unique, descriptive font names that support simple pattern matching Supports multiple font vendors, arbitrary character sets, and encodings Supports naming and instancing of scalable and polymorphic fonts Supports transformations and subsetting of fonts Is independent of X server and operating or file system implementations Supports arbitrarily complex font matching or substitution Is extensible Provide Unique and Descriptive Font Names It should be possible to have font names that are long enough and descriptive enough to have a reasonable probability of being unique without inventing a new registration organization. Resolution and size-dependent font masters, multivendor font libraries, and so on must be anticipated and handled by the font name alone. The name itself should be structured to be amenable to simple pattern matching and parsing, thus allowing X clients to restrict font queries to some subset of all possible fonts in the server. Support Multiple Font Vendors and Character Sets The font name and properties should distinguish between fonts that were supplied by different font vendors but that possibly share the same name. We anticipate a highly competitive font market where users will be able to buy fonts from many sources according to their particular requirements. A number of font vendors deliver each font with all glyphs designed for that font, where charset mappings are defined by encoding vectors. Some server implementations may force these mappings to proprietary or standard charsets statically in the font data. Others may desire to perform the mapping dynamically in the server. Provisions must be made in the font name that allows a font request to specify or identify specific charset mappings in server environments where multiple charsets are supported. Support Scalable and Polymorphic Fonts If a font source can be scaled to an arbitrary size or varied in other ways, it should be possible for an application to determine that fact from the font name, and the application should be able to construct a font name for any specific instance. Support Transformations and Subsetting of Fonts Arbitrary two-dimensional linear transformations of fonts should be able to be requested by applications. Since such transformed fonts may be used for special effects requiring a few characters from each of many differently transformed fonts, it should be possible to request only a few characters from a font for efficiency. Be Independent of X Server and Operating or File System Implementations X client applications that require a particular font should be able to use the descriptive name without knowledge of the file system or other repository in use by the server. However, it should be possible for servers to translate a given font name into a file name syntax that it knows how to deal with, without compromising the uniqueness of the font name. This algorithm should be reversible (exactly how this translation is done is implementation dependent). Support Arbitrarily Complex Font Matching and Substitution In addition to the font name, the XLFD should define a standard list of descriptive font properties, with agreed-upon fallbacks for all fonts. This allows client applications to derive font-specific formatting or display data and to perform font matching or substitution when asked to handle potentially unknown fonts, as required. Be Extensible The XLFD must be extensible so that new and/or private descriptive font properties can be added to conforming fonts without making existing X client or server implementations obsolete. X Logical Font Description XLFD is divided into two basic components: the FontName, which gives all font information needed to uniquely identify a font in X protocol requests (for example, OpenFont, ListFonts, and so on) and a variable list of optional FontProperties, which describe a font in more detail. The FontName is used in font queries and is returned as data in certain X protocol requests. It is also specified as the data value for the FONT item in the X Consortium Character Bitmap Distribution Format Standard (BDF V2.1). The FontProperties are supplied on a font-by-font basis and are returned as data in certain X protocol requests as part of the XFontStruct data structure. The names and associated data values for each of the FontProperties may also appear as items of the STARTPROPERTIES...ENDPROPERTIESlist in the BDF V2.1 specification. FontName Each FontName is logically composed of two strings: a FontNameRegistry prefix that is followed by a FontNameSuffix. The FontName uses the ISO 8859-1 encoding. The FontNameRegistry is an x-registered-name (a name that has been registered with the X Consortium) that identifies the registration authority that owns the specified FontNameSuffix syntax and semantics. All font names that conform to this specification are to use a FontNameRegistry prefix, which is defined to be the string "-" (HYPHEN). All FontNameRegistry prefixes of the form: +version-, where the specified version indicates some future XLFD specification, are reserved by the X Consortium for future extensions to XLFD font names. If required, extensions to the current XLFD font name shall be constructed by appending new fields to the current structure, each delimited by the existing field delimiter. The availability of other FontNameRegistry prefixes or fonts that support other registries is server implementation dependent. In the X protocol specification, the FontName is required to be a string; hence, numeric field values are represented in the name as string equivalents. All FontNameSuffix fields are also defined as FontProperties; numeric property values are represented as signed or unsigned integers, as appropriate. FontName Syntax The FontName is a structured, parseable string (of type STRING8) whose Backus-Naur Form syntax description is as follows: FontName ::= XFontNameRegistry XFontNameSuffix | PrivFontNameRegistry PrivFontNameSuffix XFontNameRegistry ::= XFNDelim | XFNExtPrefix Version XFNDelim XFontNameSuffix ::= FOUNDRY XFNDelim FAMILY_NAME XFNDelim WEIGHT_NAME XFNDelim SLANT XFNDelim SETWIDTH_NAME XFNDelim ADD_STYLE_NAME XFNDelim PIXEL_SIZE XFNDelim POINT_SIZE XFNDelim RESOLUTION_X XFNDelim RESOLUTION_Y XFNDelim SPACING XFNDelim AVERAGE_WIDTH XFNDelim CHARSET_REGISTRY XFNDelim CHARSET_ENCODING Version ::= STRING8 - the XLFD version that defines an extension to the font name syntax (for example, "1.4") XFNExtPrefix ::= OCTET - "+" (PLUS) XFNDelim ::= OCTET - "-" (HYPHEN) PrivFontNameRegistry ::= STRING8 - other than those strings reserved by XLFD PrivFontNameSuffix ::= STRING8 Field values are constructed as strings of ISO 8859-1 graphic characters, excluding the following: '-' (HYPHEN), the XLFD font name delimiter character '?' (QUESTION MARK) and "*" (ASTERISK), the X protocol font name wildcard characters ',' (COMMA), used by Xlib to separate XLFD font names in a font set. '"' (QUOTATION MARK), used by some commercial products to quote a font name. Alphabetic case distinctions are allowed but are for human readability concerns only. Conforming X servers will perform matching on font name query or open requests independent of case. The entire font name string must have no more than 255 characters. It is recommended that clients construct font name query patterns by explicitly including all field delimiters to avoid unexpected results. Note that SPACE is a valid character of a FontName field; for example, the string "ITC Avant Garde Gothic" might be a FAMILY_NAME. FontName Field Definitions This section discusses the FontName: FOUNDRY field FAMILY_NAME field WEIGHT_NAME field SLANT field SETWIDTH_NAME field ADD_STYLE_NAME field PIXEL_SIZE field POINT_SIZE field RESOLUTION_X and RESOLUTION_Y fields SPACING field AVERAGE_WIDTH field CHARSET_REGISTRY and CHARSET_ENCODING fields FOUNDRY Field FOUNDRY is an x-registered-name, the name or identifier of the digital type foundry that digitized and supplied the font data, or if different, the identifier of the organization that last modified the font shape or metric information. The reason this distinction is necessary is that a given font design may be licensed from one source (for example, ITC) but digitized and sold by any number of different type suppliers. Each digital version of the original design, in general, will be somewhat different in metrics and shape from the idealized original font data, because each font foundry, for better or for worse, has its own standards and practices for tweaking a typeface for a particular generation of output technologies or has its own perception of market needs. It is up to the type supplier to register with the X Consortium a suitable name for this FontName field according to the registration procedures defined by the Consortium. The X Consortium shall define procedures for registering foundry and other names and shall maintain and publish, as part of its public distribution, a registry of such registered names for use in XLFD font names and properties. FAMILY_NAME Field FAMILY_NAME is a string that identifies the range or family of typeface designs that are all variations of one basic typographic style. This must be spelled out in full, with words separated by spaces, as required. This name must be human-understandable and suitable for presentation to a font user to identify the typeface family. It is up to the type supplier to supply and maintain a suitable string for this field and font property, to secure the proper legal title to a given name, and to guard against the infringement of other's copyrights or trademarks. By convention, FAMILY_NAME is not translated. FAMILY_NAME may include an indication of design ownership if considered a valid part of the typeface family name. The following are examples of FAMILY_NAME: Helvetica ITC Avant Garde Gothic Times Times Roman Bitstream Amerigo Stone WEIGHT_NAME Field WEIGHT_NAME is a string that identifies the font's typographic weight, that is, the nominal blackness of the font, according to the FOUNDRY's judgment. This name must be human-understandable and suitable for presentation to a font user. The value "0" is used to indicate a polymorphic font (see ). The interpretation of this field is somewhat problematic because the typographic judgment of weight has traditionally depended on the overall design of the typeface family in question; that is, it is possible that the DemiBold weight of one font could be almost equivalent in typographic feel to a Bold font from another family. WEIGHT_NAME is captured as an arbitrary string because it is an important part of a font's complete human-understandable name. However, it should not be used for font matching or substitution. For this purpose, X client applications should use the weight-related font properties (RELATIVE_WEIGHT and WEIGHT) that give the coded relative weight and the calculated weight, respectively. SLANT Field SLANT is a code-string that indicates the overall posture of the typeface design used in the font. The encoding is as follows: Code English Translation Description "R" Roman Upright design "I" Italic Italic design, slanted clockwise from the vertical "O" Oblique Obliqued upright design, slanted clockwise from the vertical "RI" Reverse Italic Italic design, slanted counterclockwise from the vertical "RO" Reverse Oblique Obliqued upright design, slanted counterclockwise from the vertical "OT" Other Other numeric Polymorphic See . The SLANT codes are for programming convenience only and usually are converted into their equivalent human-understandable form before being presented to a user. SETWIDTH_NAME Field SETWIDTH_NAME is a string that gives the font's typographic proportionate width, that is, the nominal width per horizontal unit of the font, according to the FOUNDRY's judgment. The value "0" is used to indicate a polymorphic font (see ). As with WEIGHT_NAME, the interpretation of this field or font property is somewhat problematic, because the designer's judgment of setwidth has traditionally depended on the overall design of the typeface family in question. For purposes of font matching or substitution, X client applications should either use the RELATIVE_SETWIDTH font property that gives the relative coded proportionate width or calculate the proportionate width. The following are examples of SETWIDTH_NAME: Normal Condensed Narrow Double Wide ADD_STYLE_NAME Field ADD_STYLE_NAME is a string that identifies additional typographic style information that is not captured by other fields but is needed to identify the particular font. The character "[" anywhere in the field is used to indicate a polymorphic font (see ). ADD_STYLE_NAME is not a typeface classification field and is only used for uniqueness. Its use, as such, is not limited to typographic style distinctions. The following are examples of ADD_STYLE_NAME: Serif Sans Serif Informal Decorated PIXEL_SIZE Field PIXEL_SIZE gives the body size of the font at a particular POINT_SIZE and RESOLUTION_Y. PIXEL_SIZE is either an integer-string or a string beginning with "[". A string beginning with "[" represents a matrix (see ). PIXEL_SIZE usually incorporates additional vertical spacing that is considered part of the font design. (Note, however, that this value is not necessarily equivalent to the height of the font bounding box.) Zero is used to indicate a scalable font (see ). PIXEL_SIZE usually is used by X client applications that need to query fonts according to device-dependent size, regardless of the point size or vertical resolution for which the font was designed. SN POINT_SIZE Field POINT_SIZE gives the body size for which the font was designed. POINT_SIZE is either an integer-string or a string beginning with "[". A string beginning with "[" represents a matrix (see ). This field usually incorporates additional vertical spacing that is considered part of the font design. (Note, however, that POINT_SIZE is not necessarily equivalent to the height of the font bounding box.) POINT_SIZE is expressed in decipoints (where points are as defined in the X protocol or 72.27 points equal 1 inch). Zero is used to indicate a scalable font (see ). POINT_SIZE and RESOLUTION_Y are used by X clients to query fonts according to device-independent size to maintain constant text size on the display regardless of the PIXEL_SIZE used for the font. RESOLUTION_X and RESOLUTION_Y Fields RESOLUTION_X and RESOLUTION_Y are unsigned integer-strings that give the horizontal and vertical resolution, measured in pixels or dots per inch (dpi), for which the font was designed. Zero is used to indicate a scalable font (see ). Horizontal and vertical values are required because a separate bitmap font must be designed for displays with very different aspect ratios (for example, 1:1, 4:3, 2:1, and so on). The separation of pixel or point size and resolution is necessary because X allows for servers with very different video characteristics (for example, horizontal and vertical resolution, screen and pixel size, pixel shape, and so on) to potentially access the same font library. The font name, for example, must differentiate between a 14-point font designed for 75 dpi (body size of about 14 pixels) or a 14-point font designed for 150 dpi (body size of about 28 pixels). Further, in servers that implement some or all fonts as continuously scaled and scan-converted outlines, POINT_SIZE and RESOLUTION_Y will help the server to differentiate between potentially separate font masters for text, title, and display sizes or for other typographic considerations. SPACING Field SPACING is a code-string that indicates the escapement class of the font, that is, monospace (fixed pitch), proportional (variable pitch), or charcell (a special monospaced font that conforms to the traditional data-processing character cell font model). The encoding is as follows: Code English Translation Description "P" Proportional A font whose logical character widths vary for each glyph. Note that no other restrictions are placed on the metrics of a proportional font. "M" Monospaced A font whose logical character widths are constant (that is, every glyph in the font has the same logical width). No other restrictions are placed on the metrics of a monospaced font. "C" CharCell A monospaced font that follows the standard typewriter character cell model (that is, the glyphs of the font can be modeled by X clients as "boxes" of the same width and height that are imaged side-by-side to form text strings or top-to-bottom to form text lines). By definition, all glyphs have the same logical character width, and no glyphs have "ink" outside of the character cell. There is no kerning (that is, on a per-character basis with positive metrics: 0 <= left-bearing <= right-bearing <= width; with negative metrics: width <= left-bearing <= right-bearing <= zero). Also, the vertical extents of the font do not exceed the vertical spacing (that is, on a per-character basis: ascent <= font-ascent and descent <= font-descent). The cell height = font-descent + font-ascent, and the width = AVERAGE_WIDTH. AVERAGE_WIDTH Field AVERAGE_WIDTH is an integer-string typographic metric value that gives the unweighted arithmetic mean of the absolute value of the width of each glyph in the font (measured in tenths of pixels), multiplied by -1 if the dominant writing direction for the font is right-to-left. A leading "~" (TILDE) indicates a negative value. For monospaced and character cell fonts, this is the width of all glyphs in the font. Zero is used to indicate a scalable font (see ). CHARSET_REGISTRY and CHARSET_ENCODING Fields The character set used to encode the glyphs of the font (and implicitly the font's glyph repertoire), as maintained by the X Consortium character set registry. CHARSET_REGISTRY is an x-registered-name that identifies the registration authority that owns the specified encoding. CHARSET_ENCODING is a registered name that identifies the coded character set as defined by that registration authority and, optionally, a subsetting hint. Although the X protocol does not explicitly have any knowledge about character set encodings, it is expected that server implementors will prefer to embed knowledge of certain proprietary or standard charsets into their font library for reasons of performance and convenience. The CHARSET_REGISTRY and CHARSET_ENCODING fields or properties allow an X client font request to specify a specific charset mapping in server environments where multiple charsets are supported. The availability of any particular character set is font and server implementation dependent. To prevent collisions when defining character set names, it is recommended that CHARSET_REGISTRY and CHARSET_ENCODING name pairs be constructed according to the following conventions: CharsetRegistry ::= StdCharsetRegistryName | PrivCharsetRegistryName CharsetEncoding ::= StdCharsetEncodingName | PrivCharsetEncodingName StdCharsetRegistryName ::= StdOrganizationId StdNumber | StdOrganizationId StdNumber Dot Year PrivCharsetRegistryName ::= OrganizationId STRING8 StdCharsetEncodingName ::= STRING8-numeric part number of referenced standard PrivCharsetEncodingName ::= STRING8 StdOrganizationId ::= STRING8-the registered name or acronym of the referenced standard organization StdNumber ::= STRING8-referenced standard number OrganizationId ::= STRING8-the registered name or acronym of the organization Dot ::= OCTET-"." (FULL STOP) Year ::= STRING8-numeric year (for example, 1989) The X Consortium shall maintain and publish a registry of such character set names for use in X protocol font names and properties as specified in XLFD. The ISO Latin-1 character set shall be registered by the X Consortium as the CHARSET_REGISTRY-CHARSET_ENCODING value pair: "ISO8859-1". If the CHARSET_ENCODING contains a "[" (LEFT SQUARE BRACKET), the "[" and the characters after it up to a "]" (RIGHT SQUARE BRACKET) are a subsetting hint telling the font source that the client is interested only in a subset of the characters of the font. The font source can, optionally, return a font that contains only those characters or any superset of those characters. The client can expect to obtain valid glyphs and metrics only for those characters, and not for any other characters in the font. The font properties may optionally be calculated by considering only the characters in the subset. The BNF for the subsetting hint is Subset ::= LeftBracket RangeList RightBracket RangeList ::= Range | Range Space RangeList Range ::= Number | Number Underscore Number Number ::= "0x" HexNumber | DecNumber HexNumber ::= HexDigit | HexDigit HexNumber DecNumber ::= DecDigit | DecDigit DecNumber DecDigit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" HexDigit ::= DecDigit | "a" | "b" | "c" | "d" | "e" | "f" LeftBracket ::= "[" (LEFT SQUARE BRACKET) RightBracket ::= "]" (RIGHT SQUARE BRACKET) Space ::= "\0" (SPACE) Underscore ::= "_" (LOW LINE) Each Range specifies characters that are to be part of the subset included in the font. A Range containing two Numbers specifies the first and last character, inclusively, of a range of characters. A Range that is a single Number specifies a single character to be included in the font. A HexNumber is interpreted as a hexadecimal number. A DecNumber is interpreted as a decimal number. The font consists of the union of all the Ranges in the RangeList. For example, -misc-fixed-medium-r-normal--0-0-0-0-c-0-iso8859-1[65 70 80_90] tells the font source that the client is interested only in characters 65, 70, and 80-90. Examples The following examples of font names are derived from the screen fonts shipped with the X Consortium distribution. Font X FontName 75-dpi Fonts Charter 12 pt -Bitstream-Charter-Medium-R-Normal--12-120-75-75-P-68-ISO8859-1 Charter Bold 12 pt -Bitstream-Charter-Bold-R-Normal--12-120-75-75-P-76-ISO8859-1 Charter Bold Italic 12 pt -Bitstream-Charter-Bold-I-Normal--12-120-75-75-P-75-ISO8859-1 Charter Italic 12 pt -Bitstream-Charter-Medium-I-Normal--12-120-75-75-P-66-ISO8859-1 Courier 8 pt -Adobe-Courier-Medium-R-Normal--8-80-75-75-M-50-ISO8859-1 Courier 10 pt -Adobe-Courier-Medium-R-Normal--10-100-75-75-M-60-ISO8859-1 Courier 12 pt -Adobe-Courier-Medium-R-Normal--12-120-75-75-M-70-ISO8859-1 Courier 24 pt -Adobe-Courier-Medium-R-Normal--24-240-75-75-M-150-ISO8859-1 Courier Bold 10 pt -Adobe-Courier-Bold-R-Normal--10-100-75-75-M-60-ISO8859-1 Courier Bold Oblique 10 pt -Adobe-Courier-Bold-O-Normal--10-100-75-75-M-60-ISO8859-1 Courier Oblique 10 pt -Adobe-Courier-Medium-O-Normal--10-100-75-75-M-60-ISO8859-1 100-dpi Fonts Symbol 10 pt -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FONTSPECIFIC Symbol 14 pt -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FONTSPECIFIC Symbol 18 pt -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FONTSPECIFIC Symbol 24 pt -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FONTSPECIFIC Times Bold 10 pt -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO8859-1 Times Bold Italic 10 pt -Adobe-Times-Bold-I-Normal--14-100-100-100-P-77-ISO8859-1 Times Italic 10 pt -Adobe-Times-Medium-I-Normal--14-100-100-100-P-73-ISO8859-1 Times Roman 10 pt -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO8859-1 Font Properties All font properties are optional but will generally include the font name fields and, on a font-by-font basis, any other useful font descriptive and use information that may be required to use the font intelligently. The XLFD specifies an extensive set of standard X font properties, their interpretation, and fallback rules when the property is not defined for a given font. The goal is to provide client applications with enough font information to be able to make automatic formatting and display decisions with good typographic results. Font property names use the ISO 8859-1 encoding. Additional standard X font property definitions may be defined in the future and private properties may exist in X fonts at any time. Private font properties should be defined to conform to the general mechanism defined in the X protocol to prevent overlap of name space and ambiguous property names, that is, private font property names are of the form: "_" (LOW LINE), followed by the organizational identifier, followed by "_" (LOW LINE), and terminated with the property name. The Backus-Naur Form syntax description of X font properties is as follows: Properties ::= OptFontPropList OptFontPropList ::= NULL | OptFontProp OptFontPropList OptFontProp ::= PrivateFontProp | XFontProp PrivateFontProp ::= STRING8 | Underscore OrganizationId Underscore STRING8 XFontProp ::= FOUNDRY | FAMILY_NAME | WEIGHT_NAME | SLANT | SETWIDTH_NAME | ADD_STYLE_NAME | PIXEL_SIZE | POINT_SIZE | RESOLUTION_X | RESOLUTION_Y | SPACING | AVERAGE_WIDTH | CHARSET_REGISTRY | CHARSET_ENCODING | QUAD_WIDTH | RESOLUTION | MIN_SPACE | NORM_SPACE | MAX_SPACE | END_SPACE | SUPERSCRIPT_X | SUPERSCRIPT_Y | SUBSCRIPT_X | SUBSCRIPT_Y | UNDERLINE_POSITION | UNDERLINE_THICKNESS | STRIKEOUT_ASCENT | STRIKEOUT_DESCENT | ITALIC_ANGLE | X_HEIGHT | WEIGHT | FACE_NAME | FULL_NAME | FONT | COPYRIGHT | AVG_CAPITAL_WIDTH | AVG_LOWERCASE_WIDTH | RELATIVE_SETWIDTH | RELATIVE_WEIGHT | CAP_HEIGHT | SUPERSCRIPT_ SIZE | FIGURE_WIDTH | SUBSCRIPT_SIZE | SMALL_CAP_SIZE | NOTICE | DESTINATION | FONT_TYPE | FONT_VERSION | RASTERIZER_NAME | RASTERIZER_VERSION | RAW_ASCENT | RAW_DESCENT | RAW_* | AXIS_NAMES | AXIS_LIMITS | AXIS_TYPES Underscore ::= OCTET-"_" (LOW LINE) OrganizationId ::= STRING8-the registered name of the organization FOUNDRY FOUNDRY is as defined in the FontName except that the property type is ATOM. FOUNDRY cannot be calculated or defaulted if not supplied as a font property. FAMILY_NAME FAMILY_NAME is as defined in the FontName except that the property type is ATOM. FAMILY_NAME cannot be calculated or defaulted if not supplied as a font property. WEIGHT_NAME WEIGHT_NAME is as defined in the FontName except that the property type is ATOM. WEIGHT_NAME can be defaulted if not supplied as a font property, as follows: if (WEIGHT_NAME undefined) then WEIGHT_NAME = ATOM("Medium") SLANT SLANT is as defined in the FontName except that the property type is ATOM. SLANT can be defaulted if not supplied as a font property, as follows: if (SLANT undefined) then SLANT = ATOM("R") SETWIDTH_NAME SETWIDTH_NAME is as defined in the FontName except that the property type is ATOM. SETWIDTH_NAME can be defaulted if not supplied as a font property, as follows: if (SETWIDTH_NAME undefined) then SETWIDTH_NAME = ATOM("Normal") ADD_STYLE_NAME ADD_STYLE_NAME is as defined in the FontName except that the property type is ATOM. ADD_STYLE_NAME can be defaulted if not supplied as a font property, as follows: if (ADD_STYLE_NAME undefined) then ADD_STYLE_NAME = ATOM("") PIXEL_SIZE PIXEL_SIZE is as defined in the FontName except that the property type is INT32. X clients requiring pixel values for the various typographic fixed spaces (em space, en space, and thin space) can use the following algorithm for computing these values from other properties specified for a font: DeciPointsPerInch = 722.7 EMspace = ROUND ((RESOLUTION_X * POINT_SIZE) / DeciPointsPerInch) ENspace = ROUND (EMspace / 2) THINspace = ROUND (EMspace / 3)\fP where a slash (/) denotes real division, an asterisk (*) denotes real multiplication, and ROUND denotes a function that rounds its real argument a up or down to the next integer. This rounding is done according to X = FLOOR ( a + 0.5), where FLOOR is a function that rounds its real argument down to the nearest integer. PIXEL_SIZE can be approximated if not supplied as a font property, according to the following algorithm: DeciPointsPerInch = 722.7 if (PIXEL_SIZE undefined) then PIXEL_SIZE = ROUND ((RESOLUTION_Y * POINT_SIZE) / DeciPointsPerInch) POINT_SIZE POINT_SIZE is as defined in the FontName except that the property type is INT32. X clients requiring device-independent values for em space, en space, and thin space can use the following algorithm: EMspace = ROUND (POINT_SIZE / 10) ENspace = ROUND (POINT_SIZE / 20) THINspace = ROUND (POINT_SIZE / 30) Design POINT_SIZE cannot be calculated or approximated. RESOLUTION_X RESOLUTION_X is as defined in the FontName except that the property type is CARD32. RESOLUTION_X cannot be calculated or approximated. RESOLUTION_Y RESOLUTION_Y is as defined in the FontName except that the property type is CARD32. RESOLUTION_X cannot be calculated or approximated. SPACING SPACING is as defined in the FontName except that the property type is ATOM. SPACING can be calculated if not supplied as a font property, according to the definitions given above for the FontName. AVERAGE_WIDTH AVERAGE_WIDTH is as defined in the FontName except that the property type is INT32. AVERAGE_WIDTH can be calculated if not provided as a font property, according to the following algorithm: if (AVERAGE_WIDTH undefined) then AVERAGE_WIDTH = ROUND (MEAN (ABS (width of each glyph in font)) * 10) * (if (dominant writing direction L-to-R) then 1 else -1) where MEAN is a function that returns the arithmetic mean of its arguments. X clients that require values for the number of characters per inch (pitch) of a monospaced font can use the following algorithm using the AVERAGE_WIDTH and RESOLUTION_X font properties: if (SPACING not proportional) then CharPitch = (RESOLUTION_X * 10) / AVERAGE_WIDTH CHARSET_REGISTRY CHARSET_REGISTRY is as defined in the FontName except that the property type is ATOM. CHARSET_REGISTRY cannot be defaulted if not supplied as a font property. CHARSET_ENCODING CHARSET_ENCODING is as defined in the FontName except that the property type is ATOM. CHARSET_ENCODING cannot be defaulted if not supplied as a font property. MIN_SPACE MIN_SPACE is an integer value (of type INT32) that gives the recommended minimum word-space value to be used with this font. MIN_SPACE can be approximated if not provided as a font property, according to the following algorithm: if (MIN_SPACE undefined) then MIN_SPACE = ROUND(0.75 * NORM_SPACE) NORM_SPACE NORM_SPACE is an integer value (of type INT32) that gives the recommended normal word-space value to be used with this font. NORM_SPACE can be approximated if not provided as a font property, according to the following algorithm: DeciPointsPerInch = 722.7 if (NORM_SPACE undefined) then if (SPACE glyph exists) then NORM_SPACE = width of SPACE else NORM_SPACE = ROUND((0.33 * RESOLUTION_X * POINT_SIZE)/ DeciPointsPerInch) MAX_SPACE MAX_SPACE is an integer value (of type INT32) that gives the recommended maximum word-space value to be used with this font. MAX_SPACE can be approximated if not provided as a font property, according to the following algorithm: if (MAX_SPACE undefined) then MAX_SPACE = ROUND(1.5 * NORM_SPACE) END_SPACE END_SPACE is an integer value (of type INT32) that gives the recommended spacing at the end of sentences. END_SPACE can be approximated if not provided as a font property, according to the following algorithm: if (END_SPACE undefined) then END_SPACE = NORM_SPACE AVG_CAPITAL_WIDTH AVG_CAPITAL_WIDTH is an integer value (of type INT32) that gives the unweighted arithmetic mean of the absolute value of the width of each capital glyph in the font, in tenths of pixels, multiplied by -1 if the dominant writing direction for the font is right-to-left. This property applies to both Latin and non-Latin fonts. For Latin fonts, capitals are the glyphs A through Z. This property is usually used for font matching or substitution. AVG_CAPITAL_WIDTH can be calculated if not provided as a font property, according to the following algorithm: if (AVG_CAPITAL_WIDTH undefined) then if (capitals exist) then AVG_CAPITAL_WIDTH = ROUND (MEAN (ABS (width of each capital glyph)) * 10) * (if (dominant writing direction L-to-R) then 1 else -1) else AVG_CAPITAL_WIDTH undefined AVG_LOWERCASE_WIDTH AVG_LOWERCASE_WIDTH is an integer value (of type INT32) that gives the unweighted arithmetic mean width of the absolute value of the width of each lowercase glyph in the font in tenths of pixels, multiplied by -1 if the dominant writing direction for the font is right-to-left. For Latin fonts, lowercase are the glyphs a through z. This property is usually used for font matching or substitution. Where appropriate, AVG_LOWERCASE_WIDTH can be approximated if not provided as a font property, according to the following algorithm: if (AVG_LOWERCASE_WIDTH undefined) then if (lowercase exists) then AVG_LOWERCASE_WIDTH = ROUND (MEAN (ABS (width of each lowercase glyph)) * 10) * (if (dominant writing direction L-to-R) then 1 else -1) else AVG_LOWERCASE_WIDTH undefined QUAD_WIDTH QUAD_WIDTH is an integer typographic metric (of type INT32) that gives the width of a quad (em) space. Because all typographic fixed spaces (em, en, and thin) are constant for a given font size (that is, they do not vary according to setwidth), the use of this font property has been deprecated. X clients that require typographic fixed space values are encouraged to discontinue use of QUAD_WIDTH and compute these values from other font properties (for example, PIXEL_SIZE). X clients that require a font-dependent width value should use either the FIGURE_WIDTH or one of the average character width font properties (AVERAGE_WIDTH, AVG_CAPITAL_WIDTH or AVG_LOWERCASE_WIDTH). FIGURE_WIDTH FIGURE_WIDTH is an integer typographic metric (of type INT32) that gives the width of the tabular figures and the dollar sign, if suitable for tabular setting (all widths equal). For Latin fonts, these tabular figures are the Arabic numerals 0 through 9. FIGURE_WIDTH can be approximated if not supplied as a font property, according to the following algorithm: if (numerals and DOLLAR sign are defined & widths are equal) then FIGURE_WIDTH = width of DOLLAR else FIGURE_WIDTH property undefined SUPERSCRIPT_X SUPERSCRIPT_X is an integer value (of type INT32) that gives the recommended horizontal offset in pixels from the position point to the X origin of synthetic superscript text. If the current position point is at [X,Y], then superscripts should begin at [X + SUPERSCRIPT_X, Y - SUPERSCRIPT_Y]. SUPERSCRIPT_X can be approximated if not provided as a font property, according to the following algorithm: if (SUPERSCRIPT_X undefined) then if (TANGENT(ITALIC_ANGLE) defined) then SUPERSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE)) else SUPERSCRIPT_X = ROUND(0.40 * CAP_HEIGHT) where TANGENT is a trigonometric function that returns the tangent of its argument, which is in 1/64 degrees. SUPERSCRIPT_Y SUPERSCRIPT_Y is an integer value (of type INT32) that gives the recommended vertical offset in pixels from the position point to the Y origin of synthetic superscript text. If the current position point is at [X,Y], then superscripts should begin at [X + SUPERSCRIPT_X, Y - SUPERSCRIPT_Y]. SUPERSCRIPT_Y can be approximated if not provided as a font property, according to the following algorithm: if (SUPERSCRIPT_Y undefined) then SUPERSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT) SUBSCRIPT_X SUBSCRIPT_X is an integer value (of type INT32) that gives the recommended horizontal offset in pixels from the position point to the X origin of synthetic subscript text. If the current position point is at [X,Y], then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y]. SUBSCRIPT_X can be approximated if not provided as a font property, according to the following algorithm: if (SUBSCRIPT_X undefined) then if (TANGENT(ITALIC_ANGLE) defined) then SUBSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE)) else SUBSCRIPT_X = ROUND(0.40 * CAP_HEIGHT) SUBSCRIPT_Y SUBSCRIPT_Y is an integer value (of type INT32) that gives the recommended vertical offset in pixels from the position point to the Y origin of synthetic subscript text. If the current position point is at [X,Y], then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y]. SUBSCRIPT_Y can be approximated if not provided as a font property, according to the following algorithm: if (SUBSCRIPT_Y undefined) then SUBSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT) SUPERSCRIPT_SIZE SUPERSCRIPT_SIZE is an integer value (of type INT32) that gives the recommended body size of synthetic superscripts to be used with this font, in pixels. This will generally be smaller than the size of the current font; that is, superscripts are imaged from a smaller font offset according to SUPERSCRIPT_X and SUPERSCRIPT_Y. SUPERSCRIPT_SIZE can be approximated if not provided as a font property, according to the following algorithm: if (SUPERSCRIPT_SIZE undefined) then SUPERSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE) SUBSCRIPT_SIZE SUBSCRIPT_SIZE is an integer value (of type INT32) that gives the recommended body size of synthetic subscripts to be used with this font, in pixels. As with SUPERSCRIPT_SIZE, this will generally be smaller than the size of the current font; that is, subscripts are imaged from a smaller font offset according to SUBSCRIPT_X and SUBSCRIPT_Y. SUBSCRIPT_SIZE can be approximated if not provided as a font property, according to the algorithm: if (SUBSCRIPT_SIZE undefined) then SUBSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE) SMALL_CAP_SIZE SMALL_CAP_SIZE is an integer value (of type INT32) that gives the recommended body size of synthetic small capitals to be used with this font, in pixels. Small capitals are generally imaged from a smaller font of slightly more weight. No offset [X,Y] is necessary. SMALL_CAP_SIZE can be approximated if not provided as a font property, according to the following algorithm: if (SMALL_CAP_SIZE undefined) then SMALL_CAP_SIZE = ROUND(PIXEL_SIZE * ((X_HEIGHT + ((CAP_HEIGHT - X_HEIGHT) / 3)) / CAP_HEIGHT)) UNDERLINE_POSITION UNDERLINE_POSITION is an integer value (of type INT32) that gives the recommended vertical offset in pixels from the baseline to the top of the underline. If the current position point is at [X,Y], the top of the baseline is given by [X, Y + UNDERLINE_POSITION]. UNDERLINE_POSITION can be approximated if not provided as a font property, according to the following algorithm: if (UNDERLINE_POSITION undefined) then UNDERLINE_POSITION = ROUND((maximum descent) / 2) where maximum descent is the maximum descent (below the baseline) in pixels of any glyph in the font. UNDERLINE_THICKNESS UNDERLINE_THICKNESS is an integer value (of type INT32) that gives the recommended underline thickness, in pixels. UNDERLINE_THICKNESS can be approximated if not provided as a font property, according to the following algorithm: CapStemWidth = average width of the stems of capitals if (UNDERLINE_THICKNESS undefined) then UNDERLINE_THICKNESS = CapStemWidth STRIKEOUT_ASCENT STRIKEOUT_ASCENT is an integer value (of type INT32) that gives the vertical ascent for boxing or voiding glyphs in this font. If the current position is at [X,Y] and the string extent is EXTENT, the upper-left corner of the strikeout box is at [X, Y - STRIKEOUT_ASCENT] and the lower-right corner of the box is at [X + EXTENT, Y + STRIKEOUT_DESCENT]. STRIKEOUT_ASCENT can be approximated if not provided as a font property, according to the following algorithm: if (STRIKEOUT_ASCENT undefined) STRIKEOUT_ASCENT = maximum ascent where maximum ascent is the maximum ascent (above the baseline) in pixels of any glyph in the font. STRIKEOUT_DESCENT STRIKEOUT_DESCENT is an integer value (of type INT32) that gives the vertical descent for boxing or voiding glyphs in this font. If the current position is at [X,Y] and the string extent is EXTENT, the upper-left corner of the strikeout box is at [X, Y - STRIKEOUT_ASCENT] and the lower-right corner of the box is at [X + EXTENT, Y + STRIKEOUT_DESCENT]. STRIKEOUT_DESCENT can be approximated if not provided as a font property, according to the following algorithm: if (STRIKEOUT_DESCENT undefined) STRIKEOUT_DESCENT = maximum descent where maximum descent is the maximum descent (below the baseline) in pixels of any glyph in the font. ITALIC_ANGLE ITALIC_ANGLE is an integer value (of type INT32) that gives the nominal posture angle of the typeface design, in 1/64 degrees, measured from the glyph origin counterclockwise from the three o'clock position. ITALIC_ANGLE can be defaulted if not provided as a font property, according to the following algorithm: if (ITALIC_ANGLE undefined) then ITALIC_ANGLE = (90 * 64) CAP_HEIGHT CAP_HEIGHT is an integer value (of type INT32) that gives the nominal height of the capital letters contained in the font, as specified by the FOUNDRY or typeface designer. Certain clients require CAP_HEIGHT to compute scale factors and positioning offsets for synthesized glyphs where this information or designed glyphs are not explicitly provided by the font (for example, small capitals, superiors, inferiors, and so on). CAP_HEIGHT is also a critical factor in font matching and substitution. CAP_HEIGHT can be approximated if not provided as a font property, according to the following algorithm: if (CAP_HEIGHT undefined) then if (Latin font) then CAP_HEIGHT = XCharStruct.ascent[glyph X] else if (capitals exist) then CAP_HEIGHT = XCharStruct.ascent[some unaccented capital glyph] else CAP_HEIGHT undefined X_HEIGHT X_HEIGHT is an integer value (of type INT32) that gives the nominal height above the baseline of the lowercase glyphs contained in the font, as specified by the FOUNDRY or typeface designer. As with CAP_HEIGHT, X_HEIGHT is required by certain clients to compute scale factors for synthesized small capitals where this information is not explicitly provided by the font resource. X_HEIGHT is a critical factor in font matching and substitution. X_HEIGHT can be approximated if not provided as a font property, according to the following algorithm: if (X_HEIGHT undefined) then if (Latin font) then X_HEIGHT = XCharStruct.ascent[glyph x] else if (lowercase exists) then X_HEIGHT = XCharStruct.ascent[some unaccented lc glyph without an ascender] else X_HEIGHT undefined RELATIVE_SETWIDTH RELATIVE_SETWIDTH is an unsigned integer value (of type CARD32) that gives the coded proportionate width of the font, relative to all known fonts of the same typeface family, according to the type designer's or FOUNDRY's judgment. RELATIVE_SETWIDTH ranges from 10 to 90 or is 0 if undefined or unknown. The following reference values are defined: Code English Translation Description 0 Undefined Undefined or unknown 10 UltraCondensed The lowest ratio of average width to height 20 ExtraCondensed 30 Condensed Condensed, Narrow, Compressed, ... 40 SemiCondensed 50 Medium Medium, Normal, Regular, ... 60 SemiExpanded SemiExpanded, DemiExpanded, ... 70 Expanded 80 ExtraExpanded ExtraExpanded, Wide, ... 90 UltraExpanded The highest ratio of average width to height RELATIVE_SETWIDTH can be defaulted if not provided as a font property, according to the following algorithm: if (RELATIVE_SETWIDTH undefined) then RELATIVE_SETWIDTH = 50 For polymorphic fonts, RELATIVE_SETWIDTH is not necessarily a linear function of the font's setwidth axis. X clients that want to obtain a calculated proportionate width of the font (that is, a font-independent way of identifying the proportionate width across all fonts and all font vendors) can use the following algorithm: SETWIDTH = AVG_CAPITAL_WIDTH / (CAP_HEIGHT * 10) where SETWIDTH is a real number with zero being the narrowest calculated setwidth. RELATIVE_WEIGHT RELATIVE_WEIGHT is an unsigned integer value (of type CARD32) that gives the coded weight of the font, relative to all known fonts of the same typeface family, according to the type designer's or FOUNDRY's judgment. RELATIVE_WEIGHT ranges from 10 to 90 or is 0 if undefined or unknown. The following reference values are defined: Code English Translation Description 0 Undefined Undefined or unknown 10 UltraLight The lowest ratio of stem width to height 20 ExtraLight 30 Light 40 SemiLight SemiLight, Book, ... 50 Medium Medium, Normal, Regular,... 60 SemiBold SemiBold, DemiBold, ... 70 Bold 80 ExtraBold ExtraBold, Heavy, ... 90 UltraBold UltraBold, Black, ..., the highest ratio of stem width to height RELATIVE_WEIGHT can be defaulted if not provided as a font property, according to the following algorithm: if (RELATIVE_WEIGHT undefined) then RELATIVE_WEIGHT = 50 For polymorphic fonts, RELATIVE_WEIGHT is not necessarily a linear function of the font's weight axis. WEIGHT Calculated WEIGHT is an unsigned integer value (of type CARD32) that gives the calculated weight of the font, computed as the ratio of capital stem width to CAP_HEIGHT, in the range 0 to 1000, where 0 is the lightest weight. WEIGHT can be calculated if not supplied as a font property, according to the following algorithm: CapStemWidth = average width of the stems of capitals if (WEIGHT undefined) then WEIGHT = ROUND ((CapStemWidth * 1000) / CAP_HEIGHT) A calculated value for weight is necessary when matching fonts from different families because both the RELATIVE_WEIGHT and the WEIGHT_NAME are assigned by the typeface supplier, according to its tradition and practice, and therefore, are somewhat subjective. Calculated WEIGHT provides a font-independent way of identifying the weight across all fonts and all font vendors. RESOLUTION RESOLUTION is an integer value (of type INT32) that gives the resolution for which this font was created, measured in 1/100 pixels per point. As independent horizontal and vertical design resolution components are required to accommodate displays with nonsquare aspect ratios, the use of this font property has been deprecated, and independent RESOLUTION_X and RESOLUTION_Y font name fields/properties have been defined (see sections 3.1.2.9 and 3.1.2.10). X clients are encouraged to discontinue use of the RESOLUTION property and are encouraged to use the appropriate X,Y resolution properties, as required. FONT FONT is a string (of type ATOM) that gives the full XLFD name of the font-that is, the value can be used to open another instance of the same font. If not provided, the FONT property cannot be calculated. FACE_NAME FACE_NAME is a human-understandable string (of type ATOM) that gives the full device-independent typeface name, including the owner, weight, slant, set, and so on but not the resolution, size, and so on. This property may be used as feedback during font selection. FACE_NAME cannot be calculated or approximated if not provided as a font property. FULL_NAME FULL_NAME is the same as FACE_NAME. Its use is deprecated, but it is found on some old fonts. COPYRIGHT COPYRIGHT is a human-understandable string (of type ATOM) that gives the copyright information of the legal owner of the digital font data. This information is a required component of a font but is independent of the particular format used to represent it (that is, it cannot be captured as a comment that could later be thrown away for efficiency reasons). COPYRIGHT cannot be calculated or approximated if not provided as a font property. NOTICE NOTICE is a human-understandable string (of type ATOM) that gives the copyright information of the legal owner of the font design or, if not applicable, the trademark information for the typeface FAMILY_NAME. Typeface design and trademark protection laws vary from country to country, the USA having no design copyright protection currently while various countries in Europe offer both design and typeface family name trademark protection. As with COPYRIGHT, this information is a required component of a font but is independent of the particular format used to represent it. NOTICE cannot be calculated or approximated if not provided as a font property. DESTINATION DESTINATION is an unsigned integer code (of type CARD32) that gives the font design destination, that is, whether it was designed as a screen proofing font to match printer font glyph widths (WYSIWYG), as an optimal video font (possibly with corresponding printer font) for extended screen viewing (video text), and so on. The font design considerations are very different, and at current display resolutions, the readability and legibility of these two kinds of screen fonts are very different. DESTINATION allows publishing clients that use X to model the printed page and video text clients, such as on-line documentation browsers, to query for X screen fonts that suit their particular requirements. The encoding is as follows: Code English Translation Description 0 WYSIWYG The font is optimized to match the typographic design and metrics of an equivalent printer font. 1 Video text The font is optimized for screen legibility and readability. FONT_TYPE FONT_TYPE is a human-understandable string (of type ATOM) that describes the format of the font data as they are read from permanent storage by the current font source. It is a static attribute of the source data. It can be used by clients to select a type of bitmap or outline font without regard to the rasterizer used to render the font. Predefined values are as follows: Value When applicable "Bitmap" Hand-tuned bitmap fonts. Some attempt has been made to optimize the visual appearance of the font for the requested size and resolution. "Prebuilt" All bitmap format fonts that cannot be described as "Bitmap", that is, handtuned. For example, a bitmap format font that was generated mechanically using a scalable font rasterizer would be considered "Prebuilt", not "Bitmap". "Type 1" Any Type 1 font. "TrueType" Any TrueType font. "Speedo" Any Speedo font. "F3" Any F3 font. Other values may be registered with the X Consortium. FONT_VERSION FONT_VERSION is a human-understandable string (of type ATOM) that describes the formal or informal version of the font. None is a valid value. RASTERIZER_NAME RASTERIZER_NAME is a human-understandable string (of type ATOM) that is the specific name of the rasterizer that has performed some rasterization operation (such as scaling from outlines) on this font. To define a RASTERIZER_NAME, the following format is recommended: RasterizerName ::= OrganizationId Space Rasterizer OrganizationId ::= STRING8—the X Registry ORGANIZATION name of the rasterizer implementor or maintainer. Rasterizer ::= the case-sensitive, human-understandable product name of the rasterizer. Words within this name should be separated by a single SPACE. Space ::= OCTET−" " (SPACE) Examples: X Consortium Bit Scaler X Consortium Type 1 Rasterizer X Consortium Speedo Rasterizer Adobe Type Manager Sun TypeScaler If RASTERIZER_NAME is not defined, or is None, no rasterization operation has been applied to the FONT_TYPE. RASTERIZER_VERSION RASTERIZER_VERSION is a human-understandable string (of type ATOM) that represents the formal or informal version of a font rasterizer. The RASTERIZER_VERSION should match the corresponding product version number known to users, when applicable. RAW_ASCENT For a font with a transformation matrix, RAW_ASCENT is the font ascent in 1000 pixel metrics (see ). RAW_DESCENT For a font with a transformation matrix, RAW_DESCENT is the font descent in 1000 pixel metrics (see ). RAW_* For a font with a transformation matrix, all font properties that represent horizontal or vertical sizes or displacements will be accompanied by a new property, named as the original except prefixed with "RAW_", that is computed as described in . AXIS_NAMES AXIS_NAMES is a list of all the names of the axes for a polymorphic font, separated by a null (0) byte. These names are suitable for presentation in a user interface (see section 6). AXIS_LIMITS AXIS_LIMITS is a list of integers, two for each axis, giving the minimum and maximum allowable values for that axis of a polymorphic font (see ). AXIS_TYPES AXIS_TYPES is like AXIS_NAMES, but can be registered as having specific semantics (see section 6). Built-in Font Property Atoms The following font property atom definitions were predefined in the initial version of the core protocol: Font Property/Atom Name Property Type MIN_SPACE INT32 NORM_SPACE INT32 MAX_SPACE INT32 END_SPACE INT32 SUPERSCRIPT_X INT32 SUPERSCRIPT_Y INT32 SUBSCRIPT_X INT32 SUBSCRIPT_Y INT32 UNDERLINE_POSITION INT32 UNDERLINE_THICKNESS INT32 STRIKEOUT_ASCENT INT32 STRIKEOUT_DESCENT INT32 FONT_ASCENT INT32 FONT_DESCENT INT32 ITALIC_ANGLE INT32 X_HEIGHT INT32 QUAD_WIDTH INT32 −deprecated WEIGHT CARD32 POINT_SIZE INT32 RESOLUTION CARD32 −deprecated COPYRIGHT ATOM FULL_NAME ATOM −deprecated FAMILY_NAME ATOM DEFAULT_CHAR CARD32 Matrix Transformations An XLFD name presented to the server can have the POINT_SIZE or PIXEL_SIZE field begin with the character "[". If the first character of the field is "[", the character must be followed with ASCII representations of four floating point numbers and a trailing "]", with white space separating the numbers and optional white space separating the numbers from the "[" and "]" characters. Numbers use standard floating point syntax but use the character "~" to represent a minus sign in the mantissa or exponent. The BNF for a matrix transformation string is as follows: MatrixString ::= LeftBracket OptionalSpace Float Space Float Space Float Space Float OptionalSpace RightBracket OptionalSpace ::= "" | Space Space ::= SpaceChar | SpaceChar Space Float ::= Mantissa | Mantissa Exponent Mantissa ::= Sign Number | Number Sign ::= Plus | Tilde Number ::= Integer | Integer Dot Integer | Dot Integer Integer ::= Digit | Digit Integer Digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" Exponent ::= "e" SignedInteger | "E" SignedInteger SignedInteger ::= Sign Integer | Integer LeftBracket ::= OCTET − "[" (LEFT SQUARE BRACKET) RightBracket ::= OCTET − "]" (RIGHT SQUARE BRACKET) SpaceChar ::= OCTET − " " (SPACE) Tilde ::= OCTET − "˜" (TILDE) Plus ::= OCTET − "+" (PLUS) Dot ::= OCTET − "." (FULL STOP) The string "[a b c d]" represents a graphical transformation of the glyphs in the font by the matrix [ a b 0 ] [ c d 0 ] [ 0 0 1 ] All transformations occur around the origin of the glyph. The relationship between the current scalar values and the matrix transformation values is that the scalar value "N" in the POINT_SIZE field produces the same glyphs as the matrix "[N/10 0 0 N/10]" in that field, and the scalar value "N" in the PIXEL_SIZE field produces the same glyphs as the matrix "[N*RESOLUTION_X/RESOLUTION_Y 0 0 N]" in that field. If matrices are specified for both the POINT_SIZE and PIXEL_SIZE, they must bear the following relationship to each other within an implementation-specific tolerance:
PIXEL_SIZE_MATRIX = [Sx 0 0 Sy] * POINT_SIZE_MATRIX
where
Sx = RESOLUTION_X / 72.27 Sy = RESOLUTION_Y / 72.27
If either the POINT_SIZE or PIXEL_SIZE field is unspecified (either "0" or wildcarded), the preceding formulas can be used to compute one from the other. Metrics and Font Properties In this section, the phrase "1000 pixel metrics" means the metrics that would be obtained if the rasterizer took the base untransformed design used to generate the transformed font and scaled it linearly to a height of 1000 pixels, with no rotation component. Note that there may be no way for the application to actually request this font since the rasterizer may use different outlines or rasterization techniques at that size from the ones used to generate the transformed font. Notes on properties and metrics: The per-char ink metrics (lbearing, rbearing, ascent, and descent) represent the ink extent of the transformed glyph around its origin. The per-char width is the x component of the transformed character width. The font ascent and descent are the y component of the transformed font ascent or descent. The FONT property returns a name reflecting the matrix being used-that is, the name returned can be used to open another instance of the same font. The returned name is not necessarily an exact copy of the requested name. If, for example, the user requests -misc-fixed-medium-r-normal--0-[2e1 0 0.0 +10.0]-72-72-c-0-iso8859-1 the resulting FONT property might be -misc-fixed-medium-r-normal--[19.9 0 0 10]-[20 0 0 10]-72-72-c-0-iso8859-1 The FONT property will always include matrices in both the PIXEL_SIZE and the POINT_SIZE fields. To allow accurate client positioning of transformed characters, the attributes field of the XCharInfo contains the width of the character in 1000 pixel metrics. This attributes field should be interpreted as a signed integer. There will always be 2 new font properties defined, RAW_ASCENT and RAW_DESCENT, that hold the ascent and descent in 1000 pixel metrics. All font properties that represent horizontal widths or displacements have as their value the x component of the transformed width or displacement. All font properties that represent vertical heights or displacements have as their value the y component of the transformed height or displacement. Each such property will be accompanied by a new property, named as the original except prefixed with "RAW_", that gives the value of the width, height, or displacement in 1000 pixel metrics.
Scalable Fonts The XLFD is designed to support scalable fonts. A scalable font is a font source from which instances of arbitrary size can be derived. A scalable font source might be one or more outlines together with zero or more hand-tuned bitmap fonts at specific sizes and resolutions, or it might be a programmatic description together with zero or more bitmap fonts, or some other format (perhaps even just a single bitmap font). The following definitions are useful for discussing scalable fonts: Well-formed XLFD pattern Well-formed XLFD pattern A pattern string containing 14 hyphens, one of which is the first character of the pattern. Wildcard characters are permitted in the fields of a well-formed XLFD pattern. Scalable font name A well-formed XLFD pattern containing no wildcards and containing the digit "0" in the PIXEL_SIZE, POINT_SIZE, and AVERAGE_WIDTH fields. Scalable fields The XLFD fields PIXEL_SIZE, POINT_SIZE, RESOLUTION_X, RESOLUTION_Y, and AVERAGE_WIDTH. Derived instance The result of replacing the scalable fields of a font name with values to yield a font name that could actually be produced from the font source. A scaling engine is permitted, but not required, to interpret the scalable fields in font names to support anamorphic scaling. Global list The list of names that would be returned by an X server for a ListFonts protocol request on the pattern "*" if there were no protocol restrictions on the total number of names returned. The global list consists of font names derived from font sources. If a single font source can support multiple character sets (specified in the CHARSET_REGISTRY and CHARSET_ENCODING fields), each such character set should be used to form a separate font name in the list. For a nonscalable font source, the simple font name for each character set is included in the global list. For a scalable font source, a scalable font name for each character set is included in the list. In addition to the scalable font name, specific derived instance names may also be included in the list. The relative order of derived instances with respect to the scalable font name is not constrained. Finally, font name aliases may also be included in the list. The relative order of aliases with respect to the real font name is not constrained. The values of the RESOLUTION_X and RESOLUTION_Y fields of a scalable font name are implementation dependent, but to maximize backward compatibility, they should be reasonable nonzero values, for example, a resolution close to that provided by the screen (in a single-screen server). Because some existing applications rely on seeing a collection of point and pixel sizes, server vendors are strongly encouraged in the near term to provide a mechanism for including, for each scalable font name, a set of specific derived instance names. For font sources that contain a collection of hand-tuned bitmap fonts, including names of these instances in the global list is recommended and sufficient. The X protocol request OpenFont on a scalable font name returns a font corresponding to an implementation-dependent derived instance of that font name. The X protocol request ListFonts on a well-formed XLFD pattern returns the following. Starting with the global list, if the actual pattern argument has values containing no wildcards in scalable fields, then substitute each such field into the corresponding field in each scalable font name in the list. For each resulting font name, if the remaining scalable fields cannot be replaced with values to produce a derived instance, remove the font name from the list. Now take the modified list, and perform a simple pattern match against the pattern argument. ListFonts returns the resulting list. For example, given the global list: -Linotype-Times-Bold-I-Normal--0-0-100-100-P-0-ISO8859-1 -Linotype-Times-Bold-R-Normal--0-0-100-100-P-0-ISO8859-1 -Linotype-Times-Medium-I-Normal--0-0-100-100-P-0-ISO8859-1 -Linotype-Times-Medium-R-Normal--0-0-100-100-P-0-ISO8859-1 a ListFonts request with the pattern: -*-Times-*-R-Normal--*-120-100-100-P-*-ISO8859-1 would return: -Linotype-Times-Bold-R-Normal--0-120-100-100-P-0-ISO8859-1 -Linotype-Times-Medium-R-Normal--0-120-100-100-P-0-ISO8859-1 ListFonts on a pattern containing wildcards that is not a well-formed XLFD pattern is only required to return the list obtained by performing a simple pattern match against the global list. X servers are permitted, but not required, to use a more sophisticated matching algorithm. Polymorphic Fonts Fonts that can be varied in ways other than size or resolution are called polymorphic fonts. Multiple Master Type 1 font programs are one type of a polymorphic font. Current examples of axes along which the fonts can be varied are width, weight, and optical size; others might include formality or x-height. To support polymorphic fonts, special values indicating variability are defined for the following XLFD fields:
WEIGHT_NAME SLANT SETWIDTH_NAME ADD_STYLE_NAME
The string "0" is the special polymorphic value. In the WEIGHT_NAME, SLANT, or SETWIDTH_NAME field, "0" must be the entire field. There may be multiple polymorphic values in the ADD_STYLE_NAME field. They are surrounded by "[" and "]" and separated by a Space, as "[0\00]". The polymorphic values may coexist with other data in the field. It is recommended that the polymorphic values be at the end of the ADD_STYLE_NAME field. The font-matching algorithms for a font with polymorphic fields are identical to the matching algorithms for a font with scalable fields. There are three new font properties to describe the axes of variation, AXIS_NAMES, AXIS_LIMITS, and AXIS_TYPES. AXIS_NAMES is a list of all the names of the axes for the font, separated by a null (0) byte. These names are suitable for presentation in a user interface. AXIS_LIMITS is a list of integers, two for each axis, giving the minimum and maximum allowable values for that axis. AXIS_TYPES is like AXIS_NAMES, but can be registered as having specific semantics. The axes are listed in the properties in the same order as they appear in the font name. They are matched with font name fields by looking for the special polymorphic values in the font name. Examples: The Adobe Myriad MM font program has width and weight axes. Weight can vary from 215 to 830, and width from 300 to 700. Name: -Adobe-Myriad MM-0-R-0--0-0-0-0-P-0-ISO8859-1 AXIS_NAMES: Weight, Width AXIS_LIMITS: 215, 830, 300, 700 AXIS_TYPES: Adobe-Weight, Adobe-Width Sample derived instance: -Adobe-Myriad MM-412-R-575--*-120-100-100-P-*-ISO8859-1 The Adobe Minion MM Italic font program has width, weight, and optical size axes. Name: -Adobe-Minion MM-0-I-0-[0]-0-0-0-0-P-0-ISO8859-1 AXIS_NAMES: Weight, Width, Optical size AXIS_LIMITS: 345, 620, 450, 600, 6, 72 AXIS_TYPES: Adobe-Weight, Adobe-Width, Adobe-OpticalSize Sample derived instance: -Adobe-Minion MM-550-I-480-[18]-*-180-100-100-P-*-ISO8859-1 The Adobe Minion MM Swash Italic font program has the same axes and values. This shows how "[0]" in the ADD_STYLE_NAME field can coexist with other words. Name: -Adobe-Minion MM-0-I-0-Swash[0]-0-0-0-0-P-0-ISO8859-1 AXIS_NAMES: Weight, Width, Optical size AXIS_LIMITS: 345, 620, 450, 600, 6, 72 AXIS_TYPES: Adobe-Weight, Adobe-Width, Adobe-OpticalSize Sample derived instance: -Adobe-Minion MM-550-I-480-Swash[18]-*-180-100-100-P-*-ISO8859-1 The XYZ Abc font, a hypothetical font, has optical size and x-height axes. This shows how there can be more than one polymorphic value in the ADD_STYLE_NAME field. Name: -XYZ-Abc-Medium-R-Normal-[0 0]-0-0-0-0-P-0-ISO8859-1 AXIS_NAMES: Optical size, X-height AXIS_LIMITS: 6, 72, 400, 600 AXIS_TYPES: XYZ-OpticalSize, XYZ-Xheight Sample derived instance: -XYZ-Abc-Medium-R-Normal-[14 510]-*-140-100-100-P-*-ISO8859-1 If an axis allows negative values, a client requests a negative value by using "~" (TILDE) as a minus sign. Axis types can be registered with the X Consortium, along with their semantics. If a font name that contains the polymorphic value or a wildcard in a polymorphic field is presented to a font source, the font source is free to substitute any value that is convenient. However, font sources should try to use a value that would be considered normal or medium for the particular font. For example, if an optical size variable is unresolved, the font source should provide a value appropriate to the size of the font. The result of specifying an out-of-range value for a polymorphic field is undefined. The font source may treat this as a BadName error, treat the value as if it were the closest legal value, or extrapolate to try to accommodate the value.
Affected Elements of Xlib and the X Protocol The following X protocol requests must support the XLFD conventions: OpenFont - for the name argument ListFonts - for the pattern argument ListFontsWithInfo - for the pattern argument In addition, the following Xlib functions must support the XLFD conventions: XLoadFont - for the name argument XListFontsWithInfo - for the pattern argument XLoadQueryFont - for the name argument XListFonts - for the pattern argument BDF Conformance The bitmap font distribution and interchange format adopted by the X Consortium (BDF V2.1) provides a general mechanism for identifying the font name of an X font and a variable list of font properties, but it does not mandate the syntax or semantics of the font name or the semantics of the font properties that might be provided in a BDF font. This section identifies the requirements for BDF fonts that conform to XLFD. XLFD Conformance Requirements A BDF font conforms to the XLFD specification if and only if the following conditions are satisfied: The value for the BDF item FONT conforms to the syntax and semantic definition of a XLFD FontName string. The FontName begins with the X FontNameRegistry prefix: "-". All XLFD FontName fields are defined. Any FontProperties provided conform in name and semantics to the XLFD FontProperty definitions. A simple method of testing for conformance would entail verifying that the FontNameRegistry prefix is the string "-", that the number of field delimiters in the string and coded field values are valid, and that each font property name either matches a standard XLFD property name or follows the definition of a private property. FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR are provided in the BDF specification as properties that are moved to the XFontStruct by the BDF font compiler in generating the X server-specific binary font encoding. If present, these properties shall comply with the following semantic definitions. FONT_ASCENT FONT_ASCENT is an integer value (of type INT32) that gives the recommended typographic ascent above the baseline for determining interline spacing. Specific glyphs of the font may extend beyond this. If the current position point for line n is at [X,Y], then the origin of the next line m = n + 1 (allowing for a possible font change) is [X, Y + FONT_DESCENTn + FONT_ASCENTm]. FONT_ASCENT can be approximated if not provided as a font property, according to the following algorithm: if (FONT_ASCENT undefined) then FONT_ASCENT = maximum ascent where maximum ascent is the maximum ascent (above the baseline) in pixels of any glyph in the font. FONT_DESCENT FONT_DESCENT is an integer value (of type INT32) that gives the recommended typographic descent below the baseline for determining interline spacing. Specific glyphs of the font may extend beyond this. If the current position point for line n is at [X,Y], then the origin of the next line m = n+1 (allowing for a possible font change) is [X, Y + FONT_DESCENTn + FONT_ASCENTm]. The logical extent of the font is inclusive between the Y-coordinate values: Y - FONT_ASCENT and Y + FONT_DESCENT + 1. FONT_DESCENT can be approximated if not provided as a font property, according to the following algorithm: if (FONT_DESCENT undefined) then FONT_DESCENT = maximum descent where maximum descent is the maximum descent (below the baseline) in pixels of any glyph in the font. DEFAULT_CHAR The DEFAULT_CHAR is an unsigned integer value (of type CARD32) that specifies the index of the default character to be used by the X server when an attempt is made to display an undefined or nonexistent character in the font. (For a font using a 2-byte matrix format, the index bytes are encoded in the integer as byte1 * 65536 + byte2.) If the DEFAULT_CHAR itself specifies an undefined or nonexistent character in the font, then no display is performed. DEFAULT_CHAR cannot be approximated if not provided as a font property.
xorg-docs-1.7.3/specs/XLFD/Makefile.in0000644014310600000120000005423414600067626013036 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/XLFD ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = xlfd.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = xlfd.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/xlfd # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/XLFD/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/XLFD/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/specs/XLFD/Makefile.am0000644014310600000120000000046514600067622013016 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = xlfd.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/xlfd # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS xorg-docs-1.7.3/specs/BDF/0000755014310600000120000000000014600067630010672 5xorg-docs-1.7.3/specs/BDF/fig1.ps0000644014310600000120000000651014600067622012007 %!PS-Adobe-1.0 mark /inch {72 mul}def /Helvetica findfont [10 0 0 10 0 0] makefont setfont /ShowCache {$sc begin gsave (Helvetica-Oblique) (/adobe/fonts/Helvetica/Oblique/)(j) 0.0208333 -1.82131e-09 -1.82131e-09 -0.0208333 0 0 22 9 7.5625 0 -2 -16 CachedChar 0 [6 8 ] Bits 1 [6 8 ] Bits 2 [6 8 ] Bits 3 [6 8 ] Bits 5 [5 7 ] Bits 6 [5 7 ] Bits 7 [5 7 ] Bits 8 [5 7 ] Bits 9 [4 6 ] Bits 10 [4 6 ] Bits 11 [4 6 ] Bits 12 [4 6 ] Bits 13 [4 6 ] Bits 14 [3 5 ] Bits 15 [3 5 ] Bits 16 [3 5 ] Bits 17 [3 5 ] Bits 18 [2 5 ] Bits 19 [1 4 ] Bits 20 [0 3 ] Bits 21 [0 2 ] Bits EndCachedChar grestore end } def /$sc 120 dict def $sc begin /CN 100 string def /CachedChar {/sl save def /yo exch def /xo exch def /yi exch def /xi exch def /wb exch def /hb exch def 6 array astore /cmat exch def /cname exch def /fpath exch def /fname exch def DoScale % fit the character maximally onto the page Grid gsave DoLabs xo neg yo neg translate OrigMarks } def /DoLabs {gsave /Helvetica findfont [1 0 0 1 0 0] makefont setfont 0.1 setlinewidth newpath 0 -1.5 moveto 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto 0 -1.5 moveto wb -1.5 lineto -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto stroke newpath wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto gsave 1 -1 scale (BBw) show grestore -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto -1.5 0 moveto -1.5 hb lineto -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto stroke newpath -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto gsave 1 -1 scale (BBh) show grestore xo neg -3 moveto 0 -3 lineto 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto stroke newpath newpath xo neg -3 moveto gsave 1 -1 scale ( BBox) show grestore newpath % -3 yo neg moveto -3 0 lineto % 0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto % stroke newpath -4 yo neg moveto -4 hb lineto % ???? lower left?????? -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto stroke newpath -4 (BBoy ) stringwidth pop sub yo neg moveto gsave 1 -1 scale (BBoy) show grestore grestore } def /DoScale {3 72 mul hb div dup scale % hb == 3 inches 0 hb translate 1 -1 scale } def /OrigMarks {gsave 0 setgray .17 setlinewidth newpath 0 -1 moveto 0 1 lineto stroke newpath -1 0 moveto 1 0 lineto stroke .13 setlinewidth /xii xi round def newpath xii -.8 moveto 0 1.6 rlineto stroke newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke grestore } def /Bits {/xa exch def /yy exch yo add def gsave 0.2 setgray 0 2 xa length 1 sub {/i exch def xa i get 1 xa i 1 add get {/xx exch xo add def newpath xx 0.2 add yy 0.2 add moveto 0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill } for } for grestore } def /EndCachedChar { grestore sl restore } def /Grid {gsave /wbround wb 8 div 0.5 add round cvi 8 mul def wbround 1 add {newpath 0 0 moveto 0 hb lineto closepath fill 1 0 translate (-) print } repeat grestore gsave hb 1 add {newpath 0 0 moveto wbround 0 lineto closepath fill 0 1 translate (|) print } repeat grestore () = } def end 250 400 translate ShowCache cleartomark showpage xorg-docs-1.7.3/specs/BDF/fig2.ps0000644014310600000120000000613314600067622012011 %!PS-Adobe-1.0 mark /inch {72 mul}def /Helvetica findfont [10 0 0 10 0 0] makefont setfont /ShowCache {$sc begin gsave (Helvetica-Oblique) (FontPath)(rightquote) 0.0222222 -1.94273e-09 -1.94273e-09 -0.0222222 0 0 6 4 4.95555 0 2 -18 CachedChar 0 [1 3 ] Bits 1 [1 3 ] Bits 2 [1 3 ] Bits 3 [1 2 ] Bits 4 [0 2 ] Bits 5 [0 1 ] Bits EndCachedChar grestore end } def /$sc 120 dict def $sc begin /CN 100 string def /CachedChar {/sl save def /yo exch def /xo exch def /yi exch def /xi exch def /wb exch def /hb exch def 6 array astore /cmat exch def /cname exch def /fpath exch def /fname exch def DoScale % fit the character maximally onto the page Grid gsave DoLabs xo neg yo neg translate OrigMarks } def /DoLabs {gsave /Helvetica findfont [1 0 0 1 0 0] makefont setfont 0.1 setlinewidth newpath 0 -1.5 moveto 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto 0 -1.5 moveto wb -1.5 lineto -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto stroke newpath wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto gsave 1 -1 scale (BBw) show grestore -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto -1.5 0 moveto -1.5 hb lineto -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto stroke newpath -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto gsave 1 -1 scale (BBh) show grestore xo neg -3 moveto 0 -3 lineto -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto stroke newpath newpath 0.5 -3 moveto gsave 1 -1 scale ( BBox) show grestore newpath -4 yo neg moveto 0 -12 rlineto % -3 yo neg moveto -3 yo neg hb add lineto % ???? lowerleft? 0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto stroke newpath -4 (BBoy ) stringwidth pop sub yo neg moveto gsave 1 -1 scale (BBoy) show grestore grestore } def /DoScale { % 3 72 mul hb div dup scale % hb == 3 inches % 0 hb translate % 1 -1 scale 3 72 mul 22 div dup scale 0 22 translate 1 -1 scale } def /OrigMarks {gsave 0 setgray .17 setlinewidth newpath 0 -1 moveto 0 1 lineto stroke newpath -1 0 moveto 1 0 lineto stroke .13 setlinewidth /xii xi round def newpath xii -.8 moveto 0 1.6 rlineto stroke newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke grestore } def /Bits {/xa exch def /yy exch yo add def gsave 0.2 setgray 0 2 xa length 1 sub {/i exch def xa i get 1 xa i 1 add get {/xx exch xo add def newpath xx 0.2 add yy 0.2 add moveto 0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill } for } for grestore } def /EndCachedChar { grestore sl restore } def /Grid {gsave /wbround wb 8 div 0.5 add round cvi 8 mul def wbround 1 add {newpath 0 0 moveto 0 hb lineto closepath fill 1 0 translate (-) print } repeat grestore gsave hb 1 add {newpath 0 0 moveto wbround 0 lineto closepath fill 0 1 translate (|) print } repeat grestore () = } def end 300 400 translate ShowCache cleartomark showpage xorg-docs-1.7.3/specs/BDF/bdf.ms0000644014310600000120000002001114600067622011701 \& .sp 1 .ce 4 \s+1\fBBitmap Distribution Format\fP\s-1 \s+1\fBVersion 2.1\fP\s-1 X Window System Standard X Version 11, Release 6.8 .sp 3 Copyright 1984, 1987, 1988 Adobe Systems, Inc. .sp 1 Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. .sp 3 .na .LP .XS Bitmap Distribution Format .XE .LP The Bitmap Distribution Format (BDF), Version 2.1, is an X Consortium standard for font interchange, intended to be easily understood by both humans and computers. .SH File Format .LP Character bitmap information will be distributed in an USASCII-encoded, human-readable form. Each file is encoded in the printable characters (octal 40 through 176) of USASCII plus carriage return and linefeed. Each file consists of a sequence of variable-length lines. Each line is terminated either by a carriage return (octal 015) and linefeed (octal 012) or by just a linefeed. .LP The information about a particular family and face at one size and orientation will be contained in one file. The file begins with information pertaining to the face as a whole, followed by the information and bitmaps for the individual characters. .LP A font bitmap description file has the following general form, where each item is contained on a separate line of text in the file. Tokens on a line are separated by spaces. Keywords are in upper case, and must appear in upper case in the file. .IP 1. 5 The word STARTFONT followed by a version number indicating the exact file format used. The version described here is 2.1. .IP 2. 5 Lines beginning with the word COMMENT may appear anywhere between the STARTFONT line and the ENDFONT line. These lines are ignored by font compilers. .IP 3. 5 The word FONT followed by either the XLFD font name (as specified in part III) or some private font name. Creators of private font name syntaxes are encouraged to register unique font name prefixes with the X Consortium to prevent naming conflicts. Note that the name continues all the way to the end of the line and may contain spaces. .IP 4. 5 The word SIZE followed by the \fIpoint size\fP of the characters, the \fIx resolution\fP, and the \fIy resolution\fP of the device for which these characters were intended. .IP 5. 5 The word FONTBOUNDINGBOX followed by the \fIwidth in x\fP, \fIheight in y\fP, and the x and y displacement of the lower left corner from the \fIorigin\fP. (See the examples in the next section.) .IP 6. 5 Optionally, the word STARTPROPERTIES followed by the number of properties (\^\fIp\fP\^) that follow. .IP 7. 5 Then come \fIp\fP lines consisting of a word for the \fIproperty name\fP followed by either an integer or string surrounded by double-quote (octal 042). Internal double-quote characters are indicated by using two in a row. .IP Properties named FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR should be provided to define the logical font-ascent and font-descent and the default-char for the font. These properties will be removed from the actual font properties in the binary form produced by a compiler. If these properties are not provided, a compiler may reject the font or may compute (arbitrary) values for these properties. .IP 8. 5 The property section, if it exists, is terminated by ENDPROPERTIES. .IP 9. 5 The word CHARS followed by the number of character segments (\^\fIc\fP\^) that follow. .IP 10. 5 Then come \fIc\fP character segments of the form: .RS .IP a. 5 The word STARTCHAR followed by up to 14 characters (no blanks) of descriptive \fIname\fP of the glyph. .IP b. 5 The word ENCODING followed by one of the following forms: .RS .IP i. 5 \- the glyph index, that is, a positive integer representing the character code used to access the glyph in X requests, as defined by the encoded character set given by the CHARSET_REGISTRY-CHARSET_ENCODING font properties for XLFD conforming fonts. If these XLFD font properties are not defined, the encoding scheme is font-dependent. .IP ii. 5 \-1 \- equivalent to form above. This syntax is provided for backward compatibility with previous versions of this specification and is not recommended for use with new fonts. .IP iii. 5 \-1 \- an unencoded glyph. Some font compilers may discard unencoded glyphs, but, in general, the glyph names may be used by font compilers and X servers to implement dynamic mapping of glyph repertoires to character encodings as seen through the X protocol. .RE .IP c. 5 The word SWIDTH followed by the \fIscalable width\fP in x and y of character. Scalable widths are in units of 1/1000th of the size of the character. If the size of the character is \fIp\fP points, the width information must be scaled by \fIp\fP/1000 to get the width of the character in printer's points. This width information should be considered as a vector indicating the position of the next character's origin relative to the origin of this character. To convert the scalable width to the width in device pixels, multiply SWIDTH times \fIp\fP/1000 times \fIr\fP/72, where \fIr\fP is the device resolution in pixels per inch. The result is a real number giving the ideal print width in device pixels. The actual device width must of course be an integral number of device pixels and is given in the next entry. The SWIDTH y value should always be zero for a standard X font. .IP d. 5 The word DWIDTH followed by the width in x and y of the character in device units. Like the SWIDTH, this width information is a vector indicating the position of the next character's origin relative to the origin of this character. Note that the DWIDTH of a given ``hand-tuned'' WYSIWYG glyph may deviate slightly from its ideal device-independent width given by SWIDTH in order to improve its typographic characteristics on a display. The DWIDTH y value should always be zero for a standard X font. .IP e. 5 The word BBX followed by the width in x (\^\fIBBw\fP\^), \fIheight\fP in y (\^\fIBBh\fP\^), and x and y displacement (\^\fIBBox\fP, \fIBBoy\fP\^) of the lower left corner from the \fIorigin\fP of the character. .IP f. 5 The optional word ATTRIBUTES followed by the attributes as 4 \fIhex-encoded\fP characters. The interpretation of these attributes is undefined in this document. .IP g. 5 The word BITMAP. .IP h. 5 \fIh\fP lines of \fIhex-encoded\fP bitmap, padded on the right with zeros to the nearest byte (that is, multiple of 8). .IP i. 5 The word ENDCHAR. .RE .IP 11. 5 The file is terminated with the word ENDFONT. .SH Metric Information .LP Figures 1 and 2 best illustrate the bitmap format and character metric information. .bp \& .sp 30 .ce 5 BBw = 9, BBh = 22, BBox = -2, BBoy = -6 DWIDTH = 8 0 SWIDTH = 355 0 ``+'' = character origin and width Figure 1: An example of a descender .bp \& .sp 30 .ce 4 BBh = 6, BBw = 4, BBox = +2, BBoy = +12 DWIDTH = 5 0 SWIDTH = 223 0 Figure 2: An example with the origin outside the bounding box .bp .SH An Example File .LP The following is an abbreviated example of a bitmap file containing the specification of two characters (the j and quoteright in figures 1 and 2). .LP .Ds STARTFONT 2.1 COMMENT This is a sample font in 2.1 format. FONT -Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-65-ISO8859-1 SIZE 24 75 75 FONTBOUNDINGBOX 9 24 -2 -6 STARTPROPERTIES 19 FOUNDRY "Adobe" FAMILY "Helvetica" WEIGHT_NAME "Bold" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 24 POINT_SIZE 240 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "P" AVERAGE_WIDTH 65 CHARSET_REGISTRY "ISO8859" CHARSET_ENCODING "1" MIN_SPACE 4 FONT_ASCENT 21 FONT_DESCENT 7 COPYRIGHT "Copyright (c) 1987 Adobe Systems, Inc." NOTICE "Helvetica is a registered trademark of Linotype Inc." ENDPROPERTIES CHARS 2 STARTCHAR j ENCODING 106 SWIDTH 355 0 DWIDTH 8 0 BBX 9 22 -2 -6 BITMAP 0380 0380 0380 0380 0000 0700 0700 0700 0700 0E00 0E00 0E00 0E00 0E00 1C00 1C00 1C00 1C00 3C00 7800 F000 E000 ENDCHAR STARTCHAR quoteright ENCODING 39 SWIDTH 223 0 DWIDTH 5 0 BBX 4 6 2 12 ATTRIBUTES 01C0 BITMAP 70 70 70 60 E0 C0 ENDCHAR ENDFONT .De xorg-docs-1.7.3/specs/Makefile.in0000644014310600000120000004345714600067626012306 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = specs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = CTEXT ICCCM XLFD Xserver all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/specs/specindex.html0000644014310600000120000001504514600067622013075 The X.Org Foundation: Documentation: Specification Documents

X.Org Documentation: Specification and Related Documents

The formatting of some of the HTML versions of these documents may have some problems. In such cases refer to the PDF versions.

Core and Extension Protocols

Other Protocols and Interfaces

Internationalization

Client Libraries

Formats and Encodings

Implementation and Design

Miscellaneous

xorg-docs-1.7.3/specs/CTEXT/0000755014310600000120000000000014600067630011166 5xorg-docs-1.7.3/specs/CTEXT/Makefile.am0000644014310600000120000000046714600067622013152 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = ctext.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/ctext # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS xorg-docs-1.7.3/specs/CTEXT/Makefile.in0000644014310600000120000005424214600067626013167 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/CTEXT ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = ctext.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = ctext.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/ctext # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/CTEXT/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/CTEXT/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/specs/CTEXT/ctext.xml0000644014310600000120000006602014600067622012764 %defs; ]>
Compound Text Encoding X Consortium Standard RobertW.Scheifler X Consortium 1989X Consortium X Version 11, Release &fullrelvers; Version 1.1 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. Overview Compound Text is a format for multiple character set data, such as multi-lingual text. The format is based on ISO standards for encoding and combining character sets. Compound Text is intended to be used in three main contexts: inter-client communication using selections, as defined in the Inter-Client Communication Conventions Manual (ICCCM); window properties (e.g., window manager hints as defined in the ICCCM); and resources (e.g., as defined in Xlib and the Xt Intrinsics). Compound Text is intended as an external representation, or interchange format, not as an internal representation. It is expected (but not required) that clients will convert Compound Text to some internal representation for processing and rendering, and convert from that internal representation to Compound Text when providing textual data to another client. Values The name of this encoding is "COMPOUND_TEXT". When text values are used in the ICCCM-compliant selection mechanism or are stored as window properties in the server, the type used should be the atom for "COMPOUND_TEXT". Octet values are represented in this document as two decimal numbers in the form col/row. This means the value (col * 16) + row. For example, 02/01 means the value 33. For our purposes, the octet encoding space is divided into four ranges: C0 octets from 00/00 to 01/15 GL octets from 02/00 to 07/15 C1 octets from 08/00 to 09/15 GR octets from 10/00 to 15/15 C0 and C1 are "control character" sets, while GL and GR are "graphic character" sets. Only a subset of C0 and C1 octets are used in the encoding, and depending on the character set encoding defined as GL or GR, a subset of GL and GR octets may be used; see below for details. All octets (00/00 to 15/15) may appear inside the text of extended segments (defined below). [For those familiar with ISO 2022, we will use only an 8-bit environment, and we will always use G0 for GL and G1 for GR.] Control Characters In C0, only the following values will be used: 00/09 HT HORIZONTAL TABULATION 00/10 NL NEW LINE 01/11 ESC (ESCAPE) In C1, only the following value will be used: 09/11 CSI CONTROL SEQUENCE INTRODUCER [The alternate 7-bit CSI encoding 01/11 05/11 is not used in Compound Text.] No control sequences are defined in Compound Text for changing the C0 and C1 sets. A horizontal tab can be represented with the octet 00/09. Specification of tabulation width settings is not part of Compound Text and must be obtained from context (in an unspecified manner). [Inclusion of horizontal tab is for consistency with the STRING type currently defined in the ICCCM.] A newline (line separator/terminator) can be represented with the octet 00/10. [Note that 00/10 is normally LINEFEED, but is being interpreted as NEWLINE. This can be thought of as using the (deprecated) NEW LINE mode, E.1.3, in ISO 6429. Use of this value instead of 08/05 (NEL, NEXT LINE) is for consistency with the STRING type currently defined in the ICCCM.] The remaining C0 and C1 values (01/11 and 09/11) are only used in the control sequences defined below. Standard Character Set Encodings The default GL and GR sets in Compound Text correspond to the left and right halves of ISO 8859-1 (Latin 1). As such, any legal instance of a STRING type (as defined in the ICCCM) is also a legal instance of type COMPOUND_TEXT. [The implied initial state in ISO 2022 is defined with the sequence: 01/11 02/00 04/03 GO and G1 in an 8-bit environment only. Designation also invokes. 01/11 02/00 04/07 In an 8-bit environment, C1 represented as 8-bits. 01/11 02/00 04/09 Graphic character sets can be 94 or 96. 01/11 02/00 04/11 8-bit code is used. 01/11 02/08 04/02 Designate ASCII into G0. 01/11 02/13 04/01 Designate right-hand part of ISO Latin-1 into G1. ] To define one of the approved standard character set encodings to be the GL set, one of the following control sequences is used: 01/11 02/08 {I} F 94 character set 01/11 02/04 02/08{I} F 94N character set To define one of the approved standard character set encodings to be the GR set, one of the following control sequences is used: 01/11 02/09 {I} F 94 character set 01/11 02/13 {I} F 96 character set 01/11 02/04 02/09 {I} F 94N character set The "F"in the control sequences above stands for "Final character", which is always in the range 04/00 to 07/14. The "{I}" stands for zero or more "intermediate characters", which are always in the range 02/00 to 02/15, with the first intermediate character always in the range 02/01 to 02/03. The registration authority has defined an "{I} F" sequence for each registered character set encoding. [Final characters for private encodings (in the range 03/00 to 03/15) are not permitted here in Compound Text.] For GL, octet 02/00 is always defined as SPACE, and octet 07/15 (normally DELETE) is never used. For a 94-character set defined as GR, octets 10/00 and 15/15 are never used. [This is consistent with ISO 2022.] A 94N character set uses N octets (N > 1) for each character. The value of N is derived from the column value for F: column 04 or 05 2 octets column 06 3 octets column 07 4 or more octets In a 94N encoding, the octet values 02/00 and 07/15 (in GL) and 10/00 and 15/15 (in GR) are never used. [The column definitions come from ISO 2022.] Once a GL or GR set has been defined, all further octets in that range (except within control sequences and extended segments) are interpreted with respect to that character set encoding, until the GL or GR set is redefined. GL and GR sets can be defined independently, they do not have to be defined in pairs. Note that when actually using a character set encoding as the GR set, you must force the most significant bit (08/00) of each octet to be a one, so that it falls in the range 10/00 to 15/15. [Control sequences to specify character set encoding revisions (as in section 6.3.13 of ISO 2022) are not used in Compound Text. Revision indicators do not appear to provide useful information in the context of Compound Text. The most recent revision can always be assumed, since revisions are upward compatible.] Approved Standard Encodings The following are the approved standard encodings to be used with Compound Text. Note that none have Intermediate characters; however, a good parser will still deal with Intermediate characters in the event that additional encodings are later added to this list. {I} F 94/96 Description 4/02 94 7-bit ASCII graphics (ANSI X3.4-1968), Left half of ISO 8859 sets 04/09 94 Right half of JIS X0201-1976 (reaffirmed 1984), 8-Bit Alphanumeric-Katakana Code 04/10 94 Left half of JIS X0201-1976 (reaffirmed 1984), 8-Bit Alphanumeric-Katakana Code 04/01 96 Right half of ISO 8859-1, Latin alphabet No. 1 04/02 96 Right half of ISO 8859-2, Latin alphabet No. 2 04/03 96 Right half of ISO 8859-3, Latin alphabet No. 3 04/04 96 Right half of ISO 8859-4, Latin alphabet No. 4 04/06 96 Right half of ISO 8859-7, Latin/Greek alphabet 04/07 96 Right half of ISO 8859-6, Latin/Arabic alphabet 04/08 96 Right half of ISO 8859-8, Latin/Hebrew alphabet 04/12 96 Right half of ISO 8859-5, Latin/Cyrillic alphabet 04/13 96 Right half of ISO 8859-9, Latin alphabet No. 5 04/01 942 GB2312-1980, China (PRC) Hanzi 04/02 942 JIS X0208-1983, Japanese Graphic Character Set 04/03 942 KS C5601-1987, Korean Graphic Character Set The sets listed as "Left half of ..." should always be defined as GL. The sets listed as "Right half of ..." should always be defined as GR. Other sets can be defined either as GL or GR. Non-Standard Character Set Encodings Character set encodings that are not in the list of approved standard encodings can be included using "extended segments". An extended segment begins with one of the following sequences: 01/11 2/05 02/15 03/00 M L variable number of octets per character 01/11 2/05 02/15 03/01 M L 1 octet per character 01/11 2/05 02/15 03/02 M L 2 octet per character 01/11 2/05 02/15 03/03 M L 3 octet per character 01/11 2/05 02/15 03/04 M L 4 octet per character [This uses the "other coding system" of ISO 2022, using private Final characters.] The "M" and "L" octets represent a 14-bit unsigned value giving the number of octets that appear in the remainder of the segment. The number is computed as ((M - 128) * 128) + (L - 128). The most significant bit M and L are always set to one. The remainder of the segment consists of two parts, the name of the character set encoding and the actual text. The name of the encoding comes first and is separated from the text by the octet 00/02 (STX, START OF TEXT). Note that the length defined by M and L includes the encoding name and separator. [The encoding of the length is chosen to avoid having zero octets in Compound Text when possible, because embedded NUL values are problematic in many C language routines. The use of zero octets cannot be ruled out entirely however, since some octets in the actual text of the extended segment may have to be zero.] The name of the encoding should be registered with the X Consortium to avoid conflicts and should when appropriate match the CharSet Registry and Encoding registration used in the X Logical Font Description. The name itself should be encoded using ISO 8859-1 (Latin 1), should not use question mark (03/15) or asterisk (02/10), and should use hyphen (02/13) only in accordance with the X Logical Font Description. Extended segments are not to be used for any character set encoding that can be constructed from a GL/GR pair of approved standard encodings. For example, it is incorrect to use an extended segment for any of the ISO 8859 family of encodings. It should be noted that the contents of an extended segment are arbitrary; for example, they may contain octets in the C0 and C1 ranges, including 00/00, and octets comprising a given character may differ in their most significant bit. [ISO-registered "other coding systems" are not used in Compound Text; extended segments are the only mechanism for non-2022 encodings.] Directionality If desired, horizontal text direction can be indicated using the following control sequences: 09/11 03/01 05/13 begin left-to-right text 09/11 03/02 05/13 begin right-to-left text 09/11 05/13 end of string [This is a subset of the SDS (START DIRECTED STRING) control in the Draft Bidirectional Addendum to ISO 6429.] Directionality can be nested. Logically, a stack of directions is maintained. Each of the first two control sequences pushes a new direction on the stack, and the third sequence (revert) pops a direction from the stack. The stack starts out empty at the beginning of a Compound Text string. When the stack is empty, the directionality of the text is unspecified. Directionality applies to all subsequent text, whether in GL, GR, or an extended segment. If the desired directionality of GL, GR, or extended segments differs, then directionality control sequences must be inserted when switching between them. Note that definition of GL and GR sets is independent of directionality; defining a new GL or GR set does not change the current directionality, and pushing or popping a directionality does not change the current GL and GR definitions. Specification of directionality is entirely optional; text direction should be clear from context in most cases. However, it must be the case that either all characters in a Compound Text string have explicitly specified direction or that all characters have unspecified direction. That is, if directionality control sequences are used, the first such control sequence must precede the first graphic character in a Compound Text string, and graphic characters are not permitted whenever the directionality stack is empty. Resources To use Compound Text in a resource, you can simply treat all octets as if they were ASCII/Latin-1 and just replace all "\" octets (05/12) with the two octets "\\", all newline octets (00/10) with the two octets "\n", and all zero octets with the four octets "\000". It is up to the client making use of the resource to interpret the data as Compound Text; the policy by which this is ascertained is not constrained by the Compound Text specification. Font Names The following CharSet names for the standard character set encodings are registered for use in font names under the X Logical Font Description: Name Encoding Standard Description ISO8859-1 ISO8859-1 Latinalphabet No. 1 ISO8859-2 ISO8859-2 Latinalphabet No. 2 ISO8859-3 ISO8859-3 Latinalphabet No. 3 ISO8859-4 ISO8859-4 Latinalphabet No. 4 ISO8859-5 ISO 8859-5 Latin/Cyrillic alphabet ISO8859-6 ISO 8859-6 Latin/Arabic alphabet ISO8859-7 ISO8859-7 Latin/Greekalphabet ISO8859-8 ISO8859-8 Latin/Hebrew alphabet ISO8859-9 ISO8859-9 Latinalphabet No. 5 JISX0201.1976-0 JIS X0201-1976 (reaffirmed 1984) 8-bit Alphanumeric-Katakana Code GB2312.1980-0 GB2312-1980, GL encoding China (PRC) Hanzi JISX0208.1983-0 JIS X0208-1983, GL encoding Japanese Graphic Character Set KSC5601.1987-0 KS C5601-1987, GL encoding Korean Graphic Character Set Extensions There is no absolute requirement for a parser to deal with anything but the particular encoding syntax defined in this specification. However, it is possible that Compound Text may be extended in the future, and as such it may be desirable to construct the parser to handle 2022/6429 syntax more generally. There are two general formats covering all control sequences that are expected to appear in extensions: 01/11 {I} F For this format, I is always in the range 02/00 to 02/15, and F is always in the range 03/00 to 07/14. 09/11 {P} {I} F For this format, P is always in the range 03/00 to 03/15, I is always in the range 02/00 to 02/15, and F is always in the range 04/00 to 07/14. In addition, new (singleton) control characters (in the C0 and C1 ranges) might be defined in the future. Finally, new kinds of "segments" might be defined in the future using syntax similar to extended segments: 01/11 02/05 02/15 F M L For this format, F is in the range 03/05 to 3/15. M and L are as defined in extended segments. Such a segment will always be followed by the number of octets defined by M and L. These octets can have arbitrary values and need not follow the internal structure defined for current extended segments. If extensions to this specification are defined in the future, then any string incorporating instances of such extensions must start with one of the following control sequences: 01/11 02/03 V 03/00 ignoring extensions is OK 01/11 02/03 V 03/01 ignoring extensions is not OK In either case, V is in the range 02/00 to 02/15 and indicates the major version minus one of the specification being used. These version control sequences are for use by clients that implement earlier versions, but have implemented a general parser. The first control sequence indicates that it is acceptable to ignore all extension control sequences; no mandatory information will be lost in the process. The second control sequence indicates that it is unacceptable to ignore any extension control sequences; mandatory information would be lost in the process. In general, it will be up to the client generating the Compound Text to decide which control sequence to use. Errors If a Compound Text string does not match the specification here (e.g., uses undefined control characters, or undefined control sequences, or incorrectly formatted extended segments), it is best to treat the entire string as invalid, except as indicated by a version control sequence.
xorg-docs-1.7.3/specs/Makefile.am0000644014310600000120000000004114600067622012247 SUBDIRS=CTEXT ICCCM XLFD Xserver xorg-docs-1.7.3/specs/Xserver/0000755014310600000120000000000014600067631011736 5xorg-docs-1.7.3/specs/Xserver/Makefile.in0000644014310600000120000005437714600067626013747 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = specs/Xserver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = analysis.xml appgroup.xml secint.xml \ XACE-Spec.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_SPECS_TRUE@docbook = analysis.xml appgroup.xml secint.xml XACE-Spec.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_SPECS_TRUE@shelfdir = $(docdir)/Xserver # DocBook/XML generated output formats to be installed @ENABLE_SPECS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_SPECS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_SPECS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_SPECS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign specs/Xserver/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign specs/Xserver/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_SPECS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/specs/Xserver/Makefile.am0000644014310600000120000000054214600067622013713 if ENABLE_SPECS # Main DocBook/XML files (DOCTYPE book) docbook = analysis.xml appgroup.xml secint.xml XACE-Spec.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/Xserver # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_SPECS xorg-docs-1.7.3/specs/Xserver/secint.xml0000644014310600000120000003106614600067622013673 %defs; ]> Security Extension Server Design Draft X Consortium Standard DavidP.Wiggins X Consortium X Version 11, Release &fullrelvers; Version 3.0 1996X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. June 27, 2010 This paper describes the implementation strategy used to implement various pieces of the SECURITY Extension. Generate Authorization Request The major steps taken to execute this request are as follows. Sanity check arguments. The interesting one is the group, which must be checked by some other module(s), initially just the embedding extension. Use a new callback for this. The callback functions will be passed a small structure containing the group ID and a Boolean value which is initially false. If any of the callbacks recognize the ID, they should set the boolean to true. If after the callbacks have been called the boolean is false, return an error, since nobody recognized it. Use the existing Xkey library function XkeyGenerateAuthorization to generate the new authorization. Use the existing os layer function AddAuthorization to add the new authorization to the server's internal database. Use the existing os layer function AuthorizationToID to retrieve the authorization ID that the os layer assigned to the new authorization. Change the os layer to use authorization IDs allocated from the server's ID range via FakeClientID(0) instead of using a simple incrementing integer. This lets us use the resource database to attach additional information to an authorization without needing any changes to os data structures. Add the authorization ID as a server resource. The structure for an authorization resource will contain the timeout, trust-level, and group sent in the request, a reference count of how many clients are connected with this authorization, a timer pointer, and time-remaining counter. Return the authorization ID and generated auth data to the client. Client Connection The Security extension needs to be aware of new client connections primarily so that it copy the trust-level of the authorization that was used to the client structure. The trust-level is needed in the client structure because it will be accessed frequently to make access control decisions for the client. We will use the existing ClientStateCallback to catch new client connections. We also need to copy the authorization ID into the client structure. The authorization ID is already stored in an os private hung from the client, and we will add a new os function AuthorizationIDOfClient to retrieve it. However, when a client disconnects, this os private is already gone before ClientStateCallbacks are called. We need the authorization ID at client disconnect time for reasons described below. Now that we know what needs to be done and why, let's walk through the sequence of events. When a new client connects, get the authorization ID with AuthorizationIDOfClient, store it in the client, then pass that ID to LookupIDByType to find the authorization. If we get a non-NULL pointer back, this is a generated authorization, not one of the predefined ones in the server's authority file. In this case, increment the authorization's reference count. If the reference count is now 1, cancel the timer for this authorization using the trivial new os layer function TimerCancel. Lastly, copy the trust-level of this authorization into the client structure so that it can be reached quickly for future access control decisions. The embedding extension can determine the group to use for a new client in the same way that we determined the trust level: get the authorization ID, look it up, and if that succeeds, pluck the group out of the returned authorization structure. Client disconnection Use the existing ClientStateCallback to catch client disconnections. If the client was using a generated authorization, decrement its reference count. If the reference count is now zero, use the existing os layer function TimerSet to start a timer to count down the timeout period for this authorization. Record the timer ID for this authorization. When the timer fires, the authorization should be freed, removing all traces of it from the server. There is a slight complication regarding the timeout because the timer interface in the server allows for 32 bits worth of milliseconds, while the timeout specified in GenerateAuthorization has 32 bits worth of seconds. To handle this, if the specified time is more than the timer interface can handle, the maximum possible timeout will be set, and time-remaining counter for this authorization will be used to track the leftover part. When the timer fires, it should first check to see if there is any leftover time to wait. If there is, it should set another timer to the minimum of (the maximum possible timeout) and the time remaining, and not do the revocation yet. Resource ID Security To implement the restriction that untrusted clients cannot access resources of trusted clients, we add two new functions to dix: SecurityLookupIDByType and SecurityLookupIDByClass. Hereafter we will use SecurityLookupID to refer to both functions. In addition to the parameters of the existing LookupID functions, these functions also take a pointer to the client doing the lookup, and an access mode that conveys a high-level idea of what the client intends to do with the resource (currently just read, write, destroy, and unknown). Passing NullClient for the client turns off access checks. SecurityLookupID can return NULL for two reasons: the resource doesn't exist, or it does but the client isn't allowed to access it. The caller cannot tell the difference. Most places in dix call these new lookup functions instead of the old LookupID, which continue to do no access checking. Extension "Proc" functions should probably use SecurityLookupID, not LookupID. Ddxen can continue to use LookupID. Inside SecurityLookupID, the function client -> CheckAccess is called passing the client, resource id, resource type/class, resource value, and access mode. CheckAccess returns the resource value if access is allowed, else it returns NULL. The entire resource ID security policy of the Security extension can be replaced by plugging in your own access decision function here. This in combination with the access mode parameter should be enough to implement a more traditional DAC (discretionary access control) policy. Since we need client and access mode information to do access controlled resource lookups, we add (and use) several other macros and functions that parallel existing ones with the addition of the missing information. The list includes SECURITY_VERIFY_GC, SECURITY_VERIFY_DRAWABLE, SECURITY_VERIFY_GEOMETRABLE, SecurityLookupWindow, SecurityLookupDrawable, and dixChangeGC. The dixChangeGC interface is worth mentioning because in addition to a client parameter, we introduce a pointer-to-union parameter that should let us eliminate the warnings that some compilers give when you assign small integers to pointers, as the DoChangeGC interface required. For more details, see the comment preceding dixChangeGC in ;<dix/gc.c;>. If XCSECURITY is not defined (the Security extension is not being built), the server uses essentially the same code as before for resource lookups. Extension Security A new field in the ExtensionEntry structure, Bool secure, tells whether the extension is considered secure. It is initialized to FALSE by AddExtension. The following new dix function can be used to set the secure field: void DeclareExtensionSecurity char *extname Bool secure The name of the extension and the desired value of the secure field are passed. If an extension is secure, a call to this function with secure = TRUE will typically appear right after the call to AddExtension. should be called during server reset. It should not be called after the first client has connected. Passing the name of an extension that has not been initialized has no effect (the secure value will not be remembered in case the extension is later initialized). For untrusted clients, ProcListExtensions omits extensions that have secure = FALSE, and ProcQueryExtension reports that such extensions don't exist. To prevent untrusted clients from using extensions by guessing their major opcode, one of two new Proc vectors are used by untrusted clients, UntrusedProcVector and SwappedUntrustedProcVector. These have the same contents as ProcVector and SwappedProcVector respectively for the first 128 entries. Entries 128 through 255 are initialized to ProcBadRequest. If is called with secure = TRUE, that extension's dispatch function is plugged into the appropriate entry so that the extension can be used. If is called with secure = FALSE, the appropriate entry is reset to ProcBadRequest. Now we can explain why should not be called after the first client connects. In some cases, the Record extension gives clients a private copy of the proc vector, which it then changes to intercept certain requests. Changing entries in UntrusedProcVector and SwappedUntrustedProcVector will have no effect on these copied proc vectors. If we get to the point of needing an extension request to control which extensions are secure, we'll need to invent a way to get those copied proc vectors changed. xorg-docs-1.7.3/specs/Xserver/XACE-Spec.xml0000644014310600000120000021064314600067622014016 %defs; ]>
EamonF.Walsh efw National Security Agency X Access Control Extension Specification XACE-Spec X Version 11, Release &fullrelvers; 2009 1.0 19 Oct 2006 efw Initial Version 2.0 10 Mar 2008 efw Version 2.0 2.1 19 Jun 2009 efw Version 2.1 (XI2) 2.2 29 Jun 2009 efw Version 2.2 (Property post-data hook) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. The X Access Control Extension (XACE) is a set of generic "hooks" that can be used by other X extensions to perform access checks. The goal of XACE is to prevent clutter in the core dix/os code by providing a common mechanism for doing these sorts of checks. The concept is identical to the Linux Security Module (LSM) in the Linux Kernel. XACE version 1.0 was a generalization of the SECURITY extension, which provides a simple on/off trust model where "untrusted" clients are restricted in certain areas. Its hooks were for the most part straight replacements of the old SECURITY logic with generic hook calls. XACE version 2.0 has substantially modified many of the hooks, adding additional parameters and many new access types. Coverage has also been extended to many additional extensions, such as Render and Composite. Finally, there is new support for polyinstantiation, or duplicate, window properties and selections. This paper describes the implementation of XACE version 2.0, changes to the core server DIX and OS layers that have been made or are being considered, and each of the security hooks that XACE offers at the current time and their function. It is expected that changes to XACE be documented here. Please notify the authors of this document of any changes to XACE so that they may be properly documented.
Introduction
Prerequisites This document is targeted to programmers who are writing security extensions for X. It is assumed that the reader is familiar with the C programming language. It is assumed that the reader understands the general workings of the X protocol and X server.
Purpose XACE makes it easier to implement new security models for X by providing a set of pluggable hooks that extension writers can use. The idea is to provide an abstraction layer between security extensions and the core DIX/OS code of the X server. This prevents security extensions writers from having to understand the inner workings of the X server and it prevents X server maintainers from having to deal with multiple security subsystems, each with its own intrusive code. For example, consider the X.Org X server's resource subsystem, which is used to track different types of server objects using ID numbers. The act of looking up an object by its ID number is a security-relevant operation which security extension writers would likely wish to control. For one or two security extensions it may be acceptable to simply insert the extension's code directly into the resource manager code, bracketed by ifdef's. However for more extensions this approach leads to a tangle of code, particularly when results need to be logically combined, as in if statement conditions. Additionally, different extension writers might place their resource checking code in different places in the server, leading to difficulty in tracking down where exactly a particular lookup operation is being blocked. Finally, this approach may lead to unexpected interactions between the code of different extensions, since there is no collaboration between extension writers. The solution employed by the X Access Control Extension is to place hooks (calls into XACE) at security-relevant places, such as the resource subsystem mentioned above. Other extensions, typically in their initialization routines, can register callback functions on these hooks. When the hook is called from the server code, each callback function registered on it is called in turn. The callback function is provided with necessary arguments needed to make a security decision, including a return value argument which can be set to indicate the result. XACE itself does not make security decisions, or even know or care how such decisions are made. XACE merely enforces the result of the decision, such as by returning a BadAccess error to the requesting client. This separation between the decision-making logic and the enforcement logic is advantageous because it allows a great variety of security models to be developed without resorting to intrusive modifications to the core systems being secured. The challenge is to ensure that the hook framework itself provides hooks everywhere they need to be provided. Once created, however, a hook can be used by everyone, leading to less duplication of effort.
Prior Work
Security Extension XACE was initially based on the SECURITY extension. This extension introduced the concept of "trusted" and "untrusted" client connections, with the trust level established by the authorization token used in the initial client connection. Untrusted clients are restricted in several areas, notably in the use of background "None" windows, access to server resources owned by trusted clients, and certain keyboard input operations. Server extensions are also declared "trusted" or "untrusted," with only untrusted extensions being visible to untrusted client connections.
Solaris Trusted Extensions Trusted Extensions for Solaris has an X extension (Xtsol) which adds security functionality. Some of the XACE hooks in the current set were derived from security checks made by the Xtsol code. In other places, where the Xtsol and SECURITY extensions both have checks, a single XACE hook replaces both.
Linux Security Modules XACE is influenced by the Linux Security Modules project, which provides a similar framework of security hooks for the Linux kernel.
Version 2.0 Changes
Different Return-Value Semantics The status value returned by security modules has been changed. Formerly, security modules were expected to set the "rval" field of the input structure to "False" if access was to be denied. In version 2.0, this field has been removed in all hooks. Security modules must now set the "status" field to an X error code to describe the error. Typically, BadAccess will be returned, but this change allows security modules to return BadAlloc to report memory allocation failure and BadMatch to report a polyinstantiated object lookup failure ().
DevPrivates Mechanism The devPrivates mechanism in the X server was substantially revised to better support security extensions. The interface for using devPrivates has been unified across the different structures that support private data. Private space allocation is now independent of whether objects have already been created, and the private indexes are now global rather than being structure specific. Callbacks are available to initialize newly allocated space and to clean up before it is freed. Finally, there is a mechanism for looking up the offset of the private pointer field in a structure, given the structure's resource type.
New Access Modes In the previous version, there were four possible modes for the "access_mode" field: read, write, create, and destroy. In version 2.0, many new modes have been introduced to better describe X operations, particularly on window objects. The access_mode field has also been added to additional hooks as described in the individual hook changes.
Polyinstantiation XACE now supports polyinstantiation of selections and window properties. and describe the details, but the basic idea is that the property and selection access hooks may be used to not only change the return value of a lookup operation but also to modify the lookup result. This allows more than one property or selection with the same atom name to be maintained.
Removed Hooks The "drawable," "map," "window init", and "background" hooks have been removed. They have been folded into the resource access hook using new access modes. The "hostlist" hook has been removed and replaced by a new server access hook (see ). The "site policy" and "declare extension security" hooks have been removed as the SECURITY extension has been revised to no longer require them.
New Hooks New "send" and "receive" hooks have been added to allow basic control over event delivery. "Client" and "server" access hooks have been added to control access by clients to other clients (for example, through the KillClient call) and to the server (for example when changing the host access list or changing the font path). "Screen" and "screen saver" hooks have been added to control access to screens and screen saver requests. A "selection" hook has been added to control access to selections.
Changes to Existing Hooks The resource access hook structure now has additional fields to describe a "parent" object. They are set only when a resource with a defined parent (such as a Window object) is being created, in which case the access mode will include DixCreateAccess. The device access hook structure has had the "fromRequest" field removed and an access mode field added. The property access hook structure has had the "propertyName" field removed and a "ppProp" field added, which contains a pointer to a pointer to the property structure itself. The extra level of indirection supports polyinstantiation (see ). Note that the property structure contains the property name. The extension dispatch/access hook structure now has an access mode field.
Future Work
Security Hooks It is anticipated that the set of security hooks provided by XACE will change with time. Some hooks may become deprecated. More hooks will likely be added as well, as more portions of the X server are subjected to security analysis. Existing hooks may be added in more places in the code, particularly protocol extensions. Currently, the only method XACE provides for restricting access to some protocol extensions is to deny access to them entirely. It should be noted that XACE includes hooks in the protocol dispatch table, which allow a security extension to examine any incoming protocol request (core or extension) and terminate the request before it is handled by the server. This functionality can be used as a stopgap measure for security checks that are not supported by the other XACE hooks. The end goal, however, is to have hooks integrated into the server proper.
Core X Server The set of extensions supported by X.org needs to be re-examined. Many of them are essentially unused and removing them would be easier than attempting to secure them. The GLX extension and the direct rendering kernel interfaces need to be secured. The server's routines for event delivery need to be reworked to allow greater control by XACE modules. In particular, security extensions need to be able to associate private data with each event at the time of its generation based on the context and then have that data available at a decision point just before the event is delivered to the client. This would allow event delivery to be better controlled on a per-client basis, and would potentially allow additional security extension functionality such as piggyback events.
Usage
Storing Security State The first thing you, the security extension writer, should decide on is the state information that your extension will be storing and how it will be stored. XACE itself does not provide any mechanism for storing state. One method of storing state is global variables in the extension code. Tables can be kept corresponding to internal server structures, updated to stay synchronized with the structures themselves. One problem with this method is that the X server does not have consistent methods for lifecycle management of its objects, meaning that it might be difficult to keep state up to date with objects. Another method of storing state is to attach your extension's security data directly to the server structures. This method is possible via the devPrivates mechanism provide by the DIX layer. Structures supporting this mechanism can be identified by the presence of a "devPrivates" field. Full documentation of the devPrivates mechanism is described in the core X server documentation.
Using Hooks
Overview XACE has two header files that security extension code may need to include. Include Xext/xacestr.h if you need the structure definitions for the XACE hooks in your source file. Otherwise, include Xext/xace.h, which contains everything else including constants and function declarations. XACE hooks use the standard X server callback mechanism. Your security extension's callback functions should all use the following prototype:
void MyCallback CallbackListPtr *pcbl pointer userdata pointer calldata
When the callback is called, pcbl points to the callback list itself. The X callback mechanism allows the list to be manipulated in various ways, but XACE callbacks should not do this. Remember that other security extensions may be registered on the same hook. userdata is set to the data argument that was passed to at registration time; this can be used by your extension to pass data into the callback. calldata points to a value or structure which is specific to each XACE hook. These are discussed in the documentation for each specific hook, below. Your extension must cast this argument to the appropriate pointer type.
To register a callback on a given hook, use :
Bool XaceRegisterCallback int hook CallbackProcPtr callback pointer userdata
Where hook is the XACE hook you wish to register on, callback is the callback function you wish to register, and userdata will be passed through to the callback as its second argument, as described above. See for the list of XACE hook codes. is typically called from the extension initialization code; see the SECURITY source for examples. The return value is TRUE for success, FALSE otherwise.
To unregister a callback, use :
Bool XaceDeleteCallback int hook CallbackProcPtr callback pointer userdata
where the three arguments are identical to those used in the call to . The return value is TRUE for success, FALSE otherwise.
Hooks The currently defined set of XACE hooks is shown in . As discussed in , the set of hooks is likely to change in the future as XACE is adopted and further security analysis of the X server is performed. XACE security hooks. Hook Identifier Callback Argument Type Refer to XACE_CORE_DISPATCH XaceCoreDispatchRec XACE_EXT_DISPATCH XaceExtAccessRec XACE_RESOURCE_ACCESS XaceResourceAccessRec XACE_DEVICE_ACCESS XaceDeviceAccessRec XACE_PROPERTY_ACCESS XacePropertyAccessRec XACE_SEND_ACCESS XaceSendAccessRec XACE_RECEIVE_ACCESS XaceReceiveAccessRec XACE_CLIENT_ACCESS XaceClientAccessRec XACE_EXT_ACCESS XaceExtAccessRec XACE_SERVER_ACCESS XaceServerAccessRec XACE_SELECTION_ACCESS XaceSelectionAccessRec XACE_SCREEN_ACCESS XaceScreenAccessRec XACE_SCREENSAVER_ACCESS XaceScreenAccessRec XACE_AUTH_AVAIL XaceAuthAvailRec XACE_KEY_AVAIL XaceKeyAvailRec XACE_AUDIT_BEGIN XaceAuditRec XACE_AUDIT_END XaceAuditRec
In the descriptions that follow, it is helpful to have a listing of Xext/xacestr.h available for reference.
Core Dispatch This hook allows security extensions to examine all incoming core protocol requests before they are dispatched. The hook argument is a pointer to a structure of type XaceCoreDispatchRec. This structure contains a client field of type ClientPtr and a status field of type int. The client field refers to the client making the incoming request. Note that the complete request is accessible via the requestBuffer member of the client structure. The REQUEST family of macros, located in include/dix.h, are useful in verifying and reading from this member. The status field may be set to a nonzero X protocol error code. In this event, the request will not be processed further and the error code will be returned to the client.
Extension Dispatch This hook allows security extensions to examine all incoming extension protocol requests before they are dispatched. The hook argument is a pointer to a structure of type XaceExtAccessRec. This structure contains a client field of type ClientPtr, a ext field of type ExtensionEntry*, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the incoming request. Note that the complete request is accessible via the requestBuffer member of the client structure. The REQUEST family of macros, located in include/dix.h, are useful in verifying and reading from this member. The ext field refers to the extension being accessed. This is required information since extensions are not associated with any particular major number. The access_mode field is set to DixUseAccess when this hook is exercised. The status field may be set to a nonzero X protocol error code. In this event, the request will not be processed further and the error code will be returned to the client.
Resource Access This hook allows security extensions to monitor all resource lookups. The hook argument is a pointer to a structure of type XaceResourceAccessRec. This structure contains a client field of type ClientPtr, a id field of type XID, a rtype field of type RESTYPE, a res field of type pointer, a ptype field of type RESTYPE, a parent field of type pointer, a access_mode field of type Mask, and a status field of type int. The client field refers to the client on whose behalf the lookup is being performed. Note that this may be serverClient for server lookups. The id field is the resource ID being looked up. The rtype field is the type of the resource being looked up. The res field is the resource itself: the result of the lookup. The ptype field is the type of the parent resource or RT_NONE if not set. The parent field is the parent resource itself or NULL if not set. The parent resource is set only when two conditions are met: The resource in question is being created at the time of the call (in which case the access_mode will include DixCreateAccess) and the resource in question has a defined parent object. lists the resources that support parent objects. The purpose of these two fields is to provide generic support for "parent" resources. The access_mode field encodes the type of action being performed. The valid mode bits are defined in include/dixaccess.h. The meaning of the bits depends on the specific resource type. Tables for some common types can be found in . Note that the DixCreateAccess access mode has special meaning: it signifies that the resource object is in the process of being created. This provides an opportunity for the security extension to initialize its security label information in the structure devPrivates or otherwise. If the status field is set to an error code in this case, the resource creation will fail and no entry will be made under the specified resource ID. The status field may be set to a nonzero X protocol error code. In this event, the resource lookup will fail and an error (usually, but not always, the status value) will be returned to the client. Resource access hook access modes. Access Mode Bit Meaning Example Call Site DixReadAccess The primary data or contents of the object are being read (drawables, cursors, colormaps). GetImage, GetCursorImage, CreatePicture, QueryColors DixWriteAccess The primary data or contents of the object are being written (drawables, cursors, colormaps). PutImage, RenderTriFan, ClearArea, StoreColors, RecolorCursor DixDestroyAccess The object is being removed. CloseFont, DestroyWindow, FreePixmap, FreeCursor, RenderFreePicture DixCreateAccess The object is being created. CreateWindow, CreatePixmap, CreateGC, CreateColormap DixGetAttrAccess The object's attributes are being queried, or the object is being referenced. GetWindowAttributes, GetGeometry, QueryFont, CopyGC, QueryBestSize DixSetAttrAccess The object's attributes are being changed. SetWindowAttributes, ChangeGC, SetClipRectangles, XFixesSetCursorName DixListPropAccess User properties set on the object are being listed (windows). ListProperties DixGetPropAccess A user property set on the object is being read (windows). GetProperty, RotateProperties DixSetPropAccess A user property set on the object is being written (windows). ChangeProperty, RotateProperties, DeleteProperty DixListAccess Child objects of the object are being listed out (windows). QueryTree, MapSubwindows, UnmapSubwindows DixAddAccess A child object is being added to the object (drawables, fonts, colormaps). CreateWindow, ReparentWindow, AllocColor, RenderCreatePicture, RenderAddGlyphs DixRemoveAccess A child object is being removed from object (drawables, fonts, colormaps). DestroyWindow, ReparentWindow, FreeColors, RenderFreeGlyphs DixHideAccess Object is being unmapped or hidden from view (drawables, cursor). UnmapWindow, XFixesHideCursor DixShowAccess Object is being mapped or shown (drawables, cursor). MapWindow, XFixesShowCursor DixBlendAccess Drawable contents are being mixed in a way that may compromise contents. Background "None", CompositeRedirectWindow, CompositeRedirectSubwindows DixGrabAccess Override-redirect bit on a window has been set. CreateWindow, ChangeWindowAttributes DixInstallAccess Colormap is being installed. InstallColormap DixUninstallAccess Colormap is being uninstalled. UninstallColormap DixSendAccess An event is being sent to a window. SendEvent DixReceiveAccess A client is setting an event mask on a window. ChangeWindowAttributes, XiSelectExtensionEvent DixUseAccess The object is being used without modifying it (fonts, cursors, gc). CreateWindow, FillPoly, GrabButton, ChangeGC DixManageAccess Window-manager type actions on a drawable. CirculateWindow, ChangeSaveSet, ReparentWindow
Resource access hook parent objects. Resource Type Parent Resource Type Notes RT_WINDOW RT_WINDOW Contains the parent window. This will be NULL for root windows. RT_PIXMAP RT_WINDOW COMPOSITE extension only: the source window is passed as the parent for redirect pixmaps. RenderPictureType RC_DRAWABLE The source drawable is passed as the parent for Render picture objects.
Device Access This hook allows security extensions to restrict client actions on input devices. The hook argument is a pointer to a structure of type XaceDeviceAccessRec. This structure contains a client field of type ClientPtr, a dev field of type DeviceIntPtr, a access_mode field of type Mask, and a status field of type int. The client field refers to the client attempting to access the device (keyboard). Note that this may be serverClient. The dev field refers to the input device being accessed. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the device operation will fail and an error (usually, but not always, the status value) will be returned to the client. Device access hook access modes. Access Mode Bit Meaning Example Call Site DixGetAttrAccess Attributes of the device are being queried. GetKeyboardMapping, XiGetKeyboardControl, XkbGetDeviceInfo DixReadAccess The state of the device is being polled. QueryPointer, QueryKeymap, XkbGetState DixWriteAccess The state of the device is being programmatically manipulated. WarpPointer, XTestFakeInput, XiSendExtensionEvent DixSetAttrAccess Per-client device configuration is being performed. XkbPerClientFlags DixManageAccess Global device configuration is being performed. ChangeKeyboardMapping, XiChangeDeviceControl, XkbSetControls DixUseAccess The device is being opened or referenced. XiOpenDevice, XkbSelectEvents DixGrabAccess The device is being grabbed. GrabPointer, GrabButton, GrabKey DixFreezeAccess The state of the device is being frozen by a synchronous grab. GrabKeyboard, GrabPointer DixForceAccess The device cursor is being overridden by a grab. GrabPointer, GrabButton DixGetFocusAccess The device focus is being retrieved. GetInputFocus, XiGetDeviceFocus DixSetFocusAccess The device focus is being set. SetInputFocus, XiSetDeviceFocus DixBellAccess The device bell is being rung. Bell, XiDeviceBell DixCreateAccess The device object has been newly allocated. XIChangeDeviceHierarchy, XIAddMaster DixDestroyAccess The device is being removed. XIChangeDeviceHierarchy, XIRemoveMaster DixAddAccess A slave device is being attached to the device. XIChangeDeviceHierarchy, XIChangeAttachment DixRemoveAccess A slave device is being unattached from the device. XIChangeDeviceHierarchy, XIChangeAttachment DixListPropAccess Properties set on the device are being listed. ListDeviceProperties, XIListProperties DixGetPropAccess A property set on the device is being read. GetDeviceProperty, XIGetProperty DixSetPropAccess A property set on the device is being written. SetDeviceProperty, XISetProperty
Property Access This hook allows security extensions to monitor all property accesses and additionally to support polyinstantiation if desired. The hook argument is a pointer to a structure of type XacePropertyAccessRec. This structure contains a client field of type ClientPtr, a pWin field of type WindowPtr, a ppProp field of type PropertyPtr*, a access_mode field of type Mask, and a status field of type int. The client field refers to the client which is accessing the property. Note that this may be serverClient for server lookups. The pWin field is the window on which the property is being accessed. The ppProp field is a double-indirect pointer to the PropertyRec structure being accessed. The extra level of indirection supports property polyinstantiation; see below. If your extension does not use the polyinstantiation feature, simply dereference the pointer to obtain a PropertyPtr for the property The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the property request will not be processed further and the error code will be returned to the client. However, the BadMatch code has special meaning; see below. Property access hook mode bits. Access Mode Bit Meaning Example Call Site DixCreateAccess The property object has been newly allocated (this bit will always occur in conjunction with DixWriteAccess). ChangeProperty DixWriteAccess The property data is being completely overwritten with new data. ChangeProperty, RotateProperties DixBlendAccess The property data is being appended or prepended to. ChangeProperty DixReadAccess The property data is being read. GetProperty DixDestroyAccess The property data is being deleted. DeleteProperty DixGetAttrAccess Existence of the property is being disclosed. ListProperties DixPostAccess Post-write call reflecting new contents (this bit will always occur in conjunction with DixWriteAccess). ChangeProperty
New in XACE Version 2.0, this hook supports the polyinstantiation of properties. This means that more than one property may exist having the same name, and the security extension can control which property object is seen by which client. To perform property polyinstantiation, your security extension should take the following steps: When a property is being created (DixCreateAccess), the security extension should label it appropriately based on the client that is creating it. In this case, the ppProp field should not be modified. When a property is being looked up, the ppProp field will refer to the first structure in the linked list with the given name. The security extension may change the ppProp field to a different property structure by traversing the linked list (using the PropertyRec next field) to find an alternate structure with the same property name. Alternately, when a property is being looked up, the status may be set to BadMatch which will cause the DIX layer to treat the property as not existing. This may result in an additional property object with the same name being created (in which case the hook will be called again with the create access mode). New in XACE Version 2.2, this hook allows security extensions to verify the contents of properties after the client has written them. On a property change, the property access hook will be called twice. The first call is unchanged from previous versions. The second call will have the DixPostAccess bit together with DixWriteAccess and the ppProp property pointer will contain the new data. Setting the status field to something other than Success will cause the previous property contents to be restored and the client to receive the status code as an error. Note that in the case of property creation (when DixCreateAccess is set), the ppProp field already reflects the new data. Hence security extensions wishing to validate property data should check for either DixPostAccess or DixCreateAccess in conjunction with DixWriteAccess. If your extension does not need this feature, simply ignore calls with the DixPostAccess bit set.
Send Access This hook allows security extensions to prevent devices and clients from posting X events to a given window. The hook argument is a pointer to a structure of type XaceSendAccessRec. This structure contains a client field of type ClientPtr, a dev field of type DeviceIntPtr, a pWin field of type WindowPtr, a events field of type events, a count field of type int, and a status field of type int. The client field refers to the client attempting a SendEvent request or other synthetic event generation to the given window. This field may be NULL if the dev field is set. The dev field refers to the device attempting to post an event which would be delivered to the given window. This field may be NULL if the client field is set. The pWin field refers to the target window. The events field refers to the events that are being sent. The count field contains the number of events in the events array. The status field may be set to a nonzero X protocol error code. In this event, the events will be dropped on the floor instead of being delivered. This hook does not currently cover all instances of event delivery.
Receive Access This hook allows security extensions to prevent a client from receiving X events that have been delivered to a given window. The hook argument is a pointer to a structure of type XaceReceiveAccessRec. This structure contains a client field of type ClientPtr, a pWin field of type WindowPtr, a events field of type events, a count field of type int, and a status field of type int. The client field refers to the client to which the event would be delivered. The pWin field refers to the window where the event has been sent. The events field refers to the events that are being sent. The count field contains the number of events in the events array. The status field may be set to a nonzero X protocol error code. In this event, the events will not be delivered to the client. This hook does not currently cover all instances of event delivery.
Client Access This hook allows security extensions to prevent clients from manipulating other clients directly. This hook applies to a small set of protocol requests such as KillClient. The hook argument is a pointer to a structure of type XaceClientAccessRec. This structure contains a client field of type ClientPtr, a target field of type ClientPtr, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the request. The target field refers to the client being manipulated. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the request will fail and an error (usually, but not always, the status value) will be returned to the client. Client access hook mode bits. Access Mode Bit Meaning Example Call Site DixGetAttrAccess Attributes of the client are being queried. SyncGetPriority DixSetAttrAccess Attributes of the client are being set. SyncSetPriority DixManageAccess The client's close-down-mode (which affects global server resource management) is being set. SetCloseDownMode DixDestroyAccess The client is being killed. KillClient
Extension Access This hook allows security extensions to approve or deny requests involving which extensions are supported by the server. This allows control over which extensions are visible. The hook argument is a pointer to a structure of type XaceExtAccessRec. This structure contains a client field of type ClientPtr, a ext field of type ExtensionEntry*, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the incoming request, which is typically QueryExtension or ListExtensions. The ext field refers to the extension being accessed. This is required information since extensions are not associated with any particular major number. The access_mode field is set to DixGetAttrAccess when this hook is exercised. The status field may be set to a nonzero X protocol error code. In this event, the extension will be reported as not supported (QueryExtensions) or omitted from the returned list (ListExtensions). If this hook is used, an extension dispatch hook should also be installed to make sure that clients cannot circumvent the check by guessing the major opcodes of extensions.
Server Access This hook allows security extensions to approve or deny requests that affect the X server itself. The hook argument is a pointer to a structure of type XaceServerAccessRec, which contains a client field of type ClientPtr, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the request. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the request will fail and an error (usually, but not always, the status value) will be returned to the client. Server access hook mode bits. Access Mode Bit Meaning Example Call Site DixGetAttrAccess Attributes of the server are being queried. GetFontPath DixSetAttrAccess Attributes of the server are being set. SetFontPath DixManageAccess Server management is being performed. ChangeAccessControl, ListHosts DixGrabAccess A server grab is being performed. GrabServer DixReadAccess The server's actions are being recorded. Record, XEVIE extensions DixDebugAccess Server debug facilities are being used. XTest extension, XkbSetDebuggingFlags
Selection Access This hook allows security extensions to monitor all selection accesses and additionally to support polyinstantiation if desired. The hook argument is a pointer to a structure of type XaceSelectionAccessRec. This structure contains a client field of type ClientPtr, a ppSel field of type Selection**, a access_mode field of type Mask, and a status field of type int. The client field refers to the client which is accessing the property. Note that this may be serverClient for server lookups. The ppSel field is a double-indirect pointer to the Selection structure being accessed. The extra level of indirection supports selection polyinstantiation; see below. If your extension does not use the polyinstantiation feature, simply dereference the pointer to obtain a SelectionRec * for the selection. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the property request will not be processed further and the error code will be returned to the client. However, the BadMatch code has special meaning; see below. Selection access hook mode bits. Access Mode Bit Meaning Example Call Site DixCreateAccess The selection object has been newly allocated (this bit will always occur in conjunction with DixSetAttrAccess). SetSelectionOwner DixSetAttrAccess The selection owner is being set. SetSelectionOwner DixGetAttrAccess The selection owner is being queried. GetSelectionOwner DixReadAccess A convert operation is being requested on the selection. ConvertSelection
This hook supports the polyinstantiation of selections. This means that more than one selection may exist having the same name, and the security extension can control which selection object is seen by which client. To perform selection polyinstantiation, your security extension should take the following steps: When selection ownership is being established (DixSetAttrAccess), the security extension should label it appropriately based on the client that is taking ownership. In this case, the ppSel field should not be modified. When a selection is being looked up, the ppProp field will refer to the first structure in the linked list with the given name. The security extension may change the ppSel field to a different selection structure by traversing the linked list (using the Selection next field) to find an alternate structure with the same selection name. Alternately, when a selection is being looked up, the status may be set to BadMatch which will cause the DIX layer to treat the selection as not existing. This may result in an additional selection object with the same name being created (in which case the hook will be called again with the create access mode).
Screen Access This hook allows security extensions to approve or deny requests that manipulate screen objects The hook argument is a pointer to a structure of type XaceScreenAccessRec. This structure contains a client field of type ClientPtr, a screen field of type ScreenPtr, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the request. The screen field refers to the screen object being referenced. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the request will not be processed further and the error code will be returned to the client. Screen access hook mode bits. Access Mode Bit Meaning Example Call Site DixGetAttrAccess Attributes of the screen object are being queried. ListInstalledColormaps, QueryBestSize DixSetAttrAccess Attributes of the screen object are being set. InstallColormap DixHideAccess The cursor on the screen is being globally hidden. XFixesHideCursor DixShowAccess The cursor on the screen is being globally unhidden. XFixesShowCursor
Screen Saver Access This hook allows security extensions to approve or deny requests that manipulate the screensaver. The hook argument is a pointer to a structure of type XaceScreenAccessRec. This structure contains a client field of type ClientPtr, a screen field of type ScreenPtr, a access_mode field of type Mask, and a status field of type int. The client field refers to the client making the request. The screen field refers to the screen object being referenced. The access_mode field encodes the type of action being performed. The valid mode bits are described in the table below. The status field may be set to a nonzero X protocol error code. In this event, the request will not be processed further and the error code will be returned to the client. Screen saver access hook mode bits. Access Mode Bit Meaning Example Call Site DixGetAttrAccess Attributes of the screen saver are being queried. GetScreenSaver, ScreenSaverQueryInfo DixSetAttrAccess Attributes of the screen saver are being set. SetScreenSaver, ScreenSaverSelectInput DixHideAccess The screen saver is being programmatically activated. ForceScreenSaver, DPMSEnable DixShowAccess The screen saver is being programmatically deactivated. ForceScreenSaver, DPMSDisable
Authorization Availability Hook This hook allows security extensions to examine the authorization associated with a newly connected client. This can be used to set up client security state depending on the authorization method that was used. The hook argument is a pointer to a structure of type XaceAuthAvailRec. This structure contains a client field of type ClientPtr, and a authId field of type XID. The client field refers to the newly connected client. The authId field is the resource ID of the client's authorization. This hook has no return value. This hook is called after the client enters the initial state and before the client enters the running state. Keep this in mind if your security extension uses the ClientStateCallback list to keep track of clients. This hook is a legacy of the APPGROUP Extension. In the future, this hook may be phased out in favor of a new client state, ClientStateAuthenticated.
Keypress Availability Hook This hook allows security extensions to examine keypresses outside of the normal event mechanism. This could be used to implement server-side hotkey support. The hook argument is a pointer to a structure of type XaceKeyAvailRec. This structure contains a event field of type xEventPtr, a keybd field of type DeviceIntPtr, and a count field of type int. The event field refers to the keyboard event, typically a KeyPress or KeyRelease. The keybd field refers to the input device that generated the event. The count field is the number of repetitions of the event (not 100\% sure of this at present, however). This hook has no return value.
Auditing Hooks Two hooks provide basic auditing support. The begin hook is called immediately before an incoming client request is dispatched and before the dispatch hook is called (refer to ). The end hook is called immediately after the processing of the request has finished. The hook argument is a pointer to a structure of type XaceKeyAvailRec. This structure contains a client field of type ClientPtr, and a requestResult field of type int. The client field refers to client making the request. The requestResult field contains the result of the request, either Success or one of the protocol error codes. Note that this field is significant only in the end hook. These hooks have no return value.
Protocol
Requests XACE does not define any X protocol.
Events XACE does not define any X protocol.
Errors XACE does not define any X protocol.
xorg-docs-1.7.3/specs/Xserver/appgroup.xml0000644014310600000120000002350614600067622014243 %defs; ]>
Description of the Application Group Extension Implementation for the X11 Sample Server Kaleb KEITHLEY FUJITSU Limited. X Version 11, Release &fullrelvers; Version 1.0 1996X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. WindowsNT is a trademark of Microsoft, Inc. Macintosh and Apple are trademarks of Apple Computer, Inc. The following document explains the server side of the Application Group Extension. To understand this document and the accompanying source code, you should know the C language, should be familiar with X server internals, and should also have a general knowledge of the X Window System. AppGroup Server Public Functions The AppGroup extension adds seven new functions that are called from elsewhere in the server. They are: XagExtensionInit, XagDefaultColormap, XagRootVisual, XagLeader, XagIsControlledRoot, XagConnectionInfo, XagCallClientStateChange. XagExtensionInit is the extension initialization function called from InitExtension in mi/miinitext.c. Note that an new resource type, RT_APPGROUP, is created, specifying the destructor function XagAppGroupFree. XagDefaultColormap returns the colormap ID that was specified in the creation of the AppGroup. Any time CopyFromParent is specified for a top-level window's colormap, i.e. in a CreateWindow or ChangeWindowAttributes request, this function is called to see if there is an AppGroup specific colormap to use. If there is one, its ID is returned, otherwise None is returned. XagRootVisual returns the visual ID that was specified in the creation of the Appgroup. Like XagDefaultColormap, when CopyFromParent is specified for a top-level window's visual in a CreateWindow request, this function is called to see if there is an AppGroup specific visual to use. If there is one, its ID is returned, otherwise 0 (zero) is returned. XagLeader returns the ClientPtr of the client that is the AppGroup Leader. Normally when an application maps or configures a top-level window a MapRequest or ConfigureRequest event is delivered to the client, e.g. a window manager, that has selected SubstructureRedirect on the root window. However, when the application is part of an AppGroup, the MapRequest and ConfigureRequest events are delivered to the AppGroup Leader instead. XagIsControlledRoot returns a boolean: True if the window is a top-level window of a client in an AppGroup, False otherwise. In a combined server, i.e. one that provides both UI and printing, the application may create and map windows on the "printing" screens; thus it becomes necessary to discriminate between the AppGroup's root window and other root windows. If an AppGroup member creates and maps a [top-level] window then the window's parent [the root window] is tested to determine whether to send MapRequest or ConfigureRequest events to the AppGroup Leader to to some other client. In the trivial case XagIsControlledRoot returns True if the parent window has no parent itself, i.e. it is a root window. In the case where the application is embedded, indicated by the singleScreen attribute being True, the parent's drawable ID is compared to the AppGroup's root window ID, and if it is the same, True is returned. If neither case is true, then False is returned. XagConnectionInfo returns an abbreviated version of the connection setup information. When an embedded AppGroup is created the server returns only the information about the [UI] screen that the application is embedded within in the connection setup in order to prevent the application from creating windows on other screens; thus attempting to guarantee that any window that should be embedded can be reparented into the AppGroup Leader's window hierarchy. XagCallClientStateChange is called to invoke the extension's client state change callback additional times as necessary -- currently only once, after the auth data becomes available between ClientStateInitial and ClientStateConnected. Client state change callbacks were introduced in the Record extension, which specifies when the callbacks are invoked. Unfortunately the points at which they are called are not necessarily the best as far as the AppGroup Extension is concerned. Adding an additional state and calling all the callbacks works too, however this seemed unnecessary overkill. AppGroup Server Private APIs The AppGroup extension adds the following functions which are private to the extension: ProcXagDispatch and SProcXagDispatch, ProcXagQueryVersion and SProcXagQueryVersion, ProcXagCreate and SProcXagCreate, ProcXagDestroy and SProcXagDestroy, ProcGetAttr and SProcGetAttr, ProcXagQuery and SProcXagQuery, ProcXagCreateAssoc and SProcXagCreateAssoc, ProcXagDestroyAssoc and SProcXagDestroyAssoc, XagResetProc, and XagAppGroupFree. The ProcXagDispatch, SProcXagDispatch, and XagResetProc functions should be familiar to anyone familiar with X server internals and I won't elaborate on them here. Similarly the wrapper functions: SProcXagQueryVersion, SProcXagCreate, SProcXagDestroy, SProcXagGetAttr, SProcXagQuery, SProcXagCreateAssoc, and SProcXagDestroyAssoc, as wrappers which handle swapping integer data into the host's byte order will not be explained in any detail. ProcXagQueryVersion returns the major and minor versions of the AppGroup extension supported by the server. ProcXagCreate creates an AppGroup. A new record in a linked list of AppGroups is allocated and initialized. The attributes from the request are validated and copied to the AppGroup record. If necessary an abbreviated version of the connection setup information is compiled and also stored in the AppGroup record. The first time an AppGroup is created a client-state-change callback is registered and a reference count is incremented. ProcXagDestroy destroys an AppGroup an AppGroup by calling FreeResource specifying the AppGroup ID. This will result in the destructor function XagAppGroupFree being called. The reference count is decremented and when it reaches zero the client-state-change callback is deleted. ProcXagGetAttr returns the AppGroup Attributes to the requesting client. ProcXagQuery returns the AppGroup ID of an arbitrary resource to the requesting client. ProcXagCreateAssoc creates an association between an X window ID and system-specific data. In native X this functionality is unnecessary but for various personal computers, e.g. Macintosh, OS/2, and MS-Windows it is necessary to associate an X window ID with the system's native window identifier so that when the AppGroup Leader issues a ReparentWindow request the personal computer X server can lookup the system-specific window ID and make the necessary function call(s) with it. ProcXagDestroyAssoc destroys the association created with ProcXagCreateAssoc. XagResetProc removes the client-state-change callback, sets the reference count to zero, and frees all the AppGroup records in the linked list by calling XagAppGroupFree. XagAppGroupFree calls CloseDownClient for each client in an AppGroup if the AppGroup has a leader, unlinks the AppGroup record from the linked list, frees allocated memory referenced by the record, and finally frees the record itself. Known Problems in this release. In a combined UI/Print server the connection setup returned to an embedded application will not have information about the print screens. The LBX proxy caches connection setup information and will return incorrect connection setup information to an embedded client.
xorg-docs-1.7.3/specs/Xserver/analysis.xml0000644014310600000120000016466514600067622014245 %defs; ]> Analysis of the X Protocol for Security Concerns May 10, 1996 DavidP.Wiggins X Consortium X Version 11, Release &fullrelvers; Draft Version 2 1996X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of The Open Group. This paper attempts to list all instances of certain types of security problems in the X Protocol. Issues with authorization are not addressed. We assume that a malicious client has already succeeded in connecting, and try to assess what harm it can then do. We propose modifications to the semantics of the X Protocol to reduce these risks. Definition of Threats We analyze the X protocol for the following threats. Theft occurs when a client gains access to information owned by another client without explicit permission from that other client. For this analysis, we take a broad view of ownership: any information that exists in the server due to the actions of a client is considered owned by that client. Furthermore, the client that has input focus owns keyboard events, and the client that owns the window that the pointer is in owns mouse events. This view may reveal certain instances of "theft" that we don't care to stop, but we think it is better to identify all potential candidates up front and cull the list later than to do a partial analysis now and plan on reanalyzing for remaining holes later. Denial of service occurs when a client causes another client or the user to lose the ability to perform some operation. Spoofing occurs when a client attempts to mimic another client with the hope that the user will interact with it as if it really were the mimicked client. A wide variety of requests may be used in a spoofing attack; we will only point out a few likely candidates. Destruction occurs when a client causes another client to lose information in a way that the client or user is likely to notice. (This does not count expected forms of destruction, e.g., exposures.) Alteration occurs when a client causes another client to lose information in a way that the client or user is unlikely to notice. e.g., changing one pixel in a drawable. The line between alteration and destruction is subjective. Security literature does often distinguish between them, though not always explicitly. Alteration is often considered more insidious because its effects may not be realized until long after it has occurred. In the intervening time, each time the altered data is used, it can cause more damage. General security concerns and remedies The following sections discuss security problems intrinsic to the X Protocol. A statement of each problem is usually followed by potential remedies. A few words here about possible remedies will help frame the specific ones described below. If a client attempts a threatening operation, the server may take one of the following actions, listed roughly in order of severity: Execute the request normally. This is the right choice when we decide that a particular threat is not serious enough to worry about. Execute the request in some modified form, e.g., substitute different values for some of the request fields, or edit the reply. Arrange to ask the user what to do, given some subset of the other choices in this list. This must be used sparingly because of the performance impact. Treat the request as a no-op. If the client will probably not notice, or if it seems likely that the intent was benign, this is a good choice. Send a protocol error to the client. If the client will be confused enough by the other options that it will probably crash or become useless anyway, or if it seems likely that the intent was malicious, this is a good choice. Kill the client. This might be the right action if there is no doubt that the client is hostile. In most cases we present the one option that seems most appropriate to counter the threat, taking into account the seriousness of the threat, the implementation difficulty, and the impact on applications. Our initial bias is to err on the side of stronger security, with the accompanying tighter restrictions. As we uncover important operations and applications that the new restrictions interfere with, we can apply selective loosening to allow the desired functionality. In some cases we will suggest returning an Access error where the X protocol does not explicitly allow one. These new Access errors arise when a client can only perform a (non-empty) subset of the defined operations on a resource. The disallowed operations cause Access errors. The resource at issue is usually a root window. Access to Server Resources The X protocol allows clients to manipulate resources (objects) belonging to other clients or to the server. Any request that specifies a resource ID is vulnerable to some of the above threats. Such requests also provide a way for a client to guess resource IDs of other clients. A client can make educated guesses for possible resource IDs, and if the request succeeds, it knows it has determined a valid resource ID. We call this "resource ID guessing" in the list below. One likely defense against these problems is to have the server send an appropriate protocol error to deny the existence of any resource specified by a client that doesn't belong to that client. A variation on this policy lets cooperating groups of clients access each other's resources, but not those of other groups. The Broadway project will initially use a less general form of this idea by having two groups, trusted and untrusted. Trusted clients can do everything that X clients can do today. They will be protected from untrusted clients in ways described below. Untrusted clients will not be protected from each other. Though this will be the initial design, we need to make sure there is a growth path to multiple (more than two) groups. Most of the time, applications never access server resources that aren't their own, so the impact of disallowing such accesses should be minimal. There are a few notable exceptions, most of which will be discussed under the relevant protocol requests. They are: ICCCM selection transfer, Motif drag and drop, and server-global resources like the root window and default colormap. Another major exception is the window manager, which routinely manipulates windows of other applications. The solution for window managers is to always run them as trusted applications. The implementation difficulty of limiting access to resources should not be large. All resource accesses eventually funnel down to one of two functions in <dix/resource.c>: LookupIDByType and LookupIDByClass. A few lines of checking at the top of these functions will form the heart of this defense. There is a small problem because these functions are not told which client is doing the lookup, but that can be solved either by adding a client parameter (probably as a new function to preserve compatibility), or by using the server global requestingClient. ISSUE: are we really going to be able to get away with hiding trusted resources, or will things like Motif drag and drop force us to expose them? (Either way, the operations that untrusted clients can do to trusted resources will have to be limited.) Is there something in Xt or the ICCCM that breaks if you hide resources? Denial of Service Memory Exhaustion Any request that causes the server to consume resources (particularly memory) can be used in a denial of service attack. A client can use such requests repeatedly until the server runs out of memory. When that happens, the server will either crash or be forced to send Alloc errors. The most obvious candidates are resource creation requests, e.g., CreatePixmap, but in reality a large percentage of requests cause memory allocation, if only temporarily, depending on the server implementation. For this reason, the list of requests subject to this form of denial of service will be necessarily incomplete. To address this form of denial of service, the server could set per-client quotas on memory consumption. When the limit is surpassed, the server could return Alloc errors. The application impact is minimal as long as the application stays within quota. The implementation difficulty is another story. Conceptually, it seems easy: simply have a way to set the limit, and on every memory (de)allocation operation, update the client's current usage, and return an error if the client is over the limit. The first problem is something we've already touched on: the allocator functions aren't told which client the allocation belongs to. Unlike resource lookups, allocations are done in too many places to consider a new interface that passes the client, so using the global requestingClient is practically mandatory. The problems run deeper. The logical thing for the allocator to do if the client is over its limit is to return NULL, indicating allocation failure. Unfortunately, there are many places in the server that will react badly if this happens. Most of these places, but not all, are "protected" by setting the global variable Must_have_memory to True around the delicate code. We could help the problem by skipping the limit check if Must_have_memory is True. The best solution would be to bullet-proof the server against allocation failures, but that is beyond the scope of Broadway. Another consideration is that the additional checking may have a measurable performance impact, since the server does frequent allocations. A third problem is that there is no portable way to determine the size of a chunk of allocated memory given just a pointer to the chunk, and that's all you have inside Xrealloc and Xfree. The server could compensate by recording the sizes itself somewhere, but that would be wasteful of memory, since the malloc implementation also must be recording block sizes. On top of that, the redundant bookkeeping would hurt performance. One solution is to use a custom malloc that has the needed support, but that too seems beyond the scope of Broadway. Considering all of this, we think it is advisable to defer solving the memory exhaustion problem to a future release. Keep this in mind when you see quotas mentioned as a defense in the list below. CPU Monopolization Another general way that a client can cause denial of service is to flood the server with requests. The server will spend a large percentage of its time servicing those requests, possibly starving other clients and certainly hurting performance. Every request can be used for flooding, so we will not bother to list flooding on every request. A variation on this attack is to flood the server with new connection attempts. To reduce the effectiveness of flooding, the server could use a different scheduling algorithm that throttles clients that are monopolizing the server, or it could simply favor trusted clients over untrusted ones. Applications cannot depend on a particular scheduling algorithm anyway, so changing it should not affect them. The Synchronization extension specifies a way to set client priorities, and a simple priority scheduler already exists in the server to support it, so this should be simple to add. Security concerns with specific window attributes Background-pixmap Clients can use windows with the background-pixmap attribute set to None (hereafter "background none windows") to obtain images of other windows. A background none window never paints its own background, so whatever happened to be on the screen when the window was mapped can be read from the background none window with GetImage. This may well contain data from other windows. The CreateWindow and ChangeWindowAttributes requests can set the background-pixmap attribute set to None, and many window operations can cause data from other windows to be left in a background none window, including ReparentWindow, MapWindow, MapSubwindows, ConfigureWindow, and CirculateWindow. Background none windows can also be used to cause apparent alteration. A client can create a window with background none and draw to it. The drawing will appear to the user to be in the windows below the background none window. To remedy these problems, the server could substitute a well-defined background when a client specifies None. Ideally the substituted background would look different enough from other windows that the user wouldn't be confused. A tile depicting some appropriate international symbol might be reasonable. We believe that there are few applications that actually rely on background none semantics, and those that do will be easy for the user to identify because of the distinctive tile. Implementation should not be a problem either. Luckily, the window background cannot be retrieved through the X protocol, so we won't have to maintain any illusions about its value. ISSUE: Some vendors have extensions to let you query the window background. Do we need to accommodate that? ISSUE: Will this lead to unacceptable application breakage? Could the server be smarter, only painting with the well-defined background when the window actually contains bits from trusted windows? ParentRelative and CopyFromParent Several window attributes can take on special values that cause them to reference (ParentRelative) or copy (CopyFromParent) the same attribute from the window's parent. This fits our definition of theft. The window attributes are class, background-pixmap, border-pixmap, and colormap. All of these can be set with CreateWindow; all but class can be set with ChangeWindowAttributes. These forms of theft aren't particularly serious, so sending an error doesn't seem appropriate. Substitution of different attribute values seems to be the only reasonable option, and even that is likely to cause trouble for clients. Untrusted clients are already going to be prevented from creating windows that are children of trusted clients (see CreateWindow below). We recommend that nothing more be done to counter this threat. Override-redirect Windows with the override-redirect bit set to True are generally ignored by the window manager. A client can map an override-redirect window that covers most or all of the screen, causing denial of service since other applications won't be visible. To prevent this, the server could prevent more than a certain percentage (configurable) the of screen area from being covered by override-redirect windows of untrusted clients. Override-redirect windows also make some spoofing attacks easier since the client can more carefully control the presentation of the window to mimic another client. Defenses against spoofing will be given under . Security concerns with specific requests To reduce the space needed to discuss 120 requests, most of the following sections use a stylized format. A threat is given, followed by an imperative statement. The implied subject is an untrusted client, and the object is usually a trusted client. Following that, another statement starting with "Defense:" recommends a countermeasure for the preceding threat(s). Resources owned by the server, such as the root window and the default colormap, are considered to be owned by a trusted client. CreateWindow Alteration: create a window as a child of another client's window, altering its list of children. Defense: send Window error. Specifying the root window as the parent will have to be allowed, though. Theft: create an InputOnly window or a window with background none on top of other clients' windows, select for keyboard/mouse input on that window, and steal the input. The input can be resent using SendEvent or an input synthesis extension so that the snooped application continues to function, though this won't work convincingly with the background none case because the drawing will be clipped. Defense: send an error if a top-level InputOnly window is created (or reparented to the root). Countermeasures for background none and SendEvent are discussed elsewhere. ISSUE: The Motif drag and drop protocol creates and maps such a window (at -100, -100, size 10x10) to "cache frequently needed data on window properties to reduce roundtrip server requests." Proposed solution: we could only send an error if the window is visible, which would require checking in, MapWindow, ConfigureWindow, and ReparentWindow. Theft: resource ID guessing (parent, background-pixmap, border-pixmap, colormap, and cursor). Defense: send Window, Pixmap, Colormap, or Cursor error. Denial of service: create windows until the server runs out of memory. Defense: quotas. Also ChangeWindowAttributes Alteration: change the attributes of another client's window. Theft: select for events on another client's window. Defense for both of the above: send Window error. ISSUE: The Motif drop protocol states that "the initiator should select for DestroyNotify on the destination window such that it is aware of a potential receiver crash." This will be a problem if the initiator is an untrusted window and the destination is trusted. Can the server, perhaps with the help of the security manager, recognize that a drop is in progress and allow the DestroyNotify event selection in this limited case? ISSUE: The Motif pre-register drag protocol probably requires the initiator to select for Enter/LeaveNotify on all top-level windows. Same problem as the previous issue. Theft: resource ID guessing (background-pixmap, border-pixmap, colormap, and cursor). Defense: send Pixmap, Colormap, or Cursor error. Also GetWindowAttributes Theft: get the attributes of another client's window. Theft: resource ID guessing (window). Defense for both of the above: send Window error. DestroyWindow, DestroySubwindows Destruction: destroy another client's window. Theft: resource ID guessing (window). Defense for both of the above: send Window error. ChangeSaveSet Alteration: cause another client's windows to be reparented to the root when this client disconnects (only if the other client's windows are subwindows of this client's windows). Defense: process the request normally. The trusted client gives away some of its protection by creating a subwindow of an untrusted window. Theft: resource ID guessing (window). Defense: send Window error. MapWindow Spoofing: map a window that is designed to resemble a window of another client. Additional requests will probably be needed to complete the illusion. Defense: We consider spoofing to be a significant danger only if the user is convinced to interact with the spoof window. The defense centers on providing enough information to enable the user to know where keyboard, mouse, and extension device input is going. To accomplish this, the server will cooperate with the security manager, an external process. The server will provide the following facilities to the security manager: 1. A way to create a single window that is unobscurable by any window of any other client, trusted or untrusted. It needs to be unobscurable so that it is spoof-proof. ISSUE: is a weaker form of unobscurability better? Should the window be obscurable by trusted windows, for example? ISSUE: does unobscurable mean that it is a child of the root that is always on top in the stacking order? 2. A way to determine if a given window ID belongs to an untrusted client. The security manager will need to select for the existing events FocusIn, FocusOut, EnterNotify, LeaveNotify, DeviceFocusIn, and DeviceFocusOut on all windows to track what window(s) the user's input is going to. Using the above server facilities, it can reliably display the trusted/untrusted status of all clients currently receiving input. ISSUE: is it too much to ask the security manager to select for all these events on every window? Do we need to provide new events that you select for *on the device* that tell where the device is focused? None of this should have any application impact. The unobscurable window may be tricky to implement. There is already some machinery in the server to make an unobscurable window for the screen saver, which may help but may also get in the way now that we have to deal with two unobscurable windows. Window Operations Specifically, ReparentWindow, MapWindow, MapSubwindows, UnmapWindow, UnmapSubwindows, ConfigureWindow, and CirculateWindow. Alteration: manipulate another client's window. Theft: resource ID guessing (window, sibling). Defense for both of the above: send a Window error unless it is a root window, in which case we should send an Access error. GetGeometry Theft: get the geometry of another client's drawable. Theft: resource ID guessing (drawable). Defense for both of the above: send Drawable error. However, root windows will be allowed. QueryTree Theft: resource ID guessing (window). Defense: send Window error. Theft: discover window IDs that belong to other clients. Defense: For the child windows, censor the reply by removing window IDs that belong to trusted clients. Allow the root window to be returned. For the parent window, if it belongs to a trusted client, return the closest ancestor window that belongs to an untrusted client, or if such a window does not exist, return the root window for the parent window. ISSUE: will some applications be confused if we filter out the window manager frame window(s), or other windows between the queried window and the root window? ISSUE: the Motif drag protocol (both preregister and dynamic) needs to be able to locate other top-level windows for potential drop sites. See also . InternAtom Theft: discover atom values of atoms interned by other clients. This lets you determine if a specific set of atoms has been interned, which may lead to other inferences. Defense: This is a minor form of theft. Blocking it will interfere with many types of inter-client communication. We propose to do nothing about this threat. Denial of service: intern atoms until the server runs out of memory. Defense: quotas. GetAtomName Theft: discover atom names of atoms interned by other clients. This lets you determine if a specific set of atoms has been interned, which may lead to other inferences. Defense: This is a minor form of theft. We propose to do nothing about this threat. ChangeProperty Alteration: change a property on another client's window or one that was stored by another client. Theft: resource ID guessing (window). Defense for both of the above: send Window error. ISSUE: Selection transfer requires the selection owner to change a property on the requestor's window. Does the security manager get us out of this? Does the server notice the property name and window passed in ConvertSelection and temporarily allow that window property to be written? ISSUE: should certain root window properties be writable? Denial of service: store additional property data until the server runs out of memory. Defense: quotas. DeleteProperty Destruction: delete a property stored by another client. Theft: resource ID guessing (window). Defense for both of the above: send Window error. GetProperty Theft: get a property stored by another client. Theft: resource ID guessing (window). Defense for both of the above: send Window error. ISSUE: should certain root window properties be readable? Proposed answer: yes, some configurable list. Do those properties need to be polyinstantiated? ISSUE: Motif drag and drop needs to be able to read the following properties: WM_STATE to identify top-level windows, _MOTIF_DRAG_WINDOW on the root window, _MOTIF_DRAG_TARGETS on the window given in the _MOTIF_DRAG_WINDOW property, and _MOTIF_DRAG_RECEIVER_INFO on windows with drop sites. Additionally, some properties are needed that do not have fixed names. RotateProperties Alteration: rotate properties stored by another client. Theft: resource ID guessing (window). Defense for both of the above: send Window error. ListProperties Theft: list properties stored by another client. Theft: resource ID guessing (window). Defense for both of the above: send Window error. ISSUE: should certain root window properties be listable? SetSelectionOwner Theft: Steal ownership of a selection. Denial of service: do this repeatedly so that no other client can own the selection. Defense for both of the above: have a configurable list of selections that untrusted clients can own. For other selections, treat this request as a no-op. ISSUE: how does the security manager get involved here? Is it the one that has the configurable list of selections instead of the server? Theft: resource ID guessing (window). Defense: send Window error. GetSelectionOwner Theft: discover the ID of another client's window via the owner field of the reply. Defense: if the selection is on the configurable list mentioned above, return the root window ID, else return None. ISSUE: how does the security manager get involved here? ConvertSelection Theft: this initiates a selection transfer (see the ICCCM) which sends the selection contents from the selection owner, which may be another client, to the requesting client. Defense: since in many cases ConvertSelection is done in direct response to user interaction, it is probably best not to force it to fail, either silently or with an error. The server should rely on the security manager to assist in handling the selection transfer. Theft: resource ID guessing (requestor). Defense: send Window error. SendEvent A client can use SendEvent to cause events of any type to be sent to windows of other clients. Similarly, a client could SendEvent to one of its own windows with propagate set to True and arrange for the event to be propagated up to a window it does not own. Clients can detect events generated by SendEvent, but we cannot assume that they will. Defense: ignore this request unless the event being sent is a ClientMessage event, which should be sent normally so that selection transfer, Motif drag and drop, and certain input methods have a chance at working. ISSUE: does allowing all ClientMessages open up too big a hole? Theft: resource ID guessing (window). Defense: send Window error. Keyboard and Pointer Grabs Specifically, GrabKeyboard, GrabPointer, GrabKey, and GrabButton. Denial of service/Theft: take over the keyboard and pointer. This could be viewed as denial of service since it prevents other clients from getting keyboard or mouse input, or it could be viewed as theft since the user input may not have been intended for the grabbing client. Defense: provide a way to break grabs via some keystroke combination, and have a status area that shows which client is getting input. (See ). Theft: resource ID guessing (grab-window, confine-to, cursor). Defense: send Window or Cursor error. ChangeActivePointerGrab Theft: resource ID guessing (cursor). Defense: send Cursor error. GrabServer Denial of service: a client can grab the server and not let go, locking out all other clients. Defense: provide a way to break grabs via some keystroke combination. QueryPointer Theft: A client can steal pointer motion and position, button input, modifier key state, and possibly a window of another client with this request. Defense: if the querying client doesn't have the pointer grabbed, and the pointer is not in one of its windows, the information can be zeroed. Theft: resource ID guessing (window). Defense: send Window error. GetMotionEvents Theft: steal pointer motion input that went to other clients. Defense: ideally, the server would return only pointer input that was not delivered to any trusted client. The implementation effort to do that probably outweighs the marginal benefits. Instead, we will always return an empty list of motion events to untrusted clients. Theft: resource ID guessing (window). Defense: send Window error. TranslateCoordinates Theft: discover information about other clients' windows: position, screen, and possibly the ID of one of their subwindows. Defense: send an error if src-window or dst-window do not belong to the requesting client. Theft: resource ID guessing (src-window, dst-window). Defense: send Window error. WarpPointer A client can cause pointer motion to occur in another client's window. Denial of service: repeated pointer warping prevents the user from using the mouse normally. Defense for both of the above: if the querying client doesn't have the pointer grabbed, and the pointer is not in one of its windows, treat the request as a no-op. Theft: resource ID guessing (src-window, dst-window). Defense: send Window error. SetInputFocus Theft: a client can use this request to make one of its own windows have the input focus (keyboard focus). The user may be unaware that keystrokes are now going to a different window. Denial of service: repeatedly setting input focus prevents normal use of the keyboard. Defense for both of the above: only allow untrusted clients to SetInputFocus if input focus is currently held by another untrusted client. ISSUE: this will break clients using the Globally Active Input model described in section 4.1.7 of the ICCCM. Theft: resource ID guessing (focus). Defense: send Window error. GetInputFocus Theft: the reply may contain the ID of another client's window. Defense: return a focus window of None if a trusted client currently has the input focus. QueryKeymap Theft: poll the keyboard with this to see which keys are being pressed. Defense: zero the returned bit vector if a trusted client currently has the input focus. Font Requests Specifically, OpenFont, QueryFont, ListFonts, ListFontsWithInfo, and QueryTextExtents. Theft: discover font name, glyph, and metric information about fonts that were provided by another client (by setting the font path). Whether it is theft to retrieve information about fonts from the server's initial font path depends on whether or not you believe those fonts, by their existence in the initial font path, are intended to be globally accessible by all clients. Defense: Maintain two separate font paths, one for trusted clients and one for untrusted clients. They are both initialized to the default font path at server reset. Subsequently, changes to one do not affect the other. Since untrusted clients will not see font path elements added by trusted clients, they will not be able to access any fonts provided by those font path elements. Theft: resource ID guessing (font) (QueryFont and QueryTextExtents only). Defense: send Font error. Denial of service: open fonts until the server runs out of memory (OpenFont only). Defense: quotas. CloseFont Destruction: close another client's font. Defense: send Font error. SetFontPath Denial of service: change the font path so that other clients cannot find their fonts. Alteration: change the font path so that other clients get different fonts than they expected. Defense for both of the above: separate font paths for trusted and untrusted clients, as described in the Font Requests section. ISSUE: the printing project considered per-client font paths and concluded that it was very difficult to do. We should look at this aspect of the print server design to see if we can reuse the same scheme. We should also try to reconstruct what was so difficult about this; it doesn't seem that hard on the surface. GetFontPath Theft: retrieve font path elements that were set by other clients. Use knowledge from font path elements to mount other attacks, e.g., attack a font server found in the font path. Defense for both of the above: separate font paths for trusted and untrusted clients, as described in the Font Requests section. CreatePixmap Theft: resource ID guessing (drawable). Defense: send Drawable error. Denial of service: create pixmaps until the server runs out of memory. Defense: quotas. FreePixmap Destruction: destroy another client's pixmap. Defense: send Pixmap error. CreateGC Theft: resource ID guessing (drawable, tile, stipple, font, clip-mask). Defense: send Drawable, Pixmap, or Font error. Denial of service: create GCs until the server runs out of memory. Defense: quotas. CopyGC Theft: copy GC values of another client's GC. Alteration: copy GC values to another client's GC. Defense for both of the above: send GC error. ChangeGC, SetDashes, SetClipRectangles Alteration: change values of another client's GC. Theft: resource ID guessing (gc, tile, stipple, font, clip-mask) (last four for ChangeGC only). Defense for both of the above: send GC error. FreeGC Destruction: destroy another client's GC. Defense: send GC error. Drawing Requests Specifically, ClearArea, CopyArea, CopyPlane, PolyPoint, PolyLine, PolySegment, PolyRectangle, PolyArc, FillPoly, PolyFillRectangle, PolyFillArc, PutImage, PolyText8, PolyText16, ImageText8, and ImageText16. Alteration: draw to another client's drawable. Theft: resource ID guessing: ClearArea - window; CopyArea, CopyPlane - src-drawable, dst-drawable, gc; all others - drawable, gc. Defense for both of the above: send appropriate error. ISSUE: The Motif preregister drag protocol requires clients to draw into windows of other clients for drag-over/under effects. Spoofing: draw to a window to make it resemble a window of another client. Defense: see . GetImage Theft: get the image of another client's drawable. Theft: resource ID guessing (drawable). Defense: send Drawable error. Theft: get the image of your own window, which may contain pieces of other overlapping windows. Defense: censor returned images by blotting out areas that contain data from trusted windows. CreateColormap Theft: resource ID guessing (window). Defense: send Colormap error. Denial of service: create colormaps with this request until the server runs out of memory. Defense: quotas. FreeColormap Destruction: destroy another client's colormap. Defense: send Colormap error. CopyColormapAndFree Theft: resource ID guessing (src-map). Defense: send Colormap error. However, default colormaps will be allowed. ISSUE: must untrusted applications be allowed to use standard colormaps? (Same issue for ListInstalledColormaps, Color Allocation Requests, FreeColors, StoreColors, StoreNamedColor, QueryColors, and LookupColor.) Denial of service: create colormaps with this request until the server runs out of memory. Defense: quotas. InstallColormap, UninstallColormap Theft: resource ID guessing. Defense: send Colormap error. Denial of service: (un)install any colormap, potentially preventing windows from displaying correct colors. Defense: treat this request as a no-op. Section 4.1.8 of the ICCCM states that (un)installing colormaps is the responsibility of the window manager alone. ISSUE: the ICCCM also allows clients to do colormap installs if the client has the pointer grabbed. Do we need to allow that too? ListInstalledColormaps Theft: resource ID guessing (window). Defense: send Colormap error. Theft: discover the resource ID of another client's colormap from the reply. Defense: remove the returned colormap IDs; only let through default colormaps and colormaps of untrusted clients. Color Allocation Requests Specifically, AllocColor, AllocNamedColor, AllocColorCells, and AllocColorPlanes. Alteration/Denial of service: allocate colors in another client's colormap. It is denial of service if the owning client's color allocations fail because there are no cells available. Otherwise it is just alteration. Theft: resource ID guessing (cmap). Defense for both of the above: send Colormap error. However, default colormaps will be allowed. FreeColors Theft: resource ID guessing (cmap). Defense: send Colormap error. However, default colormaps will be allowed. StoreColors, StoreNamedColor Alteration: change the colors in another client's colormap. Theft: resource ID guessing (cmap). Defense for both of the above: send Colormap error. However, default colormaps will be allowed. QueryColors, LookupColor Theft: retrieve information about the colors in another client's colormap. Theft: resource ID guessing (cmap). Defense for both of the above: send Colormap error. However, default colormaps will be allowed. CreateCursor, CreateGlyphCursor Theft: resource ID guessing (source, mask or source-font, mask-font). Defense: send Pixmap or Font error. However, the default font will be allowed. Denial of service: create cursors until the server runs out of memory. Defense: quotas. FreeCursor Destruction: free another client's cursor. Defense: send Cursor error. RecolorCursor Alteration: recolor another client's cursor. Theft: resource ID guessing (cursor). Defense for both of the above: send Cursor error. QueryBestSize Theft: resource ID guessing (drawable). Defense: send Drawable error. ListExtensions, QueryExtension Determine the extensions supported by the server, and use the list to choose extension-specific attacks to attempt. Defense: extensions will have a way to tell the server whether it is safe for untrusted clients to use them. These requests will only return information about extensions that claim to be safe. Keyboard configuration requests Specifically, ChangeKeyboardControl, ChangeKeyboardMapping, and SetModifierMapping. Alteration: change the keyboard parameters that were established by another client. Denial of service: with ChangeKeyboardControl, disable auto-repeat, key click, or the bell. With ChangeKeyboardMapping or SetModifierMapping, change the key mappings so that the keyboard is difficult or impossible to use. Defense for both of the above: treat these requests as a no-op. Keyboard query requests Specifically, GetKeyboardControl, GetKeyboardMapping, and GetModifierMapping. Theft: get keyboard information that was established by another client. Defense: This is a minor form of theft. We propose to do nothing about this threat. ChangePointerControl, SetPointerMapping Alteration: change the pointer parameters that were established by another client. Denial of service: set the pointer parameters so that the pointer is difficult or impossible to use. Defense for both of the above: treat these requests as a no-op. GetPointerControl, GetPointerMapping Theft: get pointer parameters that were established by another client. Defense: This is a minor form of theft. We propose to do nothing about this threat. SetScreenSaver Alteration: change the screen saver parameters that were established by another client. Denial of service: set the screen saver parameters so that the screen saver is always on or always off. Defense for both of the above: treat these requests as a no-op. GetScreenSaver Theft: get screen saver parameters that were established by another client. Defense: This is a minor form of theft. We propose to do nothing about this threat. ForceScreenSaver Denial of service: repeatedly activate the screen saver so that the user cannot see the screen as it would look when the screen saver is off. Denial of service: repeatedly reset the screen saver, preventing it from activating. Defense for both of the above: treat these requests as a no-op. ChangeHost Most servers already have some restrictions on which clients can use this request, so whether the following list applies is implementation dependent. Denial of service: remove a host from the list, preventing clients from connecting from that host. Add a host to the list. Clients from that host may then launch other attacks of any type. Defense for both of the above: return Access error. ListHosts Theft: steal host identities and possibly even user identities that are allowed to connect. Launch attacks of any type against the stolen host/user identities. Defense for both of the above: return only untrusted hosts. SetAccessControl Most servers already have some restrictions on which clients can use this request, so whether the following list applies is implementation dependent. Alteration: change the access control value established by some other client. Disable access control, allowing clients to connect who would normally not be able to connect. Those clients may then launch other attacks of any type. Defense for both of the above: return Access error. SetCloseDownMode Denial of service: set the close-down mode to RetainPermanent or RetainTemporary, then disconnect. The server cannot reuse the resource-id-base of the disconnected client, or the memory used by the retained resources, unless another client issues an appropriate KillClient to cancel the retainment. The server has a limited number of resource-id-bases, and when they are exhausted, it will be unable to accept new client connections. Defense: treat this request as a no-op. KillClient Destruction/Denial of service: kill another currently connected client. Destruction: kill a client that has terminated with close-down mode of RetainTemporary or RetainPermanent, destroying all its retained resources. Destruction: specify AllTemporary as the resource, destroying all resources of clients that have terminated with close-down mode RetainTemporary. Defense for all of the above: return Value error. Clean Requests Other than denial of service caused by flooding, these requests have no known security concerns: AllowEvents, UngrabPointer, UngrabButton, UngrabKeyboard, UngrabKey, UngrabServer, NoOperation, and Bell. Events The only threat posed by events is theft. Selecting for events on another client's resources is always theft. We restrict further analysis by assuming that the client only selects for events on its own resources, then asking whether the events provide information about other clients. KeymapNotify Theft: the state of the keyboard can be seen when the client does not have the input focus. This is possible because a KeymapNotify is sent to a window after every EnterNotify even if the window does not have input focus. Defense: zero the returned bit vector if a trusted client currently has the input focus. Expose Theft: discover where other clients' windows overlap your own. For instance, map a full-screen window, lower it, then raise it. The resulting exposes tell you where other windows are. Defense: about the only thing you could do here is force backing store to be used on untrusted windows, but that would probably use too much server memory. We propose to do nothing about this threat. GraphicsExposure Theft: discover where other clients' windows overlap your own. For instance, use CopyArea to copy the entire window's area exactly on top of itself. The resulting GraphicsExposures tell you where the window was obscured. Defense: see Expose above. We propose to do nothing about this threat. VisibilityNotify Theft: this event provides crude positional information about other clients, though the receiver cannot tell which other clients. Defense: The information content of this event is very low. We propose to do nothing about this threat. ReparentNotify Theft: the parent window may belong to some other client (probably the window manager). Defense: If the parent window belongs to a trusted client, return the closest ancestor window that belongs to an untrusted client, or if such a window does not exist, return the root window for the parent window. ISSUE: what is the application impact? ConfigureNotify Theft: the above-sibling window may belong to some other client. Defense: return None for the above-sibling window if it belongs to a trusted client. ISSUE: what is the application impact? ConfigureRequest Theft: the sibling window may belong to some other client. Defense: return None for the sibling window if it belongs to a trusted client. ISSUE: what is the application impact? SelectionClear Theft: the owner window may belong to some other client. Defense: return None for the owner window if it belongs to a trusted client. SelectionRequest Theft: the requestor window may belong to some other client. Defense: Blocking this event or censoring the window would prevent selection transfers from untrusted clients to trusted clients from working. We propose to do nothing in the server about this threat. The security manager may reduce the exposure of trusted window IDs by becoming the owner of all selections. MappingNotify Theft: discover keyboard, pointer, or modifier mapping information set by another client. Defense: Any tampering with this event will cause clients to have an inconsistent view of the keyboard or pointer button configuration, which is likely to confuse the user. We propose to do nothing about this threat. Errors There appear to be no threats related to protocol errors. Future Work The next steps are resolve the items marked ISSUE and to decide if the defenses proposed are reasonable. Discussion on the security@x.org mailing list, prototyping, and/or starting the implementation should help answer these questions. References Bellcore, "Framework Generic Requirements for X Window System Security," Technical Advisory FA-STS-001324, Issue 1, August 1992. Dardailler, Daniel, "Motif Drag And Drop Protocol," unpublished design notes. Kahn, Brian L., "Safe Use of X WINDOW SYSTEM protocol Across a Firewall", unpublished draft, The MITRE Corporation, 1995. Rosenthal, David S. H., "LINX - a Less INsecure X server," Sun Microsystems, 29th April 1989. Rosenthal, David and Marks, Stuart W., "Inter-Client Communication Conventions Manual Version 2.0," ftp://ftp.x.org/pub/R6.1/xc/doc/hardcopy/ICCCM/icccm.PS.Z Scheifler, Robert W., "X Window System Protocol," ftp://ftp.x.org/pub/R6.1/xc/doc/hardcopy/XProtocol/proto.PS.Z Treese, G. Winfield and Wolman, Alec, "X Through the Firewall, and Other Application Relays," Digital Equipment Corporation Cambridge Research Lab, Technical Report Series, CRL 93/10, May 3, 1993. xorg-docs-1.7.3/configure.ac0000644014310600000120000000416414600067622011376 dnl Copyright 2005 Red Hat, Inc. dnl dnl Permission to use, copy, modify, distribute, and sell this software dnl and its documentation for any purpose is hereby granted without fee, dnl provided that the above copyright notice appear in all copies and dnl that both that copyright notice and this permission notice appear in dnl supporting documentation, and that the name of Red Hat not be used in dnl advertising or publicity pertaining to distribution of the software dnl without specific, written prior permission. Red Hat makes no dnl representations about the suitability of this software for any dnl purpose. It is provided "as is" without express or implied warranty. dnl dnl RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN dnl NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS dnl OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE dnl OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE dnl USE OR PERFORMANCE OF THIS SOFTWARE. dnl dnl Process this file with autoconf to create configure. # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xorg-docs], [1.7.3], [https://gitlab.freedesktop.org/xorg/doc/xorg-docs/-/issues], [xorg-docs]) AC_CONFIG_SRCDIR([Makefile.am]) # Initialize Automake AM_INIT_AUTOMAKE([foreign dist-xz]) # Require xorg-macros minimum of 1.20 for XORG_DEFAULT_NOCODE_OPTIONS m4_ifndef([XORG_MACROS_VERSION], [m4_fatal([must install xorg-macros 1.20 or later before running autoconf/autogen])]) XORG_MACROS_VERSION(1.20) XORG_DEFAULT_NOCODE_OPTIONS XORG_ENABLE_DOCS XORG_ENABLE_SPECS XORG_WITH_XMLTO(0.0.22) XORG_WITH_XSLTPROC XORG_WITH_FOP XORG_CHECK_SGML_DOCTOOLS(1.8) AC_CONFIG_FILES([Makefile general/Makefile general/fonts/Makefile general/input/Makefile general/graphics/Makefile general/platforms/Makefile man/Makefile specs/Makefile specs/CTEXT/Makefile specs/ICCCM/Makefile specs/XLFD/Makefile specs/Xserver/Makefile]) AC_OUTPUT xorg-docs-1.7.3/Makefile.in0000644014310600000120000007033014600067626011157 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Copyright 2005 Red Hat, Inc. # # Permission to use, copy, modify, distribute, and sell this software # and its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and # that both that copyright notice and this permission notice appear in # supporting documentation, and that the name of Red Hat not be used in # advertising or publicity pertaining to distribution of the software # without specific, written prior permission. Red Hat makes no # representations about the suitability of this software for any # purpose. It is provided "as is" without express or implied warranty. # # RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN # NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE # USE OR PERFORMANCE OF THIS SOFTWARE. # # Process this file with autoconf to create configure. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(dist_doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in ChangeLog INSTALL README.md \ config.guess config.sub install-sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz GZIP_ENV = --best DIST_TARGETS = dist-xz dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = general man specs dist_doc_DATA = MAINTAINERS MAINTAINERCLEANFILES = ChangeLog INSTALL EXTRA_DIST = \ README.md \ misc/xlogo.epsi \ misc/xlogo.svg \ registry \ specs/BDF/bdf.ms \ specs/BDF/fig1.ps \ specs/BDF/fig2.ps \ specs/specindex.html all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_docDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_docDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip dist-zstd distcheck distclean distclean-generic \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am uninstall-dist_docDATA .PRECIOUS: Makefile .PHONY: ChangeLog INSTALL INSTALL: $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) dist-hook: ChangeLog INSTALL # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/config.sub0000644014310600000120000010575214600067626011101 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-01-21' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) ;; uclinux-uclibc* ) ;; managarm-mlibc* | managarm-kernel* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel* ) echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel* ) echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: xorg-docs-1.7.3/general/0000755014310600000120000000000014600067630010577 5xorg-docs-1.7.3/general/README.xml0000644014310600000120000002375214600067622012210 %defs; ]>
README for X11R&relvers; The X.Org Foundation &reldate; X11R&relvers; is an Open Source version of the X Window System that supports many UNIX and UNIX-like operating systems (such as Linux, FreeBSD, NetBSD, OpenBSD, and Solaris) on a variety of platforms. This version is compatible with X11R&prevrelvers; and other X Window System implementations which support the X11 standard. What is X11R&relvers;? X11R&relvers; was the &whichfullrel; release in the X11R&majorvers; series. Specific release enhancements can be viewed in the Release Notes. Most modern PC video hardware is supported in this release, and most PC video hardware that isn't supported explicitly can be used with the "vesa" driver. The Release Notes has a table showing the drivers provided with X11R&relvers;, and links to related documentation. The X.Org Foundation X releases are produced by the X.Org Foundation. The X.Org Foundation is a member project of Software in the Public Interest (SPI), which operates as a scientific charity under IRS code 501(c)(3). The X.Org Foundation is chartered to develop and execute effective strategies which provide world-wide stewardship of the X Window System technology and standards. Membership in the X.Org Foundation is free to all participants. Applications for Membership are now being accepted, and active participants in the further development of the X Window Technology are invited to complete a membership application. The X11R&relvers; release has been produced by the many contributors to the X.Org community and members of the X.Org Foundation and includes code from the X Consortium, the Open Group and the XFree86 Project. This release is dedicated to the greater X community, developers and users alike. Licensing X Window System source code is covered by many licenses. All of these licenses have in common the fact that they do not impose significant conditions on the modification or redistribution or either source code or binaries beyond requiring one or more of the following: Copyright and/or license notices are left intact. Copyright and/or license notices are reproduced verbatim in documentation accompanying binary distributions. Attributions are included with documentation accompanying binaries. Most of these licenses are based on the MIT, X Consortium, or BSD (original and revised) licenses. All of them are consistent with the Open Source Definition, and most are consistent with the Free Software Foundation's Free Software Definition. Copyright and Licensing information for X, including the reproduction of copyright and/or license notices and attributions required by some of the licenses for binary distributions, can be found in the License Document. If you find any omissions in that document, please contact us with details at xorg@lists.x.org. While the current licenses are all open source licenses, the X.Org Foundation is attempting, with time, to bring as much as possible of the code's licenses in the distribution into compliance with the Debian Free Software Guidelines. Pointers to additional information The documentation for this release can be found online at the X.Org web site. The X11 version numbering system (including historical information) can be found in the Versions Document. Additional information may be available at the X.Org Foundation Wiki. The Public Mailing Lists Current information about the X.Org Foundation public mailing lists is available on the X.Org mailing list page and related desktop technology mailing lists can be found on Freedesktop.org's mailing list page. Contributing to the X.Org Foundation's X efforts. If you have any new work or enhancements/bug fixes for existing work, please submit them via the gitlab.freedesktop.org code management system. This will help ensure that they are included in future releases. More details on patch submission and review process are available on the SubmittingPatches page of the X.Org wiki. How to get the release Information about X11R&relvers; can be found from the X.Org Foundation wiki, and at mirrors of this server. X11R&relvers; X11R&relvers; was the &whichfullrel; release of the modular source code tree. The source code has been split into nine logical modules: app, data, doc, driver, font, lib. proto, util and xserver. Each of these modules contain one or more packages that can be configured, built and installed separately. Please see an X.Org release site for a complete list of the tarballs. For information on how to build the modular tree packages see the Modular Developer's Guide. This guide also contains information for developers who want to help improve the modular build system and modular code base. The current development tree The X source code for this and all releases/snapshots as well as development versions can also be accessed via the Freedesktop.org git repository. It's also possible to browse the freedesktop git repository. To check out the latest development version, don't specify any tag. Reporting Bugs Bugs should be reported to freedesktop.org's code management system. Before reporting bugs, please check the server log file, which can be found at /var/log/Xorg.0.log on most platforms. If you can't resolve the problem yourself, send the entire log file with your bug report but not the operating system core dump. Do not edit the log file as our developers use it to reproduce and debug your problem. Please attach it to your bug report.
xorg-docs-1.7.3/general/Versions.xml0000644014310600000120000002166214600067622013061
X.Org Version Numbering Schemes The XFree86 Project, Inc Updated for X.Org by Keith Packard, Kevin E. Martin, and Alan Coopersmith June 2019 X.Org has adopted the same basic numbering scheme used by the XFree86 Project, Inc. for their releases. The actual numbers are different, but the basic scheme is the same. This document reflects the policy that X.Org uses. Module Versions Starting with the X11R7.0 release, each module has its own version number. For those without a natural starting point, the version numbers started at 1.0. For instance, the X11R7.0 release included the xorg-server 1.0 module. As X.Org no longer produces the katamari releases of the entire window system (X11R7.x), the module version is the only accurate source of version information. Unfortunately, up through the X server 1.3 release, the X server used the Window System version when reporting its version number in log files, the -version option, and the connection setup string (displayed by xdpyinfo). This was corrected with X server 1.3, which caused the visible version number string to appear to jump backwards from 7.2 to 1.3. Releases, Development Streams, and Branches X.Org has two release branches for the X server software, and several other modules with active ongoing development. First is the trunk of the git repository. This is the main development stream, where all new work and work for future releases is done. Second is the stable bugfix branch for the latest full release. It is created around the time of the release. The branch will be named for the release version, such as server-1.9-branch for the X server 1.9.x series of releases. Fixes for bugs found in the release will be added to this branch (as well as the trunk), and updates to this release (if any) will be cut from this branch. Similar stable branches are present for previous full releases. Update/bugfix releases will be made on an as-required basis, depending also on the availability of resources, and will generally be limited to serious bug and security fixes. New features will not usually be added in update releases. Aside from actual releases, snapshots of the active release branches are tagged in the git repository from time to time. Each such snapshot has an identifiable version number. Current Version Numbering Scheme Starting with the main development branch after X11R6.7, the X.Org versions are numbered according to the scheme outlined here. The version numbering format is M.m.P.s, where M is the major version number, m is the minor version number, P is the patch level, and s is the snapshot number. Full releases have P set to zero, and it is incremented for each subsequent bug fix release on the post-release stable branch. The snapshot number s is present only for between-release snapshots of the development and stable branches. Development Branch Immediately after forming a release stable branch, the patch level number for the main development branch is bumped to 99, and the snapshot number is reset. The snapshot number is incremented for each tagged development snapshot. The git tag for snapshots is xorg-server-M.m.P.s. When the development branch enters feature freeze, the snapshot number is bumped to 900. A stable branch may be created for the next full release at any time after the feature freeze. When it is, the branch is called server-M.m-branch. The snapshot number is incremented from there until the release is finalised. Each of these snapshots is a release candidate. When the release is finalised, the minor version is incremented, the patch level is set to zero, and the snapshot number removed. Here's an example which shows the version number sequence for the development leading up to version 1.8: 1.7.99.1 The first snapshot of the pre-1.8 development branch. 1.7.99.23 The twenty-third snapshot of the pre-1.8 development branch. 1.7.99.900 The start of the 1.8 feature freeze. 1.7.99.903 The third 1.8 release candidate. 1.8.0 The 1.8 release. 1.8.99.1 The first pre-1.9 development snapshot, which is the first main branch snapshot after creating the 1.8 stable branch. Stable Branch After a full release, the stable branch for the release will be maintained with bug fixes and important updates until the next full release. Any snapshots on this branch are considered release candidates, which is indicated by setting s to a number above 900. The snapshot number is incremented for each release candidate until the update release is finalised. The patch level value (P) is incremented for each update release. Here's an example which shows a version number sequence for a 1.8.x stable branch: 1.8.0 The 1.8 release. 1.8.0.901 The first pre 1.8.1 snapshot. 1.8.0.903 The third pre 1.8.1 snapshot, also known as the third 1.8.1 release candidate. 1.8.1 The 1.8.1 release. 1.8.1.901 The first pre 1.8.2 snapshot. 1.8.2 The 1.8.2 release. Finding the X.Org X Server Version From a Client The X.Org X servers report a VendorRelease value that matches the X.Org version number. There have been some cases of releases where this value wasn't set correctly. The rules for interpreting this value as well as the known exceptions are outlined here. As noted above, the version reported by VendorRelease changed from the window system version to the X server version starting in the xorg-server 1.3 release. For all X.Org development and release versions using this numbering scheme, the VendorRelease value is MMmmPPsss. That is, version M.m.P.s has VendorRelease set to M * 10000000 + m * 100000 + P * 1000 + s. The following is a code fragment taken from xdpyinfo.c that shows how the VendorRelease information can be interpreted. if (strstr(ServerVendor(dpy), "X.Org")) { int vendrel = VendorRelease(dpy); printf("X.Org version: "); printf("%d.%d.%d", vendrel / 10000000, (vendrel / 100000) % 100, (vendrel / 1000) % 100); if (vendrel % 1000) { printf(".%d", vendrel % 1000); } }
xorg-docs-1.7.3/general/ReleaseNotes.xml0000644014310600000120000024075214600067622013645 %defs; ]>
Release Notes for X11R&relvers; The X.Org Foundation &reldate; These release notes contain information about features and their status in the X.Org Foundation X11R&relvers; release. Introduction to the X11R&relvers; Release X11R&relvers; was the &whichfullrel; modular release of the X Window System. Unlike X11R1 through X11R6.9, X11R7.x releases were not built from one monolithic source tree, but many individual modules. These modules are distributed as individual source code releases, and each one is released when it is ready, instead of only when the overall window system is ready for release. The X11R7.x releases were made by “rolling up” the individual module releases into a collection that is often affectionately called the “katamari” by the developers. The X11R&relvers; release does not include all of the software formerly included in the previous X Window System releases. It is designed to be a reasonable baseline from which to start when building the window system for the first time for a new installation, distribution, or package set. It does not provide a full desktop environment, expecting a more feature rich set of applications to be installed from one of the several excellent desktop environments available for the X Window System. The X.Org developers continue to maintain and produce new releases of much of the software that was formerly in the main window system releases but is no longer included in the katamari releases, including many of the Athena Widgets desktop applications that were provided as samples in previous window system versions. Once their window system build is established, most builders watch for announcements of individual module updates on the xorg-announce mailing list and update to those as needed. There are no plans for any further “katamari” releases of the X Window System at this time, only releases of the individual modules are planned for now. For help with how to build and develop in the modular tree see the Modular Developer's Guide in the X.Org wiki. We encourage you to report bugs, and to submit bug fixes and enhancements via the gitlab.freedesktop.org code management system. More details on patch submission and review process are available on the SubmittingPatches page of the X.Org wiki. The release numbering is based on the original MIT X numbering system. X11 refers to the version of the network protocol that the X Window system is based on: Version 11 was first released in 1988 and has been stable for nearly 25 years, with only upward compatible additions to the core X protocol, a record of stability envied in computing. Formal releases of X started with X version 9 from MIT; the first commercial X products were based on X version 10. The MIT X Consortium and its successors, the X Consortium, the Open Group X Project Team, and the X.Org Group released versions X11R3 through X11R6.6. Since the founding of the X.Org Foundation in early 2004, many further releases have been issued, from X11R6.7 to the current module releases. The next section describes what was new in the last full release (&relvers;) compared with the previous full release (&prevrelvers;). Summary of new features in X11R&relvers; This is a sampling of the new features in X11R&relvers;. A more complete list of changes can be found in the ChangeLog files that are part of the source of each X module. Multi-touch events are now supported for touchpads and touchscreens which can report position information on more than one finger providing input at the same time, such as found on many tablets and recent laptops. These are exposed by Xorg server 1.12 and later via the Xinput extension version 2.2. Additional Xinput extension features were introduced in version 2.1, as supported in Xorg server 1.11, including allowing clients to track raw events from input devices, additional detail in scrolling events so that clients may perform smoother scrolling, and additional constants in the Xlib-based libXi API. More progress has been made on the X.Org Documentation modernization - the rest of the library and protocol specifications have been converted to DocBook XML from the variety of formats they were previously in, and support for cross-linking between documents hase been added. On most systems these documents will be installed under /usr/share/doc/. They are also posted on the X.Org website at . Fence objects are now available in Version 3.1 of the Synchronization (Sync) extension. These allow clients to create a object that is either in triggered or not-triggered state, and to perform actions when the object becomes triggered. When a client requests a fence be triggered, the X server will first complete all rendering from previous requests that affects resources owned by the fence's screen before changing the state, so that clients may synchronize with such rendering. Support for these has been added to both the libxcb-sync and libXext API's. Pointer barriers were added by X Fixes extension Version 5.0. Compositing managers and desktop environments may have UI elements in particular screen locations such that for a single-headed display they correspond to easy targets, for example, the top left corner. For a multi-headed environment these corners should still be semi-impermeable. Pointer barriers allow the application to define additional constraint on cursor motion so that these areas behave as expected even in the face of multiple displays. The XCB libraries have begun adding support for the GLX and XKB extensions. This work is not yet complete in this release, and not all of the functionality available through these extensions is accessible via the XCB APIs. Some of this effort was funded by past Google Summer of Code projects. Video and input driver enhancements. Please see the ChangeLog files for individual drivers; there are far too many updates to list here. ... and the usual assortment of correctness and crash fixes. Overview of X11R&relvers; On most platforms, X11R&relvers; has a single hardware-driving X server binary called Xorg. This binary can dynamically load the video drivers, input drivers, and other modules that are needed. Xorg currently has support for Linux, Solaris, and some BSD OSs on Alpha, PowerPC, IA-64, AMD64, Intel x86, Sparc, and MIPS platforms. Additional specialized X server binaries may be found depending on the platform and build configuration, including: Xdmx is a proxy X server that uses one or more other X servers as its display devices. It provides multi-head X functionality for displays that might be located on different machines. Xnest is a nested X server, that operates as both an X client and X server. Xnest is a client of the real server which manages windows and graphics requests on its behalf. Xnest is a server to its own clients, and manages windows and graphics requests on their behalf. To these clients, it appears to be a conventional server. Xephyr is a X server that outputs to a window on a pre-existing “host” X display. Unlike Xnest which is an X proxy, and thus limited to the capabilities of the host X server, Xephyr is a full X server which uses the host X server window as a “framebuffer” via fast SHM XImages. Xvfb is a virtual framebuffer X server that can run on machines with no display hardware and no physical input devices. It emulates a dumb framebuffer using virtual memory. Xquartz is an X server that interacts with the MacOS X native Aqua window system, displaying windows on the Mac desktop and accepting input from the Mac system devices, allowing X11 applications to be used in a native Mac desktop session. Xwin is an X server that runs under the Cygwin environment, interacting with the Microsoft Windows native window system, displaying windows on the Windows desktop and accepting input from the Windows system devices, allowing X11 applications to be used in a native Windows desktop session. Details of X11R&relvers; components Video Drivers X11R&relvers; includes the following video drivers: Driver Name Description Further Information ark Ark Logic   ast ASPEED Technology   cirrus Cirrus Logic   dummy Virtual/offscreen framebuffer   fbdev Linux framebuffer device fbdev(4) geode (*) AMD Geode GX and LX   glide 3Dfx Voodoo 1, 2, Banshee, 3, 4 & 5 glide(4) glint 3Dlabs, TI glint(4) i128 Number Nine README.I128, i128(4) intel Intel Integrated Graphics Processors README.intel, intel(4) mach64 ATI Mach64 README.ati mga Matrox mga(4) neomagic NeoMagic neomagic(4) newport (-) SGI Newport README.newport, newport(4) nv NVIDIA nv(4) r128 ATI Rage128 README.r128, r128(4) radeon ATI Radeon radeon(4) savage S3 Savage savage(4) siliconmotion Silicon Motion siliconmotion(4) sis SiS README.SiS, sis(4) suncg6 (+) Sun GX and Turbo GX   sunffb (+) Sun Creator/3D, Elite 3D   tdfx 3Dfx Voodoo Banshee, 3, 4 & 5 tdfx(4) tga DEC TGA README.DECtga trident Trident trident(4) v4l Video4Linux v4l(4) vesa VESA vesa(4) vmware VMware guest OS vmware(4) voodoo 3Dfx Voodoo 1 & 2 voodoo(4) wsfb Workstation Framebuffer wsfb(4) Drivers marked with (*) are present in a preliminary form in this release, but are not complete and/or stable yet. Drivers marked with (+) are for Linux/Sparc only. Drivers marked with (-) are for Linux/mips only. Input Drivers X11R&relvers; includes the following input drivers: Driver Name Description Further Information evdev(*) Linux kernel EvDev evdev(4) joystick Joystick joystick(4) kbd generic keyboards (non-evdev systems) kbd(4) mouse most mouse devices (non-evdev systems) mousedrv(4) synaptics Synaptics & ALP touchpads synaptics(4) vmmouse VMWare virtual mouse vmmouse(4) void dummy device void(4) Drivers marked with (*) are available for Linux only. Xorg server Loader and Modules The Xorg server relies on the operating system's native module loader support for handling program modules. The X server makes use of modules for video drivers, X server extensions, input device drivers, framebuffer layers, and internal components used by some drivers (like XAA & EXA). The module interfaces (both API and ABI) used in this release are subject to change without notice. While we will attempt to provide backward compatibility for the module interfaces in stable releases, we cannot guarantee this. Compatibility in the other direction is explicitly not guaranteed because new modules may rely on interfaces added in new releases, nor is compatibility across stable release branches (such as between Xorg 1.11 and 1.12). Note about module security The Xorg server runs with root privileges, so the Xorg server loadable modules also run with these privileges. For this reason we recommend that all users be careful to only use loadable modules from reliable sources, otherwise the introduction of malware and contaminated code can occur and wreak havoc on your system. Configuration File The Xorg server uses a configuration file as the primary mechanism for providing configuration and run-time parameters. The configuration file format is described in detail in the xorg.conf(5) manual page. Note that this release features significant improvements for running the server without a configuration file, so many users may find that that they don't need a configuration file, or may rely on just snippets of configuration placed in the xorg.conf.d directory. If you do need to customize the configuration file, see the xorg.conf manual page . You can also check the driver-specific manual pages and the related documentation (found at ) also. The recommended method for generating a configuration file is to use the Xorg server itself. Run as root: Xorg -configure and follow the instructions. Command Line Options Command line options can be used to override some default parameters and parameters provided in the configuration file. Command line options available for use with all X servers in this release are described in the Xserver(1) manual page. Command line options specific to the Xorg server are described in the Xorg(1) manual page. Multi-head Some multi-head configurations are supported in X11R&relvers;. Support for multiple PCI/AGP cards may require a kernel with changes to support VGA arbitration. One of the main problems is with drivers not sufficiently initializing cards that were not initialized at boot time. This has been improved somewhat with the INT10 support that is used by most drivers (which allows secondary card to be "soft-booted", but in some cases there are other issues that still need to be resolved. Some combinations can be made to work better by changing which card is the primary card (either by using a different PCI slot, or by changing the system BIOS's preference for the primary card). Xinerama Xinerama is an X server extension that allows multiple physical screens connected to multiple video devices to behave as a single screen. With traditional multi-head in X11, windows cannot span or cross physical screens. Xinerama removes this limitation. Xinerama does, however, require that the physical screens all have the same root depth, so it isn't possible, for example, to use an 8-bit screen together with a 16-bit screen in Xinerama mode. Xinerama is not enabled by default, and can be enabled with the command line option for the X server. Note that enabling Xinerama may disable certain other extensions which are not compatible with Xinerama. DDC The VESA® Display Data Channel (DDC) standard allows the monitor to tell the video card (or in some cases the computer directly) about itself; particularly the supported screen resolutions and refresh rates. Partial or complete DDC support is available in most of the video drivers. DDC is enabled by default, but can be disabled with a "Device" section entry: Option "NoDDC". We have support for DDC versions 1 and 2; these can be disabled independently with Option "NoDDC1" and Option "NoDDC2". At startup the server prints out DDC information from the display, and can use this information to set the default monitor parameters, or to warn about monitor sync limits if those provided in the configuration file don't match those that are detected. Changed behavior in handling information from DDC The X server previously used DDC information to detect screen size and pitch, and compute DPI automatically, allowing fonts and other UI elements to automatically scale to appropriate sizes. This mechanism worked reasonably well for many single-monitor cases, but did not compute accurate DPI values for multi-monitor cases or less common single-display setups. Thus, this autodetection has been removed, and the X server no longer tries to compute an appropriate DPI value. All users wanting fonts, physical measurement units, and other UI elements scaled appropriately for their display (including users for whom autodetection previously worked) must now set DPI or some other scaling factor explicitly, either via the X server's option, a DPI setting in their graphical environment, or an alternate scaling mechanism provided by their environment. GLX and the Direct Rendering Infrastructure (DRI) Direct rendered OpenGL® support is provided for several hardware platforms by the Direct Rendering Infrastructure (DRI). Further information about DRI can be found at the DRI Project's web site. The 3D core rendering component is provided by Mesa. Of note is that this release supports building the X server using the system-wide libdrm. Previously, drm was kept in the server's tree and loaded as a module, rather than using the standard OS mechanisms for managing shared libraries of code. This requires that the server be built using a version of libdrm of 2.3.0 or newer if it is to use DRM. Terminate Server keystroke The Xorg server has previously allowed users to exit the server by pressing the keys Control + Alt + Backspace. While this function is still enabled by default in this release, the keymap data usually used with Xorg, from the xkeyboard-config project, has been modified to not map that sequence by default, in order to reduce the chance that inexperienced users will accidentally destroy their work. Users who wish to have this functionality available by default may enable it via the XKB configuration option “”. For instance, the setxkbmap command can be used to enable this by running: setxkbmap -option "terminate:ctrl_alt_bksp" The XKB Configuration Guide also includes an example xorg.conf.d file that sets the “” option by default on all keyboards. Many desktop environments include XKB configuration options in their preferences to enable this as well. Grab debugging keystrokes The Xorg server in this release provides various functions that can be mapped to keystrokes to aid in the debugging of programs with errant input grabs. The keysyms XF86LogGrabInfo and XF86LogWindowTree are defined to print information to the Xorg log file on the current set of input grabs, and the window tree of the current display. By default, these are available for use, but not mapped to any key. The keysym XF86Ungrab forces the X server to release all active grabs, which may leave the clients holding them in an inconsistent state. XF86ClearGrab goes further, killing the client connection of any client holding an active grab when it is pressed. These keystrokes are intended to allow developers to debug clients which are not properly releasing grabs or have problems occur while input is grabbed. Since grabs are a fundamental part of the X client security model, these keystrokes come with risks, such as the ability to bypass or kill screen locks without knowing the password, and thus are not available by default. Users who are willing to accept the security risk and wish to enable this functionality may do so via the XKB configuration option “”. Security issue in older xkeyboard-config releases The xkeyboard-config data files included in this release have the grab disabling keys correctly disabled by default, but versions before xkeyboard-config 2.5 had them enabled, leading to the security risk described above. When upgrading to the X server in this release be sure to also ensure xkeyboard-config is a safe version. More details about this issue may be found in advisories for CVE-2012-0064. X Server startup state The X servers in the X11R&relvers; release now start by default with an empty black screen and do not draw the mouse cursor until a client sets the cursor image. To restore the classic behavior of starting with the grey weave pattern and × cursor, start the X server with the option. Font support Details about the font support in X11R&relvers; can be found in the Fonts in X11R&relvers; document. Default font installation directory Previous versions of X installed font files under the lib/X11/fonts subdirectory of the X installation directory (for instance, in X11R6 releases, /usr/X11R6/lib/X11/fonts was commonly used). This release uses the default installation path of the fonts subdirectory of the datadir setting from the GNU autoconf configuration. For instance, if the fonts are configured with ./configure --prefix=/usr, they will be installed under subdirectories of /usr/share/fonts/X11. The font module configure scripts all take an option of to override the default. If is not specified, the fontutil pkg-config file will be consulted to find the fontrootdir specified when the fontutil module was installed. Bitmap font compression methods The X11R&relvers; release supports PCF format bitmap fonts stored uncompressed or compressed via the compress, gzip, or bzip2 programs. To utilize bzip2 compression, the libXfont and mkfontscale modules must be built with the — all other methods are enabled by default. To specify which compression method to use when installing a font module from X11R&relvers; the configure scripts accept an option of , where TYPE may be none, compress, gzip, or bzip2. Type1 Font support Previous versions of X came with two Postscript Type1 font backends. The functionality from the “Type1” backend has been replaced by the Type1 support in the “FreeType” backend. CID Font support The CID-keyed font format was designed by Adobe Systems for fonts with large character sets. The CID-keyed format is obsolete, as it has been superseded by other formats such as OpenType/CFF and support for CID-keyed fonts has been removed from X11. Build changes and issues Strict compilation flags Most of the modules in this release use stricter compiler flags when building with the GNU gcc, LLVM clang, Oracle Solaris Studio, or Intel compilers. These flags both enable more warnings, and promote some warnings to fatal errors in the build. If these flags cause your build to fail, you can disable the flags that turn these selected warnings into errors by adding to the configure command for the affected module. If that is necessary for any X.Org modules, please report a bug in the project for that module on . Builders seeking even stricter compiler checks can instead pass to the configure command to make all warnings become errors. Silent build rules Most of the modules in this release use the AM_SILENT_RULES option of GNU automake 1.11. When building the software, most output will show an abbreviated format for the commands being run, such as: CC xmen.o To enable verbose output, showing all the arguments to the commands being run, add the flag to the make command line or add the flag to the configure command. New configure options for font modules The bitmap font modules now accept a configure option of to set the default for all encodings to off, requiring builders to then pass flags for each encoding to be built. New configure options for documentation in modules As many more modules now contain documentation to be converted from DocBook XML to text, HTML, PostScript, and/or PDF formats, new standard options have been added to the configure macros to control the build of these in the modules. Enables or disables use of the xmlto command to translate DocBook XML to other formats. All DocBook XML conversions require use of this command. Enables or disables use of the Apache fop command to translate DocBook XML to PostScript and PDF formats. Enables or disables the build and installation of all documentation except traditional man pages or those covered by the --enable-devel-docs and --enable-specs options. Enables or disables the build and installation of documentation for developers of the X.Org software modules. Enables or disables the build and installation of the formal specification documents for protocols and APIs. Miscellaneous This section describes other items of note for the X11R&relvers; release. Socket directory ownership and permissions The socket directories created in /tmp are now required to be owned by root and have their sticky-bit set. If the permissions are not set correctly, the component using this directory will print an error message and fail to start. Common socket directories that are known to be affected include: /tmp/.font-unix /tmp/.ICE-unix /tmp/.X11-unix These directories are used by the font server (xfs), applications using the Inter-Client Exchange protocol (ICE) and the X server, respectively. There are several solutions to the problem of when to create these directories. They could be created at install time by the system's installer if the /tmp dir is persistent. They could be created at boot time by the system's boot scripts (e.g., the init.d scripts). Or, they could be created by PAM modules at service startup or user login time. The solution chosen is platform dependent, and the system administrator should be able to handle creating those directories on any systems that do not have the correct ownership or permissions. Deprecated components and removal plans This section lists current plans for removal of obsolete or deprecated components in the X.Org releases. As our releases are open source, users who continue to require these can find the source in previous releases and continue to use these, but the X.Org Foundation and its volunteers have decided the burden of continued maintenance and distribution in the core X11 releases outweighs the benefits of doing so. In some cases, this is simply because no one has volunteered to do continued maintenance, so if software is listed here that you need, you can contact xorg-devel@lists.x.org to volunteer to take over maintainership, either inside or outside of the Xorg release process. Future Removals DGA version 2 DGA 2.0 is included in &relvers;. Documentation for the client libraries can be found in the XDGA(3) man page. DGA should be considered deprecated; if you are relying on it, please let us know what you need it for so we can find better solutions. In this release, support has been removed for all DGA rendering and mapping code, leaving just mode setting and raw input device access. Input device discovery via HAL Xorg server 1.4 started using the HAL framework to discover connected input devices, receive notification of hotplug events for them, and to retrieve configuration parameters for them. The HAL maintainers have since deprecated HAL, so the X.Org developers have begun replacement with alternatives. As a result, configuration of input devices via HAL *.fdi files is no longer supported on Linux platforms using udev, and may not be supported on other platforms in future Xorg server releases. Nested and virtual X servers As described in , this release contains several X servers that either display onto another X server (Xephyr & Xnest), or render into a virtual memory framebuffer (Xvfb & Xfake). These may be replaced in a future release by use of the Xorg server with the xf86-video-nested and xf86-video-dummy drivers which perform the same tasks. Removed in this Release Unmaintained drivers This release no longer contains the following drivers, due to lack of maintainers with relevant hardware. Existing driver versions may work with current Xorg servers, but they are not being actively updated to support Xorg driver API & ABI changes. xf86-input-acecad: Acecad Flair xf86-input-aiptek: Aiptek USB tablet xf86-video-apm: Alliance Pro Motion xf86-video-chips: Chips & Technologies xf86-video-i740: Intel i740 xf86-video-rendition: Rendition Verite xf86-video-s3: S3 (not ViRGE or Savage) xf86-video-s3virge: S3 ViRGE xf86-video-sisusb: SiS Net2280-based USB xf86-video-suncg14: Sun CG14 xf86-video-suncg3: Sun CG3 xf86-video-sunleo: Sun Leo (ZX) xf86-video-suntcx: Sun TCX xf86-video-tseng: Tseng Labs xf86-video-xgi: XGI xf86-video-xgixp: XGI Volari 8300 Attributions/Acknowledgements/Credits This section lists the credits for the X11R&relvers; release. For a more detailed breakdown, refer to the ChangeLog file in the source tree for each module, the history in the xorg projects in freedesktop.org's git repositories or the 'git log' information for individual source files. The X Window System has been a collaborative effort from its inception. Our apologies for anyone or organization inadvertently overlooked. Many individuals (including major contributors) who worked on X are represented by their employers in this list. If you feel we have left anyone out, please let us know. These people contributed in some way to X11R&relvers; since the release of X11R&prevrelvers;: Aapo Rantalainen Aaron Culich Aaron Plattner Abdoulaye Walsimou Gaye Adam Jackson Adam Tkac Adrian Bunk Alan Coopersmith Alan Curry Alan Hourihane Alban Browaeys Albert Damen Aldis Berjoza Alessandro Guido Alex Deucher Alex Plotnick Alexander Polakov Alexandr Shadchin Alexandre Julliard Alexey Shumitsky Alistair Leslie-Hughes Ander Conselvan de Oliveira Andrea Canciani Andreas Schwab Andreas Wettstein Andrew Randrianasulu Andrew Turner Andy Furniss Anssi Hannula Antoine Martin Arkadiusz Miśkiewicz Armin K Arnaud Fontaine Arthur Taylor Arvind Umrao Avram Lyon Bartosz Brachaczek Bartosz Kosiorek Bastian Blank Bastien Nocera Ben Hutchings Benjamin Close Benjamin Herrenschmidt Benjamin Otte Benjamin Tissoires Bernie Innocenti Bill Nottingham Bjørn Mork Bodo Graumann Bryce Harrington Carl Worth Carlos Garnacho Casper Dik Cédric Cano Chad Versace Chase Douglas Choe Hwanjin Chris Bagwell Chris Ball Chris Halse Rogers Chris Wilson Christian König Christian Toutant Christian Weisgerber Christoph Brill Christoph Reimann Christophe Roland Christopher James Halse Rogers Christopher Yeleighton Clemens Eisserer Colin Harrison Cristian Rodríguez Cyril Brulebois Daiki Ueno Dan Horák Dan Nicholson Daniel A. Steffen Daniel Drake Daniel Kurtz Daniel Stone Daniel Vetter Dave Airlie David Barksdale David Coles David Coppa David Fries David Ge David Nusinow David Reveman David Ronis Denis 'GNUtoo' Carikli Derek Buitenhuis Derek Foreman Derek Wang Devin J. Pohly Diego Elio Pettenò Dirk Wallenstein dtakahashi42 Eamon Walsh Ed Schouten Edward Sheldrake Egbert Eich Eitan Adler Elias Probst Elie Bleton Elvis Pranskevichus Emanuele Giaquinta Eoghan Sherry Eric Anholt Erik Kilfoil Erik Saule Erkki Seppälä Eugeni Dodonov Evan Broder Fabio Pedretti Federico Mena Quintero Fernando Carrijo Ferry Huberts Francisco Jerez Frank Huang Frank Mariak Frédéric Boiteux Fredrik Höglund Fryderyk Dziarmagowski Gaetan Nadon George Staplin Giuseppe Bilotta Glenn Burkhardt Guillem Jover György Balló Hans Verkuil Hans-Juergen Mauser Hans-Peter Budek Harshula Jayasuriya Havoc Pennington Henry Zhao Ian Osgood Ian Romanick Ilija Hadzic Ivan Bulatovic Jakob Bornecrantz James Cloos James Jones James Simmons Jamey Sharp Jamie Kennea Jan Hauffa Jan Kriho Janne Huttunen Jari Aalto Javier Acosta Javier Jardón Javier Pello Jay Cotton Jeetu Golani Jeff Chua Jens Elkner Jeremy Huddleston Jerome Carretero Jerome Glisse Jesse Adkins Jesse Barnes Jian Zhao JJ Ding Joe Nahmias Joe Shaw Joerg Sonnenberger Johannes Obermayr John Martin Jon Nettleton Jon TURNEY Jools Wills Jordan Hayes Jörn Horstmann Josh Triplett Julien Cristau Julien Danjou Justin Dou Justin Mattock Kai-Uwe Behrmann Kees Cook Keith Packard Kenneth Graunke Kent Baxley Kirill Elagin Knut Petersen Konstantin Belousov Kristian Høgsberg Kristof Szabo Krzysztof Halasa Kusanagi Kouichi Lennart Poettering Lev Nezhdanov Linus Arver Luc Verhaegen Maarten Lankhorst Maarten Maathuis Macpaul Lin Magnus Kessler Marcin Kościelnicki Marcin Slusarz Marcin Woliński Marek Olšák Mario Kleiner Mark Dokter Mark Kettenis Mark Schreiber Marko Macek Marko Myllynen Markus Duft Markus Fleschutz Mart Raudsepp Martin Langhoff Martin-Éric Racine Marton Balint Matěj Cepl Mathias Krause Mathieu Bérard Mathieu Taillefumier Matt Dew Matt Turner Matthew D. Fuller matthew green Matthias Clasen Matthias Hopf Matthieu Herrb Matti Hamalainen Max Schwarz Maxim Iorsh Mehdi Dogguy meng Michael Chang Michael Larabel Michael Olbrich Michael Stapelberg Michael Thayer Michał Górny Michal Marek Michał Masłowski Michal Suchanek Michel Dänzer Michel Hummel Mikael Magnusson Mike Frysinger Mike Stroyan Mikhail Gusarov Modestas Vainius Mohammed Sameer Nick Bowler Nicolai Stange Nicolas Cavallari Nicolas Joly Nicolas Kaiser Nicolas Kalkhof Nicolas Peninguy Nikolai Kondrashov Nils Wallménius Nithin Nayak Sujir Nobuhiro Iwamatsu Olaf Buddenhagen Oldřich Jedlička Oleh Nykyforchyn Oliver McFadden Oliver Schmidt Olivier Fourdan Olli Vertanen Ondrej Zary Owen Taylor Pander Pär Lidberg Parag Nemade Patrick Curran Patrick E. Kane Paul Fox Paul Menzel Paul Neumann Pauli Nieminen Paulius Zaleckas Paulo Zanoni Pelle Johansson Pete Beardmore Peter Clifton Peter Harris Peter Hutterer Peter Korsgaard Peter Zotov Philip Langdale Philipp Reh Phillp Haddad Pierre-Loup A. Griffais Priit Laes Promathesh Mandal Rami Ylimäki Reinhard Karcher Rémi Cardona Richard Hartmann Rob Clark Robert Ancell Robert Bragg Robert Hooker Robert Morell Roberto Branciforti Roger Cruz Roland Cassard Roland Scheidegger Roman Jarosz Ross Burton Rui Matos Ryan Pavlik Sam Spilsbury Samuel Thibault Sascha Hlusiak Satoshi KImura Scott James Remnant Sebastian Glita Sedat Dilek Sergey Samokhin Sergey V. Udaltsov Servaas Vandenberghe Siddhesh Poyarekar Simon Farnsworth Simon Que Simon Thum Sitsofe Wheeler Søren Sandmann Pedersen Stefan Dirsch Stefan Glasenhardt Stefan Kost Stefan Potyra Stephan Hilb Stephane Marchesin Stephen Turnbull Stuart Kreitman Takashi Iwai Terry Lambert Thierry Vignaud Thomas Bächler Thomas Fjellstrom Thomas Hellström Thomas Hoger Thordur Bjornsson Tiago Vignatti Till Matthiesen Tim van der Molen Tim Yamin Timo Aaltonen Tobias Droste Tollef Fog Heen Tom "spot" Callaway Tom Fogal Tomas Carnecky Tomas Frydrych Tomas Hoger Tomáš Trnka Toralf Förster Tormod Volden Trevor Woerner U. Artie Eoff Uli Schlachter Ulrich Müller Van de Bugger Vasily Khoruzhick Vasyĺ V. Vercynśkyj Victor Machado Ville Skyttä Ville Syrjälä Vincent Torri Walter Bender Walter Harms William Jon McCann Xavier Bachelot Xiang, Haihao Xue Wei Xunx Fang Y.C. Chen Yaakov Selkowitz Yann Droneaud Yannick Heneault Zack Rusin Zhao Yakui Zhenyu Wang Zhigang Gong Zou Nan hai and the members of the Translation Project. This product includes software developed by: 2d3d Inc. 3Dlabs Inc. Ltd. Aaron Plattner Adam de Boor Adam Jackson Adobe Systems Inc. Advanced Micro Devices, Inc. After X-TT Project AGE Logic Inc. Alan Coopersmith Alan Cox Alan Hourihane Alexander Gottwald Alex Deucher Alex Williamson Alexei Gilchrist Anders Carlsson Andreas Luik Andreas Monitzer Andreas Robinson Andrei Barbu Andrew C Aitchison Andrey A. Chernov Andy Ritger Angus Lees Ani Joshi Anton Zioviev Apollo Computer Inc. Apple Computer Inc. Apple Inc. Ares Software Corp. Arnaud LE HORS Arne Schwabe ASPEED Technology Inc. AT&T Inc. ATI Technologies Inc. Bart Massey Bart Trojanowski, Symbio Technologies, LLC BEAM Ltd. Benjamin Herrenschmidt Benjamin Rienfenstahl Ben Skeggs Beth Mardutho: The Syriac Institute Bigelow and Holmes Bill Reynolds Bitstream Inc. Bogdan Diaconescu Branden Robinson Brian Fundakowski Feldman Brian Goines Bogdan D. Brian Paul Bruce Kalk Bruno Haible Bryan Stine Bryan W. Headley. C. Scott Ananian Carl Switzky Catharon Productions Inc. Charles Murcko Chen Xiangyang Chisato Yamauchi Chris Constello Chris Salch Christian Thaeter Christian Zietz Cognition Corp. Compaq Computer Corporation Concurrent Computer Corporation Conectiva S.A. Corin Anderson Corvin Zahn. Cronyx Ltd. Craig Struble Daewoo Electronics Co. Ltd. Dag-Erling Smørgrav Dale Schumacher Damien Miller Daniel Berrange Daniel Borca Daniel Stone Daniver Limited Daryll Strauss Data General Corporation Dave Airlie David Bateman David Dawes David E. Wexelblat David Holland David J. McKay David McCullough David Mosberger-Tang David Reveman David S. Miller David Woodhouse Davor Matic Deron Johnson Digeo Inc. Dennis De Winter Digital Equipment Corporation Dirk Hohndel Dmitry Golubev Donnie Berkholz DOS-EMU-Development-Team Doug Anson Drew Parsons Earle F. Philhower III Edouard TISSERANT Eduard Fuchs Eduardo Horvath Egbert Eich Egmont Koblinger Elliot Lee Eric Anholt Eric Fortune Eric Sunshine Erik Fortune Erik Nygren Evans & Sutherland Computer Corp. Fabio Massimo Di Nitto Fabrizio Gennari Fedor P. Goncharov Felix Kühling Finn Thoegersen Francesco Zappa Nardelli Frank C. Earl Florian Loitsch Francisco Jerez Fred Hucht Frederic Lepied Fredrik Höglund Free Software Foundation Fujitsu Limited Fujitsu Open Systems Solutions Inc. Fuji Xerox Co. Ltd. Gaetan Nadon Gareth Hughes Geert Uytterhoeven George Fufutos George Sapountzis Gerrit Jan Akkerman Gerry Toll Ghozlane Toumi Glenn G. Lai GNOME Foundation Go Watanabe Google Summer of Code participants Greg Kroah-Hartman Gregory Mokhin Greg Parker GROUPE BULL Guillem Jover Guy Martin Hans Oey Harald Koenig Harm Hanemaayer Harold L Hunt II Harry Langenbacher Hartwig Felger Henry A. Worth Henry Davies Hewlett-Packard Company Hideki Hiura Hitachi Ltd. Holger Veit Hong Bo Peng Howard Greenwell Hummingbird Communications Ltd. Ian Romanick IBM Corporation Inst. of Software Academia Sinica Intel Corporation INTERACTIVE Systems Corporation Itai Nahshon Itronix Inc. Ivan Kokshaysky Ivan Pascal Jakub Jelinek James Tsillas Jamey Sharp Jason Bacon Jaymz Julian Jean-loup Gailly Jeff Hartmann Jeff Kirk Jeffrey Hsu Jehan Bing Jeremy C. Reed Jeremy Katz Jeremy Huddleston Jerome Glisse Jesse Barnes Jim Gettys Jim Tsillas Joerg Sonnenberger John Dennis John Harper John Heasley Jonathan Adamczewski Jon Block Jon Smirl Jon Tombs Jörg Bösner Jorge Delgado José Fonseca Josh Triplett Joseph Friedman Joseph P. Skudlarek Joseph V. Moss Julio M. Merino Vidal Juan Romero Pardines Juliusz Chroboczek Jyunji Takagi Kaleb Keithley Kazushi (Jam) Marukawa Kazuyuki (ikko-) Okamoto Kazutaka YOKOTA Kean Johnston Keith Packard Keith Whitwell Kensuke Matsuzaki Kevin E. Martin Kim woelders Kristian Høgsberg Larry Wall Lars Knoll Lawrence Berkeley Laboratory Leif Delgass Lennart Augustsson Leon Shiman Lexmark International Inc. Linus Torvalds Linuxcare Inc. Lorens Younes Luc Verhaegen Machine Vision Holdings Inc. Mandriva Linux Manfred Brands Manish Singh Marc Aurele La France Mark Adler Mark J. Kilgard Mark Kettenis Mark Leisher Mark Smulders Mark Vojkovich Martin Husemann Marvin Solomon Massachusetts Inst. Of Technology Matrox Graphics Matt Dew Matthew Grossman Matthias Hopf Matthias Ihmig Matthieu Herrb Metro Link Inc. Michal Rehacek Michael Bax Michael H. Schimek Michael P. Marking Michael Schimek Michael Smith Michel Dänzer Mike A. Harris Mike Harris Ming Yu MIPS Computer Systems Inc. MontaVista Software Inc. National Security Agency National Semiconductor NCR Corporation Inc. Neil Brown NetBSD Foundation Netscape Communications Corp. Network Computing Devices Inc. New Mexico State University Nicholas Joly Nicholas Miell Nicholas Wourms Nicolai Haehnle Noah Levitt Nolan Leake Nokia Corporation Nokia Home Communications Novell Inc. Nozomi YTOW NTT Software Corporation Number Nine Computer Corp. Number Nine Visual Technologies NVIDIA Corporation Oivier Danet Oki Technosystems Laboratory Inc. Olivetti Research Limited OMRON Corporation Open Software Foundation Open Text Corporation OpenedHand Ltd. Oracle Corp. Orest Zborowski Owen Taylor Pablo Saratxaga Panacea Inc. Panagiotis Tsirigotis Paolo Severini Pascal Haible Patrick Lecoanet Patrick Lerda Paul Anderson Paul Elliott Paul Mackerras Peter Breitenlohner Peter Hutterer Peter Kunzmann Peter Osterlund Peter Trattler Phil Karlton Philip Blundell Philip Homburg Philip Langdale Precision Insight Inc. Prentice Hall Quarterdeck Office Systems Radek Doulik Ralf Habacker Randy Hendry Ranier Keller Red Hat Inc. Regis Cridlig Rene Cougnenc Richard A. Hecker Richard Burdick Rich Murphey Rickard E. Faith Rik Faith Robert Chesler Robert Millan Robert V. Baron Robert W. Scheifler Robin Cutshaw Roland Mainz Roland Scheidegger Ronny Vindenes Russ Blaine Ryan Breen Ryan Lortie Ryan Underwood S. Lehner S3 Graphics Inc. Sam Leffler Santa Cruz Operation Inc. Sascha Hlusiak. SciTech Software Scott Laird Sebastien Marineau Serge Winitzki Sergey Vovk Shigehiro Nomura ShoGraphics Inc. Shunsuke Akiyama Silicon Graphics Computer Systems Silicon Graphics, Inc. Silicon Integrated Systems Corp Silicon Motion Inc. Simon P. Cooper Simon Thum Snitily Graphics Consulting Services Sony Corporation Søren Sandmann SRI Stanislav Brabec Stefan Bethge Stefan Dirsch Stefan Gmeiner Stephane Marchesin Stephan Lang Steven Lang Stuart Kreitman Sun Microsystems Inc. SunSoft Inc. SuSE Inc Sven Luther Takis Psarogiannakopoulos Takuma Murakami Takuya SHIOZAKI T. A. Phelps Tektronix Inc. Theo de Raadt Theodore Ts'o The Open Group The Unichrome Project The Weather Channel Inc. Thomas E. Dickey Thomas G. Lane Thomas Hellström Thomas Mueller Thomas Roell Thomas Thanner Thomas Winischhofer Thomas Wolfram Thorsten.Ohl Tiago Gons Tilman Sauerbeck Todd C. Miller Tomohiro KUBOTA Torrey Lyons Torrey T. Lyons TOSHIBA Corp. Toshimitsu Tanaka Travis Tilley Trolltech AS Troy D. Hanson Tungsten Graphics Inc. Tuomas J. Lukka Ty Sarna UCHIYAMA Yasushi Unicode Inc. UniSoft Group Limited University of California University of South Australia University of Utah University of Wisconsin UNIX System Laboratories Inc. URW++ GmbH Valery Inozemtsev VA Linux Systems VIA Technologies Inc. Video Electronics Standard Assoc. VMware Inc. Vrije Universiteit Wittawat Yamwong Wyse Technology Inc. X Consortium XFree86 Project Inc. Xi Graphics Inc. X-Oz Technologies X-TrueType Server Project X.Org Foundation XGI Technology Yu Shao Zack Rusin Zephaniah E. Hull Zhenyu Wang This product includes software developed by The XFree86 Project, Inc () and its contributors. This product includes software that is based in part on the work of the FreeType Team (). This product includes software developed by the University of California, Berkeley and its contributors. This product includes software developed by Christopher G. Demetriou. This product includes software developed by the NetBSD Foundation, Inc. () and its contributors. This product includes software developed by X-Oz Technologies ().
xorg-docs-1.7.3/general/input/0000755014310600000120000000000014600067630011736 5xorg-docs-1.7.3/general/input/XKB-Config.xml0000644014310600000120000002274314600067622014240 %defs; ]>
The XKB Configuration Guide X Version 11, Release &fullrelvers; KamilToman IvanU. Pascal November 2010 This document describes how to configure Xorg XKB from a user's point of view. It covers basic configuration syntax and gives also a few examples. This version covers Xorg server versions 1.8 and later, used with the data files from the xkeyboard-config project. Overview The XKB configuration is decomposed into a number of components. Selecting proper parts and combining them back you can achieve most of the configurations you might need. Unless you have a completely atypical keyboard you really don't need to touch any of the xkb configuration files. Some desktop environments now provide integrated graphical configuration tools for setting XKB configuration as part of your desktop session. The instructions in this document are provided for those without such support, those who need to configure XKB before the session startup (such as at the login screen), or those who need to perform more advanced configuration than those tools provide. Selecting XKB Configuration The easiest and the most natural way to specify a keyboard mapping is to use the rules component. As its name suggests it describes a number of general rules to combine all bits and pieces into a valid and useful keyboard mapping. All you need to do is to select a suitable rules file and then to feed it with a few parameters that will adjust the keyboard behaviour to fulfill your needs. The parameters are: files of rules to be used for keyboard mapping composition name of the model of your keyboard type layout(s) you intend to use variant(s) of the layout you intend to use extra xkb configuration options The rules file used depends on your system. The rules files commonly used with Xorg are provided by the xkeyboard-config project. On Linux systems, the evdev rules are most commonly used, on other systems the base rules are used. Some additional rules files exist for historical reasons, but are no longer widely used. In general, it's best to simply not specify the rules file, in order to use the default rules selected automatically by the X server. For each rules file there is a description file named <vendor-rules>.lst, for instance base.lst which is located in the xkb configuration subdirectory rules (for example /usr/share/X11/xkb/rules). Basic Configuration Let's say you want to configure a PC-style American keyboard with 104 keys as described in base.lst. This can be done by simply writing several lines from below to a new configuration file in /etc/X11/xorg.conf.d, such as /etc/X11/xorg.conf.d/90-custom-kbd.conf. Section "InputClass" Identifier "keyboard defaults" MatchIsKeyboard "on" Option "XkbModel" "pc104" Option "XkbLayout" "us" Option "XKbOptions" "" EndSection The values of and are really not surprising. The has been explicitly set to the empty set of parameters. The option has been left out. That means the default variant named basic is loaded. Of course, this can be also done at runtime using the utility setxkbmap. The shell command loading the same keyboard mapping would look like: setxkbmap -model pc104 -layout us -option "" The configuration and the shell command would be very analogous for most other layouts (internationalized mappings). If you wanted to enable the Ctrl AltBackspace sequence to kill the X server by default, you could create a configuration snippet /etc/X11/xorg.conf.d/90-zap.conf containing: Section "InputClass" Identifier "keyboard defaults" MatchIsKeyboard "on" Option "XKbOptions" "terminate:ctrl_alt_bksp" EndSection This would be equivalent to running the shell command: setxkbmap -option "terminate:ctrl_alt_bksp" Advanced Configuration You can use multi-layouts xkb configuration. What does it mean? Basically it allows to load up to four different keyboard layouts at a time. Each such layout would reside in its own group. The groups (unlike complete keyboard remapping) can be switched very fast from one to another by a combination of keys. Let's say you want to configure your new Logitech cordless desktop keyboard, you intend to use three different layouts at the same time - us, czech and german (in this order), and that you are used to AltShift combination for switching among them. Then the configuration snippet could look like this: Section "InputClass" Identifier "Logitech Cordless" MatchIsKeyboard "on" Option "XkbModel" "logicordless" Option "XkbLayout" "us,cz,de" Option "XKbOptions" "grp:alt_shift_toggle" EndSection Of course, this can be also done at runtime using the utility setxkbmap. The shell command loading the same keyboard mapping would look like: setxkbmap -model logicordless -layout "us,cz,de" \ -option "grp:alt_shift_toggle" Even More Advanced Configuration Okay, let's say you are more demanding. You do like the example above but you want it to change a bit. Let's imagine you want the czech keyboard mapping to use another variant but basic. The configuration snippet then changes into: Section "InputClass" Identifier "Logitech Cordless" MatchIsKeyboard "on" Option "XkbModel" "logicordless" Option "XkbLayout" "us,cz,de" Option "XkbVariant" ",bksl," Option "XKbOptions" "grp:alt_shift_toggle" EndSection That seems tricky but it is not. The logic for settings of variants is the same as for layouts, that means the first and the third variant settings are left out (set to basic), the second is set to bksl (a special variant with an enhanced definition of the backslash key). Analogously, the loading runtime will change to: setxkbmap -model logicordless -layout "us,cz,de" \ -variant ",bksl," -option "grp:alt_shift_toggle" Basic Global Options For a list of available options, with a short description of what they do, see the section starting with ! option in the rules/*.lst files. Keymap XKB Configuration Keymap configuration is the way formerly used to configure xkb. The user included a special keymap file which specified the direct xkb configuration. This method has been obsoleted by previously described rules files which are far more flexible and allow simpler and more intuitive syntax. It is preserved merely for compatibility reasons and should be avoided if possible.
xorg-docs-1.7.3/general/input/XKB-Enhancing.xml0000644014310600000120000007226014600067622014724 %defs; ]>
How to further enhance XKB configuration X Version 11, Release &fullrelvers; KamilToman IvanU. Pascal 25 November 2002 This guide is aimed to relieve one's labour to create a new (internationalized) keyboard layout. Unlike other documents this guide accents the keymap developer's point of view. Overview The developer of a new layout should read the xkb protocol specification (The X Keyboard Extension: Protocol Specification) at least to clarify for himself some xkb-specific terms used in this document and elsewhere in xkb configuration. Also it shows wise to understand how the X server and a client digest their keyboard inputs (with and without xkb). A useful source is also Ivan Pascal's text about xkb configuration often referenced throughout this document. Note that this document covers only enhancements which are to be made to XFree86 version 4.3 and X11R6.7.0 and above. The Basics At the startup (or at later at user's command) X server starts its xkb keyboard module extension and reads data from a compiled configuration file. This compiled configuration file is prepared by the program xkbcomp which behaves altogether as an ordinary compiler (see man xkbcomp). Its input are human readable xkb configuration files which are verified and then composed into a useful xkb configuration. Users don't need to mess with xkbcomp themselves, for them it is invisible. Usually, it is started upon X server startup. As you probably already know, the xkb configuration consists of five main modules: Keycodes Tables that defines translation from keyboard scan codes into reasonable symbolic names, maximum, minimum legal keycodes, symbolic aliases and description of physically present LED-indicators. The primary sense of this component is to allow definitions of maps of symbols (see below) to be independent of physical keyboard scancodes. There are two main naming conventions for symbolic names (always four bytes long): names which express some traditional meaning like <SPCE> (stands for space bar) or names which express some relative positioning on a keyboard, for example <AE01> (an exclamation mark on US keyboards), on the right there are keys <AE02>, <AE03> etc. Types Types describe how the produced key is changed by active modifiers (like Shift, Control, Alt, ...). There are several predefined types which cover most of used combinations. Compat Compatibility component defines internal behaviour of modifiers. Using compat component you can assign various actions (elaborately described in xkb specification) to key events. This is also the place where LED-indicators behaviour is defined. Symbols For i18n purposes, this is the most important table. It defines what values (=symbols) are assigned to what keycodes (represented by their symbolic name, see above). There may be defined more than one value for each key and then it depends on a key type and on modifiers state (respective compat component) which value will be the resulting one. Geometry Geometry files aren't used by xkb itself but they may be used by some external programs to depict a keyboard image. All these components have the files located in xkb configuration tree in subdirectories with the same names (usually in /usr/lib/X11/xkb). Enhancing XKB Configuration Most of xkb enhancements concerns a need to define new output symbols for the some input key events. In other words, a need to define a new symbol map (for a new language, standard or just to feel more comfortable when typing text). What do you need to do? Generally, you have to define following things: the map of symbols itself the rules to allow users to select the new mapping the description of the new layout First of all, it is good to go through existing layouts and to examine them if there is something you could easily adjust to fit your needs. Even if there is nothing similar you may get some ideas about basic concepts and used tricks. Levels And Groups Since XFree86 4.3.0 and X11R6.7.0 you can use multi-layout concept of xkb configuration. Though it is still in boundaries of xkb protocol and general ideas, the keymap designer must obey new rules when creating new maps. In exchange we get a more powerful and cleaner configuration system. Remember that it is the application which must decide which symbol matches which keycode according to effective modifier state. The X server itself sends only an input event message to. Of course, usually the general interpretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries. The X server only supplies its mapping table (usually upon an application startup). You can think of the X server's symbol table as of a irregular table where each keycode has its row and where each combination of modifiers determines exactly one column. The resulting cell then gives the proper symbolic value. Not all keycodes need to bind different values for different combination of modifiers. <ENTER> key, for instance, usually doesn't depend on any modifiers so it its row has only one column defined. Note that in XKB there is no prior assumption that certain modifiers are bound to certain columns. By editing proper files (see ) this mapping can be changed as well. Unlike the original X protocol the XKB approach is far more flexible. It is comfortable to add one additional XKB term - group. You can think of a group as of a vector of columns per each keycode (naturally the dimension of this vector may differ for different keycodes). What is it good for? The group is not very useful unless you intend to use more than one logically different set of symbols (like more than one alphabet) defined in a single mapping table. But then, the group has a natural meaning - each symbol set has its own group and changing it means selecting a different one. XKB approach allows up to four different groups. The columns inside each group are called (shift) levels. The X server knows the current group and reports it together with modifier set and with a keycode in key events. To sum it up: for each keycode XKB keyboard map contains up to four one-dimensional tables - groups (logically different symbol sets) for each group of a keycode XKB keyboard map contains some columns - shift levels (values reached by combinations of Shift, Ctrl, Alt, ... modifiers) different keycodes can have different number of groups different groups of one keycode can have different number of shift levels the current group number is tracked by X server It is clear that if you sanely define levels, groups and sanely bind modifiers and associated actions you can have simultaneously loaded up to four different symbol sets where each of them would reside in its own group. The multi-layout concept provides a facility to manipulate xkb groups and symbol definitions in a way that allows almost arbitrary composition of predefined symbol tables. To keep it fully functional you have to: define all symbols only in the first group (re)define any modifiers with extra care to avoid strange (anisometric) behaviour Defining New Layouts See Some Words About XKB internals for explanation of used xkb terms and problems addressed by XKB extension. See Common notes about XKB configuration files language for more precise explanation of syntax of xkb configuration files. Predefined XKB Symbol Sets If you are about to define some European symbol map extension, you might want to use on of four predefined latin alphabet layouts. Okay, let's assume you want extend an existing keymap and you want to override a few keys. Let's take a simple U.K. keyboard as an example (defined in pc/gb): partial default alphanumeric_keys xkb_symbols "basic" { include "pc/latin" name[Group1]="Great Britain"; key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] }; key <AE03> { [ 3, sterling, threesuperior, sterling ] }; key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] }; key <TLDE> { [ grave, notsign, bar, bar ] }; key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] }; key <RALT> { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ] }; modifier_map Mod5 { <RALT> }; }; It defines a new layout in basic variant as an extension of common latin alphabet layout. The layout (symbol set) name is set to "Great Britain". Then there are redefinitions of a few keycodes and a modifiers binding. As you can see the number of shift levels is the same for <AE02>, <AE03>, <AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of <RALT>. Note that the <RALT> key itself is a binding key for Mod5 and that it serves like a shift modifier for LevelThree, together with Shift as a multi-key. It is a good habit to respect this rule in a new similar layout. Okay, you could now define more variants of your new layout besides basic simply by including (augmenting/overriding/...) the basic definition and altering what may be needed. Key Types The differences in the number of columns (shift levels) are caused by a different types of keys (see the types definition in section basics). Most keycodes have implicitly set the keytype in the included pc/latin file to FOUR_LEVEL_ALPHABETIC. The only exception is <RALT> keycode which is explicitly set TWO_LEVEL keytype. All those names refer to pre-defined shift level schemes. Usually you can choose a suitable shift level scheme from default types scheme list in proper xkb component's subdirectory. The most used schemes are: ONE_LEVEL The key does not depend on any modifiers. The symbol from first level is always chosen. TWO_LEVEL The key uses a modifier Shift and may have two possible values. The second level may be chosen by Shift modifier. If Lock modifier (usually Caps-lock) applies the symbol is further processed using system-specific capitalization rules. If both Shift+Lock modifier apply the symbol from the second level is taken and capitalization rules are applied (and usually have no effect). ALPHABETIC The key uses modifiers Shift and Lock. It may have two possible values. The second level may be chosen by Shift modifier. When Lock modifier applies, the symbol from the first level is taken and further processed using system-specific capitalization rules. If both Shift+Lock modifier apply the symbol from the first level is taken and no capitalization rules applied. This is often called shift-cancels-caps behaviour. THREE_LEVEL Is the same as TWO_LEVEL but it considers an extra modifier - LevelThree which can be used to gain the symbol value from the third level. If both Shift+LevelThree modifiers apply the value from the third level is also taken. As in TWO_LEVEL, the Lock modifier doesn't influence the resulting level. Only Shift and LevelThree are taken into that consideration. If the Lock modifier is active capitalization rules are applied on the resulting symbol. FOUR_LEVEL Is the same as THREE_LEVEL but unlike LEVEL_THREE if both Shift+LevelThree modifiers apply the symbol is taken from the fourth level. FOUR_LEVEL_ALPHABETIC Is similar to FOUR_LEVEL but also defines shift-cancels-caps behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol from the third level is taken and the capitalization rules are applied. If Lock+Shift+LevelThree apply the symbol from the third level is taken and no capitalization rules are applied. KEYPAD As the name suggest this scheme is primarily used for numeric keypads. The scheme considers two modifiers - Shift and NumLock. If none of modifiers applies the symbol from the first level is taken. If either Shift or NumLock modifiers apply the symbol from the second level is taken. If both Shift+NumLock modifiers apply the symbol from the first level is taken. Again, shift-cancels-caps variant. FOUR_LEVEL_KEYPAD Is similar to KEYPAD scheme but considers also LevelThree modifier. If LevelThree modifier applies the symbol from the third level is taken. If Shift+LevelThree or NumLock+LevelThree apply the symbol from the fourth level is taken. If all Shift+NumLock+LevelThree modifiers apply the symbol from the third level is taken. This also, shift-cancels-caps variant. Besides that, there are several schemes for special purposes: PC_BREAK It is similar to TWO_LEVEL scheme but it considers the Control modifier rather than Shift. That means, the symbol from the second level is chosen by Control rather than by Shift. PC_SYSRQ It is similar to TWO_LEVEL scheme but it considers the Alt modifier rather than Shift. That means, the symbol from the second level is chosen by Alt rather than by Shift. CTRL+ALT The key uses modifiers Alt and Control. It may have two possible values. If only one modifier (Alt or Control) applies the symbol from the first level is chosen. Only if both Alt+Control modifiers apply the symbol from the second level is chosen. SHIFT+ALT The key uses modifiers Shift and Alt. It may have two possible values. If only one modifier (Alt or Shift) applies the symbol from the first level is chosen. Only if both Alt+Shift modifiers apply the symbol from the second level is chosen. If needed, special caps schemes may be used. They redefine the standard behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys defined in respective types then automatically change their behaviour accordingly. Possible redefinitions are: internal internal_nocancel shift shift_nocancel None of these schemes should be used directly. They are defined merely for 'caps:' xkb options (used to globally change the layouts behaviour). Don't alter any of existing key types. If you need a different behaviour create a new one. More On Definitions Of Types When the XKB software deals with a separate type description it gets a complete list of modifiers that should be taken into account from the 'modifiers=<list of modifiers>' list and expects that a set of 'map[<combination of modifiers>]=<list of modifiers>' instructions that contain the mapping for each combination of modifiers mentioned in that list. Modifiers that are not explicitly listed are NOT taken into account when the resulting shift level is computed. If some combination is omitted the program (subroutine) should choose the first level for this combination (a quite reasonable behavior). Lets consider an example with two modifiers ModOne and ModTwo: type "..." { modifiers = ModOne+ModTwo; map[None] = Level1; map[ModOne] = Level2; }; In this case the map statements for ModTwo only and ModOne+ModTwo are omitted. It means that if the ModTwo is active the subroutine can't found explicit mapping for such combination an will use the default level i.e. Level1. But in the case the type described as: type "..." { modifiers = ModOne; map[None] = Level1; map[ModOne] = Level2; }; the ModTwo will not be taken into account and the resulting level depends on the ModOne state only. That means, ModTwo alone produces the Level1 but the combination ModOne+ModTwo produces the Level2 as well as ModOne alone. What does it mean if the second modifier is the Lock? It means that in the first case (the Lock itself is included in the list of modifiers but combinations with this modifier aren't mentioned in the map statements) the internal capitalization rules will be applied to the symbol from the first level. But in the second case the capitalization will be applied to the symbol chosen accordingly to the first modifier - and this can be the symbol from the first as well as from the second level. Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are used for shift level calculation and then discarded. Sometimes this is not desirable. If you want to use a modifier for shift level calculation but you don't want to discard it, you may list in 'preserve[<combination of modifiers>]=<list of modifiers>'. That means, for a given combination all listed modifiers will be preserved. If the Lock modifier is preserved then the resulting symbol is passed to internal capitalization routine regardless whether it has been used for a shift level calculation or not. Any key type description can use both real and virtual modifiers. Since real modifiers always have standard names it is not necessary to explicitly declare them. Virtual modifiers can have arbitrary names and can be declared (prior using them) directly in key type definition: virtual_modifiers <comma-separated list of modifiers> ; as seen in for example basic, pc or mousekeys key type definitions. Rules Once you are finished with your symbol map you need to add it to rules file. The rules file describes how all the five basic keycodes, types, compat, symbols and geometry components should be composed to give a sensible resulting xkb configuration. The main advantage of rules over formerly used keymaps is a possibility to simply parameterize (once) fixed patterns of configurations and thus to elegantly allow substitutions of various local configurations into predefined templates. A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be parameterized with four other arguments: Model, Layout, Variant and Options. For most cases parameters model and layout should be sufficient for choosing a functional keyboard mapping. The rules file itself is composed of pattern lines and lines with rules. The pattern line starts with an exclamation mark ('!') and describes how will the xkb interpret the following lines (rules). A sample rules file looks like this: ! model = keycodes macintosh_old = macintosh ... * = xorg ! model = symbols hp = +inet(%m) microsoftpro = +inet(%m) geniuscomfy = +inet(%m) ! model layout[1] = symbols macintosh us = macintosh/us%(v[1]) * * = pc/pc(%m)+pc/%l[1]%(v[1]) ! model layout[2] = symbols macintosh us = +macintosh/us[2]%(v[2]):2 * * = +pc/%l[2]%(v[2]):2 ! option = types caps:internal = +caps(internal) caps:internal_nocancel = +caps(internal_nocancel) Each rule defines what certain combination of values on the left side of equal sign ('=') results in. For example a (keyboard) model macintosh_old instructs xkb to take definitions of keycodes from file keycodes/macintosh while the rest of models (represented by a wild card '*') instructs it to take them from file keycodes/xorg. The wild card represents all possible values on the left side which were not found in any of the previous rules. The more specialized (more complete) rules have higher precedence than general ones, i.e. the more general rules supply reasonable default values. As you can see some lines contain substitution parameters - the parameters preceded by the percent sign ('%'). The first alphabetical character after the percent sign expands to the value which has been found on the left side. For example +%l%(v) expands into +cz(bksl) if the respective values on the left side were cz layout in its bksl variant. More, if the layout resp. variant parameter is followed by a pair of brackets ('[', ']') it means that xkb should place the layout resp. variant into specified xkb group. If the brackets are omitted the first group is the default value. So the second block of rules enhances symbol definitions for some particular keyboard models with extra keys (for internet, multimedia, ...) . Other models are left intact. Similarly, the last block overrides some key type definitions, so the common global behaviour ''shift cancels caps'' or ''shift doesn't cancel caps'' can be selected. The rest of rules produces special symbols for each variant us layout of macintosh keyboard and standard pc symbols in appropriate variants as a default. Descriptive Files of Rules Now you just need to add a detailed description to <rules>.xml description file so the other users (and external programs which often parse this file) know what is your work about. Old Descriptive Files The formerly used descriptive files were named <rules>.lst Its structure is very simple and quite self descriptive but such simplicity had also some cavities, for example there was no way how to describe local variants of layouts and there were problems with the localization of descriptions. To preserve compatibility with some older programs, new XML descriptive files can be converted to old format '.lst'. For each parameter of rules file should be described its meaning. For the rules file described above the .lst file could look like: ! model pc104 Generic 104-key PC microsoft Microsoft Natural pc98 PC-98xx Series macintosh Original Macintosh ... ! layout us U.S. English cz Czech de German ... ! option caps:internal uses internal capitalization. Shift cancels Caps caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps And that should be it. Enjoy creating your own xkb mapping.
xorg-docs-1.7.3/general/input/Makefile.in0000644014310600000120000005423014600067626013734 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = general/input ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = XKB-Config.xml XKB-Enhancing.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_DOCS_TRUE@docbook = XKB-Config.xml XKB-Enhancing.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_DOCS_TRUE@shelfdir = $(docdir)/input # DocBook/XML generated output formats to be installed @ENABLE_DOCS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_DOCS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_DOCS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign general/input/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign general/input/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/general/input/Makefile.am0000644014310600000120000000051414600067622013713 if ENABLE_DOCS # Main DocBook/XML files (DOCTYPE book) docbook = XKB-Config.xml XKB-Enhancing.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/input # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_DOCS xorg-docs-1.7.3/general/Makefile.in0000644014310600000120000007100714600067626012576 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = general ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = License.xml README.xml ReleaseNotes.xml \ Versions.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = fonts input graphics platforms # Main DocBook/XML files (DOCTYPE book) @ENABLE_DOCS_TRUE@docbook = \ @ENABLE_DOCS_TRUE@ License.xml \ @ENABLE_DOCS_TRUE@ README.xml \ @ENABLE_DOCS_TRUE@ ReleaseNotes.xml \ @ENABLE_DOCS_TRUE@ Versions.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_DOCS_TRUE@shelfdir = $(docdir) # DocBook/XML generated output formats to be installed @ENABLE_DOCS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_DOCS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_DOCS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@CLEANFILES = $(shelf_DATA) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign general/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign general/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ distclean distclean-generic distclean-tags distdir dvi dvi-am \ html html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_shelfDATA uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/general/fonts/0000755014310600000120000000000014600067630011730 5xorg-docs-1.7.3/general/fonts/Makefile.in0000644014310600000120000005415214600067626013731 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = general/fonts ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = fonts.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_DOCS_TRUE@docbook = fonts.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_DOCS_TRUE@shelfdir = $(docdir)/fonts # DocBook/XML generated output formats to be installed @ENABLE_DOCS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_DOCS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_DOCS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign general/fonts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign general/fonts/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/general/fonts/fonts.xml0000644014310600000120000016724114600067622013537 %defs; ]>
Fonts in X11R&relvers; X Version 11, Release &fullrelvers; JuliuszChroboczek jch@freedesktop.org 16 March 2012 Introduction This document describes the support for fonts in X11R&relvers;. is aimed at the casual user wishing to install fonts in X11R&relvers; the rest of the document describes the font support in more detail. We assume some familiarity with digital fonts. If anything is not clear to you, please consult at the end of this document for background information. Two font systems X11 includes two font systems: the original core X11 fonts system, which is present in all implementations of X11, and the Xft fonts system, which may not yet be distributed with implementations of X11 that are not based on either XFree86 or X11R6.8 or later. The core X11 fonts system is directly derived from the fonts system included with X11R1 in 1987, which could only use monochrome bitmap fonts. Over the years, it has been more or less happily coerced into dealing with scalable fonts and rotated glyphs. Xft was designed from the start to provide good support for scalable fonts, and to do so efficiently. Unlike the core fonts system, it supports features such as anti-aliasing and sub-pixel rasterisation. Perhaps more importantly, it gives applications full control over the way glyphs are rendered, making fine typesetting and WYSIWIG display possible. Finally, it allows applications to use fonts that are not installed system-wide for displaying documents with embedded fonts. Xft is not compatible with the core fonts system: usage of Xft requires fairly extensive changes to toolkits (user-interface libraries). While X.Org will continue to maintain the core fonts system, toolkit authors are encouraged to switch to Xft as soon as possible. Installing fonts This section explains how to configure both Xft and the core fonts system to access newly-installed fonts. Configuring Xft Xft has no configuration mechanism itself, it relies upon the fontconfig library to configure and customise fonts. That library is not specific to the X Window system, and does not rely on any particular font output mechanism. Installing fonts in Xft Fontconfig looks for fonts in a set of well-known directories that include all of X11R&relvers;'s standard font directories (/usr/share/fonts/X11/*) by default) as well as a directory called .fonts/ in the user's home directory. Installing a font for use by Xft applications is as simple as copying a font file into one of these directories. $ cp lucbr.ttf ~/.fonts/ Fontconfig will notice the new font at the next opportunity and rebuild its list of fonts. If you want to trigger this update from the command line, you may run the command fc-cache. $ fc-cache In order to globally update the system-wide Fontconfig information on Unix systems, you will typically need to run this command as root: $ su -c fc-cache Fine-tuning Xft Fontconfig's behaviour is controlled by a set of configuration files: a standard configuration file, /etc/fonts/fonts.conf, the files in a standard configuration directory, /etc/fonts/conf.d/, a host-specific configuration file, /etc/fonts/local.conf, and a user-specific file called .fonts.conf in the user's home directory (this can be overridden with the FONTCONFIG_FILE environment variable). Every Fontconfig configuration file must start with the following boilerplate: <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> In addition, every Fontconfig configuration file must end with the following line: </fontconfig> The default Fontconfig configuration file includes the directory ˜/.fonts/ in the list of directories searched for font files, and this is where user-specific font files should be installed. In the unlikely case that a new font directory needs to be added, this can be done with the following syntax: <dir>/usr/local/share/fonts/</dir> Another useful option is the ability to disable anti-aliasing (font smoothing) for selected fonts. This can be done with the following syntax: <match target="font"> <test qual="any" name="family"> <string>Lucida Console</string> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> Anti-aliasing can be disabled for all fonts by the following incantation: <match target="font"> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> Xft supports sub-pixel rasterisation on LCD displays. X11R&relvers; should automatically enable this feature on laptops and when using an LCD monitor connected with a DVI cable; you can check whether this was done by typing $ xdpyinfo -ext RENDER | grep sub-pixel If this doesn't print anything, you will need to configure Render for your particular LCD hardware manually; this is done with the following syntax: <match target="font"> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match> The string rgb within the <const>...</const> specifies the order of pixel components on your display, and should be changed to match your hardware; it can be one of rgb (normal LCD screen), bgr (backwards LCD screen), vrgb (LCD screen rotated clockwise) or vbgr (LCD screen rotated counterclockwise). Configuring applications A growing number of applications use Xft in preference to the core fonts system. Some applications, however, need to be explicitly configured to use Xft. A case in point is XTerm, which can be set to use Xft by using the -fa command line option or by setting the XTerm*faceName resource: XTerm*faceName: Courier or $ xterm -fa "Courier" For KDE applications, you should select Anti-alias fonts in the Fonts panel of KDE's Control Center. Note that this option is misnamed: it switches KDE to using Xft but doesn't enable anti-aliasing in case it was disabled by your Xft configuration file. Gnome applications and Mozilla Firefox will use Xft by default. Configuring the core X11 fonts system Installing fonts in the core system is a two step process. First, you need to create a font directory that contains all the relevant font files as well as some index files. You then need to inform the X server of the existence of this new directory by including it in the font path. Installing bitmap fonts The X11R&relvers; server can use bitmap fonts in both the cross-platform BDF format and the somewhat more efficient binary PCF format. (X11R&relvers; also supports the obsolete SNF format.) Bitmap fonts are normally distributed in the BDF format. Before installing such fonts, it is desirable (but not absolutely necessary) to convert the font files to the PCF format. This is done by using the command bdftopcf, e.g. $ bdftopcf courier12.bdf You may then want to compress the resulting PCF font files: $ gzip courier12.pcf After the fonts have been converted, you should copy all the font files that you wish to make available into a arbitrary directory, say /usr/local/share/fonts/bitmap/. You should then create the index file fonts.dir by running the command mkfontdir (please see the mkfontdir(1) manual page for more information): $ mkdir /usr/local/share/fonts/bitmap/ $ cp *.pcf.gz /usr/local/share/fonts/bitmap/ $ mkfontdir /usr/local/share/fonts/bitmap/ All that remains is to tell the X server about the existence of the new font directory; see below. Installing scalable fonts The X11R&relvers; server supports scalable fonts in multiple formats, including Type 1, TrueType, and OpenType/CFF. (Earlier versions of X11 also included support for the Speedo and CID scalable font formats, but that is not included in current releases.) Installing scalable fonts is very similar to installing bitmap fonts: you create a directory with the font files, and run mkfontdir to create an index file called fonts.dir. There is, however, a big difference: mkfontdir cannot automatically recognise scalable font files. For that reason, you must first index all the font files in a file called fonts.scale. While this can be done by hand, it is best done by using the mkfontscale utility. $ mkfontscale /usr/local/share/fonts/Type1/ $ mkfontdir /usr/local/share/fonts/Type1/ Under some circumstances, it may be necessary to modify the fonts.scale file generated by mkfontscale; for more information, please see the mkfontdir(1) and mkfontscale(1) manual pages and later in this document. CID-keyed fonts The CID-keyed font format was designed by Adobe Systems for fonts with large character sets. The CID-keyed format is obsolete, as it has been superseded by other formats such as OpenType/CFF and support for CID-keyed fonts has been removed from X11. Setting the server's font path The list of directories where the server looks for fonts is known as the font path. Informing the server of the existence of a new font directory consists of putting it on the font path. The font path is an ordered list; if a client's request matches multiple fonts, the first one in the font path is the one that gets used. When matching fonts, the server makes two passes over the font path: during the first pass, it searches for an exact match; during the second, it searches for fonts suitable for scaling. For best results, scalable fonts should appear in the font path before the bitmap fonts; this way, the server will prefer bitmap fonts to scalable fonts when an exact match is possible, but will avoid scaling bitmap fonts when a scalable font can be used. (The :unscaled hack, while still supported, should no longer be necessary in X11R&relvers;.) You may check the font path of the running server by typing the command $ xset q Font path catalogue directories You can specify a special kind of font path directory in the form catalogue:<dir>. The directory specified after the catalogue: prefix will be scanned for symlinks and each symlink destination will be added as a local font path entry. The symlink can be suffixed by attributes such as 'unscaled', which will be passed through to the underlying font path entry. The only exception is the newly introduced 'pri' attribute, which will be used for ordering the font paths specified by the symlinks. An example configuration: 75dpi:unscaled:pri=20 -> /usr/share/X11/fonts/75dpi ghostscript:pri=60 -> /usr/share/fonts/default/ghostscript misc:unscaled:pri=10 -> /usr/share/X11/fonts/misc type1:pri=40 -> /usr/share/X11/fonts/Type1 type1:pri=50 -> /usr/share/fonts/default/Type1 This will add /usr/share/X11/fonts/misc as the first font path entry with the attribute unscaled. This is functionally equivalent to setting the following font path: /usr/share/X11/fonts/misc:unscaled, /usr/share/X11/fonts/75dpi:unscaled, /usr/share/X11/fonts/Type1, /usr/share/fonts/default/Type1, /usr/share/fonts/default/ghostscript Temporary modification of the font path The xset utility may be used to modify the font path for the current session. The font path is set with the command xset fp; a new element is added to the front with xset +fp, and added to the end with xset fp+. For example, $ xset +fp /usr/local/fonts/Type1 $ xset fp+ /usr/local/fonts/bitmap Conversely, an element may be removed from the front of the font path with xset -fp, and removed from the end with xset fp-. You may reset the font path to its default value with xset fp default. For more information, please consult the xset(1) manual page. Permanent modification of the font path The default font path (the one used just after server startup or after xset fp default) may be specified in the X server's xorg.conf file. It is computed by appending all the directories mentioned in the FontPath entries of the Files section in the order in which they appear. If no font path is specified in a config file, the server uses a default value specified when it was built. FontPath "/usr/local/fonts/Type1" ... FontPath "/usr/local/fonts/bitmap" For more information, please consult the xorg.conf(5) manual page. Troubleshooting If you seem to be unable to use some of the fonts you have installed, the first thing to check is that the fonts.dir files are correct and that they are readable by the server (the X server usually runs as root, beware of NFS-mounted font directories). If this doesn't help, it is quite possible that you are trying to use a font in a format that is not supported by your server. X11R&relvers; supports the BDF, PCF, SNF, Type 1, TrueType, and OpenType font formats. However, not all X11R&relvers; servers come with all the font backends configured in. On most platforms, the X11R&relvers; servers no longer uses font backends from modules that are loaded at runtime. The built in font support corresponds to the functionality formerly provided by these modules: "bitmap": bitmap fonts (*.bdf, *.pcf and *.snf); "freetype": TrueType fonts (*.ttf and *.ttc), OpenType fonts (*.otf and *.otc) and Type 1 fonts (*.pfa and *.pfb). Fonts included with X11R&relvers; Standard bitmap fonts The Sample Implementation of X11 (SI) comes with a large number of bitmap fonts, including the fixed family, and bitmap versions of Courier, Times, Helvetica and some members of the Lucida family. In X11R&relvers;, a number of these fonts are provided in Unicode-encoded font files now. At build time, these fonts are split into font files encoded according to legacy encodings, a process which allows us to provide the standard fonts in a number of regional encodings with no duplication of work. For example, the font file /usr/share/fonts/X11/misc/6x13.bdf with XLFD -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 is a Unicode-encoded version of the standard fixed font with added support for the Latin, Greek, Cyrillic, Georgian, Armenian, IPA and other scripts plus numerous technical symbols. It contains over 2800 glyphs, covering all characters of ISO 8859 parts 1-5, 7-10, 13-15, as well as all European IBM and Microsoft code pages, KOI8, WGL4, and the repertoires of many other character sets. This font is used at build time for generating the font files 6x13-ISO8859-1.bdf 6x13-ISO8859-2.bdf ... 6x13-ISO8859-15.bdf 6x13-KOI8-R.bdf with respective XLFDs -misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-1 ... -misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-15 -misc-fixed-medium-r-normal--13-120-75-75-c-60-koi8-r The standard short name fixed is normally an alias for -misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-1 The ClearlyU Unicode font family The ClearlyU family of fonts provides a set of 12 pt, 100 dpi proportional fonts with many of the glyphs needed for Unicode text. Together, the fonts contain approximately 7500 glyphs. The main ClearlyU font has the XLFD -mutt-clearlyu-medium-r-normal--17-120-100-100-p-101-iso10646-1 and resides in the font file /usr/share/fonts/X11/misc/cu12.pcf.gz Additional ClearlyU fonts include -mutt-clearlyu alternate glyphs-medium-r-normal--17-120-100-100-p-91-iso10646-1 -mutt-clearlyu pua-medium-r-normal--17-120-100-100-p-111-iso10646-1 -mutt-clearlyu arabic extra-medium-r-normal--17-120-100-100-p-103-fontspecific-0 -mutt-clearlyu ligature-medium-r-normal--17-120-100-100-p-141-fontspecific-0 The Alternate Glyphs font contains additional glyph shapes that are needed for certain languages. A second alternate glyph font will be provided later for cases where a character has more than one commonly used alternate shape (e.g. the Urdu heh). The PUA font contains extra glyphs that are useful for certain rendering purposes. The Arabic Extra font contains the glyphs necessary for characters that don't have all of their possible shapes encoded in ISO 10646. The glyphs are roughly ordered according to the order of the characters in the ISO 10646 standard. The Ligature font contains ligatures for various scripts that may be useful for improved presentation of text. Standard scalable fonts X11R&relvers; includes all the scalable fonts distributed with X11R6. Standard Type 1 fonts The IBM Courier set of fonts cover ISO 8859-1 and ISO 8859-2 as well as Adobe Standard Encoding. These fonts have XLFD -adobe-courier-medium-*-*--0-0-0-0-m-0-*-* and reside in the font files /usr/share/fonts/X11/Type1/cour*.pfa The Adobe Utopia set of fonts only cover ISO 8859-1 as well as Adobe Standard Encoding. These fonts have XLFD -adobe-utopia-*-*-normal--0-0-0-0-p-0-iso8859-1 and reside in the font files /usr/share/fonts/X11/Type1/UT*.pfa Finally, X11R&relvers; also comes with Type 1 versions of Bitstream Courier and Charter. These fonts have XLFD -bitstream-courier-*-*-normal--0-0-0-0-m-0-iso8859-1 -bitstream-charter-*-*-normal--0-0-0-0-p-0-iso8859-1 and reside in the font files /usr/share/fonts/X11/Type1/c*bt_.pfb The Bigelow & Holmes Luxi family X11R&relvers; includes the Luxi family of scalable fonts, in both TrueType and Type 1 format. This family consists of the fonts Luxi Serif, with XLFD -b&h-luxi serif-medium-*-normal--*-*-*-*-p-*-*-* Luxi Sans, with XLFD -b&h-luxi sans-medium-*-normal--*-*-*-*-p-*-*-* and Luxi Mono, with XLFD -b&h-luxi mono-medium-*-normal--*-*-*-*-m-*-*-* Each of these fonts comes Roman, oblique, bold and bold oblique variants The TrueType version have glyphs covering the basic ASCII Unicode range, the Latin 1 range, as well as the Extended Latin range and some additional punctuation characters. In particular, these fonts include all the glyphs needed for ISO 8859 parts 1, 2, 3, 4, 9, 13 and 15, as well as all the glyphs in the Adobe Standard encoding and the Windows 3.1 character set. The glyph coverage of the Type 1 versions is somewhat reduced, and only covers ISO 8859 parts 1, 2 and 15 as well as the Adobe Standard encoding. The Luxi fonts are original designs by Kris Holmes and Charles Bigelow. Luxi fonts include seriffed, sans serif, and monospaced styles, in roman and oblique, and normal and bold weights. The fonts share stem weight, x-height, capital height, ascent and descent, for graphical harmony. The character width metrics of Luxi roman and bold fonts match those of core fonts bundled with popular operating and window systems. The license terms for the Luxi fonts are included in the file COPYRIGHT.BH, as well as in the License document. Charles Bigelow and Kris Holmes from Bigelow and Holmes Inc. developed the Luxi typeface designs in Ikarus digital format. URW++ Design and Development GmbH converted the Ikarus format fonts to TrueType and Type1 font programs and implemented the grid-fitting "hints" and kerning tables in the Luxi fonts. For more information, please contact design@bigelowandholmes.com or info@urwpp.de, or consult the URW++ web site. An earlier version of the Luxi fonts was made available under the name Lucidux. This name should no longer be used due to trademark uncertainties, and all traces of the Lucidux name have been removed from X11R&relvers;. More about core fonts This section describes XFree86-created enhancements to the core X11 fonts system that were adopted by X.Org. Core fonts and internationalisation The scalable font backends (Type 1 and TrueType) can automatically re-encode fonts to the encoding specified in the XLFD in fonts.dir. For example, a fonts.dir file can contain entries for the Type 1 Courier font such as cour.pfa -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 cour.pfa -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-2 which will lead to the font being recoded to ISO 8859-1 and ISO 8859-2 respectively. The <emphasis remap="it">fontenc</emphasis> layer Two of the scalable backends (Type 1 and the FreeType TrueType backend) use a common fontenc layer for font re-encoding. This allows these backends to share their encoding data, and allows simple configuration of new locales independently of font type. Please note: the X-TrueType (X-TT) backend is not included in X11R&relvers;. That functionality has been merged into the FreeType backend. In the fontenc layer, an encoding is defined by a name (such as iso8859-1), possibly a number of aliases (alternate names), and an ordered collection of mappings. A mapping defines the way the encoding can be mapped into one of the target encodings known to fontenc; currently, these consist of Unicode, Adobe glyph names, and arbitrary TrueType cmaps. A number of encodings are hardwired into fontenc, and are therefore always available; the hardcoded encodings cannot easily be redefined. These include: iso10646-1: Unicode; iso8859-1: ISO Latin-1 (Western Europe); iso8859-2: ISO Latin-2 (Eastern Europe); iso8859-3: ISO Latin-3 (Southern Europe); iso8859-4: ISO Latin-4 (Northern Europe); iso8859-5: ISO Cyrillic; iso8859-6: ISO Arabic; iso8859-7: ISO Greek; iso8859-8: ISO Hebrew; iso8859-9: ISO Latin-5 (Turkish); iso8859-10: ISO Latin-6 (Nordic); iso8859-15: ISO Latin-9, or Latin-0 (Revised Western-European); koi8-r: KOI8 Russian; koi8-u: KOI8 Ukrainian (see RFC 2319); koi8-ru: KOI8 Russian/Ukrainian; koi8-uni: KOI8 Unified (Russian, Ukrainian, and Byelorussian); koi8-e: KOI8 European, ISO-IR-111, or ECMA-Cyrillic; microsoft-symbol and apple-roman: these are only likely to be useful with TrueType symbol fonts. Additional encodings can be added by defining encoding files. When a font encoding is requested that the fontenc layer doesn't know about, the backend checks the directory in which the font file resides (not necessarily the directory with fonts.dir!) for a file named encodings.dir. If found, this file is scanned for the requested encoding, and the relevant encoding definition file is read in. The mkfontdir utility, when invoked with the -e option followed by the name of a directory containing encoding files, can be used to automatically build encodings.dir files. Please see the mkfontdir(1) manual page for more details. A number of encoding files for common encodings are included with X11R&relvers;. Information on writing new encoding files can be found in and later in this document. Backend-specific notes about fontenc The <emphasis remap="it">FreeType</emphasis> backend For TrueType and OpenType fonts, the FreeType backend scans the mappings in order. Mappings with a target of PostScript are ignored; mappings with a TrueType or Unicode target are checked against all the cmaps in the file. The first applicable mapping is used. For Type 1 fonts, the FreeType backend first searches for a mapping with a target of PostScript. If one is found, it is used. Otherwise, the backend searches for a mapping with target Unicode, which is then composed with a built-in table mapping codes to glyph names. Note that this table only covers part of the Unicode code points that have been assigned names by Adobe. Specifying an encoding value of adobe-fontspecific for a Type 1 font disables the encoding mechanism. This is useful with symbol and incorrectly encoded fonts (see below). If a suitable mapping is not found, the FreeType backend defaults to ISO 8859-1. Format of encoding directory files In order to use a font in an encoding that the font backend does not know about, you need to have an encodings.dir file either in the same directory as the font file used or in a system-wide location (/usr/share/fonts/X11/encodings/ by default). The encodings.dir file has a similar format to fonts.dir. Its first line specifies the number of encodings, while every successive line has two columns, the name of the encoding, and the name of the encoding file; this can be relative to the current directory, or absolute. Every encoding name should agree with the encoding name defined in the encoding file. For example, 3 mulearabic-0 /usr/share/fonts/X11/encodings/mulearabic-0.enc mulearabic-1 /usr/share/fonts/X11/encodings/mulearabic-1.enc mulearabic-2 /usr/share/fonts/X11/encodings/mulearabic-2.enc The name of an encoding must be specified in the encoding file's STARTENCODING or ALIAS line. It is not enough to create an encodings.dir entry. If your platform supports it (it probably does), encoding files may be compressed or gzipped. The encoding.dir files are best maintained by the mkfontdir utility. Please see the mkfontdir(1) manual page for more information. Format of encoding files The encoding files are free form, i.e. any string of whitespace is equivalent to a single space. Keywords are parsed in a non-case-sensitive manner, meaning that size, SIZE, and SiZE all parse as the same keyword; on the other hand, case is significant in glyph names. Numbers can be written in decimal, as in 256, in hexadecimal, as in 0x100, or in octal, as in 0400. Comments are introduced by a hash sign #. A # may appear at any point in a line, and all characters following the # are ignored, up to the end of the line. The encoding file starts with the definition of the name of the encoding, and possibly its alternate names (aliases): STARTENCODING mulearabic-0 ALIAS arabic-0 The name of the encoding and its aliases should be suitable for use in an XLFD font name, and therefore contain exactly one dash -. The encoding file may then optionally declare the size of the encoding. For a linear encoding (such as ISO 8859-1), the SIZE line specifies the maximum code plus one: SIZE 0x2B For a matrix encoding, it should specify two numbers. The first is the number of the last row plus one, the other, the highest column number plus one. In the case of jisx0208.1990-0 (JIS X 0208(1990), double-byte encoding, high bit clear), it should be SIZE 0x75 0x80 In the case of a matrix encoding, a FIRSTINDEX line may be included to specify the minimum glyph index in an encoding. The keyword FIRSTINDEX is followed by two integers, the minimum row number followed by the minimum column number: FIRSTINDEX 0x20 0x20 In the case of a linear encoding, a FIRSTINDEX line is not very useful. If for some reason however you chose to include on, it should be followed by a single integer. Note that in most font backends inclusion of a FIRSTINDEX line has the side effect of disabling default glyph generation, and this keyword should therefore be avoided unless absolutely necessary. Codes outside the region defined by the SIZE and FIRSTINDEX lines are understood to be undefined. Encodings default to linear encoding with a size of 256 (0x100). This means that you must declare the size of all 16 bit encodings. What follows is one or more mapping sections. A mapping section starts with a STARTMAPPING line stating the target of the mapping. The target may be one of: Unicode (ISO 10646): STARTMAPPING unicode a given TrueType cmap: STARTMAPPING cmap 3 1 PostScript glyph names: STARTMAPPING postscript Every line in a mapping section maps one from the encoding being defined to the target of the mapping. In mappings with a Unicode or TrueType mapping, codes are mapped to codes: 0x21 0x0660 0x22 0x0661 ... As an abbreviation, it is possible to map a contiguous range of codes in a single line. A line consisting of three integers <it/start/ <it/end/ <it/target/ is an abbreviation for the range of lines start target start+1 target+1 ... end target+end-start For example, the line 0x2121 0x215F 0x8140 is an abbreviation for 0x2121 0x8140 0x2122 0x8141 ... 0x215F 0x817E Codes not listed are assumed to map through the identity (i.e. to the same numerical value). In order to override this default mapping, you may specify a range of codes to be undefined by using an UNDEFINE line: UNDEFINE 0x00 0x2A or, for a single code, UNDEFINE 0x1234 PostScript mappings are different. Every line in a PostScript mapping maps a code to a glyph name 0x41 A 0x42 B ... and codes not explicitly listed are undefined. A mapping section ends with an ENDMAPPING line ENDMAPPING After all the mappings have been defined, the file ends with an ENDENCODING line ENDENCODING In order to make future extensions to the format possible, lines starting with an unknown keyword are silently ignored, as are mapping sections with an unknown target. Using symbol fonts Type 1 symbol fonts should be installed using the adobe-fontspecific encoding. In an ideal world, all TrueType symbol fonts would be installed using one of the microsoft-symbol and apple-roman encodings. A number of symbol fonts, however, are not marked as such; such fonts should be installed using microsoft-cp1252, or, for older fonts, microsoft-win3.1. In order to guarantee consistent results (especially between Type 1 and TrueType versions of the same font), it is possible to define a special encoding for a given font. This has already been done for the ZapfDingbats font; see the file encodings/adobe-dingbats.enc. Hints about using badly encoded fonts A number of text fonts are incorrectly encoded. Incorrect encoding is sometimes done by design, in order to make a font for an exotic script appear like an ordinary Western text font on systems which are not easily extended with new locale data. It is often the result of the font designer's laziness or incompetence; for some reason, most people seem to find it easier to invent idiosyncratic glyph names rather than follow the Adobe glyph list. There are two ways of dealing with such fonts: using them with the encoding they were designed for, and creating an ad hoc encoding file. Using fonts with the designer's encoding In the case of Type 1 fonts, the font designer can specify a default encoding; this encoding is requested by using the adobe-fontspecific encoding in the XLFD name. Sometimes, the font designer omitted to specify a reasonable default encoding, in which case you should experiment with adobe-standard, iso8859-1, microsoft-cp1252, and microsoft-win3.1. (The encoding microsoft-symbol doesn't make sense for Type 1 fonts). TrueType fonts do not have a default encoding. However, most TrueType fonts are designed with either Microsoft or Apple platforms in mind, so one of microsoft-symbol, microsoft-cp1252, microsoft-win3.1, or apple-roman should yield reasonable results. Specifying an <emphasis remap="it">ad hoc</emphasis> encoding file It is always possible to define an encoding file to put the glyphs in a font in any desired order. Again, see the encodings/adobe-dingbats.enc file to see how this is done. Specifying font aliases By following the directions above, you will find yourself with a number of fonts with unusual names --- with encodings such as adobe-fontspecific, microsoft-win3.1 etc. In order to use these fonts with standard applications, it may be useful to remap them to their proper names. This is done by writing a fonts.alias file. The format of this file is very simple: it consists of a series of lines each mapping an alias name to a font name. A fonts.alias file might look as follows: "-ogonki-alamakota-medium-r-normal--0-0-0-0-p-0-iso8859-2" \ "-ogonki-alamakota-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific" (both XLFD names on a single line). The syntax of the fonts.alias file is more precisely described in the mkfontdir(1) manual page. Additional notes about scalable core fonts About the <emphasis remap="it">FreeType</emphasis> backend The FreeType backend (formerly xfsft) is a backend based on version 2 of the FreeType library (see the FreeType web site) and has the X-TT functionalities for CJKV support provided by the After X-TT Project (see the After X-TT Project web site). The FreeType backend has support for the fontenc style of internationalisation (see ). This backend supports TrueType font files (*.ttf), OpenType font files (*.otf), TrueType Collections (*.ttc), OpenType Collections (*.otc) and Type 1 font files (*.pfa and *.pfb). In order to access the faces in a TrueType Collection file, the face number must be specified in the fonts.dir file before the filename, within a pair of colons, or by setting the 'fn' TTCap option. For example, :1:mincho.ttc -misc-pmincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1990-0 refers to face 1 in the mincho.ttc TrueType Collection file. The new FreeType backend supports the extended fonts.dir syntax introduced by X-TrueType with a number of options, collectively known as TTCap. A TTCap entry follows the general syntax option=value: and should be specified before the filename. The new FreeType almost perfectly supports TTCap options that are compatible with X-TT 1.4. The Automatic Italic (ai), Double Strike (ds) and Bounding box Width (bw) options are indispensable in CJKV. For example, mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0 ds=y:mincho.ttc -misc-mincho-bold-r-normal--0-0-0-0-c-0-jisx0208.1990-0 ai=0.2:mincho.ttc -misc-mincho-medium-i-normal--0-0-0-0-c-0-jisx0208.1990-0 ds=y:ai=0.2:mincho.ttc -misc-mincho-bold-i-normal--0-0-0-0-c-0-jisx0208.1990-0 bw=0.5:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0 bw=0.5:ds=y:mincho.ttc -misc-mincho-bold-r-normal--0-0-0-0-c-0-jisx0201.1976-0 bw=0.5:ai=0.2:mincho.ttc -misc-mincho-medium-i-normal--0-0-0-0-c-0-jisx0201.1976-0 bw=0.5:ds=y:ai=0.2:mincho.ttc -misc-mincho-bold-i-normal--0-0-0-0-c-0-jisx0201.1976-0 setup the complete combination of jisx0208 and jisx0201 using mincho.ttc only. More information on the TTCap syntax is found on the After X-TT Project page. The FreeType backend uses the fontenc layer in order to support recoding of fonts; this was described in and especially earlier in this document. Delayed glyph rasterisation When loading a proportional fonts which contain a huge number of glyphs, the old FreeType delayed glyph rasterisation until the time at which the glyph was first used. The new FreeType (libfreetype-xtt2) has an improved very lazy metric calculation method to speed up the process when loading TrueType or OpenType fonts. Although the X-TT module also has this method, the "vl=y" TTCap option must be set if you want to use it. This is the default method for FreeType when it loads multi-byte fonts. Even if you use a unicode font which has tens of thousands of glyphs, this delay will not be worrisome as long as you use the new FreeType backend -- its very lazy method is super-fast. The maximum error of bitmap position using very lazy method is 1 pixel, and is the same as that of a character-cell spacing. When the X-TT backend is used with the vl=y option, a chipped bitmap is displayed with certain fonts. However, the new FreeType backend has minimal problem with this, since it corrects left- and right-side bearings using italicAngle in the TrueType/OpenType post table, and does automatic correction of bitmap positions when rasterisation so that chipped bitmaps are not displayed. Nevertheless if you don't want to use the very lazy method when using multi-bytes fonts, set vl=n in the TTCap option to disable it: vl=n:luxirr.ttf -b&h-Luxi Serif-medium-r-normal--0-0-0-0-p-0-iso10646-1 Of course, both backends also support an optimisation for character-cell fonts (fonts with all glyph metrics equal, or terminal fonts). A font with an XLFD specifying a character-cell spacing c, as in -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0 or fs=c:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1990-0 will not compute the metric for each glyph, but instead trust the font to be a character-cell font. You are encouraged to make use of this optimisation when useful, but be warned that not all monospaced fonts are character-cell fonts. Appendix: background and terminology Characters and glyphs A computer text-processing system inputs keystrokes and outputs glyphs, small pictures that are assembled on paper or on a computer screen. Keystrokes and glyphs do not, in general, coincide: for example, if the system does generate ligatures, then to the sequence of two keystrokes <f><i> will typically correspond a single glyph. Similarly, if the system shapes Arabic glyphs in a vaguely reasonable manner, then multiple different glyphs may correspond to a single keystroke. The complex transformation rules from keystrokes to glyphs are usually factored into two simpler transformations, from keystrokes to characters and from characters to glyphs. You may want to think of characters as the basic unit of text that is stored e.g. in the buffer of your text editor. While the definition of a character is intrinsically application-specific, a number of standardised collections of characters have been defined. A coded character set is a set of characters together with a mapping from integer codes --- known as codepoints --- to characters. Examples of coded character sets include US-ASCII, ISO 8859-1, KOI8-R, and JIS X 0208(1990). A coded character set need not use 8 bit integers to index characters. Many early systems used 6 bit character sets, while 16 bit (or more) character sets are necessary for ideographic writing systems. Font files, fonts, and XLFD Traditionally, typographers speak about typefaces and founts. A typeface is a particular style or design, such as Times Italic, while a fount is a molten-lead incarnation of a given typeface at a given size. Digital fonts come in font files. A font file contains the information necessary for generating glyphs of a given typeface, and applications using font files may access glyph information in an arbitrary order. Digital fonts may consist of bitmap data, in which case they are said to be bitmap fonts. They may also consist of a mathematical description of glyph shapes, in which case they are said to be scalable fonts. Common formats for scalable font files are Type 1 (sometimes incorrectly called ATM fonts or PostScript fonts), TrueType and OpenType. The glyph data in a digital font needs to be indexed somehow. How this is done depends on the font file format. In the case of Type 1 fonts, glyphs are identified by glyph names. In the case of TrueType fonts, glyphs are indexed by integers corresponding to one of a number of indexing schemes (usually Unicode --- see below). The X11 core fonts system uses the data in a font file to generate font instances, which are collections of glyphs at a given size indexed according to a given encoding. X11 core font instances are usually specified using a notation known as the X Logical Font Description (XLFD). An XLFD starts with a dash -, and consists of fourteen fields separated by dashes, for example: -adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1 Or particular interest are the last two fields iso8859-1, which specify the font instance's encoding. A scalable font is specified by an XLFD which contains zeroes instead of some fields: -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1 X11 font instances may also be specified by short name. Unlike an XLFD, a short name has no structure and is simply a conventional name for a font instance. Two short names are of particular interest, as the server will not start if font instances with these names cannot be opened. These are fixed, which specifies the fallback font to use when the requested font cannot be opened, and cursor, which specifies the set of glyphs to be used by the mouse pointer. Short names are usually implemented as aliases to XLFDs; the standard fixed and cursor aliases are defined in /usr/share/font/X11/misc/fonts.alias Unicode Unicode () is a coded character set with the goal of uniquely identifying all characters for all scripts, current and historical. While Unicode was explicitly not designed as a glyph encoding scheme, it is often possible to use it as such. Unicode is an open character set, meaning that codepoint assignments may be added to Unicode at any time (once specified, though, an assignment can never be changed). For this reason, a Unicode font will be sparse, meaning that it only defines glyphs for a subset of the character registry of Unicode. The Unicode standard is defined in parallel with the international standard ISO 10646. Assignments in the two standards are always equivalent, and we often use the terms Unicode and ISO 10646 interchangeably. When used in the X11 core fonts system, Unicode-encoded fonts should have the last two fields of their XLFD set to iso10646-1. References X11R&relvers; comes with extensive documentation in the form of manual pages and typeset documents. Before installing fonts, you really should read the fontconfig(3) and mkfontdir(1) manual pages; other manual pages of interest include X(7), Xserver(1), xset(1), Xft(3), xlsfonts(1) and showfont(1). In addition, you may want to read the X Logical Font Description document by Jim Flowers. The comp.fonts FAQ, which is unfortunately no longer being maintained, contains a wealth of information about digital fonts. Xft and Fontconfig are described on the Fontconfig site. The xfsft home page has been superseded by this document, and is now obsolete; you may however still find some of the information that it contains useful. Joerg Pommnitz' xfsft page is the canonical source for the ttmkfdir utility, which is the ancestor of mkfontscale. The author's software pages might or might not contain related scribbles and development versions of software. The documentation of X-TrueType is available from the After X-TT Project page. While the Unicode consortium site may be of interest, you are more likely to find what you need in Markus Kuhn's UTF-8 and Unicode FAQ. The IETF RFC documents, available from a number of sites throughout the world, often provide interesting information about character set issues; see for example RFC 373.
xorg-docs-1.7.3/general/fonts/Makefile.am0000644014310600000120000000046514600067622013712 if ENABLE_DOCS # Main DocBook/XML files (DOCTYPE book) docbook = fonts.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/fonts # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_DOCS xorg-docs-1.7.3/general/graphics/0000755014310600000120000000000014600067630012377 5xorg-docs-1.7.3/general/graphics/dps.xml0000644014310600000120000000413414600067622013632
X and DPS JuliuszChroboczek jch@freedesktop.org 27 February 2001, updated 30 October 2006 Updated by Jim Gettys and Juliusz Chroboczek. Notice of Obsolescence and Removal from X.Org Releases DPS is now obsolete. At the time when I started this project, there was no decent rendering interface for X11 other than DPS. Since then, there has been a large amount of work on a simple and clean X server extension, Xrender, which provides the basis for just such an interface. Rendering libraries that are being built above Xrender include Xft, a font rendering library built on FreeType; Cairo, a geometry rendering library that provides PostScript-like rendering primitives but with from-the-ground support for Porter-Duff compositing (transparency); Pango, a high-level typesetting library. If your application uses DPS, please consider porting it to the above libraries. See the DPS extension site for more details The client-side DPS software was included and built by default (except as noted below) in the X.Org X11R6.8 release series. The client-side software was included, but not built unless specifically configured by the builder, in the X.Org X11R6.9 release series. The client-side DPS software is no longer included in X11R7.0 or later releases. The server-side software is not included in any X.Org release for licensing reasons; the code is still available from the DPS extension site; it is not known whether it still compiles.
xorg-docs-1.7.3/general/graphics/Makefile.am0000644014310600000120000000046614600067622014362 if ENABLE_DOCS # Main DocBook/XML files (DOCTYPE book) docbook = dps.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/graphics # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_DOCS xorg-docs-1.7.3/general/graphics/Makefile.in0000644014310600000120000005416214600067626014401 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = general/graphics ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = dps.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_DOCS_TRUE@docbook = dps.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_DOCS_TRUE@shelfdir = $(docdir)/graphics # DocBook/XML generated output formats to be installed @ENABLE_DOCS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_DOCS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_DOCS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign general/graphics/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign general/graphics/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/general/platforms/0000755014310600000120000000000014600067630012606 5xorg-docs-1.7.3/general/platforms/Darwin.xml0000644014310600000120000000263314600067622014501 %defs; ]>
X on Darwin and Mac OS X X Version 11, Release &fullrelvers; October 2009 Introduction X11R&relvers;, a freely redistributable open-source implementation of the X Window System from the X.Org Foundation, has been ported to Darwin and Mac OS X. Most of the current work on X for Darwin and Mac OS X is centered around the XQuartz Project at MacOSforge. If you are interested in up-to-date status, want to report a bug, or are interested in working on X11 for Darwin, stop by the project website at
xorg-docs-1.7.3/general/platforms/Solaris.xml0000644014310600000120000000767514600067622014704 %defs; ]>
X Window System on <trademark>Solaris</trademark> X Version 11, Release &fullrelvers; DavidHolland XFree86 Project MarcAurele La France XFree86 Project AlanCoopersmith Oracle Corp. 2012 March 20 The VT-switching sub-system in Solaris The original virtual terminal sub-system is a undocumented, and unsupported feature of Solaris x86 releases 2.1 through 7. It was removed in Solaris 8 and later releases, and was never present on Solaris SPARC. Support for this version of virtual terminals is only present in Xorg 1.6.x and earlier releases of Xorg, and has been removed in Xorg 1.7 and later. If you use this form of virtual terminals, you do so at YOUR OWN RISK. A new virtual terminal sub-system has been introduced in Solaris 11, and is also available in systems based on the OpenSolaris or illumos sources. This version is supported on both SPARC and x86 platforms, though SPARC support is limited to devices with "Coherent Console" support in the kernel frame buffer driver. Support for it is found only in Xorg 1.7 and later server releases. When available, the virtual terminals of Solaris work basically the same way as most other VT sub-systems. Notes for building X11R&relvers; on Solaris Both GCC, and the Sun Studio compilers are supported by X11R&relvers;. The minimum recommended GCC release is 3.4. Some earlier GCC's are known to not work and should be avoided. You should also make certain your version of GCC predefines `sun'. If needed edit /usr/local/lib/gcc-lib/*/*/specs, and modify the *predefines: line. To build X11R&relvers; with GCC you need gcc and (optionally) c++filt from GNU binutils. Don't install gas or ld from GNU binutils, use the one provided by Sun. If you are using Sun compilers to compile the X11R&relvers; distribution, you need to modify your PATH appropriately so the Sun compiler tools are available. Normally, they should be in /opt/SUNWspro/bin You MUST put /usr/ccs/bin at the front of your PATH. There are known problems with some GNU replacements for the utilities found there, so the /usr/ccs/bin versions of these programs must be found before any possible GNU versions. (Most notably GNU 'ar' does not work during the build). Bug Notification Bug reports should be reported at .
xorg-docs-1.7.3/general/platforms/Makefile.in0000644014310600000120000005422414600067626014607 # Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Generate output formats for a single DocBook/XML with/without chapters # # Variables set by the calling Makefile: # shelfdir: the location where the docs/specs are installed. Typically $(docdir) # docbook: the main DocBook/XML file, no chapters, appendix or image files # chapters: all files pulled in by an XInclude statement and images. # # # This makefile is intended for Users Documentation and Functional Specifications. # Do not use for Developer Documentation which is not installed and does not require olink. # Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393 # for an explanation on documents classification. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_1 = $(docbook:.xml=.html) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@am__append_2 = $(docbook:.xml=.txt) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@am__append_3 = $(docbook:.xml=.pdf) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(docbook:.xml=.ps) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@am__append_4 = $(docbook:.xml=.html.db) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(docbook:.xml=.pdf.db) subdir = general/platforms ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_shelf_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_shelf_DATA_DIST = Darwin.xml Solaris.xml am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)" DATA = $(dist_shelf_DATA) $(shelf_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/docbook.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CHANGELOG_CMD = @CHANGELOG_CMD@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ ETAGS = @ETAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FOP = @FOP@ INSTALL = @INSTALL@ INSTALL_CMD = @INSTALL_CMD@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIB_MAN_DIR = @LIB_MAN_DIR@ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MAN_SUBSTS = @MAN_SUBSTS@ MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MKDIR_P = @MKDIR_P@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ STYLESHEET_SRCDIR = @STYLESHEET_SRCDIR@ VERSION = @VERSION@ XMLTO = @XMLTO@ XORG_MAN_PAGE = @XORG_MAN_PAGE@ XORG_SGML_PATH = @XORG_SGML_PATH@ XSLTPROC = @XSLTPROC@ XSL_STYLESHEET = @XSL_STYLESHEET@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ am__leading_dot = @am__leading_dot@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Main DocBook/XML files (DOCTYPE book) @ENABLE_DOCS_TRUE@docbook = Darwin.xml Solaris.xml # The location where the DocBook/XML files and their generated formats are installed @ENABLE_DOCS_TRUE@shelfdir = $(docdir)/platforms # DocBook/XML generated output formats to be installed @ENABLE_DOCS_TRUE@shelf_DATA = $(am__append_1) $(am__append_2) \ @ENABLE_DOCS_TRUE@ $(am__append_3) $(am__append_4) # DocBook/XML file with chapters, appendix and images it includes @ENABLE_DOCS_TRUE@dist_shelf_DATA = $(docbook) $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --searchpath "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_HTML_OLINK_FLAGS) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_PDF_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ --stringparam current.docid="$(<:.xml=)" @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@XMLTO_FO_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_STYLESHEET_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_FO_IMAGEPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO_PDF_OLINK_FLAGS) # Generate documents cross-reference target databases @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_SEARCHPATH_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(XORG_SGML_PATH)/X11" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --path "$(abs_top_builddir)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_OLINK_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam targets.filename "$@" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam collect.xref.targets "only" \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --stringparam olink.base.uri "$(@:.db=)" @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_HTML_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@XSLT_PDF_FLAGS = \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_SEARCHPATH_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(XSLT_OLINK_FLAGS) \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ --nonet --xinclude \ @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(STYLESHEET_SRCDIR)/xorg-fo.xsl @ENABLE_DOCS_TRUE@CLEANFILES = $(shelf_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/docbook.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign general/platforms/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign general/platforms/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_srcdir)/docbook.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_shelfDATA: $(dist_shelf_DATA) @$(NORMAL_INSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-dist_shelfDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) install-shelfDATA: $(shelf_DATA) @$(NORMAL_INSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shelfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shelfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shelfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shelfdir)" || exit $$?; \ done uninstall-shelfDATA: @$(NORMAL_UNINSTALL) @list='$(shelf_DATA)'; test -n "$(shelfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shelfdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(shelfdir)" "$(DESTDIR)$(shelfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_shelfDATA install-shelfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_shelfDATA uninstall-shelfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_shelfDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-shelfDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_shelfDATA \ uninstall-shelfDATA .PRECIOUS: Makefile @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.html: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@%.txt: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TEXT_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.pdf: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@%.ps: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_FOP_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@ $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.html.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@%.pdf.db: %.xml $(chapters) @ENABLE_DOCS_TRUE@@HAVE_STYLESHEETS_TRUE@@HAVE_XMLTO_TRUE@@HAVE_XSLTPROC_TRUE@ $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< # Generate DocBook/XML output formats with or without stylesheets # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xorg-docs-1.7.3/general/platforms/Makefile.am0000644014310600000120000000050614600067622014564 if ENABLE_DOCS # Main DocBook/XML files (DOCTYPE book) docbook = Darwin.xml Solaris.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir)/platforms # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_DOCS xorg-docs-1.7.3/general/Makefile.am0000644014310600000120000000062614600067622012560 SUBDIRS = fonts input graphics platforms if ENABLE_DOCS # Main DocBook/XML files (DOCTYPE book) docbook = \ License.xml \ README.xml \ ReleaseNotes.xml \ Versions.xml # The location where the DocBook/XML files and their generated formats are installed shelfdir = $(docdir) # Generate DocBook/XML output formats with or without stylesheets include $(top_srcdir)/docbook.am endif ENABLE_DOCS xorg-docs-1.7.3/general/License.xml0000644014310600000120000005643014600067622012634 %defs; ]>
Licenses The X.Org Foundation &reldate; Introduction The X.Org Foundation X Window System distribution is a compilation of code and documentation from many sources. This document is intended primarily as a guide to the licenses used in the distribution: you must check each file and/or package for precise redistribution terms. None-the-less, this summary may be useful to many users. This document is based on the compilation from XFree86. If you find any errors or significant omissions in this document, please contact us with details at xorg@lists.freedesktop.org. Most of these licenses are based on the MIT, X Consortium, or BSD (original and revised) licenses. All of them are consistent with the Open Source Definition, and most are consistent with the Free Software Foundation's Free Software Definition. While the current licenses are all open source licenses, the X.Org Foundation is attempting, over time, to bring as much as possible of the code's licenses in the distribution into compliance with the Debian Free Software Guidelines. X.Org Preferred License The X.Org Foundation has chosen the following format of the MIT License as the preferred format for code included in the X Window System distribution. This is a slight variant of the common MIT license form published by the Open Source Initiative at .
Copyright ©[year] [copyright holder] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
When listing multiple copyright holders with the license statement, please sort by surname for people, and by the full name for other entities (e.g. Juliusz Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
XFree86 License 1.0 XFree86 code without an explicit copyright is covered by the following copyright/license:
Copyright (C) 1994-2003 The XFree86 Project, 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 "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the XFree86 Project shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the XFree86 Project.
No software incorporating the XFree86 1.1 license has been incorporated.
Other Licenses Portions of code are covered by the following licenses/copyrights. See individual files for the copyright dates. X/MIT Copyrights X Consortium Copyright (C) <date> X Consortium Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium. X Window System is a trademark of X Consortium, Inc. The Open Group Copyright <date> The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. Berkeley-based copyrights General Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. UCB/LBL Copyright (c) 1993 The Regents of the University of California. All rights reserved. This software was developed by the Computer Systems Engineering group at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to Berkeley. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Lawrence Berkeley Laboratory. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The NetBSD Foundation, Inc. Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved. This code is derived from software contributed to The NetBSD Foundation by Ben Collver <collver1@attbi.com> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Theodore Ts'o Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, and the entire permission notice in its entirety, including the disclaimer of warranties. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Theo de Raadt and Damien Miller Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c) 2001-2002 Damien Miller. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Todd C. Miller Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Thomas Winischhofer Copyright (C) 2001-2004 Thomas Winischhofer Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SGI Free Software License B SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) Copyright (C) 1991-2000 Silicon Graphics, 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 "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice including the dates of first publication and either this permission notice or a reference to shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Bigelow & Holmes Inc and URW++ GmbH Luxi font license Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a registered trademark of Bigelow & Holmes Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of these Fonts and associated documentation files (the "Font Software"), to deal in the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, sublicense, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software. The Font Software may not be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may not be modified nor may additional glyphs or characters be added to the Fonts. This License becomes null and void when the Fonts or Font Software have been modified. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR URW++ GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Bigelow & Holmes Inc. and URW++ GmbH. shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Bigelow & Holmes Inc. and URW++ GmbH. For further information, contact: info@urwpp.de or design@bigelowandholmes.com
xorg-docs-1.7.3/misc/0000755014310600000120000000000014600067630010115 5xorg-docs-1.7.3/misc/xlogo.epsi0000644014310600000120000000350714600067622012055 %!PS-Adobe-3.0 EPSF-3.0 %%Title: X Logo %%Creator: Stephen Gildea %%BoundingBox: 0 0 44 44 %%EndComments %%BeginPreview: 44 44 1 44 % fff0000000f0 % 7ff8000001e0 % 3ff8000003c0 % 1ffc00000780 % 1ffe00000780 % 0fff00000f00 % 07ff00001e00 % 07ff80003c00 % 03ffc0007800 % 01ffc0007800 % 00ffe000f000 % 00fff001e000 % 007ff803c000 % 003ff8078000 % 001ffc078000 % 001ffe0f0000 % 000fff1e0000 % 0007ff3c0000 % 0003ff3c0000 % 0003fe780000 % 0001fcf00000 % 0000f9e00000 % 000079f00000 % 0000f3f80000 % 0001e7fc0000 % 0003cffc0000 % 0003cffe0000 % 00078fff0000 % 000f07ff8000 % 001e03ff8000 % 001e01ffc000 % 003c01ffe000 % 007800fff000 % 00f0007ff000 % 01e0003ff800 % 01e0003ffc00 % 03c0001ffe00 % 0780000ffe00 % 0f00000fff00 % 1e000007ff80 % 1e000003ff80 % 3c000001ffc0 % 78000001ffe0 % f0000000fff0 %%EndPreview % Draw the "official" X Window System Logo, designed by Danny Chong. % Code translated from Xmu/DrawLogo.c by gildea, July 1994. /size 44 def /thin size 11 idiv def /gap thin 3 add 4 idiv def /d31 thin gap thin add add def % Draw what will be the thin strokes. newpath size dup moveto size d31 sub size lineto 0 0 lineto d31 0 lineto closepath fill % Erase area not needed for lower thin stroke. 1 setgray newpath d31 2 idiv 0 moveto size 2 idiv dup lineto size 2 idiv d31 d31 2 idiv sub add size 2 idiv lineto d31 0 lineto closepath % Erase area not needed for upper thin stroke. size d31 2 idiv sub size moveto size 2 idiv dup lineto size 2 idiv d31 dup 2 idiv sub sub size 2 idiv lineto size d31 sub size lineto closepath fill % Draw thick stroke. 0 setgray newpath 0 size moveto size 4 idiv size lineto size 0 lineto size dup 4 idiv sub 0 lineto closepath fill % Erase to create gap. 1 setgray newpath size thin sub size moveto size thin gap add sub size lineto thin 0 lineto thin gap add 0 lineto closepath fill %%EOF xorg-docs-1.7.3/misc/xlogo.svg0000644014310600000120000000553714600067622011721 X Window System Logoimage/svg+xmlX Window System LogoDesigned by Danny Cheng Converted to EPS by Stephen Gildea Converted from EPS to SVG by Inkscapexorg-docs-1.7.3/INSTALL0000644014310600000120000003660014600067630010140 Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. xorg-docs-1.7.3/Makefile.am0000644014310600000120000000302614600067622011140 # Copyright 2005 Red Hat, Inc. # # Permission to use, copy, modify, distribute, and sell this software # and its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and # that both that copyright notice and this permission notice appear in # supporting documentation, and that the name of Red Hat not be used in # advertising or publicity pertaining to distribution of the software # without specific, written prior permission. Red Hat makes no # representations about the suitability of this software for any # purpose. It is provided "as is" without express or implied warranty. # # RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN # NO EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS # OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE # USE OR PERFORMANCE OF THIS SOFTWARE. # # Process this file with autoconf to create configure. SUBDIRS = general man specs dist_doc_DATA = MAINTAINERS MAINTAINERCLEANFILES = ChangeLog INSTALL EXTRA_DIST = \ README.md \ misc/xlogo.epsi \ misc/xlogo.svg \ registry \ specs/BDF/bdf.ms \ specs/BDF/fig1.ps \ specs/BDF/fig2.ps \ specs/specindex.html .PHONY: ChangeLog INSTALL INSTALL: $(INSTALL_CMD) ChangeLog: $(CHANGELOG_CMD) dist-hook: ChangeLog INSTALL xorg-docs-1.7.3/MAINTAINERS0000644014310600000120000007020314600067622010602 (Format of this file shamelessly stolen from the Linux kernel.) Maintainer guidelines: 1) Please test your changes and the changes you receive prior to checkin. The more varied the testing, the better. 2) It's nice to release alpha versions to the appropriate list for testing. 3) Make sure your changes compile! Rules: 1) The first person to complain about an unresponsive maintainer automatically assumes maintainership of the code in question. Unlike the kernel maintainers file, this goes more or less alphabetically by component within each subsystem, rather than alphabetically on maintainer name. M: Maintainer L: Mailing list that is relevant to this area W: Web-page with status/info S: Status, one of the following: Supported: Someone is actually paid to look after this. Maintained: Someone actually looks after it. Odd Fixes: It has a maintainer but they don't have time to do much other than throw the odd patch in. See below.. Unmaintained: No current maintainer [but maybe you could take the role as you write your new code]. Deactivated: Package is about to be obsoleted. A deactivated package will not receive general fixes unless a user requires this package to be reactivated first. Obsolete: Old code. Something tagged obsolete generally means it has been replaced by a better system and you should be using that. C: URI for *chat* protocol, server and channel where developers usually hang out, for example irc://server/channel. T: SCM tree location. F: Files and directories wildcard patterns. One pattern per line. Multiple F: lines acceptable. X: Excluded files and directories that are NOT maintained One pattern per line. Multiple F: lines acceptable. Please use gitlab to submit issue reports & merge requests for all projects that use gitlab. For patch submission instructions, see: https://www.x.org/wiki/Development/Documentation/SubmittingPatches Misc. core code --------------- DRM library M: Adam Jackson L: xorg-devel@lists.x.org C: irc://irc.oftc.net/dri-devel T: https://gitlab.freedesktop.org/mesa/drm S: Maintained PCI Access Library M: Ian Romanick L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libpciaccess S: Supported X.Org apps --------------- beforelight fdclock glxcompmgr grandr S: Obsolete lbxproxy S: Obsolete - use ssh X forwarding + compression instead luit S: Obsolete - use http://invisible-island.net/luit/ instead. makepsres S: Obsolete - DPS support has been dropped mkcfm S: Obsolete - CID font support has been dropped mkfontdir S: Merged into mkfontscale pclcomp S: Obsolete - only used by Xprint proxymngr S: Obsolete rstart S: Obsolete - use ssh instead scripts T: https://gitlab.freedesktop.org/xorg/app/scripts S: Deactivated twm M: Thomas E. Dickey L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/twm S: Maintained xauth M: Dr. Tilmann Bubeck L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xauth S: Maintained xbiff M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xbiff S: Maintained xcalc M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xcalc S: Maintained xclock M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xclock S: Maintained xconsole M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xconsole S: Maintained xdbedizzy S: Obsolete xdm M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xdm S: Unmaintained xedit M: Paulo César Pereira de Andrade L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xedit S: Maintained xf86dga T: https://gitlab.freedesktop.org/xorg/app/xf86dga S: Deactivated xfindproxy T: https://gitlab.freedesktop.org/xorg/app/xfindproxy S: Deactivated xinput M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xinput S: Maintained xisxwayland M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xisxwayland S: Maintained xkbcomp M: Daniel Stone L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xkbcomp S: Maintained S: Please contact Daniel if you're planning to work on this xload M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xload S: Maintained xman M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xman S: Maintained xmessage M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xmessage S: Maintained xmh S: Obsolete - use exmh instead xoo S: Obsolete xphelloworld, xplsprinters, xprehashprinterlist S: Obsolete - they require XPRINT which is obsolete xrx S: Obsolete - all major browsers have dropped NSAPI plugin support now xsetmode S: Obsolete - use xinput instead xsetpointer S: Obsolete - use xinput instead (for Xorg < 1.4, can't work after that) xsetroot M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app/xsetroot S: Maintained xtrap S: Obsolete - server side removed in xorg-server 1.6 & later all others M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/app S: Unmaintained X.Org libraries --------------- FS ICE SM XRes XScrnSaver Xau Xaw3d T: https://gitlab.freedesktop.org/xorg/lib S: Unmaintained AppleWM M: Jeremy Huddleston Sequoia L: xquartz-dev@lists.macosforge.org W: https://www.xquartz.org/ L: xorg-devel@lists.x.org W: https://wiki.x.org T: https://gitlab.freedesktop.org/xorg/lib/libapplewm S: Maintained WindowsWM S: Obsolete X11, Xcomposite, Xcursor, Xdamage, Xfixes, Xpresent, Xrandr, Xrender, xshmfence M: Keith Packard L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib S: Maintained Xaw M: Thomas E. Dickey L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxaw S: Maintained XCB (libxcb, xcbproto) M: ? L: xcb@lists.freedesktop.org W: https://xcb.freedesktop.org/ T: https://gitlab.freedesktop.org/xorg/lib/libxcb T: https://gitlab.freedesktop.org/xorg/proto/xcbproto S: Maintained XCB Utils (libxcb-*) M: ? L: xcb@lists.freedesktop.org W: https://xcb.freedesktop.org/ T: https://gitlab.freedesktop.org/xorg/lib/ S: Unmaintained xcvt M: Olivier Fourdan L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxcvt S: Maintained Xdmcp T: https://gitlab.freedesktop.org/xorg/lib/libxdmcp S: Unmaintained Xevie S: Obsolete Xext Xfont T: https://gitlab.freedesktop.org/xorg/lib S: Unmaintained Xfontcache S: Obsolete Xft M: Thomas E. Dickey L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxft S: Maintained Xinerama T: https://gitlab.freedesktop.org/xorg/lib S: Unmaintained Xi M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxi S: Maintained xkbfile M: Daniel Stone L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxkbfile S: Maintained S: Please contact Daniel if you're planning to work on this xkbui S: Obsolete Xmu Xpm T: https://gitlab.freedesktop.org/xorg/lib S: Unmaintained Xp S: Obsolete S: maintained solely for binary compatibility for software like Motif XprintAppUtil, XprintUtil S: Obsolete Xt M: Thomas E. Dickey L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxt S: Maintained Xtst Xv XvMC Xxf86dga T: https://gitlab.freedesktop.org/xorg/lib S: Unmaintained Xxf86misc Xxf86rush S: Obsolete Xxf86vm T: https://gitlab.freedesktop.org/xorg/lib/libxxf86vm S: Unmaintained dmx S: Obsolete - Xdmx removed from xorg-server 21 & later releases fontenc T: https://gitlab.freedesktop.org/xorg/lib/libfontenc S: Unmaintained lbxutil S: Obsolete - LBX removed from xorg-server 1.2 & later releases pthread-stubs T: https://gitlab.freedesktop.org/xorg/lib/pthread-stubs S: Unmaintained oldX S: Obsolete - use libX11 instead XTrap S: Obsolete - use libXtst instead xpyb S: Obsolete - use https://github.com/tych0/xcffib instead xtrans M: Bill Crawford L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/lib/libxtrans S: Maintained Xserver core ------------ All subsystems C: irc://irc.oftc.net/xorg-devel W: https://wiki.x.org T: https://gitlab.freedesktop.org/xorg/xserver Composite extension M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: composite Configuration subsystem M: Adam Jackson L: xorg-devel@lists.x.org S: Maintained Damage extension M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: damageext Device Independent X (DIX) M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: dix DRI subsystem M: Adam Jackson L: xorg-devel@lists.x.org S: Maintained F: hw/xfree86/dri* F: dri3 EXA subsystem M: ? L: xorg-devel@lists.x.org S: Maintained F: exa Glamor subsystem M: ? L: xorg-devel@lists.x.org S: Maintained F: glamor GL subsystem M: Ian Romanick L: xorg-devel@lists.x.org S: Maintained F: GL KDrive M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: hw/kdrive Loader subsystem M: Adam Jackson L: xorg-devel@lists.x.org S: Maintained F: hw/xfree86/loader Randr extension M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: randr Render extension M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: render XAA subsystem M: Adam Jackson L: xorg-devel@lists.x.org S: Removed in xorg-server 1.13 and later XACE subsystem (security policy extensions framework) M: Eamon Walsh L: xorg-devel@lists.x.org W: http://people.freedesktop.org/~ewalsh/xace_proposal.html S: Maintained Xfixes extension M: Keith Packard L: xorg-devel@lists.x.org S: Maintained F: xfixes XKB M: Daniel Stone L: xorg-devel@lists.x.org S: Maintained S: Please contact Daniel if you're planning to work on this F: xkb Input subsystem M: Daniel Stone M: Peter Hutterer L: xorg-devel@lists.x.org S: Maintained F: Xi Xorg server M: ? L: xorg-devel@lists.x.org S: Maintained, for now F: hw/xfree86 Xwayland server M: Olivier Fourdan L: wayland-devel@lists.freedesktop.org W: https://wayland.freedesktop.org/xserver.html S: Maintained F: hw/xwayland Xvfb server M: ? L: xorg-devel@lists.x.org S: Unmaintained F: hw/vfb Xnest server M: Enrico Weigelt L: xorg-devel@lists.x.org S: Maintained F: hw/xnest Xdmx server & DMX subsystem/tools S: Removed from xorg-server 21 & later releases F: hw/dmx Xprint M: Drew Parsons M: Felix Schulte L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/xserver-xprint S: Obsolete - use other printing APIs instead X.Org OS ports -------------- FreeBSD M: ? L: xorg-devel@lists.x.org S: Unmaintained Linux/i386 M: Egbert Eich L: xorg-devel@lists.x.org S: Maintained Linux/x86_64 M: Egbert Eich L: xorg-devel@lists.x.org S: Maintained Linux/ia64 M: Jesse Barnes L: xorg-devel@lists.x.org S: Maintained Linux/ppc M: Benjamin Herrenschmidt L: xorg-devel@lists.x.org S: Maintained Linux/sparc M: ? L: xorg-devel@lists.x.org S: Unmaintained LynxOS S: Obsolete / Removed Mac OS X (Xquartz) M: Jeremy Huddleston Sequoia L: xquartz-dev@lists.macosforge.org W: https://www.xquartz.org/ L: xorg-devel@lists.x.org S: Maintained NetBSD M: ? L: xorg-devel@lists.x.org S: Unmaintained OpenBSD M: Matthieu Herrb L: xorg-devel@lists.x.org S: Maintained SCO (OpenServer 5) M: Kean Johnston L: xorg-devel@lists.x.org S: Unmaintained System V (other than Solaris & SCO) M: ? L: xorg-devel@lists.x.org S: Unmaintained (libraries/apps) ; Obsolete/Removed (Xorg server) Solaris (x86 & sparc) & illumos M: Alan Coopersmith M: Niveditha Rau L: xorg-devel@lists.x.org W: https://github.com/oracle/solaris-userland/tree/master/components/x11 S: Maintained USL (UnixWare 7.1.x, OpenServer 6) M: Kean Johnston L: xorg-devel@lists.x.org S: Unmaintained Cygwin M: Jon TURNEY M: Yaakov Selkowitz L: cygwin-xfree@cygwin.com W: https://x.cygwin.com/ S: Maintained MinGW M: Colin Harrison W: http://www.straightrunning.com/XmingNotes/ S: Maintained GNU/Hurd M: Samuel Thibault L: bug-hurd@gnu.org S: Maintained Drivers ------- xf86-input-acecad M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-acecad S: Obsolete xf86-input-aiptek M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-aiptek S: Obsolete xf86-input-calcomp M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-calcomp S: Obsolete xf86-input-citron M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-citron S: Obsolete xf86-input-digitaledge M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-digitaledge S: Obsolete xf86-input-dmc M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-dmc S: Obsolete xf86-input-dynapro M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-dynapro S: Obsolete xf86-input-elo2300 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-elo2300 S: Obsolete xf86-input-elographics M: Marc Balmer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-elographics S: Maintained xf86-input-evdev M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-evdev S: Maintained xf86-input-fpit M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-fpit S: Obsolete xf86-input-hyperpen M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-hyperpen S: Obsolete xf86-input-jamstudio M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-jamstudio S: Obsolete xf86-input-joystick M: Sascha Hlusiak L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-joystick S: Maintained xf86-input-keyboard M: Alan Coopersmith L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-keyboard S: Maintained for non-Linux systems, support removed for Linux systems xf86-input-libinput M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput S: Maintained xf86-input-magellan M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-magellan S: Obsolete xf86-input-magictouch M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-magictouch S: Obsolete xf86-input-microtouch M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-microtouch S: Obsolete xf86-input-mouse M: Alan Coopersmith L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-mouse S: Maintained for non-Linux systems, unmaintained for Linux systems xf86-input-mutouch M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-mutouch S: Obsolete xf86-input-palmax M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-palmax S: Obsolete xf86-input-penmount M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-penmount S: Obsolete xf86-input-sample M: ? L: xorg-devel@lists.x.org W https://gitlab.freedesktop.org/xorg/driver/xf86-input-sample S: Obsolete xf86-input-spaceorb M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-spaceorb S: Obsolete xf86-input-summa M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-summa S: Obsolete xf86-input-synaptics M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-synaptics S: Maintained xf86-input-tek4957 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-tek4957 S: Obsolete xf86-input-ur98 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-ur98 S: Obsolete xf86-input-vmmouse M: VMware Linux Graphics Maintainer L: xorg-devel@lists.x.org W: https://wiki.x.org/wiki/vmware S: Supported xf86-input-void M: Peter Hutterer L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-input-void S: Maintained xf86-video-amdgpu M: Shashank Sharma L: amd-gfx@lists.freedesktop.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu S: Maintained xf86-video-apm M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-apm S: Deactivated xf86-video-ark M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ark S: Deactivated xf86-video-armsoc M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-armsoc S: Deactivated xf86-video-ast M: Y.C. Chen L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ast S: Maintained xf86-video-ati M: Alex Deucher M: Ben Herrenschmidt L: xorg-driver-ati@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati S: Maintained xf86-video-avivo M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-avivo S: Obsolete xf86-video-chips M: Egbert Eich L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-chips S: Maintained xf86-video-cirrus M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-cirrus S: Unmaintained xf86-video-cyrix M: ? L: xorg-driver-geode@lists.x.org W: https://www.x.org/wiki/GeodeDriver S: Obsolete - mostly replaced by xf86-video-geode xf86-video-dummy M: Adam Jackson L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy S: Maintained xf86-video-fbdev M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev S: Unmaintained xf86-video-freedreno M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-freedreno S: Unmaintained xf86-video-geode M: ? L: xorg-driver-geode@lists.x.org W: https://lists.x.org/mailman/listinfo/xorg-driver-geode W: https://www.x.org/wiki/GeodeDriver S: Maintained xf86-video-glide M: Guillem Jover L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-glide S: Obsolete xf86-video-glint M: Alan Hourihane L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-glint S: Deactivated (does not build for xorg-server 21 or later) xf86-video-i128 M: Adam Jackson L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-i128 S: Maintained xf86-video-i740 M: Egbert Eich L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-i740 S: Unmaintained xf86-video-impact M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-impact S: Deactivated (does not build for xorg-server 1.13 and later) xf86-video-imstt M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-imstt S: Obsolete xf86-video-intel M: ? L: intel-gfx@lists.freedesktop.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel S: Supported xf86-video-mach64 M: Luc Verhaegen L: xorg-driver-ati@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-mach64 S: Maintained xf86-video-mga M: Ian Romanick L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-mga S: Maintained xf86-video-modesetting M: Dave Airlie L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/xserver S: Maintained, but as part of xorg-server now xf86-video-neomagic M: Egbert Eich L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-neomagic S: Maintained xf86-video-nested M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nested S: Maintained xf86-video-newport M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-newport S: Deactivated (does not build for xorg-server 1.13 and later) xf86-video-nsc M: Alan Hourihane L: xorg-driver-geode@lists.x.org W: https://www.x.org/wiki/GeodeDriver S: Obsolete - mostly replaced by xf86-video-geode xf86-video-nouveau M: Ilia Mirkin L: nouveau@lists.freedesktop.org C: irc://irc.oftc.net/nouveau W: https://nouveau.freedesktop.org/ T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau S: Maintained xf86-video-nv M: Aaron Plattner L: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nv S: Unmaintained - see https://lists.freedesktop.org/archives/xorg/2010-March/049560.html xf86-video-omap M: Rob Clark L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-omap S: Maintained xf86-video-opentegra M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-opentegra S: Deactivated xf86-video-qxl M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-qxl S: Maintained xf86-video-rendition M: Adam Jackson L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-rendition S: Odd fixes. xf86-video-r128 M: Alex Deucher M: Ben Herrenschmidt L: xorg-driver-ati@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-r128 S: Maintained radeon driver (xf86-video-ati) M: Alex Deucher M: Ben Herrenschmidt L: xorg-driver-ati@lists.x.org W: https://www.x.org/wiki/radeon S: Maintained xf86-video-s3 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-s3 S: Deactivated (does not build for xorg-server 21 or later) xf86-video-s3virge M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-s3virge S: Unmaintained xf86-video-savage M: Alex Deucher L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-savage S: Maintained xf86-video-siliconmotion M: Alex Deucher L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-siliconmotion S: Unmaintained xf86-video-sis M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sis S: Unmaintained xf86-video-sisusb M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sisusb S: Unmaintained xf86-video-sunbw2 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sunbw2 S: Obsolete xf86-video-suncg14 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg14 S: Unmaintained xf86-video-suncg3 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg3 S: Unmaintained xf86-video-suncg6 M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suncg6 S: Unmaintained xf86-video-sunffb M: David S. Miller L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sunffb S: Odd fixes xf86-video-sunleo M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-sunleo S: Unmaintained xf86-video-suntcx M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-suntcx S: Unmaintained xf86-video-tdfx M: Adam Jackson L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-tdfx S: Maintained xf86-video-tga M: Alan Hourihane L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-tga S: Deactivated (does not build for xorg-server 21 or later) xf86-video-trident M: Alan Hourihane L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-trident S: Maintained xf86-video-tseng M: Luc Verhaegen L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-tseng S: Deactivated xf86-video-v4l M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-v4l S: Unmaintained xf86-video-vbox M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vbox S: Unmaintained xf86-video-vermilion M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vermilion S: Obsolete xf86-video-vesa M: Adam Jackson L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-vesa S: Maintained xf86-video-vga S: Obsolete - use xf86-video-vesa instead xf86-video-via S: Obsolete - use xf86-video-openchrome instead xf86-video-vmware M: VMware Linux Graphics Maintainer L: xorg-devel@lists.x.org W: https://wiki.x.org/vmware S: Maintained xf86-video-voodoo M: Alan Cox L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo S: Odd fixes xf86-video-wsfb M: Matthieu Herrb L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb S: Maintained xf86-video-xgi M: Ian Romanick L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-xgi S: Maintained xf86-video-xgixp M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/driver/xf86-video-xgixp S: Deactivated Other modules ------------- fonts/bitstream-speedo S: Obsolete - Speedo format support removed in libXfont 1.4.0 & later data/bitmaps, data/cursors, doc/*, fonts/*, test/*, util/* M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/ S: Unmaintained proto/xorgproto M: ? L: xorg-devel@lists.x.org T: https://gitlab.freedesktop.org/xorg/proto/xorgproto S: Maintained proto/*proto (everything but xorgproto & xcbproto) T: https://gitlab.freedesktop.org/groups/xorg/proto/-/archived S: Obsolete - rolled into xorgproto xkbdata S: Obsolete - use xkeyboard-config instead Developer relations & services ------------------------------ Foundation (funding, conference organizing, management, etc.) M: https://www.x.org/wiki/BoardOfDirectors/ C: irc://irc.oftc.net/xf-bod W: https://www.x.org/wiki/XorgFoundation/ T: https://gitlab.freedesktop.org/xorgfoundation S: Maintained Gitlab (gitlab.freedesktop.org) M: sitewranglers@lists.freedesktop.org C: irc://irc.oftc.net/freedesktop W: https://gitlab.freedesktop.org/freedesktop/freedesktop/-/wikis/home S: Maintained Mailing lists (lists.x.org) M: mailman@lists.x.org L: mailman@lists.x.org C: irc://irc.oftc.net/freedesktop W: https://lists.x.org/mailman/listinfo/ S: Maintained Website (www.x.org / wiki.x.org) M: sitewranglers@lists.freedesktop.org L: xorg-devel@lists.x.org C: irc://irc.oftc.net/freedesktop W: https://www.x.org/ S: Maintained Supply of pastries, other food, beverages M: Luc Verhaegen L: xorg-devel@lists.x.org W: https://wiki.x.org S: Disrepair S: 'Other food' may induce illness. Beware.