--- a/.stamp_configured	2008-03-04 06:14:55.425005441 -0500
+++ b/.stamp_configured	2008-03-05 08:42:53.000000000 -0500
@@ -0,0 +1 @@
+dummy
\ No newline at end of file
--- a/Makefile	2008-03-04 06:14:55.425005441 -0500
+++ b/Makefile	2008-03-05 08:40:50.000000000 -0500
@@ -0,0 +1,2397 @@
+# Makefile generated by imake - do not edit!
+# $Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $
+
+# ----------------------------------------------------------------------
+# Makefile generated from "Imake.tmpl" and <Imakefile>
+# $Xorg: Imake.tmpl,v 1.4 2000/08/17 19:41:46 cpqbld Exp $
+# $XdotOrg: util/cf/Imake.tmpl,v 1.17 2006/04/15 15:55:25 herrb Exp $
+#
+#
+#
+#
+# $XFree86: xc/config/cf/Imake.tmpl,v 3.155 2003/12/24 18:58:41 dickey Exp $
+# ----------------------------------------------------------------------
+
+all::
+
+.SUFFIXES: .i
+
+# $XdotOrg: util/cf/Imake.cf,v 1.12 2005/11/08 06:33:24 jkj Exp $
+# $Xorg: Imake.cf,v 1.4 2000/08/17 19:41:45 cpqbld Exp $
+
+# $XFree86: xc/config/cf/Imake.cf,v 3.88 2003/12/16 21:30:21 herrb Exp $
+
+# Keep cpp from replacing path elements containing i486/i586/i686
+
+# -----------------------------------------------------------------------
+# site-specific configuration parameters that need to come before
+# the platform-specific parameters - edit site.def to change
+
+# site:  $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $
+
+# site:  $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $
+
+# $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
+
+# ----------------------------------------------------------------------
+# platform-specific configuration parameters - edit linux.cf to change
+
+# $XdotOrg: util/cf/linux.cf,v 1.31 2005/10/21 19:10:27 ajax Exp $
+# platform:  $Xorg: linux.cf,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+
+# platform:  $XFree86: xc/config/cf/linux.cf,v 3.220 2003/12/30 22:38:33 tsi Exp $
+
+# operating system:  Linux 2.6.23.8-63.fc8 i686 [ELF] (2.6.23)
+# libc:	(6.7.0)
+# binutils:	(217)
+
+# $Xorg: lnxLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+# $XFree86: xc/config/cf/lnxLib.rules,v 3.52 2003/10/31 20:49:03 herrb Exp $
+
+# $XdotOrg: util/cf/xorg.cf,v 1.53 2005/10/03 16:08:44 alanc Exp $
+
+# $Xorg: xfree86.cf,v 1.4 2000/08/17 19:41:49 cpqbld Exp $
+
+XORG_VERSION_CURRENT = (((6) * 10000000) + ((8) * 100000) + ((99) * 1000) + 903)
+RELEASE_VERSION = RELEASE-1
+
+AFB_DEFS = -DUSE_AFB
+
+DRIVERSDKDIR = $(USRLIBDIR)/Server
+DRIVERSDKMODULEDIR = $(USRLIBDIR)/Server/modules
+DRIVERSDKINCLUDEDIR = $(USRLIBDIR)/Server/include
+
+       XF86SRC = $(SERVERSRC)/hw/xfree86
+    XF86COMSRC = $(XF86SRC)/common
+ XF86PARSERSRC = $(XF86SRC)/parser
+     XF86OSSRC = $(XF86SRC)/os-support
+ XF86DRIVERSRC = $(XF86SRC)/drivers
+     DRIVERSRC = $(XF86DRIVERSRC)
+
+        XFREE86DOCDIR = $(DOCDIR)
+      XFREE86PSDOCDIR = $(DOCPSDIR)
+     XFREE86PDFDOCDIR = $(DOCPDFDIR)
+    XFREE86HTMLDOCDIR = $(DOCHTMLDIR)
+XFREE86JAPANESEDOCDIR = $(DOCDIR)/Japanese
+
+# $Xorg: xf86.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $
+
+# $XFree86: xc/config/cf/xf86.rules,v 3.34tsi Exp $
+
+# ----------------------------------------------------------------------
+# site-specific configuration parameters that go after
+# the platform-specific parameters - edit site.def to change
+
+# site:  $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $
+
+# site:  $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $
+
+# ---------------------------------------------------------------------
+# Imake rules for building libraries, programs, scripts, and data files
+# rules:  $Xorg: Imake.rules,v 1.3 2000/08/17 19:41:46 cpqbld Exp $
+# rules:  $XdotOrg: util/cf/Imake.rules,v 1.11 2005/11/08 06:33:24 jkj Exp $
+#
+#
+#
+#
+# rules:  $XFree86: xc/config/cf/Imake.rules,v 3.128 2003/11/15 03:25:17 dawes Exp $
+
+.PHONY: all interfaces install install.man install.lib install.sdk 	depend includes cleandir
+
+ _NULLCMD_ = @ echo -n
+
+X_BYTE_ORDER = X_LITTLE_ENDIAN
+
+GLIDE2INCDIR =
+
+GLIDE3INCDIR =
+
+GLIDE3LIBNAME =
+
+TKLIBNAME =
+
+TKLIBDIR =
+
+TCLLIBNAME =
+
+TCLIBDIR =
+
+          PATHSEP = /
+            SHELL = /bin/sh -e
+
+              TOP = .
+      CURRENT_DIR = .
+
+            IMAKE = imake
+           DEPEND = gccmakedep
+        MKDIRHIER = mkdir -p
+          REVPATH = revpath
+    EXPORTLISTGEN =
+             RMAN = RmanCmd
+     RMANBASENAME = rman
+      RMANOPTIONS = RmanOptions
+        CONFIGSRC = $(TOP)/config
+         IMAKESRC = $(CONFIGSRC)/imake
+        DEPENDSRC = $(CONFIGSRC)/util
+
+          INCROOT = /usr/include
+        USRLIBDIR = /usr/lib
+           VARDIR = /var
+        VARLIBDIR = $(VARDIR)/lib
+  SYSTEMUSRLIBDIR = /usr/lib
+  SYSTEMUSRINCDIR = /usr/include
+         SHLIBDIR = /usr/lib
+       LINTLIBDIR = $(USRLIBDIR)/lint
+          MANPATH = /usr/share/man
+    MANSOURCEPATH = $(MANPATH)/man
+           MANDIR = $(MANSOURCEPATH)1
+        LIBMANDIR = $(MANSOURCEPATH)3
+       FILEMANDIR = $(MANSOURCEPATH)5
+       MISCMANDIR = $(MANSOURCEPATH)$(MISCMANSUFFIX)
+     DRIVERMANDIR = $(MANSOURCEPATH)$(DRIVERMANSUFFIX)
+     LOGDIRECTORY = $(VARDIR)/log
+
+        VARRUNDIR = $(VARDIR)/run
+
+         VARDBDIR = $(VARDIR)/lib
+
+               AR = ar clq
+
+# Nice try but useless: make will inherit BOOTSTRAPCFLAGS
+# from  top Makefile
+  BOOTSTRAPCFLAGS =
+
+               CC = gcc -m32
+               AS = gcc -m32 -c -x assembler
+
+.SUFFIXES: .cc
+
+              CXX = c++ -m32
+
+          CXXFILT = c++filt
+
+           CXXLIB = -lstdc++
+
+    CXXDEBUGFLAGS = -O2 -fno-strength-reduce -fno-strict-aliasing
+CXXDEPENDINCLUDES =
+ CXXEXTRA_DEFINES =
+CXXEXTRA_INCLUDES =
+   CXXSTD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L 				-D_POSIX_SOURCE -D_XOPEN_SOURCE 				-D_BSD_SOURCE -D_SVID_SOURCE                                 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 				  				 $(CXXPROJECT_DEFINES)
+       CXXOPTIONS =
+      CXXINCLUDES = $(INCLUDES) $(TOP_INCLUDES) $(CXXEXTRA_INCLUDES)
+       CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(DEFINES) $(CXXEXTRA_DEFINES)
+         CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES)
+
+         COMPRESS = compress
+          GZIPCMD = gzip
+
+              CPP = cpp $(STD_CPP_DEFINES)
+           RAWCPP = cpp -undef $(STD_CPP_OPTIONS)
+    PREPROCESSCMD = gcc -m32 -E $(STD_CPP_DEFINES)
+
+          INSTALL = install
+     INSTALLFLAGS = -c
+
+               LD = gcc -m32 -nostdlib
+
+              LEX = flex -l
+               M4 = m4
+          M4FLAGS =
+           LEXLIB = -lfl
+             YACC = bison -y
+           CCYACC = bison -y
+
+             LINT = lint
+
+      LINTLIBFLAG = -C
+         LINTOPTS = -axz
+               LN = ln -s
+             MAKE = make
+               MV = mv -f
+               CP = cp
+
+           RANLIB = ranlib
+
+  RANLIBINSTFLAGS =
+
+               RM = rm -f
+             PERL = perl
+         PERLOPTS =
+     PERLENVSETUP = env LC_ALL=C
+        MANSUFFIX = 1x
+     LIBMANSUFFIX = 3x
+    FILEMANSUFFIX = 5x
+    MISCMANSUFFIX = 7
+  DRIVERMANSUFFIX = 4
+   ADMINMANSUFFIX = 8
+     MANSRCSUFFIX = man
+     MANNEWSUFFIX = _man
+          MANDEFS = -D__apploaddir__=$(XAPPLOADDIR) -D__appmansuffix__=$(MANSUFFIX) -D__filemansuffix__=$(FILEMANSUFFIX) -D__libmansuffix__=$(LIBMANSUFFIX) -D__miscmansuffix__=$(MISCMANSUFFIX) -D__drivermansuffix__=$(DRIVERMANSUFFIX) -D__adminmansuffix__=$(ADMINMANSUFFIX) -D__projectroot__=$(PROJECTROOT) -D__xconfigfile__=$(XCONFIGFILE) -D__xconfigdir__=$(XCONFIGDIR) -D__xlogfile__=$(XLOGFILE) -D__xservername__=$(XSERVERNAME) $(XORGMANDEFS) $(VENDORMANDEFS)
+
+   COMPRESSMANCMD = gzip -n
+
+            TROFF = groff -Tps
+            NROFF = nroff
+
+         MSMACROS = -ms
+        MANMACROS = -man
+              TBL = tbl
+              EQN = eqn
+             NEQN = neqn
+              COL = col
+         COLFLAGS = -b
+
+            MODCC = gcc -m32
+
+           MODCPP = cpp
+        MODCFLAGS = $(CFLAGS)
+            MODAS = gcc -m32 -c -x assembler
+       MODASFLAGS =
+
+            MODLD = gcc -m32 -nostdlib
+
+       MODLDFLAGS =
+MODLDCOMBINEFLAGS = -r
+            MODAR = ar clq
+
+        MODRANLIB = ranlib
+
+     STD_INCLUDES =
+  STD_CPP_OPTIONS = -traditional
+  STD_CPP_DEFINES = -traditional -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L 				-D_POSIX_SOURCE -D_XOPEN_SOURCE 				-D_BSD_SOURCE -D_SVID_SOURCE                                 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 				  				 $(PROJECT_DEFINES)
+      STD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L 				-D_POSIX_SOURCE -D_XOPEN_SOURCE 				-D_BSD_SOURCE -D_SVID_SOURCE                                 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 				  				 $(PROJECT_DEFINES)
+ EXTRA_LOAD_FLAGS =
+  EXTRA_LDOPTIONS =
+  EXTRA_LIBRARIES =
+             TAGS = ctags
+
+   PARALLELMFLAGS =
+
+    SHAREDCODEDEF =
+         SHLIBDEF =
+
+     SHLIBLDFLAGS = -shared $(SHLIBGLOBALSFLAGS)
+
+         NOSTDLIB = -nostdlib
+     POSTNOSTDLIB = -Wl,-Bstatic -lgcc -Wl,-Bdynamic
+
+         PICFLAGS = -fPIC
+
+      CXXPICFLAGS = -fPIC
+
+    PROTO_DEFINES = -DFUNCPROTO=15 -DNARROWPROTO
+
+     INSTPGMFLAGS =
+
+     INSTBINFLAGS = -m 0755
+     INSTUIDFLAGS = -m 4711
+     INSTLIBFLAGS = -m 0644
+     INSTINCFLAGS = -m 0444
+     INSTMANFLAGS = -m 0444
+     INSTDATFLAGS = -m 0444
+    INSTKMEMFLAGS = -m 4711
+
+      PROJECTROOT = /usr
+
+      CDEBUGFLAGS = -O2 -fno-strength-reduce -fno-strict-aliasing
+        CCOPTIONS =
+
+      ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(INSTALLED_INCLUDES) $(STD_INCLUDES)
+       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(MODULE_DEFINES) $(DEFINES) $(EXTRA_DEFINES)
+           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(MODULE_CFLAGS) $(ALLDEFINES)
+        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES)
+         LDPRELIB = -L$(USRLIBDIR) $(INSTALLED_LIBS)
+        LDPOSTLIB =
+        LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)  $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+     CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+
+           LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
+
+           CCLINK = $(CC)
+
+          CXXLINK = $(CXX)
+
+     LDSTRIPFLAGS = -x
+   LDCOMBINEFLAGS = -r
+      DEPENDFLAGS =
+   DEPEND_DEFINES =
+
+# Not sure this belongs here
+         TKLIBDIR =
+         TKINCDIR =
+        TKLIBNAME =
+        TKLIBRARY = -L$(TKLIBDIR) -l$(TKLIBNAME)
+        TCLLIBDIR =
+        TCLINCDIR =
+       TCLLIBNAME =
+       TCLLIBRARY = -L$(TCLLIBDIR) -l$(TCLLIBNAME)
+
+        MACROFILE = linux.cf
+           RM_CMD = $(RM)
+
+    IMAKE_DEFINES =
+   IMAKE_WARNINGS = -Wundef
+
+         IRULESRC = $(CONFIGDIR)
+        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) 		    $(IMAKE_WARNINGS)
+
+     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/X11.tmpl 			$(IRULESRC)/site.def $(IRULESRC)/$(MACROFILE) 			$(IRULESRC)/xfree86.cf $(IRULESRC)/xf86.rules $(IRULESRC)/xorgsite.def $(IRULESRC)/host.def $(EXTRA_ICONFIGFILES)
+
+# $Xorg: X11.rules,v 1.4 2000/08/17 19:41:46 cpqbld Exp $
+
+# $XFree86: xc/config/cf/X11.rules,v 1.6 2001/01/17 16:22:31 dawes Exp $
+
+# ----------------------------------------------------------------------
+# X Window System Build Parameters and Rules
+# $XdotOrg: util/cf/X11.tmpl,v 1.54 2006/04/15 15:55:25 herrb Exp $
+# $Xorg: X11.tmpl,v 1.6 2000/08/17 19:41:46 cpqbld Exp $
+#
+#
+#
+#
+# $XFree86: xc/config/cf/X11.tmpl,v 1.248 2004/02/16 04:07:37 dawes Exp $
+
+XORGRELSTRING = `echo 6 8 99 903 | sed -e 's/ /./g' -e 's/^/Version\\\ /'`
+  XORGMANNAME = X Version 11
+
+STICKY_DEFINES = -DHAS_STICKY_DIR_BIT
+
+FCHOWN_DEFINES = -DHAS_FCHOWN
+
+# -----------------------------------------------------------------------
+# X Window System make variables; these need to be coordinated with rules
+
+             XTOP = $(TOP)
+           BINDIR = /usr/bin
+     BUILDINCROOT = $(TOP)/exports
+      BUILDINCDIR = $(BUILDINCROOT)/include
+      BUILDINCTOP = ../..
+      BUILDLIBDIR = $(TOP)/exports/lib
+      BUILDLIBTOP = ../..
+      BUILDBINDIR = $(TOP)/exports/bin
+      BUILDBINTOP = ../..
+   BUILDMODULEDIR = $(BUILDLIBDIR)/modules
+     BUILDI18NDIR = $(BUILDLIBDIR)/locale
+   BUILDMODULETOP = $(BUILDLIBTOP)/..
+    XBUILDINCROOT = $(XTOP)/exports
+     XBUILDINCDIR = $(XBUILDINCROOT)/include/X11
+     XBUILDINCTOP = ../../..
+     XBUILDBINDIR = $(XBUILDINCROOT)/bin
+           INCDIR = $(INCROOT)
+           ADMDIR = /usr/adm
+           LIBDIR = /usr/lib/X11
+         SHAREDIR = /usr/share/X11
+       LIBEXECDIR = /usr/libexec
+        MODULEDIR = $(USRLIBDIR)/modules
+   TOP_X_INCLUDES =
+          XBINDIR = $(PROJECTROOT)/bin
+
+       INSTSRCDIR = /usr/src
+
+        ETCX11DIR = /etc/X11
+
+          CONFDIR = $(ETCX11DIR)
+
+           DOCDIR = $(LIBDIR)/doc
+       DOCHTMLDIR = $(DOCDIR)/html
+         DOCPSDIR = $(DOCDIR)/PostScript
+        DOCPDFDIR = $(DOCDIR)/PDF
+          FONTDIR = $(LIBDIR)/fonts
+     ENCODINGSDIR = $(LIBDIR)/fonts/encodings
+         XINITDIR = $(LIBDIR)/xinit
+           XDMDIR = $(LIBDIR)/xdm
+        XDMVARDIR = $(VARLIBDIR)/xdm
+           TWMDIR = $(LIBDIR)/twm
+           XSMDIR = $(LIBDIR)/xsm
+           NLSDIR = $(LIBDIR)/nls
+       XLOCALEDIR = $(LIBDIR)/locale
+      LBXPROXYDIR = $(LIBDIR)/lbxproxy
+  PROXYMANAGERDIR = $(LIBDIR)/proxymngr
+        XPRINTDIR = $(LIBDIR)/xserver
+      XAPPLOADDIR = /usr/share/X11/app-defaults
+       FONTCFLAGS = -t
+
+     INSTAPPFLAGS = $(INSTDATFLAGS)
+
+              RGB = $(XBINDIR)/rgb
+            FONTC = $(XBINDIR)/bdftopcf
+      MKFONTSCALE = $(XBINDIR)/mkfontscale
+        MKFONTDIR = $(XBINDIR)/mkfontdir
+      MKHTMLINDEX = $(XBINDIR)/mkhtmlindex
+          UCS2ANY = $(XBINDIR)/ucs2any
+      BDFTRUNCATE = $(XBINDIR)/bdftruncate
+     UCSMAPPREFIX = $(FONTDIR)/util/map-
+       XCURSORGEN = $(XBINDIR)/xcursorgen
+
+     HTMLINDEXCMD = HtmlIndexCmd
+
+       DOCUTILSRC = $(XTOP)/doc/util
+        CLIENTSRC = $(TOP)/clients
+          DEMOSRC = $(TOP)/demos
+       XDOCMACROS = $(DOCUTILSRC)/macros.t
+       XIDXMACROS = $(DOCUTILSRC)/indexmacros.t
+       PROGRAMSRC = $(TOP)/programs
+           LIBSRC = $(XTOP)/lib
+          FONTSRC = $(XTOP)/fonts
+     ENCODINGSSRC = $(FONTSRC)/encodings
+       INCLUDESRC = $(BUILDINCROOT)/include
+      XINCLUDESRC = $(INCLUDESRC)/X11
+        SERVERSRC = $(XTOP)/programs/Xserver
+       CONTRIBSRC = $(XTOP)/../contrib
+   UNSUPPORTEDSRC = $(XTOP)/unsupported
+           DOCSRC = $(XTOP)/doc
+           RGBSRC = $(XTOP)/programs/rgb
+      BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf
+     MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir
+    FONTSERVERSRC = $(PROGRAMSRC)/xfs
+       FONTINCSRC = $(XTOP)/include/fonts
+        EXTINCSRC = $(XTOP)/include/extensions
+      FTSOURCEDIR = FreeTypeSrcDir
+        DRMSRCDIR = $(TOP)/extras/drm
+       MESASRCDIR = $(TOP)/extras/Mesa
+  OGLSAMPLESRCDIR = $(TOP)/extras/ogl-sample
+        PSWRAPSRC = $(XTOP)/config/pswrap
+     TRANSCOMMSRC = $(LIBSRC)/xtrans
+   TRANS_INCLUDES = -I$(TRANSCOMMSRC)
+ CONNECTION_FLAGS = -DUNIXCONN -DTCPCONN $(STICKY_DEFINES) $(FCHOWN_DEFINES) -DIPv6
+XTRANS_FAILDEFINES = -DFAIL_HARD
+
+    VENDORMANNAME = X.Org
+ VENDORMANVERSION = `echo 6 8 99 903 | sed -e 's/ /./g' -e 's/^/Version\\\ /'`
+      XORGMANDEFS = -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\""
+    VENDORMANDEFS = -D__vendorversion__="$(VENDORMANVERSION) $(VENDORMANNAME)"
+       VENDORNAME = The X.Org Foundation
+  VENDORNAMESHORT = X.Org
+
+ VENDORWEBSUPPORT = http://wiki.X.Org
+
+VENDORSUPPORTDEFS = -D__VENDORDWEBSUPPORT__='"$(VENDORWEBSUPPORT)"'
+
+      XKBDEFRULES = xorg
+  XKBDEFRULESDEFS = -D__XKBDEFRULES__='"$(XKBDEFRULES)"'
+
+     XCONFIGFILE = xorg.conf
+      XCONFIGDIR = $(LIBDIR)
+        XLOGFILE = Xorg
+     XSERVERNAME = Xorg
+
+       XENVLIBDIR = $(USRLIBDIR)
+   CLIENTENVSETUP = LD_LIBRARY_PATH=$(XENVLIBDIR) XLOCALEDIR=$(BUILDLIBDIR)/locale
+
+# $Xorg: lnxLib.tmpl,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+# $XFree86: xc/config/cf/lnxLib.tmpl,v 3.19 2003/10/15 22:47:48 herrb Exp $
+
+          XLIBSRC = $(LIBSRC)/X11
+
+SOXLIBREV = 6.2
+DEPXONLYLIB =
+XONLYLIB =  -lX11
+
+LINTXONLY = $(LINTLIBDIR)/llib-lX11.ln
+
+      DEPXLIBONLY = $(DEPXONLYLIB)
+         XLIBONLY = $(XONLYLIB)
+     LINTXONLYLIB = $(LINTXONLY)
+
+      XEXTLIBSRC = $(LIBSRC)/Xext
+
+SOXEXTREV = 6.4
+DEPEXTENSIONLIB =
+EXTENSIONLIB =  -lXext
+
+LINTEXTENSION = $(LINTLIBDIR)/llib-lXext.ln
+
+LINTEXTENSIONLIB = $(LINTEXTENSION)
+          DEPXLIB = $(DEPEXTENSIONLIB) $(DEPXONLYLIB)
+             XLIB = $(EXTENSIONLIB) $(XONLYLIB)
+         LINTXLIB = $(LINTXONLYLIB)
+
+    XSSLIBSRC = $(LIBSRC)/Xss
+
+SOXSSREV = 1.0
+DEPXSSLIB =
+XSSLIB =  -lXss
+
+LINTXSS = $(LINTLIBDIR)/llib-lXss.ln
+
+    XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc
+
+SOXXF86MISCREV = 1.1
+DEPXXF86MISCLIB =
+XXF86MISCLIB =  -lXxf86misc
+
+LINTXXF86MISC = $(LINTLIBDIR)/llib-lXxf86misc.ln
+
+    XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm
+
+SOXXF86VMREV = 1.0
+DEPXXF86VMLIB =
+XXF86VMLIB =  -lXxf86vm
+
+LINTXXF86VM = $(LINTLIBDIR)/llib-lXxf86vm.ln
+
+    XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga
+
+SOXXF86DGAREV = 1.0
+DEPXXF86DGALIB =
+XXF86DGALIB =  -lXxf86dga
+
+LINTXXF86DGA = $(LINTLIBDIR)/llib-lXxf86dga.ln
+
+    XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush
+
+SOXXF86RUSHREV = 1.0
+DEPXXF86RUSHLIB =
+XXF86RUSHLIB =  -lXxf86rush
+
+LINTXXF86RUSH = $(LINTLIBDIR)/llib-lXxf86rush.ln
+
+    XVLIBSRC = $(LIBSRC)/Xv
+
+SOXVREV = 1.0
+DEPXVLIB =
+XVLIB =  -lXv
+
+LINTXV = $(LINTLIBDIR)/llib-lXv.ln
+
+    XVMCLIBSRC = $(LIBSRC)/XvMC
+
+SOXVMCREV = 1.0
+DEPXVMCLIB =
+XVMCLIB =  -lXvMC
+
+LINTXVMC = $(LINTLIBDIR)/llib-lXvMC.ln
+
+    XINERAMALIBSRC = $(LIBSRC)/Xinerama
+
+SOXINERAMAREV = 1.0
+DEPXINERAMALIB =
+XINERAMALIB =  -lXinerama
+
+LINTXINERAMA = $(LINTLIBDIR)/llib-lXinerama.ln
+
+    XRESLIBSRC = $(LIBSRC)/XRes
+
+SOXRESREV = 1.0
+DEPXRESLIB =
+XRESLIB =  -lXRes
+
+LINTXRES = $(LINTLIBDIR)/llib-lXRes.ln
+
+    DMXLIBSRC = $(LIBSRC)/dmx
+
+DEPDMXLIB = $(USRLIBDIR)/libdmx.a
+DMXLIB =  -ldmx
+
+LINTDMX = $(LINTLIBDIR)/llib-ldmx.ln
+
+    DPSLIBSRC = $(LIBSRC)/dps
+
+DEPDPSLIB = $(USRLIBDIR)/libdps.a
+DPSLIB =  -ldps
+
+LINTDPS = $(LINTLIBDIR)/llib-ldps.ln
+
+    DPSTKLIBSRC = $(LIBSRC)/dpstk
+
+DEPDPSTKLIB = $(USRLIBDIR)/libdpstk.a
+DPSTKLIB =  -ldpstk
+
+LINTDPSTK = $(LINTLIBDIR)/llib-ldpstk.ln
+
+    PSRESLIBSRC = $(LIBSRC)/psres
+
+DEPPSRESLIB = $(USRLIBDIR)/libpsres.a
+PSRESLIB =  -lpsres
+
+LINTPSRES = $(LINTLIBDIR)/llib-lpsres.ln
+
+    GLULIBSRC = $(LIBSRC)/GLU
+
+SOGLUREV = 1.3
+DEPGLULIB =
+GLULIB =  -lGLU
+
+LINTGLU = $(LINTLIBDIR)/llib-lGLU.ln
+
+    GLXLIBSRC = $(LIBSRC)/GL
+
+SOGLREV = 1.2
+DEPGLXLIB =
+GLXLIB =  -lGL
+
+LINTGLX = $(LINTLIBDIR)/llib-lGL.ln
+
+    GLWIDGETSRC = $(LIBSRC)/GLw
+
+SOGLWREV = 1.0
+DEPGLWLIB =
+GLWLIB =  -lGLw
+
+LINTGLW = $(LINTLIBDIR)/llib-lGLw.ln
+
+    XRENDERLIBSRC = $(LIBSRC)/Xrender
+
+SOXRENDERREV = 1.2.2
+DEPXRENDERLIB =
+XRENDERLIB =  -lXrender
+
+LINTXRENDER = $(LINTLIBDIR)/llib-lXrender.ln
+
+    XRANDRLIBSRC = $(LIBSRC)/Xrandr
+
+SOXRANDRREV = 2.0
+DEPXRANDRLIB =
+XRANDRLIB =  -lXrandr
+
+LINTXRANDR = $(LINTLIBDIR)/llib-lXrandr.ln
+
+    XFIXESLIBSRC = $(LIBSRC)/Xfixes
+
+SOXFIXESREV = 3.0
+DEPXFIXESLIB =
+XFIXESLIB =  -lXfixes
+
+LINTXFIXES = $(LINTLIBDIR)/llib-lXfixes.ln
+
+   XDAMAGELIBSRC = $(LIBSRC)/Xdamage
+
+SOXDAMAGEREV = 1.0
+DEPXDAMAGELIB =
+XDAMAGELIB =  -lXdamage
+
+LINTXDAMAGE = $(LINTLIBDIR)/llib-lXdamage.ln
+
+XCOMPOSITELIBSRC = $(LIBSRC)/Xcomposite
+
+SOXCOMPOSITEREV = 1.0
+DEPXCOMPOSITELIB =
+XCOMPOSITELIB =  -lXcomposite
+
+LINTXCOMPOSITE = $(LINTLIBDIR)/llib-lXcomposite.ln
+
+XEVIELIBSRC = $(LIBSRC)/Xevie
+
+SOXEVIEREV = 1.0
+DEPXEVIELIB =
+XEVIELIB =  -lXevie
+
+LINTXEVIE = $(LINTLIBDIR)/llib-lXevie.ln
+
+   XCURSORLIBSRC = $(LIBSRC)/Xcursor
+
+SOXCURSORREV = 1.0.2
+DEPXCURSORLIB =
+XCURSORLIB =  -lXcursor
+
+LINTXCURSOR = $(LINTLIBDIR)/llib-lXcursor.ln
+
+   APPLEWMLIBSRC = $(LIBSRC)/apple
+
+DEPAPPLEWMLIB = $(USRLIBDIR)/libAppleWM.a
+APPLEWMLIB =  -lAppleWM
+
+LINTAPPLEWM = $(LINTLIBDIR)/llib-lAppleWM.ln
+
+   WINDOWSWMLIBSRC = $(LIBSRC)/windows
+
+DEPWINDOWSWMLIB = $(USRLIBDIR)/libWindowsWM.a
+WINDOWSWMLIB =  -lWindowsWM
+
+LINTWINDOWSWM = $(LINTLIBDIR)/llib-lWindowsWM.ln
+
+    XFONTCACHELIBSRC = $(LIBSRC)/Xfontcache
+
+SOXFONTCACHEREV = 1.2
+DEPXFONTCACHELIB =
+XFONTCACHELIB =  -lXfontcache
+
+LINTXFONTCACHE = $(LINTLIBDIR)/llib-lXfontcache.ln
+
+         XAUTHSRC = $(LIBSRC)/Xau
+
+SOXAUTHREV = 6.0
+DEPXAUTHLIB =
+XAUTHLIB =  -lXau
+
+LINTXAUTH = $(LINTLIBDIR)/llib-lXau.ln
+
+      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
+
+SOXDMCPREV = 6.0
+DEPXDMCPLIB =
+XDMCPLIB =  -lXdmcp
+
+LINTXDMCP = $(LINTLIBDIR)/llib-lXdmcp.ln
+
+           XMUSRC = $(LIBSRC)/Xmu
+
+SOXMUREV = 6.2
+DEPXMULIB =
+XMULIB =  -lXmu
+
+LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
+
+           XMUUSRC = $(LIBSRC)/Xmuu
+
+SOXMUUREV = 1.0
+DEPXMUULIB =
+XMUULIB =  -lXmuu
+
+LINTXMUU = $(LINTLIBDIR)/llib-lXmuu.ln
+
+       OLDXLIBSRC = $(LIBSRC)/oldX
+
+DEPOLDXLIB = $(USRLIBDIR)/liboldX.a
+OLDXLIB =  -loldX
+
+LINTOLDX = $(LINTLIBDIR)/llib-loldX.ln
+
+         XPLIBSRC = $(LIBSRC)/Xp
+
+SOXPREV = 6.2
+DEPXPLIB =
+XPLIB =  -lXp
+
+LINTXP = $(LINTLIBDIR)/llib-lXp.ln
+
+       TOOLKITSRC = $(LIBSRC)/Xt
+
+SOXTREV = 6.0
+DEPXTOOLONLYLIB =
+XTOOLONLYLIB =  -lXt
+
+LINTXTOOLONLY = $(LINTLIBDIR)/llib-lXt.ln
+
+      DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB)
+         XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB)
+     LINTXTOOLLIB = $(LINTXTOOLONLYLIB)
+
+       XALIBSRC = $(LIBSRC)/Xa
+
+SOXAREV = 1.0
+DEPXALIB =
+XALIB =  -lXa
+
+LINTXA = $(LINTLIBDIR)/llib-lXa.ln
+
+       AWIDGETSRC = $(LIBSRC)/Xaw
+
+SOXAWREV = 8.0
+DEPXAWLIB =
+XAWLIB =  -lXaw
+
+LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
+
+       AWIDGET7SRC = $(LIBSRC)/Xaw7
+
+SOXAW7REV = 7.0
+DEPXAW7LIB =
+XAW7LIB =  -lXaw
+
+LINTXAW7 = $(LINTLIBDIR)/llib-lXaw.ln
+
+       AWIDGET6SRC = $(LIBSRC)/Xaw6
+
+SOXAW6REV = 6.1
+DEPXAW6LIB =
+XAW6LIB =  -lXaw
+
+LINTXAW6 = $(LINTLIBDIR)/llib-lXaw.ln
+
+         XILIBSRC = $(LIBSRC)/Xi
+
+SOXINPUTREV = 6.0
+DEPXILIB =
+XILIB =  -lXi
+
+LINTXI = $(LINTLIBDIR)/llib-lXi.ln
+
+      XTESTLIBSRC = $(LIBSRC)/Xtst
+
+SOXTESTREV = 6.1
+DEPXTESTLIB =
+XTESTLIB =  -lXtst
+
+LINTXTEST = $(LINTLIBDIR)/llib-lXtst.ln
+
+DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
+XBSDLIB =  -lXbsd
+
+LINTXBSD = $(LINTLIBDIR)/llib-lXbsd.ln
+
+           ICESRC = $(LIBSRC)/ICE
+
+SOICEREV = 6.4
+DEPICELIB =
+ICELIB =  -lICE
+
+LINTICE = $(LINTLIBDIR)/llib-lICE.ln
+
+            SMSRC = $(LIBSRC)/SM
+
+SOSMREV = 6.0
+DEPSMLIB =
+SMLIB =  -lSM
+
+LINTSM = $(LINTLIBDIR)/llib-lSM.ln
+
+           XKEYSRC = $(LIBSRC)/Xkey
+
+SOXKEYREV = 6.0
+DEPXKEYLIB =
+XKEYLIB =  -lXkey
+
+LINTXKEY = $(LINTLIBDIR)/llib-lXkey.ln
+
+         FSLIBSRC = $(LIBSRC)/FS
+
+SOFSREV = 6.0
+DEPFSLIB =
+FSLIB =  -lFS
+
+LINTFS = $(LINTLIBDIR)/llib-lFS.ln
+
+         FONTLIBSRC = $(LIBSRC)/font
+
+SOFONTREV = 1.5
+DEPFONTLIB =
+FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC)  -lXfont
+
+LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln
+#
+SOFONTREV = 1.5
+DEPXFONTLIB =
+XFONTLIB =  -lXfont
+
+LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln
+
+     FONTSTUBLIBSRC = $(FONTLIBSRC)/stubs
+
+DEPFONTSTUBLIB = $(USRLIBDIR)/libfntstubs.a
+FONTSTUBLIB =  -lfntstubs
+
+LINTFONTSTUB = $(LINTLIBDIR)/llib-lfntstubs.ln
+         DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB)
+            FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) $(FREETYPE2LIB)
+
+         FONTENCLIBSRC = $(LIBSRC)/fontenc
+
+SOFONTENCREV = 1.0
+DEPXFONTENCLIB =
+XFONTENCLIB =  -lfontenc
+
+LINTXFONTENC = $(LINTLIBDIR)/llib-lfontenc.ln
+
+          XPMLIBSRC = $(LIBSRC)/Xpm
+
+SOXPMREV = 4.11
+DEPXPMLIB =
+XPMLIB =  -lXpm
+
+LINTXPM = $(LINTLIBDIR)/llib-lXpm.ln
+
+FREETYPE2DIR = /usr
+FREETYPE2LIBDIR = /usr/lib
+FREETYPE2INCDIR = /usr/include
+
+FREETYPE2LIB = -lfreetype
+
+FREETYPE2INCLUDES = -I$(FREETYPE2INCDIR)/freetype2 -I$(FREETYPE2INCDIR)/freetype2/config
+
+FREETYPE2DEFINES = -DFREETYPE2
+
+          EXPATLIBSRC = $(LIBSRC)/expat
+
+SOEXPATREV = 0.4
+DEPEXPATLIB =
+EXPATLIB =  -lexpat
+
+LINTEXPAT = $(LINTLIBDIR)/llib-lexpat.ln
+
+EXPATDIR = /usr
+EXPATLIBDIR = /usr/lib
+EXPATINCDIR = /usr/include
+
+EXPATINCLUDES =
+
+EXPATLIB = -lexpat
+
+EXPATDEFINES = -DEXPAT
+
+          XFT1LIBSRC = $(LIBSRC)/Xft1
+
+SOXFT1REV = 1.1
+DEPXFT1LIB =
+XFT1LIB =  -lXft
+
+LINTXFT1 = $(LINTLIBDIR)/llib-lXft.ln
+
+          XFTLIBSRC = $(LIBSRC)/Xft
+
+SOXFTREV = 2.1.2
+DEPXFTLIB =
+XFTLIB =  -lXft
+
+LINTXFT = $(LINTLIBDIR)/llib-lXft.ln
+
+          FONTCONFIGLIBSRC = $(LIBSRC)/fontconfig
+
+SOFONTCONFIGREV = 1.0.4
+DEPFONTCONFIGLIB =
+FONTCONFIGLIB =  -lfontconfig
+
+LINTFONTCONFIG = $(LINTLIBDIR)/llib-lfontconfig.ln
+
+FONTCONFIGINCDIR=$(INCDIR)
+
+FONTCONFIGINCLUDES = -I$(FONTCONFIGINCDIR)
+
+FCCACHE = $(BINDIR)/fc-cache
+
+FONTCONFIGDEFINES = -DFONTCONFIG
+
+XFTINCLUDES=$(FONTCONFIGINCLUDES) $(FREETYPE2INCLUDES)
+
+LIBPNGINCDIR = /usr/include
+
+LIBPNGINC=
+
+LIBPNGDIR = /usr
+LIBPNGLIBDIR = /usr/lib
+LIBPNGINCDIR = /usr/include
+
+LIBPNGLIB = -lpng
+
+    XKBFILELIBSRC = $(LIBSRC)/xkbfile
+
+SOXKBFILEREV =  1.0
+DEPXKBFILELIB =
+XKBFILELIB =  -lxkbfile
+
+LINTXKBFILE = $(LINTLIBDIR)/llib-lxkbfile.ln
+
+     XKBCOMPCMD = $(XBINDIR)/xkbcomp
+
+    XKBUILIBSRC = $(LIBSRC)/xkbui
+
+SOXKBUIREV =  1.0
+DEPXKBUILIB =
+XKBUILIB =  -lxkbui
+
+LINTXKBUI = $(LINTLIBDIR)/llib-lxkbui.ln
+
+EXTRAXAWREQS =
+
+EXTRAXAWCLIENTDEPLIBS =
+
+EXTRAXAWCLIENTLIBS =
+
+        XTRAPLIBSRC = $(LIBSRC)/XTrap
+
+SOXTRAPREV = 6.4
+DEPXTRAPLIB =
+XTRAPLIB =  -lXTrap
+
+LINTXTRAP = $(LINTLIBDIR)/llib-lXTrap.ln
+
+          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
+
+         DEPLIBS1 = $(DEPLIBS)
+         DEPLIBS2 = $(DEPLIBS)
+         DEPLIBS3 = $(DEPLIBS)
+         DEPLIBS4 = $(DEPLIBS)
+         DEPLIBS5 = $(DEPLIBS)
+         DEPLIBS6 = $(DEPLIBS)
+         DEPLIBS7 = $(DEPLIBS)
+         DEPLIBS8 = $(DEPLIBS)
+         DEPLIBS9 = $(DEPLIBS)
+         DEPLIBS10 = $(DEPLIBS)
+
+       FCPRELOADPATTERN = libfontconfig.so.?
+
+      XFTPRELOADPATTERN = libXft.so.?
+  XRENDERPRELOADPATTERN = libXrender.so.?
+    XFONTPRELOADPATTERN = libXfont*.so.?
+
+XMULIBONLY = -lXmu
+XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
+
+        CONFIGDIR = /usr/share/X11/config
+
+    USRLIBDIRPATH = $(USRLIBDIR)
+        LDPRELIBS = -L$(USRLIBDIR)  $(INSTALLED_LIBS)
+       LDPOSTLIBS =
+     TOP_INCLUDES = -I$(INCROOT) $(TOP_X_INCLUDES)
+  PROJECT_DEFINES =
+   VENDOR_DEFINES = -DXVENDORNAME='"$(VENDORNAME)"' -DXVENDORNAMESHORT='"$(VENDORNAMESHORT)"'
+
+CXXPROJECT_DEFINES =
+
+# ----------------------------------------------------------------------
+# start of Imakefile
+
+# Remove the next line if you want genuine Xaw instead of Xaw3d
+
+# Remove the next line if you don't want to enable XTEST support
+
+# Remove the next line if you want to disable internationalization
+
+SRCS = xvkbd.c findwidget.c
+OBJS = xvkbd.o findwidget.o
+DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXPMLIB) $(EXTRAXAWCLIENTDEPLIBS) $(DEPXLIB)
+SYS_LIBRARIES = $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB)
+
+D_XTEST = -DUSE_XTEST
+SYS_LIBRARIES = $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) -lXtst
+
+D_I18N = -DUSE_I18N
+
+DEFINES = $(D_XAW3D) $(D_XTEST) $(D_I18N)
+
+xvkbd.o:	 xvkbd.c resources.h XVkbd-common.h
+	$(RM) $@
+	 	$(CC) -c $(CFLAGS)   $*.c
+
+        PROGRAM = xvkbd
+
+all:: xvkbd
+
+xvkbd: $(OBJS) $(DEPLIBS)
+	$(RM) $@
+	$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBRARIES) $(LDLIBS)  $(EXTRA_LOAD_FLAGS)
+
+install:: xvkbd
+	@if [ -d $(DESTDIR)$(BINDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(BINDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(BINDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTPGMFLAGS)  xvkbd $(DESTDIR)$(BINDIR)/xvkbd
+
+all:: xvkbd.$(MANNEWSUFFIX)
+
+xvkbd.$(MANNEWSUFFIX): xvkbd.$(MANSRCSUFFIX)
+	$(RM) $@
+	if test -z "$(PREPROCESSMANPAGES)" ; then \
+	   cd `dirname xvkbd` && \
+	   $(LN) `basename xvkbd.$(MANSRCSUFFIX)` `basename $@`; \
+	else \
+	      	     $(RAWCPP)  $(MANDEFS) $(EXTRAMANDEFS) \
+	     < xvkbd.$(MANSRCSUFFIX) | sed -e '/^#  *[0-9][0-9]*  *.*$$/d' 			-e '/^#line  *[0-9][0-9]*  *.*$$/d' 			-e '/^[ 	]*XCOMM$$/s/XCOMM/#/' 			-e '/^[ 	]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/#/' 			-e '/^[ 	]*XHASH/s/XHASH/#/' 			-e '/\@\@$$/s/\@\@$$/\\/' >$@; \
+	fi
+
+cleandir::
+	$(RM) xvkbd.$(MANNEWSUFFIX)
+
+install.man:: xvkbd.$(MANNEWSUFFIX)
+	@if [ -d $(DESTDIR)$(MANDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(MANDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(MANDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) xvkbd.$(MANNEWSUFFIX) $(DESTDIR)$(MANDIR)/xvkbd.$(MANSUFFIX)
+
+depend::
+	$(DEPEND) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)
+
+lint:
+	$(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
+lint1:
+	$(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
+
+cleandir::
+	$(RM) xvkbd
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-belgian.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-belgian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-belgian
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-common.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-common.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-common
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-danish.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-danish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-danish
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-fitaly.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-fitaly.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-fitaly
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-french.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-french.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-french
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-french2.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-french2.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-french2
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-german.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-german.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-german
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-greek.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-greek.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-greek
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-hebrew.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-hebrew.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-hebrew
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-icelandic.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-icelandic.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-icelandic
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-italian.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-italian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-italian
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-jisx6002.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-jisx6002.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-jisx6002
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-jisx6004.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-jisx6004.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-jisx6004
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-korean.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-korean.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-korean
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-latin1.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-latin1.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-latin1
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-norwegian.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-norwegian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-norwegian
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-portuguese.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-portuguese.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-portuguese
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-slovene.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-slovene.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-slovene
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-small.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-small.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-small
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-spanish.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-spanish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-spanish
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-swedish.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-swedish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-swedish
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-swissgerman.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-swissgerman.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-swissgerman
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-turkish.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-turkish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-turkish
+
+install::
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+	  $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \
+	fi
+	@if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \
+			(set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \
+	fi
+	@if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \
+			(set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \
+	fi
+	@for flag in ${MAKEFLAGS} ''; do \
+	  case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \
+	if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \
+	  RELPATH=`echo $(LIBDIR)/. | \
+		sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \
+	  cd $(DESTDIR)$(LIBDIR)/.; \
+	  if [ -d app-defaults -a ! -h app-defaults ]; then \
+	    (cd app-defaults; tar cf - . | \
+		(cd $(DESTDIR)$(CONFDIR)/app-defaults; \
+		 tar xf -; exit 0); exit 0); \
+	  fi; \
+	  $(RM) -r app-defaults; \
+	  $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \
+	fi
+
+install:: XVkbd-uk.ad
+	@if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \
+		set +x; \
+	else \
+		if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \
+			(set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \
+		fi; \
+		(set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \
+	fi
+	$(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-uk.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-uk
+
+#  ============================
+#  These rules are only for me
+
+_distclean: cleandir
+	-rm Makefile
+
+XVkbd-common.h: XVkbd-common.ad
+	-which ad2c > /dev/null && ad2c XVkbd-common.ad > XVkbd-common.h
+
+HTML = $(HOME)/public_html/homepage3.nifty.com/xvkbd/index.html
+_readme:
+	-[ -f $(HTML) ] && html2man $(HTML) > xvkbd.man
+	( echo ".pl 10000"; echo ".ll 75"; echo ".hy 0"; echo ".ad l" ) | 		cat - xvkbd.man | groff -Tascii -man | sed 's/.//g' | 		head -9000 | cat -s | tail +3 > README
+
+#  ============================
+
+# ----------------------------------------------------------------------
+# common rules for all Makefiles - do not edit
+
+.c.i:
+	$(RM) $@
+	 	$(CC) -E $(CFLAGS) $(_NOOP_) $*.c > $@
+
+.SUFFIXES: .ii
+
+.cc.ii:
+	$(RM) $@
+	 	$(CC) -E $(CFLAGS) $(_NOOP_) $*.cc > $@
+
+.SUFFIXES: .s
+
+.c.s:
+	$(RM) $@
+	 	$(CC) -S $(CFLAGS) $(_NOOP_) $*.c
+
+.cc.s:
+	$(RM) $@
+	 	$(CC) -S $(CFLAGS) $(_NOOP_) $*.cc
+
+emptyrule::
+
+cleandir::
+	$(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut   "#"*
+
+Makefile::
+	-@if [ -f Makefile ]; then set -x; \
+	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
+	else exit 0; fi
+	$(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
+
+tags::
+	$(TAGS) -w *.[ch]
+	$(TAGS) -xw *.[ch] > TAGS
+
+man_keywords::
+
+html_index::
+
+clean:: cleandir
+
+distclean:: cleandir
+
+# ----------------------------------------------------------------------
+# empty rules for directories that do not have SUBDIRS - do not edit
+
+install::
+	@echo "install in $(CURRENT_DIR) done"
+
+install.man::
+	@echo "install.man in $(CURRENT_DIR) done"
+
+install.sdk::
+	@echo "install.sdk in $(CURRENT_DIR) done"
+
+Makefiles::
+
+includes::
+
+depend::
+
+distclean::
+	$(RM) Makefile Makefile.dep
+
+# ----------------------------------------------------------------------
+# dependencies generated by makedepend
+
